Compresión de datos en SQL Server 2012

06.01.2014 19:39

Con la explosión de datos que se ha producido en la industria y la empresa, más y más datos se almacenan en SQL Server. Sin embargo, las bases de datos ya no son de un promedio de 100 GB en  tamaño como lo eran hace 10 años. Ahora las bases de datos son más grande que nunca, con tamaños de 10 a 50 TB. Además, a menudo es sólo un reducido grupo de tablas dentro de la base de datos las que están creciendo a estos tamaños récord. Para combatir esto, a pesar de que el almacenamiento es cada vez más barato, Microsoft ha introducido la compresión y herramientas como el Asistente para compresión de datos e  instrucciones Transact- SQL específicas  para facilitar la compresión de datos. Por lo tanto, un DBA puede comprimir  tablas e índices para  ahorrar espacio de almacenamiento a un costo reducido de CPU. Uno de los principales objetivos de diseño de compresión de datos para reducir el tamaño son las  tablas de hechos de almacenamiento de datos. Las tablas de hechos son típicamente las tablas más grandes en  un almacén de datos, ya que contienen la mayoría de los datos asociados con una base de datos.


La compresión sólo está disponible en la edición Enterprise de SQL Server. Para tener una idea de la cantidad de espacio, y, potencialmente, de flujo de E / S, el sistema  usa el procedimiento almacenado sp_estimate_data_compression_savings para calcular el ahorro de almacenamiento asociado a un objeto comprimido.

SQL Server proporciona dos métodos, el de página y el de  compresión de fila, para reducir el almacenamiento de datos, el rendimiento de E / S de disco y la velocidad al reducir la cantidad de E / S necesaria para el procesamiento de transacciones. Los métodos Page y row utilizan métodos de compresión  diferentes, aunque complementarios y merecen mayor discusión.

La compresión de página  utiliza un algoritmo llamado " deduplicación ". En  la deduplicación , como su nombre  indica, SQL Server busca valores duplicados que aparecen una y otra vez dentro de la página de datos. Por ejemplo,  la tabla en  HumanResources.Employee de la base de datos AdventureWorks2012 contiene una columna nvarchar (50) llamada JobTitle . Esta columna contiene muchos valores  duplicados como  “Design Engineer” ,  Research and Development Manager.”  Estos valores pueden aparecer varias veces en una misma página de datos. Mediante El uso de la compresión de página, SQL Server puede eliminar este tipo de valores duplicados dentro de una página de datos reemplazando cada valor duplicado con un pequeño puntero a un solo aspecto del valor total. (Esto se conoce como " compresión basado en diccionario. ")

En comparación, la compresión de filas no utiliza en realidad un algoritmo de compresión de por sí. En cambio, cuando la compresión de filas está habilitada, SQL Server simplemente elimina los bytes adicionales, no utilizados en una columna de tipo de datos fijos, tales como CHAR (50).

Page y row no son compatibles, pero al permitir la compresión de página de SQL Server se  incluye automáticamente la compresión de fila. También se puede especificar la compresión por partición, por lo que las tablas con particiones podrían tener múltiples especificaciones de compresión a la vez.

 

CREATE TABLE <Table Name> (<Column 1. int, <Column 2> nvarchar(50) ) WITH (DATA_COMPRESSION = PAGE); GO