Devo adicionar a compactação no nível da página antes de adicionar a chave primária ou depois?

14

Situação

  • Armazém de dados no Sql Server 2008 Enterprise
  • Mais de 36 milhões de linhas de pilha (não pergunte), com mais de 60 colunas
  • 750k adicionados mensalmente
  • Nenhuma chave primária definida (agora identifiquei uma)
  • Sem compressão

O que estou pensando em fazer (nesta ordem)

  • Adicionar compactação no nível da página
  • Adicione o PK
  • Adicione vários índices não agrupados em cluster
  • Faça isso o mais rápido possível

Questão


O que eu estou inclinado no momento

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

Eu olhei aqui (documentação de criação PK) e aqui (documentação ALTER TABLE) , mas não vejo nada definitivo sobre se algum índice herda ou não as configurações de compactação de tabela. A resposta para esta pergunta em particular é "Não, a compactação não é herdada", encontrada aqui no dba.stackexchange

Adrian Torrie
fonte

Respostas:

12

O índice clusterizado é de fato a tabela. Supondo que sua chave primária esteja em cluster, eu criaria uma chave primária em cluster com compactação no nível da página, em vez de tentar fazê-lo em duas etapas.

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

Também copiava cerca de 100 mil linhas para uma tabela temporária (física temporária, não #temporary) e executava alguns testes. Tente executar a compactação primeiro, a chave em cluster primeiro, tente executá-las como uma etapa. Veja o que é mais rápido. Eu acho que será um passo pessoalmente :).

Kenneth Fisher
fonte
2

De qualquer forma, a compactação de página embaralha os dados em torno de MUITO. Eu estimaria que fazer a compactação resultaria em menos E / S geral, pois a operação de cluster estará lendo páginas compactadas.

Max Vernon
fonte