En este artículo, profundizaremos en el concepto de compresión de filas en SQL Server. La compresión de filas es una característica que optimiza el almacenamiento de ceros y valores nulos en una base de datos, lo que resulta en un ahorro significativo de espacio.
Cuando se utiliza la compresión de filas, SQL Server no asigna ningún espacio en disco para los valores cero o nulos. Esto se aplica a todos los tipos de datos como decimal, datetime, money, int, etc. Si una fila contiene valores cero o nulos para alguno de estos tipos de datos, la compresión de filas garantiza que no se almacenen en la base de datos en absoluto.
Para demostrar los beneficios de la compresión de filas, consideremos la base de datos AdventureWorks y la tabla Production.WorkOrder. Antes de aplicar la compresión, podemos estimar el ahorro potencial de espacio utilizando el procedimiento almacenado sp_estimate_data_compression_savings. Este procedimiento proporciona información sobre la compresión actual, la compresión futura después de la compresión solicitada, las filas actuales y las filas reducidas futuras.
Una vez que hayamos determinado el ahorro potencial de compresión, podemos proceder a aplicar la compresión de filas a la tabla. Esto requiere reconstruir toda la tabla con la cláusula Data_Compression = ROW habilitada. El siguiente comando se puede utilizar para reconstruir la tabla:
ALTER TABLE Production.WorkOrder REBUILD WITH (DATA_COMPRESSION = ROW)Después de aplicar la compresión de filas, el tamaño de la tabla se reduce en más de 1MB. Esto demuestra el ahorro significativo de espacio que se puede lograr con esta característica.
Es importante tener en cuenta que también existe un concepto de compresión de páginas en SQL Server, que es útil cuando hay una gran cantidad de datos que ocurren con frecuencia. En un artículo futuro, exploraremos la compresión de páginas y analizaremos cuándo se debe utilizar.
En conclusión, la compresión de filas es una característica valiosa introducida en SQL Server 2008. Al optimizar el almacenamiento de ceros y valores nulos, permite un ahorro significativo de espacio en la base de datos. Recomiendo encarecidamente probar la compresión de filas y aprovechar esta nueva mejora de almacenamiento de datos.