¿Debo agregar compresión a nivel de página antes de agregar la clave principal o después?


14

Situación

  • Almacén de datos en Sql Server 2008 Enterprise
  • Montón de más de 36 millones de filas (no pregunte), con más de 60 columnas
  • 750k agregados mensualmente
  • No hay una clave primaria definida (ahora he identificado una)
  • Sin compresión

Lo que estoy pensando hacer (en este orden)

  • Agregar compresión a nivel de página
  • Agrega la PK
  • Agregar una cantidad de índices no agrupados
  • Haz esto lo más rápido posible

Pregunta


A lo que me estoy inclinando en este 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
...
...

He buscado aquí (documentación de creación de PK) y aquí (documentación de ALTER TABLE) , pero no puedo ver nada definitivo sobre si algún índice hereda o no la configuración de compresión de la tabla. La respuesta a esta pregunta en particular es "No, la compresión no se hereda", que se encuentra aquí en dba.stackexchange

Respuestas:


12

El índice agrupado es de hecho la tabla. Suponiendo que su clave principal esté agrupada, crearía una clave principal agrupada con compresión de nivel de página en lugar de intentar hacerlo en dos pasos.

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

También copiaría aproximadamente 100k filas a una tabla temporal (física temporal no #temporal) y ejecutaría algunas pruebas. Intente ejecutar la compresión primero, la clave agrupada primero, intente hacerlo como un paso. Mira lo que corre más rápido. Supongo que será un paso personalmente :).


2

De cualquier manera, la compresión de la página va a mezclar datos alrededor de MUCHO. Estimaría que hacer la compresión primero daría como resultado una E / S menos general ya que la operación de agrupamiento leerá páginas comprimidas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.