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:
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. |