ক্লাস্টারযুক্ত কলাম স্টোরে ননক্র্লাস্টার্ড সূচক স্টোরেজ


18

এসকিউএল সার্ভারে, একটি রো- স্টোর টেবিলের একটি অ-অনন্য অবিচ্ছিন্ন সূচক বেস-অবজেক্টের বুকমার্ক (আরআইডি বা ক্লাস্টারিং কী) অবিচ্ছিন্ন সূচক কাঠামোর সমস্ত স্তরে অন্তর্ভুক্ত করে। বুকমার্কটি সমস্ত সূচক স্তরে অবিবাহিত সূচি কীয়ের অংশ হিসাবে সংরক্ষণ করা হয় ।

অন্যদিকে, যদি অবিচ্ছিন্ন সূচকটি অনন্য হয় তবে বুকমার্কটি কেবলমাত্র সূচকের পাতার স্তরে উপস্থিত থাকে - কীটির অংশ হিসাবে নয় (বুকমার্কটি কার্যকরভাবে এক বা একাধিক অন্তর্ভুক্ত কলাম হিসাবে উপস্থিত থাকে)।

এসকিউএল সার্ভার ২০১ 2016-এ, কলাম-ওরিয়েন্টেড টেবিলের (একটি ক্লাস্টারযুক্ত কলামস্টোর সূচক রয়েছে এমন) একটি নন-ক্লাস্টার্ড বি-ট্রি সূচক তৈরি করা সম্ভব।

  1. ক্লাস্টারযুক্ত কলামস্টোর টেবিলের একটি অবিচ্ছিন্ন বি-ট্রি সূচকের জন্য ব্যবহৃত 'বুকমার্ক' কী?
  2. উপরে বর্ণিত অনন্য এবং অ-অনন্য অবিবাহিত সূচকের মধ্যে পার্থক্যগুলি কি এখনও প্রয়োগ হয়?

উত্তর:


17
  1. "বুকমার্ক" হ'ল কলামস্টোর সূচক মূল লোকেটর (দিমিত্রি করোটকিভিচের "প্রো এসকিউএল সার্ভার ইন্টার্নালস")। এটি একটি 8-বাইট মান, row_group_idপ্রথম 4-বাইটে কলামস্টোর সূচক এবং দ্বিতীয় 4-বাইটে অফসেট সহ।

  2. আপনি যদি DBCC PAGEনন-ক্লাস্টারযুক্ত সূচকটি দেখতে ব্যবহার করেন তবে 8-বাইট কলামস্টোর সূচকের মূল লোকেটর আউটপুটটির "ইউনিকফায়ার" কলামে উপস্থিত হয় DBCC PAGE। এটি দেখায় যে কোনও অনন্য -ক্লাস্টারযুক্ত সূচককে কলামস্টোর সারি লোকেটার অন্তর্ভুক্ত করার দরকার নেই, যেখানে একটি অনন্য-অনন্য -ক্লাস্টারযুক্ত সূচকটি করে।

নিম্নলিখিত কোডটি একই কলামে একটি অনন্য এবং অ-অনন্য বি-ট্রি ননক্র্লাস্টার্ড সূচক সহ একটি কলামস্টোর-সংগঠিত টেবিল তৈরি করে:

CREATE TABLE dbo.Heapish
(
    c1 bigint NOT NULL,
    c2 bigint NOT NULL,
    INDEX CCI_dbo_Heapish CLUSTERED COLUMNSTORE
);
GO
INSERT dbo.Heapish WITH (TABLOCKX)
    (c1, c2)
SELECT TOP (1024 * 1024 * 8)
    c1 = ROW_NUMBER() OVER
        (ORDER BY C1.[object_id], C1.column_id),
    c2 = ROW_NUMBER() OVER
        (ORDER BY C1.[object_id], C1.column_id)
FROM master.sys.columns AS C1
CROSS JOIN master.sys.columns AS C2
ORDER BY
    c1
OPTION (MAXDOP 1);
GO
CREATE UNIQUE NONCLUSTERED INDEX UNIQUE_c2 ON dbo.Heapish (c2) WITH (MAXDOP = 1);
CREATE NONCLUSTERED INDEX NONUNIQUE_c2 ON dbo.Heapish (c2) WITH (MAXDOP = 1);

আমরা বি-গাছের বিভিন্ন স্তরে সূচক সারির আকারটি ব্যবহার করে দেখতে পারি sys.dm_db_index_physical_stats:

SELECT
    DDIPS.index_level,
    DDIPS.page_count,
    DDIPS.record_count,
    DDIPS.min_record_size_in_bytes,
    DDIPS.max_record_size_in_bytes
FROM sys.dm_db_index_physical_stats
(
    DB_ID(),
    OBJECT_ID(N'dbo.Heapish', N'U'),
    INDEXPROPERTY(OBJECT_ID(N'dbo.Heapish', N'U'), N'UNIQUE_c2', 'IndexID'),
    NULL, 'DETAILED'
) AS DDIPS;

SELECT
    DDIPS.index_level,
    DDIPS.page_count,
    DDIPS.record_count,
    DDIPS.min_record_size_in_bytes,
    DDIPS.max_record_size_in_bytes
FROM sys.dm_db_index_physical_stats
(
    DB_ID(),
    OBJECT_ID(N'dbo.Heapish', N'U'),
    INDEXPROPERTY(OBJECT_ID(N'dbo.Heapish', N'U'), N'NONUNIQUE_c2', 'IndexID'),
    NULL, 'DETAILED'
) AS DDIPS;

আউটপুটটি হ'ল:

অনন্য সূচক

ননুনকিউ সূচক

উভয় কাঠামোর পাতার স্তরে একই সারির আকার রয়েছে, তবে 8-বাইট কলামস্টোর লোকেটারের কারণে নন-লিঙ্ক স্তরে অনন্য ননক্লাস্টারড সূচকের চেয়ে 12 বাইট বড়, প্রথম ভেরিয়েবলের জন্য ওভারহেডের 4 বাইট এক সারিতে দৈর্ঘ্যের কলাম (ইউনিকফায়ারটি পরিবর্তনশীল দৈর্ঘ্য)।


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