Devo aggiungere la compressione a livello di pagina prima di aggiungere la chiave primaria o dopo?


14

Situazione

  • Data warehouse su SQL Server 2008 Enterprise
  • 36+ milioni di file heap (non chiedere), con oltre 60 colonne
  • 750k aggiunti mensilmente
  • Nessuna chiave primaria definita (ora ne ho identificata una)
  • Nessuna compressione

Cosa sto pensando di fare (in questo ordine)

  • Aggiungi la compressione a livello di pagina
  • Aggiungi il PK
  • Aggiungi un numero di indici non cluster
  • Fallo il più rapidamente possibile

Domanda


A cosa mi sto sporgendo in questo 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
...
...

Ho guardato qui (documentazione sulla creazione di PK) e qui (documentazione ALTER TABLE) , ma non riesco a vedere nulla di definitivo sul fatto che gli indici ereditino o meno le impostazioni di compressione della tabella. La risposta a questa particolare domanda è "No, la compressione non è ereditata", disponibile qui su dba.stackexchange

Risposte:


12

L'indice cluster è in effetti la tabella. Partendo dal presupposto che la tua chiave primaria sia raggruppata, creerei una chiave primaria raggruppata con compressione a livello di pagina piuttosto che provare a farlo in due passaggi.

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

Vorrei anche copiare circa 100k righe in una tabella temporanea (fisica temporanea non # temporanea) ed eseguire alcuni test. Prova a eseguire prima la compressione, prima la chiave cluster, prova a eseguirli come un unico passaggio. Guarda cosa corre più veloce. Immagino che sarà un passo personalmente :).


2

In entrambi i casi, la compressione della pagina mescolerà i dati intorno a un LOTTO. Stimerei che fare la compressione per prima comporterebbe un I / O complessivo inferiore poiché l'operazione di clustering leggerà le pagine compresse.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.