Должен ли я добавить сжатие на уровне страницы до добавления первичного ключа или после?


14

ситуация

  • Хранилище данных на Sql Server 2008 Enterprise
  • Куча строк более 36 миллионов (не спрашивайте), более 60 столбцов
  • 750 тыс. Добавляется ежемесячно
  • Не определен первичный ключ (сейчас я его определил)
  • Без сжатия

Что я думаю сделать (в таком порядке)

  • Добавить сжатие на уровне страницы
  • Добавить ПК
  • Добавьте количество некластеризованных индексов
  • Сделайте это как можно быстрее

Вопрос


На что я склоняюсь в данный момент

-- 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
...
...

Я посмотрел здесь (документация по созданию PK) и здесь (документация ALTER TABLE) , но не вижу ничего определенного в том, наследуют ли какие-либо индексы настройки сжатия таблиц. Ответ на этот конкретный вопрос: «Нет, сжатие не наследуется», можно найти здесь на dba.stackexchange

Ответы:


12

Кластерный индекс фактически является таблицей. Предполагая, что ваш первичный ключ кластеризован, я бы создал кластерный первичный ключ со сжатием на уровне страниц, а не пытался сделать это в два этапа.

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

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


2

В любом случае, сжатие страниц будет перетасовывать данные вокруг LOT. Я бы оценил, что сначала выполнение сжатия приведет к меньшему общему количеству операций ввода-вывода, поскольку операция кластеризации будет читать сжатые страницы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.