ক clustered
এবং ক এর মধ্যে পার্থক্য কি non-clustered index
?
ক clustered
এবং ক এর মধ্যে পার্থক্য কি non-clustered index
?
উত্তর:
ক্লাস্টার্ড সূচক
নন ক্লাস্টারড ইনডেক্স
উভয় প্রকারের সূচক কর্মক্ষমতা উন্নত করবে যখন ক্ষেত্রগুলি সূচক ব্যবহার করে তবে আপডেটটি ধীর করবে এবং ক্রিয়াকলাপ সন্নিবেশ করবে।
কারণ ধীর inোকানো এবং আপডেট ক্লাস্টার ইনডেক্সগুলি এমন একটি ক্ষেত্রের মধ্যে সেট করা উচিত যা সাধারণত বর্ধনশীল অর্থাৎ আইডি বা টাইমস্ট্যাম্প।
এসকিউএল সার্ভার সাধারণত কেবলমাত্র একটি সূচক ব্যবহার করবে যদি এর পছন্দনীয়তা 95% এর উপরে থাকে।
ক্লাস্টারড ইনডেক্সগুলি ডিস্কে ডেটা শারীরিকভাবে অর্ডার করে। এর অর্থ সূচকের জন্য কোনও অতিরিক্ত ডেটার প্রয়োজন নেই, তবে কেবলমাত্র একটি ক্লাস্টারড সূচক থাকতে পারে (স্পষ্টতই)। একটি ক্লাস্টার্ড সূচক ব্যবহার করে ডেটা অ্যাক্সেস করা দ্রুততম।
অন্যান্য সমস্ত সূচিগুলি অবশ্যই ক্লাস্টারযুক্ত নয়। ক্লাস্টারবিহীন সূচকের ইনডেক্সড কলামগুলি থেকে ডাবলিকেটকে প্রকৃত ডেটা সারিগুলিতে পয়েন্টার সহ একসাথে অর্ডার করা থাকে (যদি থাকে তবে ক্লাস্টার ইনডেক্সে পয়েন্টার থাকে)। এর অর্থ হ'ল একটি ক্লাস্টারবিহীন সূচকের মাধ্যমে ডেটা অ্যাক্সেস করতে ইন্ডিয়ারেশনের অতিরিক্ত স্তরের মধ্য দিয়ে যেতে হয়। তবে আপনি যদি ইনডেক্সড কলামগুলিতে কেবলমাত্র ডেটা নির্বাচন করেন তবে ডুপ্লিকেটড ইনডেক্স ডেটা থেকে সরাসরি ডেটা ফিরে পেতে পারেন (এজন্য আপনার প্রয়োজনীয় কলামগুলি নির্বাচন করা এবং ব্যবহার না করেই এটি নির্বাচন করা ভাল idea)
ক্লাস্টারড ইনডেক্সগুলি টেবিলে শারীরিকভাবে সংরক্ষণ করা হয়। এর অর্থ তারা দ্রুততম এবং আপনার কাছে প্রতি টেবিলের জন্য কেবল একটি ক্লাস্টারড সূচক থাকতে পারে।
নন-ক্লাস্টারযুক্ত সূচকগুলি পৃথকভাবে সংরক্ষণ করা হয় এবং আপনি যতগুলি চান আপনার কাছে থাকতে পারে।
সর্বোত্তম বিকল্পটি হ'ল আপনার ক্লাস্টার্ড সূচকটি সর্বাধিক ব্যবহৃত অনন্য কলামে সেট করা, সাধারণত পিকে। আপনার টেবিলগুলিতে আপনার সর্বদা একটি ভালভাবে নির্বাচিত ক্লাস্টারড ইনডেক্স থাকা উচিত, যদি না খুব বাধ্যতামূলক কারণ না হয় - তবে একটিও সম্পর্কে চিন্তা করতে পারে না, আরে, এটি বাইরে থাকতে পারে - এটি না করার জন্য উঠে আসে।
এই পার্থক্যগুলি ছাড়াও আপনাকে জানতে হবে যে যখন টেবিলটি অ-ক্লাস্টারযুক্ত থাকে (যখন টেবিলটিতে একটি ক্লাস্টারযুক্ত সূচক থাকে না) ডেটা ফাইলগুলি আনর্ডার্ড করা হয় এবং এটি হ্যাপের ডেটা কাঠামোটিকে ডেটা স্ট্রাকচার হিসাবে ব্যবহার করে।
পেশাদাররা:
ক্লাস্টারড ইনডেক্সগুলি ব্যাপ্তিগুলির জন্য দুর্দান্ত কাজ করে (উদাহরণস্বরূপ মাই_ টেবিল থেকে * নির্বাচন করুন যেখানে আমার_কি @ মিমি এবং @ ম্যাক্সের মধ্যে নির্বাচন করুন)
কিছু পরিস্থিতিতে, আপনি যদি অর্ডারবয় স্টেটমেন্ট ব্যবহার করেন তবে ডিবিএমএসকে বাছাই করতে কাজ করতে হবে না।
কনস:
ক্লাস্টারড ইনডেক্সগুলি সন্নিবেশগুলিকে ধীর করতে পারে কারণ নতুন কীগুলি অনুক্রমিক ক্রমে না থাকলে রেকর্ডগুলি রাখার কারণে রেকর্ডগুলির দৈহিক বিন্যাসটি সংশোধন করতে হয়।
একটি ক্লাস্টারড ইনডেক্স মূলত ইনডেক্সড কলামগুলিতে ডেটার সাজানো অনুলিপি।
ক্লাস্টারড ইনডেক্সের প্রধান সুবিধাটি হ'ল যখন আপনার ক্যোয়ারী (সন্ধান) সূচকটিতে ডেটা সনাক্ত করে তখন সেই তথ্যটি পুনরুদ্ধার করার জন্য কোনও অতিরিক্ত আইও প্রয়োজন হয় না।
একটি ক্লাস্টার ইনডেক্স বজায় রাখার ওভারহেড, বিশেষত একটি ঘন ঘন আপডেট হওয়া সারণীতে, খারাপ অভিনয় করতে পারে এবং সেই কারণেই এটি একটি ক্লাস্টারযুক্ত সূচক তৈরি করা ভাল fe
একটি ইনডেক্সড ডাটাবেসের দুটি অংশ থাকে: শারীরিক রেকর্ডগুলির একটি সেট, যা কিছু স্বেচ্ছাসেবী ক্রমে সাজানো হয়, এবং সূচিগুলির একটি সেট যা এমন ক্রম চিহ্নিত করে যাতে কোনও মানদণ্ড অনুসারে বাছাই করা ফলাফল আনতে রেকর্ডগুলি পড়া উচিত। যদি শারীরিক বিন্যাস এবং সূচকগুলির মধ্যে কোনও সম্পর্ক নেই, তবে সমস্ত রেকর্ডটি পাঠ করার জন্য প্রচুর স্বতন্ত্র একক রেকর্ড পড়ার ক্রিয়াকলাপ তৈরি করতে হতে পারে। যেহেতু একটি ডাটাবেস দুটি অবিচ্ছিন্ন রেকর্ড পড়ার চেয়ে কম সময়ে টানা কয়েক ডজন রেকর্ড পড়তে সক্ষম হতে পারে, তাই সূচীতে ধারাবাহিক রেকর্ডগুলিও ডিস্কে একটানা সংরক্ষণ করা থাকলে কর্মক্ষমতা উন্নত হতে পারে।
উদাহরণস্বরূপ, যদি কেউ একটি খালি নন-ক্লাস্টারযুক্ত ডাটাবেস দিয়ে শুরু করে এবং এলোমেলো ক্রমে 10,000 টি রেকর্ড যুক্ত করে থাকে, রেকর্ডগুলি সম্ভবত যুক্ত হওয়া ক্রমে শেষে যুক্ত করা হবে। সূচী অনুসারে ডাটাবেসটি পড়ার জন্য 10,000 এক-রেকর্ড রিডের প্রয়োজন হবে। যদি কেউ একটি ক্লাস্টার্ড ডাটাবেস ব্যবহার করে থাকে তবে সিস্টেমটি প্রতিটি রেকর্ড যুক্ত করার পরে পরীক্ষা করতে পারে যে পূর্ববর্তী রেকর্ডটি নিজেই সংরক্ষণ করেছিল কিনা; যদি এটি এটির মতো পাওয়া যায় তবে এটি ডাটাবেসের শেষে নতুনটির সাথে রেকর্ডটি লিখতে পারে। এটি স্লটগুলির আগে শারীরিক রেকর্ডের দিকে নজর দিতে পারে যেখানে সরানো রেকর্ডগুলি ব্যবহৃত হত এবং দেখতে পাবে যে এরপরে রেকর্ডটি নিজেই সংরক্ষণ করেছিল। যদি এটি এটির মতো পাওয়া যায় তবে এটি সেই রেকর্ডটি সেই জায়গায় স্থানান্তরিত করতে পারে। এই ধরণের পদ্ধতির ব্যবহারের ফলে অনেকগুলি রেকর্ড জোড়ায় একত্রে গোষ্ঠীভূত হবে,
বাস্তবে, ক্লাস্টার করা ডাটাবেসগুলি এর চেয়ে বেশি পরিশীলিত অ্যালগরিদম ব্যবহার করে। তবে একটি গুরুত্বপূর্ণ বিষয় লক্ষণীয়, এটি হ'ল ডাটাবেস আপডেট করার জন্য প্রয়োজনীয় সময় এবং ক্রমানুসারে এটি পড়ার জন্য প্রয়োজনীয় সময়ের মধ্যে একটি বাণিজ্য রয়েছে। একটি ক্লাস্টার্ড ডাটাবেস বজায় রাখা বাছাইয়ের ক্রমকে প্রভাবিত করে এমন কোনও উপায়ে রেকর্ড যুক্ত করতে, অপসারণ করতে বা আপডেট করতে প্রয়োজনীয় কাজের পরিমাণ উল্লেখযোগ্যভাবে বৃদ্ধি করবে। যদি ডাটাবেসটি আপডেট হওয়ার চেয়ে অনেক বেশি ক্রমানুসারে পাঠ করা হয় তবে ক্লাস্টারিং একটি বড় জয় হতে পারে। যদি এটি প্রায়শই আপডেট করা হয় তবে খুব কমই ধারাবাহিকভাবে পাঠ করা হয়, ক্লাস্টারিং একটি বৃহত পারফরম্যান্স ড্রেন হতে পারে, বিশেষত যদি ডাটাবেসে আইটেমগুলি যুক্ত করা হয় তবে ক্লাস্টারযুক্ত সূচকগুলির ক্ষেত্রে তাদের ক্রমানুসারে স্বাধীন হয়।
আপনি উপরের পোস্টগুলি থেকে তত্ত্বের অংশটি পেরিয়ে যেতে পারেন:
- ক্লাস্টারড ইনডেক্স যেমন আমরা সরাসরি রেকর্ড করতে পয়েন্ট দেখতে পাচ্ছি অর্থাৎ এটির সরাসরি তাই এটি অনুসন্ধানের জন্য কম সময় নেয়। অতিরিক্তভাবে এটি সূচক সঞ্চয় করতে কোনও অতিরিক্ত মেমরি / স্থান গ্রহণ করবে না
-হেতু, ক্লাস্টারবিহীন সূচীতে এটি পরোক্ষভাবে ক্লাস্টারড সূচকে নির্দেশ করে তবে এটি প্রকৃত রেকর্ডটি অ্যাক্সেস করতে পারে, তার অপ্রত্যক্ষ প্রকৃতির কারণে এটি অ্যাক্সেস করতে আরও কিছুটা সময় সময় নিতে পারে A এছাড়াও এটি সংরক্ষণ করার জন্য এটির নিজস্ব স্মৃতি / স্থান প্রয়োজন সূচক
// এমএসডিএন থেকে অনুলিপি করা হয়েছে, নন-ক্লাস্টারড ইনডেক্সের দ্বিতীয় পয়েন্টটি অন্য উত্তরে পরিষ্কারভাবে উল্লেখ করা হয়নি।
ক্লাস্টার
Nonclustered