Gereksinimler: SQL Server veritabanında, çok büyük bir disk alanı, belki yüzlerce GB kaplayan bir tablo (örneğin, log tablosu, talep günlük tablosu) vardır, tablo alanı kullanımını nasıl azaltabiliriz? Veri sıkıştırması (alan tasarrufu) yüksek tekrarlayan metinler (örneğin, HTML, JSON, günlükler) için etkinleştirilebilir.
ROW sıkıştırma
Sıkıştırma verilerin fiziksel depolamasını değiştirir, ancak verinin mantıksal yapısını değiştirmez. Hat sıkıştırma süreci:
Her sütunun veri tipini belirleyin ve onu değişken uzunluğa dönüştürün Son olarak, depolama alanı taleplerinin miktarı gerçek talebe indirgenir Sıkıştırmadan sonra, her sayfadaki depolanan veri miktarı artır Sıkıştırmadan sonra meta veri miktarını azaltın Örneğin, bir sütunun veri tipi smallint ise, sistem varsayılan olarak 2 bayt tahsis eder Ancak gerçekte, sadece 1 bayt alan kullanılır ve tabloda sıkıştırma etkinleştirilirse, talep üzerine tahsis edilebilir
SAYFA sıkıştırma
Sayfa sıkıştırma, satır sıkıştırmayı artırmak için ek işlemler gerçekleştirir Ana işlemler: satır sıkıştırma, ön ek sıkıştırma, sözlük sıkıştırma
CPU tüketimi: PAGE sıkıştırma > satır sıkıştırma
Test
Yeni bir Users1 ve Users2 tabloları oluşturun, her ikisi de 100.000 veri parçası ekleyin ve sql betiği şu şekildedir:
Hepsi 3.27 MB olan tablo alanı doluluğunu görüntülemek için komut şöyledir:
Aşağıda gösterildiği gibi:
Users2 tablosunun sıkıştırma durumunu görüntülemek için komut şu şekildedir:
Aşağıda gösterildiği gibi:
sp_estimate_data_compression_savingsSatır, sayfa, sütun deposu, sütun deposu arşivleri veya XML sıkıştırması için tablo veya bölümleri etkinleştirdiğinizde elde edebileceğiniz tasarrufları tahmin edin. Komut şöyledir:
Çıktı şöyledir:
object_name schema_name index_id partition_number size_with_current_compression_setting(KB) size_with_requested_compression_setting(KB) sample_size_with_current_compression_setting(KB) sample_size_with_requested_compression_setting(KB) Users2 dbo 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB Mevcut sıkıştırma ayarlarıyla indeks ≈ 3.29 MB yer kaplamaktadır size_with_requested_compression_setting (KB) 1296 KB İstediğiniz yeni sıkıştırma yöntemini (örneğin PAGE veya ROW) etkinleştirirseniz tahmini ≈ 1.27 MB Sayfa sıkıştırmasını çalıştırmak için komut şu şekildedir:
Etkilerin karşılaştırılması:Users2 tablosu sıkıştırmadan önce 3.27 MB, sıkıştırmadan sonra ise 1.23 MB'dır, aşağıdaki şekilde gösterildiği gibi:
Görselleştirme şöyledir:
Referans:
Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür. |