जब उनका पुनर्निर्माण / पुनर्गठन किया जाता है तो सूचकांक संकुचित रहते हैं।
तालिका और संपीड़ित सूचकांक बनाएँ
CREATE TABLE DBO.TEST_INDX(id int, bla varchar(255));
CREATE INDEX IX1 ON dbo.TEST_INDX(id) WITH (DATA_COMPRESSION = PAGE);
संपीड़न की जाँच करें
SELECT i.name, p.data_compression_desc
FROM sys.partitions P
INNER JOIN sys.indexes I ON I.object_id = P.object_id AND I.index_id = P.index_id
WHERE P.data_compression > 0 and I.name = 'IX1';
परिणाम
name data_compression_desc
IX1 PAGE
सूचकांक का पुनर्निर्माण करें
ALTER INDEX IX1 on DBO.TEST_INDX rebuild
संपीड़न की जाँच करें
SELECT i.name, p.data_compression_desc
FROM sys.partitions P
INNER JOIN sys.indexes I ON I.object_id = P.object_id AND I.index_id = P.index_id
WHERE P.data_compression > 0 and I.name = 'IX1'
परिणाम
name data_compression_desc
IX1 PAGE
उन्हें अक्षम करना और फिर पुनर्निर्माण का एक अलग परिणाम होता है, क्योंकि अक्षमता सूचकांक को हटाती है, जबकि सूचकांक की परिभाषा को ध्यान में रखते हुए।
alter index IX1 on DBO.TEST_INDX DISABLE ;
alter index IX1 on DBO.TEST_INDX REBUILD ;
परिणाम
name data_compression_desc
कंप्रेशन खो गया था, इंडेक्स क्रिएट स्क्रिप्ट को एडैप किए बिना SSMS के माध्यम से इंडेक्स के माध्यम से ड्रॉप और इंडेक्स बनाते समय कम्प्रेशन परिभाषा भी खो जाएगी।
क्यों?
इंडेक्स क्रिएट स्टेटमेंट को स्क्रिप्ट करते समय data_compression विकल्प को बरकरार नहीं रखा जाता है।
हालाँकि, यदि हम सूचकांक को निष्क्रिय करते हैं, तो संपीड़न के साथ पुनर्निर्माण करें और फिर से पुनर्निर्माण करें:
alter index IX1 on DBO.TEST_INDX DISABLE ;
alter index IX1 on DBO.TEST_INDX REBUILD WITH (DATA_COMPRESSION = PAGE);
alter index IX1 on DBO.TEST_INDX REBUILD;
परिणाम
name data_compression_desc
IX1 PAGE
ओला हॉलनग्रेन के रखरखाव समाधान के साथ पुनर्निर्माण का परीक्षण करना
परीक्षण प्रयोजनों के लिए मापदंडों को संशोधित किया जाता है।
एक पृष्ठ पर जाने के लिए कुछ डेटा जोड़ें, क्योंकि यह MinNumberOfPages पैरामीटर के लिए आवश्यक है।
INSERT INTO dbo.TEST_INDX(id,bla)
VALUES(5,'test');
go 10
विवरण को प्रिंट करने के लिए इंडेक्स ऑप्टिमाइज़ेशन प्रॉपर्टी को निष्पादित करें।
EXECUTE dbo.IndexOptimize
@Databases = 'TestDB',
@FragmentationLow = 'INDEX_REBUILD_ONLINE',
@FragmentationMedium = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 = 5,
@FragmentationLevel2 = 30,
@Indexes = 'TestDB.DBO.TEST_INDX',
@Execute = 'N',
@MinNumberOfPages = 1;
परिणाम:
Command: ALTER INDEX [IX1] ON [TestDB].[dbo].[TEST_INDX] REBUILD WITH (SORT_IN_TEMPDB = OFF, ONLINE = ON, RESUMABLE = OFF)
Comment: ObjectType: Table, IndexType: NonClustered, ImageTex
t: No, NewLOB: No, FileStream: No, ColumnStore: No, AllowPageLocks: Yes, PageCount: 1, Fragmentation: 0
Outcome: Not Executed
Duration: 00:00:00
Date and time: 2019-01-09 14:48:12
उत्पन्न आदेश को निष्पादित करना
ALTER INDEX [IX1] ON [TestDB].[dbo].[TEST_INDX] REBUILD WITH (SORT_IN_TEMPDB = OFF, ONLINE = ON, RESUMABLE = OFF)
संपीड़न बनाए रखा जाता है
name data_compression_desc
IX1 PAGE
एक रखरखाव योजना के साथ पुनर्निर्माण का परीक्षण करना (मैं ओला के समाधान के लिए दृढ़ता से तर्क दूंगा)
अनुक्रमणिका का पुनर्निर्माण करें
परीक्षण तालिका चुनें
कुछ परीक्षण विखंडन स्तर जोड़ें।
विखंडन होने के लिए कुछ मान डालें
INSERT INTO dbo.TEST_INDX(id)
SELECT id from TEST_INDX
go 4
विखंडन प्रतिशत की जाँच करें
SELECT
I.[name] AS INDX ,
IPS.avg_fragmentation_in_percent,
IPS.page_count
FROM sys.dm_db_index_physical_stats (DB_ID(), object_id('[dbo].[TEST_INDX]'), NULL, NULL, NULL) AS IPS
INNER JOIN sys.indexes AS I ON I.[object_id] = IPS.[object_id]
AND IPS.index_id = I.index_id
WHERE IPS.database_id = DB_ID()
and I.name = 'IX1'
परिणाम
INDX avg_fragmentation_in_percent page_count
IX1 66,6666666666667 3
योजना चलाएं
दिलचस्प बात यह है कि योजना रिपोर्ट को देखते समय, DATA_COMPRESSION = PAGE
विकल्प जनरेट REBUILD
कमांड में जोड़ा जाता है !
Command:USE [TestDB]
GO
ALTER INDEX [IX1] ON [dbo].[TEST_INDX] REBUILD PARTITION = ALL WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, RESUMABLE = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80, DATA_COMPRESSION = PAGE)
विखंडन:
INDX avg_fragmentation_in_percent page_count
IX1 0 2
संपीड़न:
name data_compression_desc
IX1 PAGE