Чи слід додати стиснення рівня сторінки перед додаванням основного ключа чи після?


14

Ситуація

  • Склад даних на Sql Server 2008 Enterprise
  • 36+ мільйонів рядів (без запитання) із 60+ стовпцями
  • 750k додається щомісяця
  • Не визначено первинного ключа (я його зараз визначив)
  • Без стиснення

Що я думаю робити (у такому порядку)

  • Додати стиснення рівня сторінки
  • Додайте ПК
  • Додайте ряд некластеризованих індексів
  • Робіть це якомога швидше

Питання


До чого я схиляюся на даний момент

-- Add page level compression
alter table     dbo.TableName
rebuild with    (data_compression = page)
; 
go

-- Add primary key
alter table             dbo.TableName
add constraint          PK_TableName
primary key clustered   (<Columns>)
;
go

-- Add NC_IXs here
...
...

Я заглянув сюди (документація по створенню ПК) та тут (документація ALTER TABLE) , але не можу побачити нічого остаточного щодо того, є чи ні індекси успадковують настройки стиснення таблиці. Відповідь на це питання "Ні, стискання не успадковується", знайдене тут на dba.stackexchange

Відповіді:


12

Кластерний індекс насправді є таблицею. За умови, що ваш основний ключ кластеризований, тоді я створив би кластерний первинний ключ із стисненням рівня сторінки, а не намагався зробити це у два етапи.

-- Add primary key
ALTER TABLE             dbo.TableName
ADD CONSTRAINT          PK_TableName
PRIMARY KEY CLUSTERED   (<Columns>)
WITH (DATA_COMPRESSION = PAGE)
;

Я також скопіював би близько 100k рядків у тимчасову (тимчасову фізичну не # тимчасову) таблицю та запустив кілька тестів. Спробуйте спочатку запустити компресію, кластерний ключ, спробуйте зробити їх як один крок. Подивіться, що працює найшвидше. Я б здогадався, що це буде один крок особисто :).


2

У будь-якому випадку, стиснення сторінки збирається переміщувати дані навколо ЛОТ. Я вважаю, що спочатку стиснення призведе до менш загального вводу / виводу, оскільки операція кластеризації буде читанням стислих сторінок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.