কোনও পরিচয় কলামের সূচিটি অবিচ্ছিন্ন হওয়া উচিত?


19

পরিচয় কলাম সহ একটি টেবিলের জন্য, পরিচয় কলামের জন্য একটি ক্লাস্টারযুক্ত বা নন-ক্লাস্টারযুক্ত পিকে / অনন্য সূচি তৈরি করা উচিত?

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

create table T (
  Id int identity(1,1) primary key, -- clustered or non-clustered? (surrogate key, may be used to join another table)
  A .... -- A, B, C have mixed data type of int, date, varchar, float, money, ....
  B ....
  C ....
  ....)

create index ix_A on T (A)
create index ix_..... -- Many indexes can be created for queries

-- Common query is query on A, B, C, ....
select A, B 
from T 
where A between @a and @a+5 -- This query will have less LIO if the PK is non-clustered (seek)

select A, B, C
from T 
where B between @a and @a+5 

....

পরিচয় কলামে ক্লাস্টার্ড পিকে কারণ ভাল:

  1. এটি একঘেয়েমি বৃদ্ধি করে তাই pageোকানোর সময় কোনও পৃষ্ঠা বিভক্ত হয় না। এটি বলা হয়েছে যে একটি বাল্ক সন্নিবেশ হিপ (ননক্র্লাস্টারড) টেবিলে তত দ্রুত হতে পারে

  2. এটা সরু

তবে, প্রশ্নগুলির প্রশ্নগুলি এটি ক্লাস্টার না করেই দ্রুত হবে?

** আপডেট: ** Idঅন্যান্য টেবিলগুলির এফকে যদি হয় এবং এটি কিছু প্রশ্নের সাথে যোগ দেওয়া হয় তবে?


3
এটি আরও ভাল বা খারাপ নয়, এটি নির্ভর করে।
অ্যারন বারট্রান্ড

1
@ypercube লিঙ্কটি kejser.org/clustered-indexes-vs-heaps জানিয়েছে যে নন-সিআই-তে কম এলআইও থাকবে।
u23432534

2
আমি অতীতে নিবন্ধটি পড়েছি এবং এটি অবশ্যই উল্লেখ করেছে যে একটি ক্লাস্টারড ইনডেক্সের ক্ষেত্রে এবং একটি স্তূপের জন্য কেস রয়েছে। এটি সব কালো বা সব সাদা নয়।
ypercubeᵀᴹ

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

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

উত্তর:


16

ডিফল্টরূপে পিকে ক্লাস্টার করা হয় এবং বেশিরভাগ ক্ষেত্রে এটি ঠিক আছে। তবে কোন প্রশ্নটি জিজ্ঞাসা করা উচিত:

  • আমার পিকে ক্লাস্টার করা উচিত?
  • আমার ক্লাস্টারড ইনডেক্সের জন্য কোন কলাম (গুলি) সেরা কী হবে?

পিকে এবং ক্লাস্টার ইনডেক্স 2 পার্থক্যের জিনিস:

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

এখন আমরা 2 টি প্রশ্নের সাথে শেষ করছি:

  • আমি কীভাবে আমার টেবিলের (পিকে) সারিগুলি স্বতন্ত্ররূপে সনাক্ত করতে চাই?
  • আমি কীভাবে এটি সূচকের পাতার স্তরে সংরক্ষণ করতে চাই (ক্লাস্টারড ইনডেক্স)

এটি নির্ভর করে কীভাবে:

  • আপনি আপনার তথ্য মডেল ডিজাইন
  • আপনি আপনার তথ্য জিজ্ঞাসা এবং আপনি আপনার প্রশ্ন লিখুন
  • আপনি আপনার তথ্য sertোকান বা আপডেট করুন
  • ...

প্রথমত, আপনার কি ক্লাস্টারড ইনডেক্স দরকার? যদি আপনি প্রচুর পরিমাণে sertোকান, তবে কোনও হ্যাপে অর্ডারড করা ডেটা সংরক্ষণ করার পক্ষে এটি আরও দক্ষ ordered এটি আরআইডি (সারি সনাক্তকারী, 8 বাইট) সারিগুলি অনন্যভাবে সনাক্ত করতে এবং পৃষ্ঠাগুলিতে সংরক্ষণ করতে ব্যবহার করে।

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

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

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

তারপরে একবার আপনি কীভাবে নিজের টেবিলের সারিগুলি স্বতন্ত্ররূপে সনাক্ত করতে পারবেন তা বুঝতে পেরে আপনি একটি পিকে যুক্ত করতে পারেন। আপনি যদি মনে করেন আপনি এটি আপনার ক্যোয়ারিতে ব্যবহার করবেন না তবে এটি ক্লাস্টার তৈরি করবেন না। আপনার যদি কিছু সময় এটির জিজ্ঞাসা করা দরকার হয় তবে আপনি এখনও অন্য একটি অনিবন্ধিত সূচক তৈরি করতে পারেন। নোট করুন যে পিকে স্বয়ংক্রিয়ভাবে একটি অনন্য সূচক তৈরি করবে।

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

ক্লাস্টারড সূচকটি অনন্য এবং যতটা সম্ভব সংকীর্ণ হওয়া উচিত ক্লাস্টারড সূচি সময়ের সাথে পরিবর্তন করা উচিত নয় এবং ক্রমবর্ধমানভাবে সন্নিবেশ করা উচিত।

এখন এমন কিছু এসকিউএল লেখার সময় হয়েছে যা টেবিল, ক্লাস্টারড এবং নন ক্ল্লাস্টারড ইনডেক্স এবং সীমাবদ্ধতা তৈরি করবে।

এটি সমস্ত তাত্ত্বিক কারণ আমরা আপনার ডেটা মডেল এবং ব্যবহৃত ডেটাটাইপগুলি জানি না (এ এবং বি)।


11

একটি পরিচয় কলামে একটি প্রাথমিক কী (পিকে) সহ একটি টেবিলের জন্য, এটি ডিফল্টরূপে ক্লাস্টার করা হবে। এটি কি চূড়ান্ত হিসাবে ভাল হতে পারে?

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

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

প্রশ্নগুলির প্রশ্নগুলি ক্লাস্টার না করেই কী দ্রুত হবে?

হ্যাঁ, তবে সাবধানতার সাথে

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

আদেশ সহকারে

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

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

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

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


8

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

তবে দেখে মনে হয় যে প্রাথমিক কী এবং ক্লাস্টার ইনডেক্স উভয়ই ডাটাবেসের সিংহভাগ মূল্যবান ধারণা।

নীচে দেখানো হিসাবে কিছু সূচীকরণ বিকল্পগুলির আংশিক বিবরণ দেখতে আসুন এসকিউএল সার্ভার ডকুমেন্টেশনটি দেখি।

ক্লাস্টার্ড সূচক: https://msdn.microsoft.com/en-us/library/ms190457.aspx

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

প্রাথমিক কী: https://msdn.microsoft.com/en-us/library/ms190457.aspx

  • একটি টেবিলের মধ্যে কেবল একটি প্রাথমিক কী বাধা থাকতে পারে।

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

  • প্রাথমিক কীটি ক্লাস্টারড ইনডেক্স (কোনও ক্লাস্টারড ইনডেক্স না থাকলে ডিফল্ট) বা একটি ক্লাস্টারযুক্ত সূচক হিসাবে তৈরি করা যেতে পারে।

অনন্য সূচী: https://msdn.microsoft.com/en-us/library/ms187019.aspx

  • যখন আপনি একটি অনন্য প্রতিবন্ধকতা তৈরি করেন, তখন একটি অনন্য অবিচ্ছিন্ন সূচক ডিফল্টরূপে একটি অনন্য প্রতিবন্ধকতা প্রয়োগ করতে তৈরি করা হয়।

  • যদি ক্লাস্টারড সূচকটি ইতিমধ্যে টেবিলের জন্য উপস্থিত না থাকে তবে আপনি একটি অনন্য ক্লাস্টার্ড সূচক নির্দিষ্ট করতে পারেন।

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

ক্লাস্টারড সূচক থেকে আলাদা হয়ে গেলে প্রাথমিক কী থেকে আমি উপকৃত হব?

সম্ভবত যখন ক্লাস্টারড ইনডেক্স বিস্তৃত হবে (উদাহরণস্বরূপ, পাঠ্য তথ্যের 5 কলাম, তবে প্রাথমিক কীটি ছোট (INT বা BIGINT), যেমন আপনি বর্ণনা করছেন বলে মনে হয়।

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

আপনার কি একা প্রাথমিক কী ক্লাস্টারড ইনডেক্স করা উচিত?

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

  • এই প্রাথমিক কী ক্লাস্টারড ইনডেক্স সাধারণত ক্রমিকভাবে অনেকগুলি সারি নির্বাচন করার জন্য একটি সহজ পথ সরবরাহ করে না।

  • এখন আপনি একটি ক্লাস্টারড প্রাইমারি কী তৈরি করেছেন, আপনি একবারে ক্লাস্টারড ইনডেক্সে অন্তর্ভুক্ত করার পরিকল্পনা করেছিলেন এমন অন্যান্য কলামগুলির কী হবে ?

  • সি 1, সি 2, সি 3, সি 4, সি 5-এর কলামের বিস্তৃত অনুসন্ধানের মানদণ্ডকে সূচক করার জন্য প্রয়োজনীয় হিসাবে একটি অনন্য (বা একটি অনন্য) সূচক তৈরি করুন। এই "নকল ক্লাস্টারড" সূচকের মানগুলি সেই 5 টি কলামের জন্য দ্রুত অনুসন্ধানের পথ হিসাবে কাজ করতে পারে। যদি নিয়মিত বা পাশাপাশি নিয়মিতভাবে নির্বাচিত হয় এমন দুটি বা অন-ইনডেক্সযুক্ত কলাম থাকে তবে সেগুলি সূচকে অন্তর্ভুক্ত করা যেতে পারে INCLUDE (Doctor_Name, Diagnosis_Synopsis)

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

আপনার কি আদৌ একটি ক্লাস্টার্ড সূচক দরকার?

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

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

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

যা আপনাকে এখন গাদা বিবেচনায় নিয়ে যায়:

গাদা এবং সূচি: https://msdn.microsoft.com/en-us/library/hh213609.aspx

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

তবে আপনার যদি কোনও বড় ডেটা সেটে কিছু 'হট স্পট' থাকে তবে আপনি অন্য ধরণের সূচকটিও দেখতে পারেন:

ফিল্টার সূচক: https://msdn.microsoft.com/en-us/library/cc280372.aspx

  • একটি সু-নকশিত ফিল্টারড সূচক ক্যোয়ারি পারফরম্যান্স এবং এক্সিকিউশন পরিকল্পনার মানকে উন্নত করে কারণ এটি একটি পূর্ণ-সারণী নন ক্ল্লাস্টার্ড সূচকগুলির চেয়ে ছোট এবং পরিসংখ্যানগুলিকে ফিল্টার করেছে। ফিল্টার করা পরিসংখ্যানগুলি পূর্ণ টেবিলের পরিসংখ্যানের তুলনায় আরও নির্ভুল কারণ তারা ফিল্টারড সূচীতে কেবলমাত্র সারিগুলিকে cover েকে দেয়

  • ফিল্টারড সূচকগুলিতে অনেকগুলি বিধিনিষেধ রয়েছে যা ফিল্টারড সূচকগুলির লিঙ্কে বর্ণিত।

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

http://use-the-index-luke.com/blog/2014-01/unreasonable-defaults-primary-key-clustering-key

তবে সবশেষে আপনার অ্যাপ্লিকেশনটি বোঝার এবং কোডটি, টেবিলগুলি, সূচিগুলি এবং তাই আপনি যে কাজটি করছেন তার সাথে মানিয়ে নেওয়ার জন্য আবার ফিরে আসে।


এটি মূল্যবান জন্য, আমার দৈনন্দিন কাজে যদি আমি একটি টেবিল খুঁজে পাই তবে এটি একটি গাদা আমি সম্ভবত এটি একটি ত্রুটি বলে মনে করি এবং এটি বুদ্ধিমানভাবে একটি গাদা করা হয়েছে কিনা তা দেখার জন্য বিকাশকারীদের সাথে পরীক্ষা করে দেখুন।
আরএলএফ

-2

কয়েকটি বিষয় বিবেচনা করতে হবে।

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

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

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


আসলে সমস্যা হয়ে উঠতে এর জন্য হার কত বেশি হতে হবে?
ypercubeᵀᴹ

@ টাইপব্যুব আমি কি "এটি নির্ভর করে" বলতে পারি? কারণ এটা করে। টেবিলে ট্রিগারগুলির অনুপস্থিতিতে আমি প্রতি সেকেন্ডে 1 কে সন্নিবেশ করে এক ডজন থ্রেড দিয়ে কিছুটা বিতর্ক শুরু করার আশা করব।
মোস্তাকাসিও


আমি দ্বিমত পোষণ করি না তবে আমি জিজ্ঞাসা করছিলাম যে কোনও একক স্থানের সাথে কেউ কতদূর যেতে পারে। আমার মনে আছে সিআই হিসাবে পরিচয় সহ একটি সারণীতে 30 কে সারি সন্নিবেশ করানোর বিষয়ে একটি নিবন্ধ দেখেছি (যদি স্মৃতি আমাকে ভালভাবে পরিবেশন করে) তবে আমি ব্লগ পোস্টটি খুঁজে পাই না।
ypercubeᵀᴹ

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