"বুকমার্ক" হ'ল কলামস্টোর সূচক মূল লোকেটর (দিমিত্রি করোটকিভিচের "প্রো এসকিউএল সার্ভার ইন্টার্নালস")। এটি একটি 8-বাইট মান, row_group_id
প্রথম 4-বাইটে কলামস্টোর সূচক এবং দ্বিতীয় 4-বাইটে অফসেট সহ।
আপনি যদি 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 বাইট এক সারিতে দৈর্ঘ্যের কলাম (ইউনিকফায়ারটি পরিবর্তনশীল দৈর্ঘ্য)।