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

Bu konuyu özetleyen nasıl Veritabanı AltyapısıImplements satır sıkıştırması. Bu Özet, verileriniz için gerekli depolama alanını planlamanıza yardımcı olacak temel bilgiler sağlar.

Etkinleştirme sıkıştırma, yalnızca bir veri türü ancak kendi sözdizimi veya mantığı ile ilişkili verileri fiziksel depolama 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 veri yükü azaltır. Bu meta veri sütunları, uzunlukları ve uzaklıklar hakkında bilgi verilmektedir. Bazı durumlarda, meta veri 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) ile sayısal üzerinde temel alan türlerini (örneğin datetimeve money).

  • O 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 getirilmiş ve hiç bayt.

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

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

Veri türü

Depolama etkilenir mi?

Açıklama

tinyint

Hayır

gerekli en az bellek 1 bayttır.

smallint

Evet

Değeri 1 bayt sığıyorsa, yalnızca 1 bayt kullanılır.

int

Evet

Gerekli olan bayt kullanır. Örneğin, bir değeri 1 bayt saklanabilir, depolama yalnızca 1 bayt alacaktır.

bigint

Evet

Gerekli olan bayt kullanır. Örneğin, bir değeri 1 bayt saklanabilir, depolama yalnızca 1 bayt alacaktır.

decimal

Evet

Bu depolama vardecimal depolama biçimi tam olarak aynıdır. Daha fazla bilgi için, bkz. Storing Decimal Data As Variable Length.

numeric

Evet

Bu depolama vardecimal depolama biçimi tam olarak aynıdır. Daha fazla bilgi için, bkz. Storing Decimal Data As Variable Length.

bit

Evet

Meta veri yükü bu için 4 bit getiriyor.

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 noktasından sonra kaldırarak saklanır. Bu tür bir depolama optimizasyonu tamsayı türleri için benzer sahiptir.

money

Evet

8 Baytlık 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 noktasından sonra kaldırarak saklanır. Bu tip büyük daha sahip smallmoney. Bu tür bir depolama optimizasyonu tamsayı türleri için benzer sahiptir.

float

Evet

En az önemli bayt sıfırlarla saklanmaz. floatsıkıştırma, çoğunlukla Mantis nonfractional değerleri için geçerlidir.

real

Evet

En az önemli bayt sıfırlarla saklanmaz. realsıkıştırma, çoğunlukla Mantis nonfractional değerleri için geçerlidir.

smalldatetime

Hayır

İki 2 baytlık tamsayı kullanarak tamsayı veri gösterimi kullanır. Tarih 2 bayt kazanır. 1/1/1901 Yılından beri gün sayısıdır. Bu 2 1902 başlayarak bayt gerekir. Bu nedenle, orada'hayır tasarruf noktası sonra.

Saat gece yarısı beri dakika sayısıdır. İkinci bayt kullanmak için biraz 4 am zaman değerleri başlatın.

Eğer bir smalldatetimesadece bir tarihi temsil eden (ortak bir harf), 0.0 geldi. Sıkıştırma, 2 bayt satır sıkıştırması için en önemli byte biçiminde zaman depolayarak kaydeder.

datetime

Evet

İki 4 baytlık tamsayı kullanarak tamsayı veri gösterimi kullanır. Tamsayı değeri temel tarihi 1/1/1900 ile gün sayısını temsil eder. İlk 2 bayta kadar yıl 2079 temsil edebilir. Noktası kadar sıkıştırma her zaman burada 2 bayt kaydedebilirsiniz. Her bir tamsayı değeri 3.33 milisaniye cinsinden gösterir. Sıkıştırma ilk 2 bayt ilk beş dakika içinde exhausts ve 4 de sonra dördüncü bayt gerekir. Bu nedenle, sıkıştırma, 4 de sonra yalnızca 1 bayt kaydedebilirsiniz. Ne zaman datetimeherhangi bir diğer tamsayı gibi sıkıştırma kaydeder tarihi 2 bayt sıkıştırılır.

date

Hayır

3 Bayt kullanarak tamsayı veri gösterimi kullanır. Bu 1/1/0001 tarihi temsil eder. Çağdaş tarihler için tüm 3 bayt için satır sıkıştırması kullanır. Bu hiç tasarruf 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 duyarlılıklar vardır. Sıkıştırılmış alanı aşağıdaki gibi kullanılır:

  • Duyarlık = 0. Bayt = 3. Her bir tamsayı değeri saniye temsil eder. Sıkıştırma 8 pm kadar zamanda 2 potansiyel tasarruf 1 bayt bayt kullanarak temsil edebilir.

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

  • Duyarlık = 2. Bayt = 3. Benzer şekilde önceki durumda, tasarruf elde etmek olası değildir.

  • Duyarlık = 3. Bayt = 4. Çünkü ilk 3 bayt 5 am tarafından alınır, küçük tasarruf sağlıyor.

  • Duyarlık = 4. Bayt = 4. İlk 3 bayt ilk 27 saniye içinde alınır. Hiçbir tasarruf bekleniyor.

  • Duyarlık = 5, bayt = 5. 12-Öğleden sonra beşinci bayt kullanılır.

  • Duyarlık = 6 ve 7, bayt = 5. Hiçbir tasarruf sağlıyor.

  • Duyarlık = 8, bayt = 6. Altıncı bayt 3 am sonra kullanılacaktır.

Satır sıkıştırma depolama değişiklik yoktur. Genel olarak, çok tasarruf sıkıştırmasını beklenebilir timeveri türü.

datetime2

Evet

6-9 Bayt kullanarak tamsayı veri gösterimi kullanır. İlk 4 bayt tarihi temsil eder. Zaman tarafından alınan bayt sayısı belirtilen zaman duyarlığını bağlıdır.

Tamsayı değeri ile 12/31/9999 bir üst sınır 1/1/0001 beri gün sayısını temsil eder. 2005 Yılı içinde bir tarihi ifade etmesi için sıkıştırma 3 bayt alır.

Orada hiçbir tasarrufu zaman çeşitli zaman duyarlılıklar için 2-4 bayt sağlar çünkü. Bu nedenle, bir saniyelik zaman kesinlik için 255 saniye sonra ikinci baytı aldığı süre, 2 bayt sıkıştırma kullanır.

datetimeoffset

Evet

Benzer datetime2dışında orada 2 bayt Saat dilimi biçimini (SS: DD).

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

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

Satır sıkıştırma depolama değişiklik vardır.

char

Evet

Sonunda doldurma karakterleri kaldırılır. Dikkat Veritabanı Altyapısıkullanılan harmanlama bakılmaksızın aynı dolgu karakteri ekler.

varchar

Hayır

Etkisi.

text

Hayır

Etkisi.

nchar

Evet

Sonunda doldurma karakterleri kaldırılır. Dikkat Veritabanı Altyapısıkullanılan harmanlama bakılmaksızın aynı dolgu karakteri ekler.

nvarchar

Hayır

Etkisi.

ntext

Hayır

Etkisi.

binary

Evet

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

varbinary

Hayır

Etkisi.

image

Hayır

Etkisi.

cursor

Hayır

Etkisi.

timestamp / rowversion

Evet

8 Bayt kullanarak tamsayı veri gösterimi kullanır. Orada bir zaman damgası sayacı her veritabanı için tutulan ve değerinin 0'dan başlar. Bu başka bir tamsayı değer gibi sıkıştırılmış olabilir.

sql_variant

Hayır

Etkisi.

uniqueidentifier

Hayır

Etkisi.

table

Hayır

Etkisi.

xml

Hayır

Etkisi.

Kullanıcı tanımlı türler

Hayır

Bu dahili olarak temsil edilen varbinary.

FILESTREAM

Hayır

Bu dahili olarak temsil edilen varbinary.

Ayrıca bkz.

Kavramlar

Veri Sıkıştırma

Sayfa sıkıştırma uygulama