sql >> Base de Datos >  >> RDS >> Sqlserver

Crear una tabla con compresión en SQL Server (T-SQL)

Cuando crea una tabla en SQL Server, tiene la opción de usar la compresión de datos.

La compresión de datos ayuda a reducir el tamaño de la base de datos. También puede ayudar a mejorar el rendimiento de las cargas de trabajo intensivas de E/S debido a que los datos se almacenan en menos páginas, lo que reduce la cantidad de páginas que las consultas deben leer del disco.

Para hacer esto, use el DATA_COMPRESSION opción al crear la tabla.

Ejemplo

Aquí hay un ejemplo para demostrarlo.

CREATE TABLE Movies (
    MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    MovieName nvarchar(200)
    )
WITH (DATA_COMPRESSION = ROW);

En este caso, uso la compresión de filas.

Lo siguiente usa compresión de página.

CREATE TABLE Movies (
    MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    MovieName nvarchar(200)
    )
WITH (DATA_COMPRESSION = PAGE);

Cómo eliminar la compresión

Puede eliminar la compresión utilizando ALTER TABLE instrucción para reconstruir la tabla, mientras usa NONE como el tipo de compresión.

ALTER TABLE MOVIES
REBUILD WITH (DATA_COMPRESSION = NONE);

Mesas de almacén de columnas

Si usa tablas de almacén de columnas (tablas almacenadas con un índice de almacén de columnas agrupado), los tipos de compresión anteriores no se aplican. En este caso, sus opciones de compresión son COLUMNSTORE y COLUMNSTORE_ARCHIVE .

Los resultados de compresión pueden variar

La cantidad de compresión que obtenga dependerá de los datos y del tipo de compresión.

ROW la compresión, por ejemplo, elimina los bytes innecesarios de los valores de la columna almacenándolos en un formato de longitud variable. PAGE la compresión, por otro lado, almacena los valores repetidos solo una vez por página y establece el puntero desde las columnas respectivas dentro de la página.

A veces, puede encontrar que comprimir un objeto no siempre reduce su tamaño y, en algunos casos, en realidad podría aumentar. su tamaño.

Esto podría suceder si sus columnas usan un tipo de datos que no se beneficia de la compresión.

Además, la compresión de filas reduce la sobrecarga de metadatos, pero en algunos casos la sobrecarga puede ser mayor que el formato de almacenamiento anterior.

Si sus datos no se benefician de la compresión debido a su tipo de datos, es probable que la sobrecarga provoque un aumento en los requisitos de almacenamiento, en lugar de una disminución.

Pero las variaciones en el tamaño de la compresión también dependerán de los datos reales. Por ejemplo, si tiene un char(10) columna, la compresión eliminará cualquier carácter de relleno final. Si tiene muchas filas con caracteres de relleno al final, debería obtener un mejor resultado que si no tiene (o tiene pocas) filas con caracteres de relleno al final.