একটি ক্লাস্টার এবং নন-ক্লাস্টারড ইনডেক্সের মধ্যে পার্থক্য কী?


277

clusteredএবং ক এর মধ্যে পার্থক্য কি non-clustered index?


8
আপনার কাছে টেবিলের জন্য কেবল একটি ক্লাস্টার ইনডেক্স থাকতে পারে। তবে প্রচুর অন্যান্য পার্থক্য রয়েছে ...
টম রবিনসন

5
একটি ক্লাস্টার্ড সূচকটি আসলে ক্রমটি বর্ণিত করে যেখানে রেকর্ডগুলি শারীরিকভাবে ডিস্কে সঞ্চিত থাকে, সুতরাং আপনার কেবলমাত্র এটি থাকতে পারে। একটি ক্লাস্টারযুক্ত সূচক একটি লজিকাল অর্ডার সংজ্ঞায়িত করে যা ডিস্কে শারীরিক ক্রমের সাথে মেলে না।
জোশ

1
ক্লাস্টার্ডের অর্থ হ'ল টেবিলটিতে ডেটা সেই ফিজিক্যাল অর্ডারে রয়েছে। একারণে আপনার কাছে প্রতি টেবিলে একটি মাত্র থাকতে পারে। আনক্লাস্টার্ড মানে এটি একটি যৌক্তিক আদেশ "কেবল"।
বিরি

2
@ বিবিরি "যৌক্তিক" আদেশ কি? একটি নন ক্লাস্টারড ইনডেক্স সূচীর কীগুলি শারীরিকভাবে অর্ডার করে এবং এটি টেবিলের কাছে একটি পয়েন্টার সঞ্চয় করে, যেমন ক্লাস্টারড ইনডেক্স কী।
স্টেফানি পৃষ্ঠা

@ স্টেফানি পৃষ্ঠা: সারণী দৃষ্টিকোণ থেকে যৌক্তিক। অবশ্যই নন-ক্লাস্টারযুক্ত সূচিগুলি সূচকেই শারীরিকভাবে অর্ডার করা হয়।
বিড়ি

উত্তর:


268

ক্লাস্টার্ড সূচক

  • টেবিল প্রতি মাত্র একটি
  • সূচি ক্রমে ডেটা ফিজিক্যালি স্টোর করা হওয়ায় ক্লাস্টারবিহীন না থেকে পড়া আরও দ্রুত

নন ক্লাস্টারড ইনডেক্স

  • টেবিল প্রতি অনেকবার ব্যবহার করা যেতে পারে
  • ক্লাস্টারড ইনডেক্সের চেয়ে সন্নিবেশ এবং আপডেট অপারেশনের জন্য দ্রুত

উভয় প্রকারের সূচক কর্মক্ষমতা উন্নত করবে যখন ক্ষেত্রগুলি সূচক ব্যবহার করে তবে আপডেটটি ধীর করবে এবং ক্রিয়াকলাপ সন্নিবেশ করবে।

কারণ ধীর inোকানো এবং আপডেট ক্লাস্টার ইনডেক্সগুলি এমন একটি ক্ষেত্রের মধ্যে সেট করা উচিত যা সাধারণত বর্ধনশীল অর্থাৎ আইডি বা টাইমস্ট্যাম্প।

এসকিউএল সার্ভার সাধারণত কেবলমাত্র একটি সূচক ব্যবহার করবে যদি এর পছন্দনীয়তা 95% এর উপরে থাকে।


9
স্টোরেজ বিবেচনা আছে। কোনও ক্লাস্টারযুক্ত সূচী না থাকা সারণীতে সারিগুলি সন্নিবেশ করার সময়, সারিগুলি পৃষ্ঠায় পিছনে পিছনে সঞ্চিত থাকে এবং একটি সারি আপডেট করার ফলে সারিটি সারণির শেষ প্রান্তে স্থানান্তরিত হতে পারে, খালি স্থান ছেড়ে টেবিল এবং সূচীগুলি টুকরো টুকরো করে।
জেরেমিয়া পেশকা

4
এক্স কী তা আপনার যত্নের দরকার নেই। আপনার যা যা জানা দরকার তা হ'ল কয়েক মিলিয়ন ব্যবহারকারীর সাথে অ্যাপ্লিকেশনটির জন্য এক্স তাৎপর্যপূর্ণ হবে
পেসারিয়ার

14
এটা নিখুঁতভাবে ডগমা। এটি "পড়া দ্রুত হয় না কারণ ডেটা ক্রমে সংরক্ষণ করা হয়"। এটি পড়তে দ্রুত কারণ আপনি একটি সূচি পড়া এবং টেবিলটি পড়ার বিষয়টি এড়িয়ে চলে। এটি স্ক্যান করার ক্ষেত্রে দ্রুততর (যদি এটি অর্থবহ হয়) কারণ ডেটা ক্রমযুক্ত। ক্লাস্টারিং ফ্যাক্টরটি নিখুঁত।
স্টেফানি পৃষ্ঠা

6
এছাড়াও 95% রেকর্ড অনন্য হওয়া দরকার এমন ধারণাটি একটি মিথ্যাবাদ। বলুন যে আপনার 1,000,000 সারি সহ একটি টেবিল রয়েছে এবং আপনি 500,000 কী সহ একটি কলামকে সূচী করেছেন। 0% অনন্য তবে প্রতিটি কী মিলিয়ন সারিগুলির মধ্যে 2 টি প্রদান করে। এই সূচকটি একেবারে দরকারী যে নির্বিশেষে 0% রেকর্ড অনন্য।
স্টেফানি পৃষ্ঠা

2
"ডেটা ফিজিক্যালি ইনডেক্স অর্ডারে স্টোর করা হয়" এর অর্থ কী? এক পর্যায়ে এটি তুচ্ছভাবে সত্য কারণ ডেটা পৃষ্ঠা এবং সূচি পাতার পৃষ্ঠাগুলি এক এবং একই - সুতরাং স্পষ্টতই একটির ক্রম অন্যটির ক্রমকে বর্ণনা করে। তবে এটি অবশ্যই কোনও নির্দিষ্ট ক্রমে যেমন সূচীর কী স্ট্যাকওভারফ্লো.com
মার্টিন স্মিথ

79

ক্লাস্টারড ইনডেক্সগুলি ডিস্কে ডেটা শারীরিকভাবে অর্ডার করে। এর অর্থ সূচকের জন্য কোনও অতিরিক্ত ডেটার প্রয়োজন নেই, তবে কেবলমাত্র একটি ক্লাস্টারড সূচক থাকতে পারে (স্পষ্টতই)। একটি ক্লাস্টার্ড সূচক ব্যবহার করে ডেটা অ্যাক্সেস করা দ্রুততম।

অন্যান্য সমস্ত সূচিগুলি অবশ্যই ক্লাস্টারযুক্ত নয়। ক্লাস্টারবিহীন সূচকের ইনডেক্সড কলামগুলি থেকে ডাবলিকেটকে প্রকৃত ডেটা সারিগুলিতে পয়েন্টার সহ একসাথে অর্ডার করা থাকে (যদি থাকে তবে ক্লাস্টার ইনডেক্সে পয়েন্টার থাকে)। এর অর্থ হ'ল একটি ক্লাস্টারবিহীন সূচকের মাধ্যমে ডেটা অ্যাক্সেস করতে ইন্ডিয়ারেশনের অতিরিক্ত স্তরের মধ্য দিয়ে যেতে হয়। তবে আপনি যদি ইনডেক্সড কলামগুলিতে কেবলমাত্র ডেটা নির্বাচন করেন তবে ডুপ্লিকেটড ইনডেক্স ডেটা থেকে সরাসরি ডেটা ফিরে পেতে পারেন (এজন্য আপনার প্রয়োজনীয় কলামগুলি নির্বাচন করা এবং ব্যবহার না করেই এটি নির্বাচন করা ভাল idea)


3
'তবে আপনি যদি কেবল সূচকযুক্ত কলামগুলিতে উপলভ্য ডেটা নির্বাচন করেন তবে ডুপ্লিকেটড সূচক ডেটা থেকে সরাসরি ডেটা ফিরে পেতে পারেন' - হ্যাঁ ক্লাস্টারড ইনডেক্স হিউরিস্টিককে পছন্দ করা গুরুত্বপূর্ণ ব্যতিক্রম exception আমি মনে করি এক্ষেত্রে আপনার কাছে মূলত একটি ক্লাস্টারড ইনডেক্স রয়েছে, তবে আপনি যে টেবিলটিতে জিজ্ঞাসা করছেন সেটিতে কম ডাটা সম্ভবত এটি সম্ভবত ডিস্কের বাইরে দ্রুত পড়তে পারে।
satnhak

34

ক্লাস্টারড ইনডেক্সগুলি টেবিলে শারীরিকভাবে সংরক্ষণ করা হয়। এর অর্থ তারা দ্রুততম এবং আপনার কাছে প্রতি টেবিলের জন্য কেবল একটি ক্লাস্টারড সূচক থাকতে পারে।

নন-ক্লাস্টারযুক্ত সূচকগুলি পৃথকভাবে সংরক্ষণ করা হয় এবং আপনি যতগুলি চান আপনার কাছে থাকতে পারে।

সর্বোত্তম বিকল্পটি হ'ল আপনার ক্লাস্টার্ড সূচকটি সর্বাধিক ব্যবহৃত অনন্য কলামে সেট করা, সাধারণত পিকে। আপনার টেবিলগুলিতে আপনার সর্বদা একটি ভালভাবে নির্বাচিত ক্লাস্টারড ইনডেক্স থাকা উচিত, যদি না খুব বাধ্যতামূলক কারণ না হয় - তবে একটিও সম্পর্কে চিন্তা করতে পারে না, আরে, এটি বাইরে থাকতে পারে - এটি না করার জন্য উঠে আসে।


3
আপনি কি আমাদের "আমাদের টেবিলগুলিতে সর্বদা একটি ক্লাস্টারড ইনডেক্স থাকা উচিত" এর আরও বিস্তারিত বর্ণনা করতে পারেন?
বিস্তৃততা

1
আপনি ঠিক পেসারিয়র, কেউ নিখুঁত বিবৃতি হালকাভাবে ব্যবহার করা উচিত নয়। যদিও আপনার একটি সিলেক্ট কেস সম্পর্কে আমি জানি না যখন আপনার একটি ভাল নির্বাচিত ক্লাস্টারড ইনডেক্স না থাকা উচিত, এ জাতীয় কেস থাকতে পারে তাই আমি আমার উত্তরকে আরও জেনেরিক সংস্করণে পরিবর্তন করেছি।
সান্তিয়াগো সিপাস

28

ক্লাস্টার্ড সূচক

  1. একটি টেবিলের জন্য কেবল একটি ক্লাস্টারড সূচক থাকতে পারে।
  2. সাধারণত প্রাথমিক কীতে তৈরি।
  3. একটি ক্লাস্টারযুক্ত সূচকের পাত নোডগুলিতে ডেটা পৃষ্ঠা থাকে।

নন-ক্লাস্টার্ড সূচক

  1. কোনও টেবিলের জন্য কেবল 249 নন-ক্লাস্টারযুক্ত সূচি থাকতে পারে (এসকিউএল সংস্করণ 2005 অবধি পরবর্তী সংস্করণগুলি 999 নন-ক্লাস্টারড ইনডেক্সগুলি সমর্থন করে)।
  2. সাধারণত যে কোনও চাবিতে তৈরি।
  3. একটি অবিচ্ছিন্ন সূচকের পাত নোডে ডেটা পৃষ্ঠা থাকে না। পরিবর্তে, পাতার নোডগুলিতে সূচক সারি থাকে।

24

ক্লাস্টার্ড সূচক

  • একটি টেবিলের মধ্যে কেবল একটি ক্লাস্টারড সূচক থাকতে পারে
  • অর্ডার অনুসারে রেকর্ডগুলি বাছাই করুন এবং সেগুলি শারীরিকভাবে সঞ্চয় করুন
  • ক্লাস্টারযুক্ত সূচিগুলির চেয়ে ডেটা পুনরুদ্ধার দ্রুত
  • যৌক্তিক কাঠামো সঞ্চয় করতে অতিরিক্ত স্থানের প্রয়োজন হবে না

নন ক্লাস্টারড ইনডেক্স

  • একটি টেবিলের মধ্যে নন-ক্লাস্টারযুক্ত সূচিগুলির সংখ্যা থাকতে পারে
  • শারীরিক ক্রম প্রভাবিত করবেন না। ডেটা সারিগুলির জন্য একটি লজিকাল অর্ডার তৈরি করুন এবং শারীরিক ডেটা ফাইলগুলিতে পয়েন্টার ব্যবহার করুন
  • ক্লাস্টারড ইনডেক্সের চেয়ে ডেটা সন্নিবেশ / আপডেট দ্রুত
  • যৌক্তিক কাঠামো সঞ্চয় করতে অতিরিক্ত স্থান ব্যবহার করুন

এই পার্থক্যগুলি ছাড়াও আপনাকে জানতে হবে যে যখন টেবিলটি অ-ক্লাস্টারযুক্ত থাকে (যখন টেবিলটিতে একটি ক্লাস্টারযুক্ত সূচক থাকে না) ডেটা ফাইলগুলি আনর্ডার্ড করা হয় এবং এটি হ্যাপের ডেটা কাঠামোটিকে ডেটা স্ট্রাকচার হিসাবে ব্যবহার করে।


10

ক্লাস্টার্ডের অর্থ হ'ল টেবিলটিতে ডেটা সেই শারীরিক ক্রমে থাকে। একারণে আপনার কাছে প্রতি টেবিলে একটি মাত্র থাকতে পারে।

আনক্লাস্টার্ড মানে এটি একটি যৌক্তিক আদেশ "কেবল"।


9

পেশাদাররা:

ক্লাস্টারড ইনডেক্সগুলি ব্যাপ্তিগুলির জন্য দুর্দান্ত কাজ করে (উদাহরণস্বরূপ মাই_ টেবিল থেকে * নির্বাচন করুন যেখানে আমার_কি @ মিমি এবং @ ম্যাক্সের মধ্যে নির্বাচন করুন)

কিছু পরিস্থিতিতে, আপনি যদি অর্ডারবয় স্টেটমেন্ট ব্যবহার করেন তবে ডিবিএমএসকে বাছাই করতে কাজ করতে হবে না।

কনস:

ক্লাস্টারড ইনডেক্সগুলি সন্নিবেশগুলিকে ধীর করতে পারে কারণ নতুন কীগুলি অনুক্রমিক ক্রমে না থাকলে রেকর্ডগুলি রাখার কারণে রেকর্ডগুলির দৈহিক বিন্যাসটি সংশোধন করতে হয়।


6

একটি ক্লাস্টারড ইনডেক্স মূলত ইনডেক্সড কলামগুলিতে ডেটার সাজানো অনুলিপি।

ক্লাস্টারড ইনডেক্সের প্রধান সুবিধাটি হ'ল যখন আপনার ক্যোয়ারী (সন্ধান) সূচকটিতে ডেটা সনাক্ত করে তখন সেই তথ্যটি পুনরুদ্ধার করার জন্য কোনও অতিরিক্ত আইও প্রয়োজন হয় না।

একটি ক্লাস্টার ইনডেক্স বজায় রাখার ওভারহেড, বিশেষত একটি ঘন ঘন আপডেট হওয়া সারণীতে, খারাপ অভিনয় করতে পারে এবং সেই কারণেই এটি একটি ক্লাস্টারযুক্ত সূচক তৈরি করা ভাল fe


6

একটি ইনডেক্সড ডাটাবেসের দুটি অংশ থাকে: শারীরিক রেকর্ডগুলির একটি সেট, যা কিছু স্বেচ্ছাসেবী ক্রমে সাজানো হয়, এবং সূচিগুলির একটি সেট যা এমন ক্রম চিহ্নিত করে যাতে কোনও মানদণ্ড অনুসারে বাছাই করা ফলাফল আনতে রেকর্ডগুলি পড়া উচিত। যদি শারীরিক বিন্যাস এবং সূচকগুলির মধ্যে কোনও সম্পর্ক নেই, তবে সমস্ত রেকর্ডটি পাঠ করার জন্য প্রচুর স্বতন্ত্র একক রেকর্ড পড়ার ক্রিয়াকলাপ তৈরি করতে হতে পারে। যেহেতু একটি ডাটাবেস দুটি অবিচ্ছিন্ন রেকর্ড পড়ার চেয়ে কম সময়ে টানা কয়েক ডজন রেকর্ড পড়তে সক্ষম হতে পারে, তাই সূচীতে ধারাবাহিক রেকর্ডগুলিও ডিস্কে একটানা সংরক্ষণ করা থাকলে কর্মক্ষমতা উন্নত হতে পারে।

উদাহরণস্বরূপ, যদি কেউ একটি খালি নন-ক্লাস্টারযুক্ত ডাটাবেস দিয়ে শুরু করে এবং এলোমেলো ক্রমে 10,000 টি রেকর্ড যুক্ত করে থাকে, রেকর্ডগুলি সম্ভবত যুক্ত হওয়া ক্রমে শেষে যুক্ত করা হবে। সূচী অনুসারে ডাটাবেসটি পড়ার জন্য 10,000 এক-রেকর্ড রিডের প্রয়োজন হবে। যদি কেউ একটি ক্লাস্টার্ড ডাটাবেস ব্যবহার করে থাকে তবে সিস্টেমটি প্রতিটি রেকর্ড যুক্ত করার পরে পরীক্ষা করতে পারে যে পূর্ববর্তী রেকর্ডটি নিজেই সংরক্ষণ করেছিল কিনা; যদি এটি এটির মতো পাওয়া যায় তবে এটি ডাটাবেসের শেষে নতুনটির সাথে রেকর্ডটি লিখতে পারে। এটি স্লটগুলির আগে শারীরিক রেকর্ডের দিকে নজর দিতে পারে যেখানে সরানো রেকর্ডগুলি ব্যবহৃত হত এবং দেখতে পাবে যে এরপরে রেকর্ডটি নিজেই সংরক্ষণ করেছিল। যদি এটি এটির মতো পাওয়া যায় তবে এটি সেই রেকর্ডটি সেই জায়গায় স্থানান্তরিত করতে পারে। এই ধরণের পদ্ধতির ব্যবহারের ফলে অনেকগুলি রেকর্ড জোড়ায় একত্রে গোষ্ঠীভূত হবে,

বাস্তবে, ক্লাস্টার করা ডাটাবেসগুলি এর চেয়ে বেশি পরিশীলিত অ্যালগরিদম ব্যবহার করে। তবে একটি গুরুত্বপূর্ণ বিষয় লক্ষণীয়, এটি হ'ল ডাটাবেস আপডেট করার জন্য প্রয়োজনীয় সময় এবং ক্রমানুসারে এটি পড়ার জন্য প্রয়োজনীয় সময়ের মধ্যে একটি বাণিজ্য রয়েছে। একটি ক্লাস্টার্ড ডাটাবেস বজায় রাখা বাছাইয়ের ক্রমকে প্রভাবিত করে এমন কোনও উপায়ে রেকর্ড যুক্ত করতে, অপসারণ করতে বা আপডেট করতে প্রয়োজনীয় কাজের পরিমাণ উল্লেখযোগ্যভাবে বৃদ্ধি করবে। যদি ডাটাবেসটি আপডেট হওয়ার চেয়ে অনেক বেশি ক্রমানুসারে পাঠ করা হয় তবে ক্লাস্টারিং একটি বড় জয় হতে পারে। যদি এটি প্রায়শই আপডেট করা হয় তবে খুব কমই ধারাবাহিকভাবে পাঠ করা হয়, ক্লাস্টারিং একটি বৃহত পারফরম্যান্স ড্রেন হতে পারে, বিশেষত যদি ডাটাবেসে আইটেমগুলি যুক্ত করা হয় তবে ক্লাস্টারযুক্ত সূচকগুলির ক্ষেত্রে তাদের ক্রমানুসারে স্বাধীন হয়।


5

একটি ক্লাস্টার্ড সূচকটি আসলে ক্রমটি বর্ণিত করে যেখানে রেকর্ডগুলি শারীরিকভাবে ডিস্কে সঞ্চিত থাকে, সুতরাং আপনার কেবলমাত্র এটি থাকতে পারে।

একটি ক্লাস্টারযুক্ত সূচক একটি লজিকাল অর্ডার সংজ্ঞায়িত করে যা ডিস্কে শারীরিক ক্রমের সাথে মেলে না।


2

আপনি উপরের পোস্টগুলি থেকে তত্ত্বের অংশটি পেরিয়ে যেতে পারেন:

- ক্লাস্টারড ইনডেক্স যেমন আমরা সরাসরি রেকর্ড করতে পয়েন্ট দেখতে পাচ্ছি অর্থাৎ এটির সরাসরি তাই এটি অনুসন্ধানের জন্য কম সময় নেয়। অতিরিক্তভাবে এটি সূচক সঞ্চয় করতে কোনও অতিরিক্ত মেমরি / স্থান গ্রহণ করবে না

-হেতু, ক্লাস্টারবিহীন সূচীতে এটি পরোক্ষভাবে ক্লাস্টারড সূচকে নির্দেশ করে তবে এটি প্রকৃত রেকর্ডটি অ্যাক্সেস করতে পারে, তার অপ্রত্যক্ষ প্রকৃতির কারণে এটি অ্যাক্সেস করতে আরও কিছুটা সময় সময় নিতে পারে A এছাড়াও এটি সংরক্ষণ করার জন্য এটির নিজস্ব স্মৃতি / স্থান প্রয়োজন সূচক

এখানে চিত্র বর্ণনা লিখুন


0

// এমএসডিএন থেকে অনুলিপি করা হয়েছে, নন-ক্লাস্টারড ইনডেক্সের দ্বিতীয় পয়েন্টটি অন্য উত্তরে পরিষ্কারভাবে উল্লেখ করা হয়নি।

ক্লাস্টার

  • ক্লাস্টারড ইনডেক্সগুলি টেবিলে ডেটা সারিগুলিকে বাছাই করে এবং তাদের মূল মানগুলির উপর ভিত্তি করে সঞ্চয় করে। এগুলি সূচী সংজ্ঞায় অন্তর্ভুক্ত কলামগুলি। প্রতি টেবিলে কেবল একটি ক্লাস্টারড সূচক থাকতে পারে, কারণ তথ্য সারিগুলি কেবলমাত্র একটি ক্রমে সংরক্ষণ করা যেতে পারে।
  • যখন সারণীতে ক্লাস্টারযুক্ত সূচক থাকে তখন কেবলমাত্র কোনও টেবিলে ডেটা সারিগুলি সাজানো ক্রমে সংরক্ষণ করা হয়। যখন কোনও টেবিলের একটি ক্লাস্টার্ড সূচক থাকে, তখন টেবিলটিকে ক্লাস্টার টেবিল বলে। যদি কোনও টেবিলের কোনও ক্লাস্টারযুক্ত সূচক না থাকে, তবে এর ডেটা সারিগুলিকে একটি হিপ বলা একটি আনর্ডারড স্ট্রাকচারে সঞ্চিত করা হয়।

Nonclustered

  • নন ক্ল্লাস্টারড ইনডেক্সের ডেটা সারি থেকে আলাদা একটি কাঠামো রয়েছে। একটি ননক্লাস্টারড ইনডেক্সে অবিবাহিত সূচি কী মানগুলি থাকে এবং
    প্রতিটি কী মান প্রবেশের মূল সারণীতে ডেটা সারিতে একটি পয়েন্টার থাকে।
  • একটি অনাবিলিকৃত সূচীতে একটি ইনডেক্স সারি থেকে একটি ডাটা সারিতে নির্দেশককে একটি সারি লোকেটার বলা হয়। সারি লোকেটারের কাঠামো ডেটা পৃষ্ঠাগুলি একটি গাদা বা একটি ক্লাস্টার্ড টেবিলের মধ্যে সঞ্চয় করা আছে কিনা তার উপর নির্ভর করে। একটি গাদা জন্য, একটি সারি লোকেটার সারি একটি পয়েন্টার। একটি ক্লাস্টার্ড টেবিলের জন্য, সারি লোকেটারটি ক্লাস্টারড ইনডেক্স কী।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.