Data Compression SQL 2008 ile gelen faydalı özelliklerden bir tanesi. Arşiv veritabanındaki tablo ve indexleri sıkıştırarak 6-8 kat yer kazancı sağlarken I/O yükünü de azaltın.
Arşiv veritabanları veri sıkıştırmaya en iyi uyan senaryolardan bir tanesidir. Çünkü arşiv veritabanları bir kere yazılır, sonrasında ihtiyaç olursa okuma yapılır. DML (insert, update, delete) işlemlerinin arşivleme işlemi dışında hiç olmadığı veritabanlarıdır.
Arşiv veritabanları çoğunlukla okuma amaçlı veritabanlarıdır. Arşiv veritabanındaki sıkıştırılmış bir tablodan veri çekerken daha az I/O gerekeceği için de kazanç sağlanacaktır. Çünkü sıkıştırılmış data, diskte daha az yer tutacaktır. Dolayısı ile gerekli veriye, daha az sayıda page okunarak erişilecektir.
Veri sıkıştırmanın maliyeti daha fazla cpu kullanımıdır. Cpu baskısı olan sistemlerde veri sıkıştırma yapılırken bu durum dikkate alınmalıdır.
Veri sıkıştırma 2 seviyede olmaktadır, row ve page. Page seviyesindeki sıkıştırma row seviyesindeki sıkıştırmayı da içermektedir.
Veri sıkıştırma ile ne kadar yer kazanılacağı Management Studio ile araştırılabilir. Object Explorer ile tablonun üzerine sağ tıklanarak, aşağıda görüldüğü gibi, ilgili ekran açılır.

Aşağıdaki ekrandaki gibi sıkıştırma yöntemi seçilerek, “Calculate” butonuna tıklanırsa ne kadar yer kazanılacağı örnekleme yapılarak hesap edilmektedir.

Sıkıştırma oranı tablonun yapısına göre, yani tablodaki alanların tipine ve kolanların aldığı değerlere göre değişiklik göstermektedir. Örneğin çoğu null olan alanlar, çoğu sıfır veya küçük değer alan integer alanlar, tekrar eden varchar veya char alanlar vs çok iyi sıkışır ve yer kazancı sağlar.
Sıkıştırma işlemi yapılırken file’larda kullanılan alanlar sıkıştırma esnasında artacaktır. File’ı büyütmemek için boyutu küçük olan tablolardan sıkıştırma işlemine başlamak daha doğru bir yaklaşımdır.
Log file’da da çokça alana ihtiyaç vardır. Eğer recovery model simple değilse, tablo sıkıştırmaları arasında transaction log backup alınması log dosyasında yer kazancı sağlayacaktır.
Bir tablo sıkıştırıldığında non-clustered indexler sıkışmaz, sadece rebuild edilir. Eğer non-clustered indexler de sıkıştırılmak istenirsa ayrıca sıkıştırılmalıdır.
Veritabanındaki sıkıştırma işlemi tamamlandıktan sonra file gruptaki dosyalarda boşalan alanlar üzerinde çalışma yapmak gerekir. Eğer kazanılan boş alan uzak gelecekte de doldurulamayacak kadar büyükse dosyalar shrink edilebilir. Ne kadar shrink edileceğine karar verilirken, veritabanının sıkışmış haldeki boyutu, veritabanının büyüme eğilimi, diskin ne zamana kadar kullanılacağı gibi bilgiler göz önüne alınabilir. Kısaca dosyalar, auto-grow’a girmeyeceği bir boyuta kadar shrink edilebilir.
Sonuç: Arşiv veritabanlarını sıkıştırmak, diskten ve I/O’dan kazanç sağlayacaktır. 6-8 kat yer kazancı sağlanıyorsa hemen sıkıştırma işlemine başlanabilir.