A seguito dell'aggiornamento a SQL Server 2008, ieri mattina ho giocato un po con la compressione dei dati.
Come noto la compressione se da un lato consente il risparmio di storage, dall'altra richiede un onere aggiuntivo a carico della CPU (minore nel caso della row compression, superiore per la page compression). In non rare circostanze ho riscontrato comunque che l'aumento di utilizzo della CPU rimane solo sulla carta se a ciò corrisponde una drastica riduzione dell'IO in grado quindi di ridurre comunque l'utilizzo del processore in temini assoluti.
In uno dei miei database di poco meno di 30 GB, ho individuato 3 tabelle che, da sole, occupavano oltre il 50% dello spazio; circa 16,5 GB. Eseguite le dovute analisi utilizzando la sp_estimate_data_compression_savings, ho deciso di applicare la compressione a livello di pagina ad una di queste tabelle e la compressione a livello di riga alle altre 2.
Lo spazio occupato dalle 3 tabelle è sceso a 4,9 GB (rispettivamente da 8,3 a 2,6 GB e da 4,3 a 1,5 G per le 2 tabelle su cui è stata applicata la row compression e da 3,9 a 0,7 GB sulla tabella compressa a livello di pagina). Direi che recuperare circa il 40% di spazio di un database intervenendo soltanto su 3 tabelle dia un rapporto costi/benefici non indifferente. Se consideriamo poi che potrebbe trattarsi, come nel mio caso, di dati storici o comunque acceduti molto di rado, il rapporto diventa ancora più favorevole.
Bye