Le nuove funzionalità di compressione dei dati presenti su Sql Server 2008 introducono una serie di strumenti per il calcolo della compressione e per la compressione stessa. Queste operazioni, che in Sql Server 2005 erano limitate ai campi di tipo vardecimal, ora possono lavorare su diversi tipi di dati numerici.

Proviamo ad utilizzare la row compression per una tabella di AdventureWorks2008, per esempio la tabella SalesOrderDetail

La prima cosa molto utile è quella di calcolare lo spazio che potrebbe essere risparmiato grazie alla compressione. Per questo ci aiuta la stored procedure sp_estimate_data_compression_savings

USE AdventureWorks
GO
EXEC
sp_estimate_data_compression_savings 'Sales', 'SalesOrderDetail', 1, null, 'ROW'

result

Il risultato della stored procedure ci dice che potremmo risparmiare più di 2000 KB. Abilitiamo la ROW COMPRESSION e rilanciamo la stored procedure per verificare i risultati.

ALTER TABLE [Sales].[SalesOrderDetail] REBUILD

WITH (DATA_COMPRESSION = ROW)

result2

Ora i valori dei campi size_with_current_compression_setting e size_with_requested_compression_setting coincidono.

NOTA : Questa feature è presente sulle versioni Developer ed Enterprise Edition.

 

Risorse aggiuntive

http://blogs.msdn.com/sqlserverstorageengine/archive/2007/11/12/types-of-data-compression-in-sql-server-2008.aspx

http://msdn.microsoft.com/en-us/library/cc280576.aspx