Satır sıkıştırma uygulama

Bu konuda özetler nasıl Veritabanı Altyapısı uygulayan satır sıkıştırması.Bu Özet, verileriniz için gerekli depolama alanı planlamanıza yardımcı olması için temel bilgileri sağlar.

Etkinleştirme sıkıştırma, yalnızca bir veri türü ancak kendi sözdizimi veya semantik ile ilişkili verileri fiziksel depolama alanı alanı biçimini değiştirir.Bir veya daha fazla tablo sıkıştırma için etkinleştirildiğinde Uygulama değişikliği gerekli değildir.Yeni kayıt depolama biçimi aşağıdaki ana değişiklikler şunlardır:

  • Bu kayıtla ilişkili meta veriler yükü azaltır.Bu meta veriler sütunları, uzunlukları ve uzaklıklar hakkında bilgiler verilmektedir.Bazı durumlarda, meta veriler yükü eski depolama biçimi büyük olabilir.

  • Sayısal türleri için değişken uzunlukta depolama biçimini kullanır (örneğin integer, decimal, ve float) ve üzerinde sayısal tabanlı türleri (örneğin datetime ve money).

  • Boş karakterler depolayarak değil, değişken uzunlukta biçimi kullanarak sabit karakter dizeleri depolar.

Not

null ve 0 değerleri tüm veri türleri arasında en iyi duruma getirilmiş ve hiçbir bayt gerçekleştirin.

Satır sıkıştırma depolama nasıl etkiler

Aşağıdaki tablo satır sıkıştırma varolan türleri nasıl etkilediğini tanımlar SQL Server.tablo sayfa sıkıştırması kullanılarak elde edilebilir tasarruf içermez.

Veri türü

Depolama etkilenir mi?

Açıklama

tinyint

Hayır

gereken en az depolama 1 bayttır.

smallint

Evet

Yalnızca 1 bayt değeri 1 bayt sığıyorsa, kullanılacak.

int

Evet

Gerekli olan bayt kullanır.Örneğin, bir değer 1 bayt depolanabilir, depolama yalnızca 1 bayt ele.

bigint

Evet

Gerekli olan bayt kullanır.Örneğin, bir değer 1 bayt depolanabilir, depolama yalnızca 1 bayt ele.

decimal

Evet

Bu depolama vardecimal depolama biçimi olarak tam olarak aynıdır.Daha fazla bilgi için bkz: Değişken uzunlukta ondalık veri saklama.

numeric

Evet

Bu depolama vardecimal depolama biçimi olarak tam olarak aynıdır.Daha fazla bilgi için bkz: Değişken uzunlukta ondalık veri saklama.

bit

Evet

meta veriler yükü, bunun için 4 bit getirir.

smallmoney

Evet

4 Baytlık bir tamsayı kullanarak tamsayı veri gösterimi kullanır.Para birimi değeri 10000 ile çarpılır ve elde edilen tamsayı değeri herhangi bir rakam ondalık ayırıcıdan sonra kaldırarak saklanır.Bu tür bir depolama iyileştirme için tamsayı türleri için benzer sahiptir.

money

Evet

8 Baytlık bir tamsayı kullanarak tamsayı veri gösterimi kullanır.Para birimi değeri 10000 ile çarpılır ve elde edilen tamsayı değeri herhangi bir rakam ondalık ayırıcıdan sonra kaldırarak saklanır.Bu tür bir daha büyük olan aralık 'den smallmoney.Bu tür bir depolama iyileştirme için tamsayı türleri için benzer sahiptir.

float

Evet

Least significant bytes with zeros are not stored.float compression is applicable mostly for nonfractional values in mantissa.

real

Evet

Least significant bytes with zeros are not stored.real compression is applicable mostly for nonfractional values in mantissa.

smalldatetime

Hayır

İki 2 baytlık tamsayı kullanarak tamsayı veri gösterimi kullanır.Tarih 2 bayt kazanır.1/1/1901 Beri geçen gün sayısıdır.Bu, 1902 ' başlayarak 2 bayt gerektirir.Bu nedenle, ondan sonra hiçbir kazancı yoktur.

Saat gece yarısından sonra geçen dakika sayısıdır.İkinci bayt kullanmak biraz 4 am zaman değerleri başlatın.

Bir smalldatetime sadece tarih ifade etmesi için kullanılır (bir ortak durum), saat 0.0 olur.Sıkıştırma, 2 bayt satır sıkıştırması için en önemli byte biçiminde saat depolayarak kaydeder.

datetime

Evet

İki 4 baytlık tamsayı kullanarak tamsayı veri gösterimi kullanır.Tamsayı değeri temel tarih 1/1/1900 ile gün sayısını temsil eder.İlk 2 bayt 2079 yıla kadar temsil edebilir.Noktayı kadar sıkıştırma her zaman burada 2 bayt kaydedebilirsiniz.Tamsayı değeri her 3.33 milisaniye olarak gösterir.Sıkıştırma, ilk 2 bayt ilk beş dakika içinde tamamen bitirirse ve 4 pm sonra dördüncü baytı gerekiyor.Bu nedenle, sıkıştırma 4 pm yalnızca 1 bayt kaydedebilirsiniz.Zaman datetime sıkıştırılmış gibi herhangi bir diğer tamsayı, sıkıştırma kazandırır 2 bayt cinsinden tarih.

date

Hayır

3 Bayt kullanarak tamsayı veri gösterimi kullanır.Bu, 1/1/0001 tarih temsil eder.Çağdaş tarih için tüm 3 bayt satır sıkıştırması kullanır.Bu, hiçbir tasarrufu sağlıyor.

time

Hayır

3-6 Bayt kullanarak tamsayı veri gösterimi kullanır.0-3-6 Bayt alabileceği 9 ile başlayan çeşitli Precision bilgisayarlar vardır.Sıkıştırılmış alanı aşağıdaki gibi kullanılır:

  • Precision = 0.Bayt = 3.Her bir tamsayı değeri ikinci bir temsil eder.Sıkıştırma saat 6 pm kadar potansiyel 1 bayt kaydetme 2 bayt kullanarak temsil edebilir.

  • Precision = 1.Bayt = 3.Her bir tamsayı değer 1/10 saniye temsil eder.Sıkıştırma önce 2 am üçüncü bayt kullanır.Az tasarruf sonuçlanır.

  • Precision = 2.Bayt = 3.Benzer şekilde önceki durum, tasarrufunu elde edin daha düşüktür.

  • Precision = 3.Bayt = 4.İlk 3 bayt 5 am tarafından alınması nedeniyle çok az tasarruf sağlıyor.

  • Precision = 4.Bayt = 4.İlk 3 bayt ilk 27 saniye olarak alınır.Hiçbir tasarrufu beklenir.

  • Precision = 5, bayt = 5.12-Öğleden sonra beşinci bayt kullanılır.

  • Precision = 6 ve 7, bayt = 5.Hiçbir tasarrufu sağlıyor.

  • Precision = 8, bayt = 6.3 am sonra altıncı byte kullanılacaktır.

Satır sıkıştırma için depolama birimindeki değişiklik yoktur.Genel olarak, değil ne kadar tasarruf sıkıştırmaktan beklenen time veri türü.

datetime2

Evet

6-9 Bayt kullanarak tamsayı veri gösterimi kullanır.İlk 4 bayt tarih gösterir.saat tarafından alınan bayt sayısı belirtilen süre duyarlığı'bağlı olacaktır.

Tamsayı değeri 1/1/0001 beri geçen gün sayısı ile 12/31/9999 arasında bir üst sınırını gösterir.2005 Yılında tarih ifade etmesi için sıkıştırma 3 bayt alır.

Çeşitli saat Precision bilgisayarlar için 2 ile 4 bayt sağladığından, zamanında hiçbir tasarrufu vardır.Bu nedenle, bir saniyelik saat kesinlik için ikinci bayt 255 saniye sonra geçen süre, 2 bayt sıkıştırma kullanır.

datetimeoffset

Evet

Benzer datetime2, 2 saat dilimi biçimini (ss: dd) baytını olmasıdır.

Gibi datetime2, sıkıştırma kaydedebilirsiniz 2 bayt.

Saat dilimi değerlerini, çoğu zaman için 0 mm değeri olabilir.Bu nedenle, sıkıştırma, belki 1 bayt kaydedebilirsiniz.

Satır sıkıştırma için depolama hiçbir değişiklik yoktur.

char

Evet

Sonunda doldurma karakterleri kaldırılır.Dikkat Veritabanı Altyapısı aynı ekler doldurma karakter kullanılan harmanlamayı olsun.

varchar

Hayır

Herhangi bir etki oluşturmaz.

text

Hayır

Herhangi bir etki oluşturmaz.

nchar

Evet

Metin, sıkıştırılmış metin boyutu geçerli metin boyutu küçükse standart sıkıştırma düzeni Unicode (scsu) algoritması kullanılarak sıkıştırılır.

nvarchar

Evet

Metin, sıkıştırılmış metin boyutu geçerli metin boyutu küçükse standart sıkıştırma düzeni Unicode (scsu) algoritması kullanılarak sıkıştırılır.

NotNot
Sıkıştırma desteklenmez nvarchar(max).

ntext

Hayır

Herhangi bir etki oluşturmaz.

binary

Evet

Ardarda sıfırları kaldırılır.

varbinary

Hayır

Herhangi bir etki oluşturmaz.

image

Hayır

Herhangi bir etki oluşturmaz.

cursor

Hayır

Herhangi bir etki oluşturmaz.

timestamp / rowversion

Evet

8 Bayt kullanarak tamsayı veri gösterimi kullanır.Her veritabanı için tutulan bir zaman damgası sayacı vardır ve değeri 0'dan başlar.Herhangi bir tamsayı değer gibi sıkıştırılabilir.

sql_variant

Hayır

Herhangi bir etki oluşturmaz.

uniqueidentifier

Hayır

Herhangi bir etki oluşturmaz.

table

Hayır

Herhangi bir etki oluşturmaz.

xml

Hayır

Herhangi bir etki oluşturmaz.

Kullanıcı tanımlı türler

Hayır

Bu dahili olarak temsil edilen varbinary.

FILESTREAM

Hayır

Bu dahili olarak temsil edilen varbinary.