ক্লাস্টারড এবং নন ক্লাস্টারড ইনডেক্স আসলে কী বোঝায়?


1115

আমার কাছে ডিবি-র সীমাবদ্ধতা রয়েছে এবং কেবলমাত্র অ্যাপ্লিকেশন প্রোগ্রামার হিসাবে ডিবি ব্যবহার করেছি। আমি Clusteredএবং সম্পর্কে জানতে চাই Non clustered indexes। আমি গুগল করেছিলাম এবং যা পেয়েছিলাম তা হ'ল:

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

আমি এসও-তে যা খুঁজে পেয়েছি তা হল একটি ক্লাস্টার এবং নন-ক্লাস্টারড ইনডেক্সের মধ্যে পার্থক্যগুলি কী?

কেউ কি সরল ইংরেজিতে এটি ব্যাখ্যা করতে পারেন?

উত্তর:


1114

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

ক্লাস্টারবিহীন সূচকের সাথে একটি দ্বিতীয় তালিকা রয়েছে যা শারীরিক সারিগুলিতে পয়েন্টার রয়েছে। আপনার অনেকগুলি ক্লাস্টারযুক্ত সূচক থাকতে পারে, যদিও প্রতিটি নতুন সূচি নতুন রেকর্ড লিখতে সময় বাড়িয়ে তুলবে।

আপনি যদি সমস্ত কলামগুলি ফিরে পেতে চান তবে একটি ক্লাস্টার্ড সূচক থেকে পড়া সাধারণত দ্রুত হয়। আপনাকে প্রথমে সূচীতে এবং তারপরে টেবিলে যেতে হবে না।

ক্লাস্টারড ইনডেক্স সহ কোনও টেবিলে লেখা ধীর হতে পারে, যদি ডেটা পুনরায় সাজানোর প্রয়োজন হয়।


43
"শারীরিকভাবে" বলতে কী বোঝাতে চাইছেন তা আপনাকে পরিষ্কার করা উচিত।
স্পেনসার রুপোর্ট

141
শারীরিকভাবে যেমন ডিস্কে সংরক্ষিত আসল বিটগুলির মতো
পিটার

17
পড়ুন MSDN "আপনি যখন একটি প্রাথমিক কী বাধ্যতা তৈরি, কলাম বা কলাম একটি অনন্য ক্লাস্টার সূচক স্বয়ংক্রিয়ভাবে তৈরি হয় যদি , যার মানে এটি প্রয়োজন হয় না একই কলাম হতে হবে টেবিলের উপর একটি ক্লাস্টার সূচক ইতিমধ্যে বিদ্যমান নয়"।
মিং

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

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

601

একটি ক্লাস্টারড ইনডেক্স বলতে বোঝায় যে আপনি ডাটাবেসটিকে ডিস্কে একে অপরের নিকটে থাকা কাছের মানগুলি সংরক্ষণ করতে বলছেন। এটি ক্লাস্টার ইনডেক্স মানগুলির কিছু পরিসরে পড়ে রেকর্ডগুলি দ্রুত স্ক্যান / পুনরুদ্ধারের সুবিধা অর্জন করে।

উদাহরণস্বরূপ, আপনার কাছে দুটি টেবিল রয়েছে, গ্রাহক এবং অর্ডার:

Customer
----------
ID
Name
Address

Order
----------
ID
CustomerID
Price

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

পিএস গ্রাহকআইডি-তে সূচকটি অবশ্যই স্পষ্টভাবে অনন্য হবে না, সুতরাং আপনাকে সূচকটি "আলাদা করা" করতে একটি দ্বিতীয় ক্ষেত্র যুক্ত করতে হবে বা ডাটাবেসটি আপনার পক্ষে হ্যান্ডেল করা উচিত তবে এটি অন্য গল্প।

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


4
বলা হচ্ছে সিআই সর্বদা পিকে
mko

4
সুতরাং একটি ক্লাস্টারড ইনডেক্সের সাথে কি এটি সূচকের রেকর্ড বা টেবিল যা একসাথে সঞ্চিত থাকে?
কলটার

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

9
@ ক্যাল্টার মোটেও না! প্রকৃতপক্ষে, ডকুমেন্টেশন এবং নাম নিজেই বেশ বিভ্রান্তিকর। একটি "ক্লাস্টারড ইনডেক্স" থাকার সূচকের সাথে সত্যিকারের খুব কম সম্পর্ক রয়েছে। ধারণামূলকভাবে, আপনার কাছে যা আছে তা হ'ল "সূচি x এর উপর একটি টেবিল ক্লাস্টারড "।
FLGMwt

3
@ JohnOrtizOrdoñez: অবশ্যই, আপনি প্রায় কোনো একটি ব্যবহার করতে পারে এর সারি সঞ্চিত, তাই কোনও XML, VARCHAR(MAX)অথবা VARBINARY(MAX)। লক্ষ্য করুন এটি সাধারণত তারিখ ক্ষেত্রের উপর ক্লাস্টার জ্ঞান করে তোলে প্রথম , যেমন ক্লাস্টার সূচক পরিসীমা স্ক্যান, যা তারিখ ধরনের সবচেয়ে সাধারণ হয় সবচেয়ে কার্যকরী। YMMV।

317

এসকিউএল সার্ভার সারি ওরিয়েন্টেড স্টোরেজে ক্লাস্টারড এবং নন ক্ল্লাস্টারড উভয় সূচকে বি ট্রি হিসাবে সংগঠিত করা হয়।

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

( চিত্র উত্স )

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

  1. ক্লাস্টারড ইনডেক্স পাতার পৃষ্ঠাগুলিতে সারিগুলিতে সর্বদা সারণীতে প্রতিটি (অপ্রকাশহীন) কলামের জন্য কিছু থাকে (মান বা প্রকৃত মানের দিকে নির্দেশক)।
  2. ক্লাস্টার্ড সূচকটি কোনও সারণীর প্রাথমিক অনুলিপি।

নন ক্লাস্টারযুক্ত সূচীগুলি INCLUDEস্পষ্টভাবে সমস্ত অ-কী কলামগুলি অন্তর্ভুক্ত করার জন্য ক্লজটি (এসকিউএল সার্ভার ২০০৫) ব্যবহার করে পয়েন্ট 1ও করতে পারে তবে সেগুলি গৌণ উপস্থাপনা এবং চারপাশের তথ্যের অনুলিপি (টেবিল নিজেই) থাকে।

CREATE TABLE T
(
A INT,
B INT,
C INT,
D INT
)

CREATE UNIQUE CLUSTERED INDEX ci ON T(A,B)
CREATE UNIQUE NONCLUSTERED INDEX nci ON T(A,B) INCLUDE (C,D)

উপরের দুটি সূচক প্রায় অভিন্ন হবে। উপরের স্তরের সূচী পৃষ্ঠাগুলি সহ কী কলাম A,Bএবং মান পাতার স্তরযুক্ত পৃষ্ঠাগুলির মান রয়েছেA,B,C,D

টেবিলের জন্য কেবল একটি ক্লাস্টার ইনডেক্স থাকতে পারে, কারণ তথ্য সারিগুলি কেবলমাত্র একটি ক্রমে বাছাই করা যায়।

অনলাইন এসকিউএল সার্ভার বইয়ের উপরের উক্তিটি অনেক বিভ্রান্তির কারণ ঘটায়

আমার মতে এটি আরও ভাল হিসাবে চিহ্নিত করা হবে।

শুধুমাত্র এক টেবিল প্রতি ক্লাস্টার সূচক হতে পারে, কারণ ক্লাস্টার সূচক পাতার স্তর সারি হয় সারণী সারিগুলি।

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

এটি একটি অযৌক্তিক বাস্তবায়ন হবে। উদাহরণস্বরূপ, যদি একটি সারিতে 4 গিগাবাইট টেবিলের মাঝখানে ঢোকানো হয় SQL সার্ভার নেই না 2GB ডাটা সদ্য ঢোকানো সারি করে তুলুন রুমে ফাইলে আপ কপি করতে হবে।

পরিবর্তে একটি পৃষ্ঠা বিভক্ত হয়। ক্লাস্টারযুক্ত এবং নন-ক্লাস্টারযুক্ত উভয় সূচকের পাতার স্তরের প্রতিটি পৃষ্ঠার File:Pageলজিকাল কী ক্রমে পরবর্তী এবং পূর্ববর্তী পৃষ্ঠার ঠিকানা ( ) রয়েছে। এই পৃষ্ঠাগুলি হয় হয় না সুসংগত বা মূল ক্রমে।

যেমন লিঙ্কযুক্ত পৃষ্ঠা শৃঙ্খলা হতে পারে 1:2000 <-> 1:157 <-> 1:7053

যখন কোনও পৃষ্ঠার বিভাজন ঘটে তখন ফাইলগ্রুপের যে কোনও জায়গা থেকে একটি নতুন পৃষ্ঠা বরাদ্দ করা হয় (হয় মিশ্র পরিমাণে, ছোট টেবিলের জন্য, বা সেই অবজেক্টের সাথে একটি খালি অভিন্ন ইউনিট বা নতুন বরাদ্দ করা অভিন্ন পরিমাণ)। যদি ফাইল গ্রুপে একের বেশি থাকে তবে এটি একই ফাইলে নাও থাকতে পারে।

যৌক্তিক শৃঙ্খলা এবং স্বরূপ আদর্শ ডিগ্রিযুক্ত শারীরিক সংস্করণ থেকে যে ডিগ্রি থেকে পৃথক হয় তা হ'ল লজিকাল খণ্ডন of

একটি একক ফাইল সহ একটি নতুন তৈরি ডাটাবেসে আমি নিম্নলিখিতগুলি চালিত করেছি।

CREATE TABLE T
  (
     X TINYINT NOT NULL,
     Y CHAR(3000) NULL
  );

CREATE CLUSTERED INDEX ix
  ON T(X);

GO

--Insert 100 rows with values 1 - 100 in random order
DECLARE @C1 AS CURSOR,
        @X  AS INT

SET @C1 = CURSOR FAST_FORWARD
FOR SELECT number
    FROM   master..spt_values
    WHERE  type = 'P'
           AND number BETWEEN 1 AND 100
    ORDER  BY CRYPT_GEN_RANDOM(4)

OPEN @C1;

FETCH NEXT FROM @C1 INTO @X;

WHILE @@FETCH_STATUS = 0
  BEGIN
      INSERT INTO T (X)
      VALUES        (@X);

      FETCH NEXT FROM @C1 INTO @X;
  END

তারপরে পৃষ্ঠা বিন্যাসটি পরীক্ষা করে দেখুন

SELECT page_id,
       X,
       geometry::Point(page_id, X, 0).STBuffer(1)
FROM   T
       CROSS APPLY sys.fn_PhysLocCracker( %% physloc %% )
ORDER  BY page_id

ফলাফলগুলি জায়গা জুড়ে ছিল। মূল ক্রমের প্রথম সারি (মান 1 সহ - নীচে তীর দিয়ে হাইলাইট করা) প্রায় শেষ শারীরিক পৃষ্ঠায় ছিল।

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

যৌক্তিক শৃঙ্খলা এবং শারীরিক শৃঙ্খলার মধ্যে পারস্পরিক সম্পর্ককে বাড়িয়ে তুলতে কোনও সূচি পুনর্গঠন বা পুনর্গঠনের মাধ্যমে খণ্ডন হ্রাস বা সরিয়ে নেওয়া যেতে পারে।

দৌড়ানোর পরে

ALTER INDEX ix ON T REBUILD;

আমি নিম্নলিখিত পেয়েছি

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

যদি টেবিলটির কোনও ক্লাস্টারড সূচক না থাকে তবে এটিকে হিপ বলা হয়।

নন ক্লাস্টারড ইনডেক্সগুলি হিপ বা একটি ক্লাস্টার ইনডেক্সে তৈরি করা যেতে পারে। এগুলি সর্বদা বেস সারণীতে ফিরে একটি সারি লোকেটার ধারণ করে। স্তূপের ক্ষেত্রে এটি একটি শারীরিক সারি শনাক্তকারী (মুক্তি) এবং তিনটি উপাদান নিয়ে গঠিত (ফাইল: পৃষ্ঠা: স্লট)। ক্লাস্টারড ইনডেক্সের ক্ষেত্রে সারি লোকেটারটি যৌক্তিক (ক্লাস্টারড ইনডেক্স কী)।

পরবর্তী ক্ষেত্রে যদি নন-ক্লাস্টারড সূচকটি ইতিমধ্যে প্রাকৃতিকভাবে সিআই কী কলাম (গুলি) এনসিআই কী কলাম বা INCLUDE-d কলাম হিসাবে অন্তর্ভুক্ত করে থাকে তবে কিছুই যুক্ত হয় না। অন্যথায় অনুপস্থিত সিআই কী কলাম (গুলি) চুপচাপ এনসিআইতে যুক্ত হবে।

এসকিউএল সার্ভার সর্বদা নিশ্চিত করে যে কী কলামগুলি উভয় প্রকারের সূচকের জন্য অনন্য। সূচিগুলির জন্য এটি যে পদ্ধতিতে প্রয়োগ করা হয় তা দুটি সূচক প্রকারের মধ্যে অনন্য হিসাবে ঘোষণা করা হয় না।

ক্লাস্টারড সূচকগুলি uniquifierকোনও বিদ্যমান সারিটির সদৃশ করে মূল মানগুলির সাথে যে কোনও সারিগুলির জন্য একটি সংযুক্ত করে। এটি কেবল একটি আরোহী পূর্ণসংখ্যা।

অ ক্লাস্টারযুক্ত সূচীগুলির জন্য অনন্য এসকিউএল সার্ভার হিসাবে ঘোষিত নয় এমনভাবে নন ক্লাস্টারড ইনডেক্স কীতে সারি লোকেটারটি নীরবে যুক্ত করে। এটি সমস্ত সারিগুলিতে প্রযোজ্য, কেবলমাত্র প্রকৃত নকল নয়।

ক্লাস্টার্ড বনাম নন ক্লাস্টারযুক্ত নামকরণ কলাম স্টোর সূচীগুলির জন্যও ব্যবহৃত হয়। কাগজ SQL সার্ভার কলাম দোকানে উন্নতি রাজ্যের

যদিও কলাম স্টোরের ডেটা কোনও কীতে সত্যই "ক্লাস্টারড" নয়, আমরা প্রাথমিক সূচকে একটি ক্লাস্টার্ড সূচক হিসাবে উল্লেখ করার জন্য traditionalতিহ্যবাহী এসকিউএল সার্ভার কনভেনশন ধরে রাখার সিদ্ধান্ত নিয়েছি।


8
@ ব্রেনস্টর্ম হ্যাঁ আমি এটি সম্পর্কে অবহিত। সম্ভবত এটি এই এমএসডিএন পৃষ্ঠায় ফ্রেসিংয়ের কারণেই রয়েছে তবে সেখানকার ফ্রেসিংগুলি কিছুটা বিভ্রান্ত করছে এমনটি দেখার জন্য আপনাকে কেবল খণ্ডিত বিষয়গুলি দেখার প্রয়োজন
মার্টিন স্মিথ

12
@ ব্রেনস্টর্ম: আশ্চর্যজনক যে কীভাবে কিছু মিথ্যা বক্তব্য সুসমাচার হিসাবে পুনরাবৃত্তি হয়। একটি ক্লাস্টার্ড ইঙ্গিত দেয় যে, কমপক্ষে পাঠ্যক্রমের দৃষ্টিকোণ থেকে, সারিগুলি সূচকের মতো একই ক্রমে ডিস্কে শারীরিকভাবে সংরক্ষণ করা "আকাঙ্ক্ষিত" হবে , তবে এটি তাদের সত্যিকারের কারণ হিসাবে ডেকে আবেগ প্রকাশ করবে না যেমন একটি ফ্যাশনে সংরক্ষণ করা।
সুপারক্যাট

5
@ মার্টিনস্মিত আমি আপনার পরীক্ষার ফলাফল পুনরুত্পাদন এবং নিশ্চিত করেছি SQL Server 2014। আমি 95%প্রাথমিক সন্নিবেশের পরে সূচকের বিভাজন পেতে পারি । পরে index rebuildফ্র্যাগমেন্টেশন ছিল 0%এবং মান আদেশ হয়। আমি ভাবছি, আমরা কি তা বলতে পারি The only time the data rows in a table are stored in sorted order is when its clustered index fragmentation is 0?
gotqn

8
@ মার্টিনস্মিথ এখন, স্যার, এটি একটি উত্তর। আমি এটি প্রতিক্রিয়া তালিকার শীর্ষে দেখতে পছন্দ করতে চাই তবে এসিও যেতে যেতে "দ্রুত এবং সাধারণ" উত্সাহ অর্জন করে।
ভাইরাফরা

5
@ মানাচি এই উত্তরটি মূল প্রশ্ন জিজ্ঞাসার 5 বছর পরে দেওয়া হয়েছিল। এর উদ্দেশ্য হ'ল এই উত্তরগুলির কয়েকটি বিভ্রান্তিকর দিক সংশোধন করা। ওপিতে (এখন 8 বছর বয়সী) স্নিগ্ধতা আমার কোনও উদ্বেগ নয়। অন্যান্য পাঠকরা নিম্ন স্তরের দৃশ্যের প্রশংসা করতে পারে।
মার্টিন স্মিথ

149

আমি বুঝতে পেরেছি যে এটি একটি খুব পুরানো প্রশ্ন, তবে আমি ভেবেছিলাম উপরে উল্লিখিত উত্তরের উত্তরগুলি চিত্রিত করার জন্য আমি একটি উপমা দেব।

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

আপনি যদি কোনও পাবলিক লাইব্রেরিতে যান তবে আপনি দেখতে পাবেন যে বইগুলি সমস্ত নির্দিষ্ট ক্রমে সাজানো হয়েছে (সম্ভবত সম্ভবত ডিউই ডেসিমাল সিস্টেম, বা ডিডিএস)। এটি বইয়ের "ক্লাস্টারড ইনডেক্স" এর সাথে মিলে যায়। আপনার পছন্দের বইটির ডিডিএস যদি হয় তবে আপনি 005.7565 F736sলেবেলযুক্ত বইয়ের দোকানগুলির সারি 001-099বা এটির মতো কিছু সন্ধান করে শুরু করবেন। (স্ট্যাকের শেষে এই এন্ডক্যাপ সাইনটি সূচকের একটি "ইন্টারমিডিয়েট নোড" এর সাথে মিলে যায়) অবশেষে আপনি নির্দিষ্ট লেবেলযুক্ত শেল্ফটির সাথে ড্রিল করবেন 005.7450 - 005.7600, তারপরে নির্দিষ্ট ডিডিএস # সহ বইটি না পাওয়া পর্যন্ত আপনি স্ক্যান করতে পারবেন আপনি আপনার বই খুঁজে পেয়েছি যে পয়েন্ট

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

তবে আপনি যদি নিজের বইয়ের ডিডিএস # মুখস্থ করে লাইব্রেরিতে না এসে থাকেন তবে আপনাকে সহায়তা করার জন্য আপনার দ্বিতীয় সূচকের দরকার হবে। পুরানো দিনগুলিতে আপনি লাইব্রেরির সামনের দিকে দেখতে পাবেন একটি দুর্দান্ত দফতর দফতর যা "কার্ড ক্যাটালগ" নামে পরিচিত। এতে কয়েক হাজার 3x5 কার্ড ছিল - প্রতিটি বইয়ের জন্য একটি করে, বর্ণানুক্রমিকভাবে সাজানো (শিরোনাম অনুসারে, সম্ভবত)। এটি "নন-ক্লাস্টারড ইনডেক্স" এর সাথে মিলে যায় । এই কার্ডের ক্যাটালগগুলি একটি শ্রেণিবিন্যাসিক কাঠামোয় সংগঠিত করা হয়েছিল, যাতে প্রতিটি ড্রয়ারের মধ্যে থাকা কার্ডের ব্যাপ্তি ( Ka - Klযেমন উদাহরণস্বরূপ, "মধ্যবর্তী নোড") লেবেলযুক্ত হবে । আবার, আপনি নিজের বইটি না পাওয়া পর্যন্ত আপনি এটি চালিয়ে যাবেন তবে এই ক্ষেত্রে একবার আপনি এটি খুঁজে পেয়েছেন (অর্থাত্ "পাতার নোড") আপনার কাছে বইটি নেই,সূচক নম্বর (ডিডিএস #) যার সাহায্যে আপনি ক্লাস্টারড ইনডেক্সে আসল বইটি খুঁজে পেতে পারেন।

অবশ্যই, লাইব্রেরিয়ানকে সমস্ত কার্ডের ফটোকপি করা এবং আলাদা কার্ডের ক্যাটালগে একটি আলাদা ক্রমে বাছাই করা থেকে বিরত থাকবে না। (সাধারণত এখানে কমপক্ষে দুটি ক্যাটালগ ছিল: একটি লেখকের নাম অনুসারে বাছাই করা, এবং একটি শিরোনাম অনুসারে)


2
আমি, সম্ভবত, "অন্তর্ভুক্ত" কলামগুলি বর্ণনা করার জন্য এই উপমাটি প্রসারিত করতে পারলাম, যা নন-ক্লাস্টারড ইনডেক্সগুলির সাথে ব্যবহার করা যেতে পারে: কার্ডের ক্যাটালগে কেবলমাত্র একটি বই ছাড়াও কোনও কার্ড কল্পনা করতে পারে, তবে পরিবর্তিত সমস্ত প্রকাশিতের একটি তালিকা বইয়ের সংস্করণগুলি, প্রকাশের তারিখ অনুসারে সংখ্যাগতভাবে সংগঠিত। একটি "অন্তর্ভুক্ত কলামে" ঠিক তেমন এই তথ্যটি কেবল পাতার স্তরে সংরক্ষণ করা হয় (এইভাবে গ্রন্থাগারিকদের তৈরি হওয়া কার্ডের সংখ্যা হ্রাস করতে হবে)।
কিমিওট

দুর্দান্ত উপমা - সত্যই এটি কল্পনা করতে সাহায্য করে!
ডেনিস

71

ক্লাস্টারযুক্ত এবং নন-ক্লাস্টারযুক্ত সূচকগুলির কয়েকটি বৈশিষ্ট্য নীচে সন্ধান করুন:

ক্লাস্টারড ইনডেক্সসমূহ

  1. ক্লাস্টারড ইনডেক্সগুলি এমন একটি সূচক যা একটি এসকিউএল টেবিলের সারিগুলি অনন্যভাবে সনাক্ত করে।
  2. প্রতিটি টেবিলের ঠিক একটি ক্লাস্টার ইনডেক্স থাকতে পারে।
  3. আপনি একটি ক্লাস্টারড সূচক তৈরি করতে পারেন যা একাধিক কলাম কভার করে। উদাহরণস্বরূপ: create Index index_name(col1, col2, col.....)
  4. ডিফল্টরূপে, একটি প্রাথমিক কী সহ একটি কলামে ইতিমধ্যে একটি ক্লাস্টার্ড সূচক রয়েছে।

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

  1. নন-ক্লাস্টারযুক্ত সূচকগুলি সাধারণ সূচকের মতো। এগুলি কেবলমাত্র ডেটা দ্রুত পুনরুদ্ধারের জন্য ব্যবহৃত হয়। অনন্য ডেটা আছে তা নিশ্চিত নয়।

34
পয়েন্ট ১ এর একটি সামান্য সংশোধন একটি ক্লাস্টারযুক্ত সূচক অগত্যা একটি এসকিউএল টেবিলের সারিগুলি সনাক্ত করতে পারে না । এটি একটি প্রাথমিক কী এর কাজ
নাইজেল

4
@ নিগেল, একটি প্রাথমিক কী বা একটি অনন্য সূচক?
আনার খলিলভ

বাস্তব এবং সরাসরি উত্তর, ধন্যবাদ @ অনিরুদ সুদ
অস্কার রোমেরো

49

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


47

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

একটি ক্লাস্টার্ড সূচক একটি টেবিলের মধ্যে ডেটার শারীরিক ক্রম নির্ধারণ করে this এই কারণে একটি টেবিলটিতে কেবল 1 টি ক্লাস্টারড সূচক রয়েছে।

  • " অভিধান " কোনও অন্য সূচকের প্রয়োজন নেই, শব্দ অনুসারে এটি ইতিমধ্যে সূচক

অবিচ্ছিন্ন সূচক

একটি ক্লাস্টারযুক্ত সূচী কোনও বুকের সূচকের সাথে অনুরূপ data তথ্যটি এক জায়গায় সংরক্ষণ করা হয়। সূচকটি অন্য স্থানে সংরক্ষণ করছে এবং সূচীর ডাটা স্টোরেজের অবস্থানের দিকে পয়েন্টার রয়েছে this এজন্য একটি টেবিলটিতে 1 টিরও বেশি নন-ক্ল্লাস্টার্ড সূচক রয়েছে।

  • " কেমিস্ট্রি বই" স্টার করে অধ্যায়টির অবস্থান নির্দেশ করার জন্য পৃথক সূচক রয়েছে এবং "সমাপ্তি" এ রয়েছে অন্য একটি সূচক যা সাধারণ ওয়ার্ডস অবস্থানের দিকে নির্দেশ করছে

6

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

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

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

Nonclustered

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

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

তথ্যসূত্র: https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes- বিবৃত


4

আমাকে "ক্লাস্টারিং ইনডেক্স" এর উপর একটি পাঠ্যপুস্তকের সংজ্ঞা দেওয়া যাক যা ডেটাবেস সিস্টেমগুলি থেকে 15.6.1 থেকে নেওয়া হয়েছে : সম্পূর্ণ বই :

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

সংজ্ঞাটি বোঝার জন্য, পাঠ্যপুস্তকের দ্বারা সরবরাহিত উদাহরণ 15.10 দেখুন:

একটি সম্পর্ক R(a,b)যা অ্যাট্রিবিউটের ভিত্তিতে বাছাই করা হয় aএবং সেই ক্রমে সংরক্ষণ করা হয়, ব্লকগুলিতে প্যাক করা হয়েছে অবশ্যই ক্লাস্টারড। উপর একটি সূচক a, একটি ক্লাস্টারিং সূচি থেকে দেওয়া a-value A1 জন্য যে মান রয়েছে এমন সমস্ত tuples aপরপর হয়। এগুলি এগুলি ব্লকগুলিতে প্যাকড প্রদর্শিত হয়, সম্ভবত প্রথম এবং শেষের ব্লকগুলিতে ব্যতীত যেগুলি a-১ মান 1 অন্তর্ভুক্ত থাকে, যেমন চিত্র 15.14 তে প্রস্তাবিত। যাইহোক, বি একটি সূচক, ক্লাস্টারিং হতে অসম্ভাব্য যেহেতু সঙ্গে tuples সংশোধন একটি b-value সব যদি না মান ফাইল ছড়িয়ে হতে হবে aএবং bখুব ঘনিষ্ঠভাবে সম্পর্কিত হয়।

চিত্র 15.14

নোট করুন যে সংজ্ঞাটি ডেটা ব্লকে ডিস্কের সাথে সামঞ্জস্যপূর্ণ থাকতে হবে না; এটি কেবলমাত্র বলে যে অনুসন্ধান কী সহ টিউপলগুলি যতটা সম্ভব ডেটা ব্লকে প্যাক করা থাকে।

একটি সম্পর্কিত ধারণা ক্লাস্টার রিলেশন । কোনও সম্পর্ককে "ক্লাস্টারড" করা হয় যদি এর টিউপসগুলি প্রায় কয়েকটি ব্লকে প্যাক করা হয় তবে সম্ভবত এই টিপলগুলি ধরে রাখতে পারে। অন্য কথায়, একটি ডিস্ক ব্লক দৃষ্টিকোণ থেকে, যদি এটিতে বিভিন্ন সম্পর্ক থেকে টিপলস থাকে, তবে সেই সম্পর্কগুলিকে ক্লাস্টার করা যায় না (যেমন, অন্যান্য ডিস্ক ব্লকের সাথে সেই সম্পর্কের টিপলগুলি অদলবদল করে এমন সম্পর্ক সংরক্ষণের আরও একটি প্যাকড উপায় রয়েছে) বর্তমান ডিস্ক ব্লকের সম্পর্কের সাথে সম্পর্কিত নয় এমন টিপলস)। স্পষ্টতই, R(a,b)উদাহরণস্বরূপ ক্লাস্টারযুক্ত।

দুটি ধারণাকে একসাথে সংযুক্ত করতে, একটি ক্লাস্টারযুক্ত সম্পর্কের একটি ক্লাস্টারিং সূচক এবং ননক্র্লাস্টিং সূচক থাকতে পারে। তবে, ক্লাস্টারবিহীন সম্পর্কের জন্য, সম্পর্কের প্রাথমিক কীটির উপরে সূচকটি তৈরি না করা হলে ক্লাস্টারিং সূচক সম্ভব নয়।

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

তবে কিছু শিক্ষণ উপাদান ক্লাস্টারড ফাইল সংজ্ঞা অনুসারে ক্লাস্টারিং সূচক সংজ্ঞায়িত করতে পছন্দ করে। এই দুটি ধরণের সংজ্ঞা ক্লাস্টার রিলেশন লেভেলে একই, তারা ডেটা ডিস্ক ব্লক বা ফাইলের ক্ষেত্রে ক্লাস্টার্ড সম্পর্ককে নির্ধারণ করে কিনা তা বিবেচনা করে না। এই অনুচ্ছেদে লিঙ্কটি থেকে,

একটি ফাইলের অ্যাট্রিবিউট (এ) এ এর ​​একটি সূচক একটি ক্লাস্টারিং সূচক যখন: বৈশিষ্ট্য মান A = ​​a সহ সমস্ত টিপলগুলি ডেটা ফাইলে ক্রমানুসারে (= পরপর) সংরক্ষণ করা হয়

টুপলসকে একটানা সংরক্ষণ করে বলা হচ্ছে "টিপলগুলি প্রায় কয়েকটি ব্লকে প্যাক করা থাকে যতটা সম্ভব এই টিউপসগুলিকে ধরে রাখতে পারে" (ফাইলের বিষয়ে কথা বলার ক্ষেত্রে একটি ছোট পার্থক্য রয়েছে, অন্যটি ডিস্কের সাথে কথা বলে)। এটি কারণ যে ক্রমাগতভাবে টুপল সংরক্ষণ করা "অর্জন করতে পারে প্রায় কয়েকটি ব্লকের মধ্যে সম্ভবত সম্ভবত এই টিউপসগুলি ধরে রাখতে পারে" achieve


3

ক্লাস্টার্ড ইনডেক্স: প্রাথমিক কী বাধা যদি স্বয়ংক্রিয়ভাবে ক্লাস্টার ইনডেক্স তৈরি করে তবে টেস্টে কোনও ক্লাস্টারড সূচক ইতিমধ্যে বিদ্যমান নেই। ক্লাস্টারড ইনডেক্সের আসল তথ্য সূচকের পাতায় সংরক্ষণ করা যেতে পারে।

নন ক্লাস্টারড ইনডেক্স: নন-ক্লাস্টারড ইনডেক্সের প্রকৃত ডেটা সরাসরি পাত নোডে পাওয়া যায় না, পরিবর্তে এটি খুঁজে পেতে একটি অতিরিক্ত পদক্ষেপ নিতে হবে কারণ এতে কেবলমাত্র সারি লোকেটারের প্রকৃত ডেটার দিকে নির্দেশ করে মান রয়েছে। ক্লাস্টারযুক্ত সূচি ক্লাস্টার ইনডেক্স হিসাবে বাছাই করা যায় না। প্রতি টেবিলে একাধিক নন-ক্লাস্টারড ইনডেক্স থাকতে পারে, এটি আসলে আমরা ব্যবহার করা স্কেল সার্ভার সংস্করণের উপর নির্ভর করে। মূলত SQL সার্ভার 2005-এ 249 নন-ক্লাস্টারড ইনডেক্সের অনুমতি দেয় এবং ২০০৮, ২০১ versions এর মতো উপরের সংস্করণগুলির জন্য এটি প্রতি টেবিলে 999 নন-ক্লাস্টারড ইনডেক্সের অনুমতি দেয়।


2

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

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

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

  1. টেবিলের জন্য কেবল একটি ক্লাস্টার ইনডেক্স থাকতে পারে। তবে, আপনি একটি একক টেবিলে একাধিক নন-ক্লাস্টারযুক্ত সূচি তৈরি করতে পারেন।
  2. ক্লাস্টার্ড সূচকগুলি কেবল টেবিলগুলি বাছাই করে। অতএব, তারা অতিরিক্ত সঞ্চয়স্থান গ্রাস করে না। অ ক্লাস্টারযুক্ত সূচকগুলি আরও স্টোরেজ স্পেস দাবি করে প্রকৃত টেবিল থেকে পৃথক স্থানে সংরক্ষণ করা হয়।
  3. ক্লাস্টারড ইনডেক্সগুলি ক্লাস্টারযুক্ত নীতিমালার চেয়ে দ্রুততর কারণ তারা কোনও অতিরিক্ত অনুসন্ধানের পদক্ষেপের সাথে জড়িত না।

আরও তথ্যের জন্য এই নিবন্ধটি দেখুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.