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


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.