سبد (0)

آشنایی با Clustered Index

آموزش پیشرفته SQL Server (جلسه چهارم)– آشنایی با Clustered Index

آشنایی با Clustered Index ، قسمتی از آموزش پیشرفته SQL Server است، پیشنهاد می شود قبل از مطالعه ی آشنایی با Clustered Index ، قسمت های قبلی را مطالعه فرمایید.


Clustered Index به چه معناست؟

Clustered Index یکی از ساختارهای ذخیره سازی داده در جداول می باشد که بر اساس آن داده ها در ازای یک فیلد خاص که توسط ما مشخص می شود دارای نظم و ترتیب می باشد.

چینش فیزیکی رکوردها در این نوع از جداول بر اساس کلید ایندکسی است که مشخص شده است.


نحوه ایجاد Clustered Index:

زمانیکه SQL SERVER قصد تبدیل یک Heap به یک Clustered Index را دارد مراحل زیر را انجام می دهد:

  1. ایجاد یک کپی از جدول
  2. مرتب سازی رکوردها بر اساس کلید ایندکس
  3. ایجاد ساختار ایندکس و به عبارت دیگر ایجاد Root Level و Intermediate Level
  4. جایگزینی جدول Clustered با جدول قدیم

ویژگی های Clustered Index:

هر Clustered Index دارای خصوصیات زیر می باشد:

  1. تغییر ترتیب داده ها به اینصورت که با تغییر یک جدول به Clustered Index چینش فیزیکی داده ها بر اساس کلید ایندکس خواهد بود.
  2. به ازای هر جدول صرفا یک Clustered Index وجود خواهد داشت.
  3. ایجاد ساختار ایندکس و به عبارت دیگر ایجاد Root Level و Intermediate Level
  4. جایگزینی جدول Clustered با جدول قدیم

 توجه: کلید Clustered Index نباید یک فیلد بزرگ انتخاب شود زیرا از این کلید در NonClustered Index ها استفاده شده و این باعث اشغال حجم زیادی از حافظه و اتلاف آن می شود.

 توجه: در صورتیکه طول کلیدهای Clustered Index از 900 بایت بیشتر شود خود SQL SERVER مانع ساخت ایندکس روی جدول می گردد.


بررسی ساختارClustered Index:

در یک Clustered Index گره ریشه در sys.system_internals_allocation_units قرار می گیرد. برای یافتن داده از گره ریشه به سمت پایین حرکت کرده تا در Leaf Level به داده مورد نظر دسترسی پیدا نماید.

آشنایی با Clustered Index

--به عمق ایندکس توجه شود
SELECT
    INDEXPROPERTY(OBJECT_ID('ClusteredTable'),'Clustered_IX','IsClustered')AS [Is Clustered],
    INDEXPROPERTY(OBJECT_ID('ClusteredTable'),'Clustered_IX','IndexDepth') AS [Index Depth]
GO
--Allocation Unit Uype چك كردن 

توجه: در صورتیکه طول شکل زیر نحوه پیمایش درخت B-Tree مربوط به یک Clustered Index را نمایش می دهد:


مقایسه یک Clustered Index با یک Heap:

اینکار را با ایجاد دو جدول از نوع Heap, Clustered نشان می دهیم:

آشنایی با Clustered Index

CREATE TABLE FooCluster(    
      ID INT NOT NULL PRIMARY KEY CLUSTERED    
      , Payload CHAR(150) NOT NULL)
CREATE TABLE FooHeap(    
      ID INT NOT NULL PRIMARY KEY NONCLUSTERED    
      , Payload CHAR(150) NOT NULL)

وقتی Query زیر را روی دو جدول بالا که یکی از نوع Heap و دیگری از نوع Clustered می باشد اجرا کنیم خواهیم دید که نتایج متفاوتی از نظر کارایی و زمان اجرا خواهد داشت.

آشنایی با Clustered Index

SELECT * FROM ORDERS WHERE O_CUSTKEY =120

نتیجه اجرای این Query روی دو جدول تعریف شده به صورت زیر می باشد:

  • Cluster: 27 logical reads
  • Heap: 11 logical reads

در ادامه بحث آشنایی با Clustered Index خواهید دید ...!

1-آشنایی کامل با Clustered Index.

2- آموزش تحلیل Execution Plan در رابطه با Clustered Index.


دسترسی به موارد آموزشی بالا در بسته خریداری شده

  • شماره جلسه: 4
  • نام فایل ویدئو: 01
  • فرمت فایل: mp4.

نقطه شروع بحث بالا (آشنایی با Clustered Index ) در ویدئو: 01:23


برای خرید و دانلود کامل آموزش پیشرفته SQL Server کلیک کنید.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه