Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Bu makalede Veritabanı Altyapısı'nın satır sıkıştırmayı nasıl uyguladığı özetlemektedir. Bu özet, verileriniz için ihtiyacınız olan depolama alanını planlamanıza yardımcı olacak temel bilgiler sağlar.
Sıkıştırmanın etkinleştirilmesi yalnızca veri türüyle ilişkili verilerin fiziksel depolama biçimini değiştirir, ancak söz dizimi veya semantiğiyle ilgili değildir. Sıkıştırma için bir veya daha fazla tablo etkinleştirildiğinde uygulama değişiklikleri gerekli değildir. Yeni kayıt depolama biçiminde aşağıdaki ana değişiklikler vardır:
Kayıtla ilişkili meta veri ek yükünü azaltır. Bu meta veriler sütunlar, uzunlukları ve uzaklıkları hakkında bilgidir. Bazı durumlarda meta veri yükü eski depolama biçiminden daha büyük olabilir.
Sayısal türler (örneğin tamsayı, ondalık ve float) ve sayısala dayalı türler (örneğin tarih saat ve para) için değişken uzunlukta depolama biçimi kullanır.
Sabit karakter dizelerini, boş karakterleri depolamayarak değişken uzunluklu biçimi kullanarak depolar.
Uyarı
NULL ve 0 tüm veri türlerindeki değerler optimize edilir ve hiç bayt kaplamaz.
Satır sıkıştırma depolamayı nasıl etkiler?
Aşağıdaki tabloda, satır sıkıştırmanın SQL Server ve Azure SQL Veritabanı'ndaki mevcut türleri nasıl etkilediği açıklanmaktadır. Tablo, sayfa sıkıştırma kullanılarak elde edilebilecek tasarrufları içermez.
| Veri türü | Depolama etkileniyor mu? | Description |
|---|---|---|
| tinyint | Hayı | 1 bayt, gereken en düşük depolama alanıdır. |
| smallint | Yes | Değer 1 bayt sığdırılıyorsa yalnızca 1 bayt kullanılır. |
| int | Yes | Yalnızca gerekli olan baytları kullanır. Örneğin, bir değer 1 bayt olarak depolanabilirse, depolama yalnızca 1 bayt alır. |
| bigint | Yes | Yalnızca gerekli olan baytları kullanır. Örneğin, bir değer 1 bayt olarak depolanabilirse, depolama yalnızca 1 bayt alır. |
| decimal | Yes | Belirtilen hassasiyet ne olursa olsun yalnızca gerekli baytları kullanır. Örneğin, bir değer 3 bayt olarak depolanabilirse, depolama alanı yalnızca 3 bayt alır. Depolama ayak izi, vardecimal depolama biçimiyle tam olarak aynıdır. |
| Sayısal | Yes | Belirtilen hassasiyet ne olursa olsun yalnızca gerekli baytları kullanır. Örneğin, bir değer 3 bayt olarak depolanabilirse, depolama alanı yalnızca 3 bayt alır. Depolama ayak izi, vardecimal depolama biçimiyle tam olarak aynıdır. |
| bit | Yes | Meta veri yükü bunu 4 bit'e getirir. |
| küçük para | Yes | 4 baytlık bir tamsayı kullanarak tamsayı veri gösterimini kullanır. Para birimi değeri 10.000 ile çarpılır ve elde edilen tamsayı değeri ondalık ayırıcıdan sonraki basamaklar kaldırılarak depolanır. Bu tür, tamsayı türleri için buna benzer bir depolama iyileştirmesine sahiptir. |
| para | Yes | 8 baytlık bir tamsayı kullanarak tamsayı veri gösterimini kullanır. Para birimi değeri 10.000 ile çarpılır ve elde edilen tamsayı değeri ondalık ayırıcıdan sonraki basamaklar kaldırılarak depolanır. Bu tür smallmoney'den daha geniş bir aralığa sahiptir. Bu tür, tamsayı türleri için buna benzer bir depolama iyileştirmesine sahiptir. |
| float | Yes | Sıfır içeren en az önemli baytlar depolanmaz. float sıkıştırması çoğunlukla mantisteki kırılmaz değerler için geçerlidir. |
| Gerçek | Yes | Sıfır içeren en az önemli baytlar depolanmaz. gerçek sıkıştırma çoğunlukla mantisteki kırılmaz değerler için geçerlidir. |
| smalldatetime | Hayı | İki adet 2 baytlık tamsayı kullanarak tamsayı veri gösterimini kullanır ve bu tarihten bu yana 1900-01-01olan gün sayısıdır.
Smalldatetime değerinin tarih bölümünde satır sıkıştırma avantajı yoktur.Saat, gece yarısından bu yana dakika sayısıdır. 04:00'ı biraz geçen zaman değerleri ikinci bayt kullanmaya başlar. Smalldatetime yalnızca bir tarihi (yaygın bir durum) temsil etmek için kullanılıyorsa, saat olur 0.0. Sıkıştırma, zamanı satır sıkıştırması için en önemli bayt biçiminde depolayarak 2 bayt tasarruf sağlar. |
| datetime | Yes | İki adet 4 baytlık tamsayı kullanarak tamsayı veri gösterimini kullanır. Tamsayı değeri, temel tarihi 1900-01-01olan gün sayısını temsil eder. İlk 2 bayt yılı 2079 kadar temsil edebilir. Sıkıştırma, bu noktaya kadar her zaman 2 bayt tasarruf edebilir. Her tamsayı değeri 3,33 milisaniyeyi temsil eder. Sıkıştırma, ilk beş dakikada ilk 2 baytı tüketer ve 16:00'da dördüncü bayta ihtiyaç duyar. Bu nedenle sıkıştırma, 16:00'dan sonra yalnızca 1 bayt tasarruf edebilir.
Tarih saat diğer tamsayılar gibi sıkıştırıldığında, sıkıştırma tarihe 2 bayt kaydeder. |
| date | Hayı | 3 bayt kullanarak tamsayı veri gösterimini kullanır. Bu, 0001-01-01 tarihini temsil eder. Çağdaş tarihler için satır sıkıştırma 3 bayt'ın tamamını kullanır. Bu, tasarruf sağlamaz. |
| time | Hayı | 3 - 6 bayt kullanarak tamsayı veri gösterimini kullanır. 0'dan 9'a kadar başlayan ve 3 ila 6 bayt alabilen çeşitli hassasiyetler vardır. Sıkıştırılmış alan aşağıdaki gibi kullanılır: Kesinlik = 0. Byte = 3. Her tamsayı değeri bir saniyeyi temsil eder. Sıkıştırma, 2 bayt kullanarak 18:00'a kadar olan süreyi temsil edebilir, bu da potansiyel olarak 1 bayt tasarruf sağlayabilir. Hassaslık = 1. Byte = 3. Her tamsayı değeri 1/10 saniyeyi temsil eder. Sıkıştırma, 02:00'ye kadar üçüncü bayt kullanır. Çok az tasarruf sağlar. Doğruluk = 2. Byte = 3. Önceki örnekte olduğu gibi tasarruf sağlama olasılığı düşüktür. Doğruluk = 3. Byte = 4. İlk 3 bayt 5AM tarafından alındığından, bu seçenek çok az verim sağlar. Doğruluk = 4. Byte = 4. İlk 3 bayt ilk 27 saniyede alınır. Tasarruf beklenmiyor. Duyarlık = 5, Bayt = 5. Beşinci bayt 12-öğlenden sonra kullanılacaktır. Duyarlık = 6 ve 7, Bayt = 5. Tasarruf sağlamaz. Duyarlık = 8, Bayt = 6. Altıncı bayt, 03:00'in ardından kullanılacaktır. Satır sıkıştırma için depolamada değişiklik yoktur. Genel olarak, zaman veri türünün sıkıştırılmasından çok fazla tasarruf beklenemez. |
| datetime2 | Yes | 6 - 9 bayt kullanarak tamsayı veri gösterimini kullanır. İlk 4 bayt tarihi temsil eder. Belirtilen zaman hassasiyetinin belirlediği şekilde, alınan bayt sayısı değişiklik gösterir. Tamsayı değeri, 31/12/9999 üst sınırıyla bu tarihten bu yana 0001-01-01 olan gün sayısını temsil eder. 2005 yılındaki bir tarihi temsil etmek için sıkıştırma 3 bayt alır.Çünkü çeşitli zaman hassasiyetleri için 2 ila 4 bayt ayrıldığından, zaman tasarrufu sağlanamamaktadır. Bu nedenle, bir saniyelik zaman duyarlılığı için sıkıştırma işlemi, zaman bilgisini temsil etmek amacıyla 2 bayt kullanır ve ilk bayt 255 saniyeyi aştığında ikinci bayt devreye girer. |
| datetimeoffset | Yes |
datetime2'ye benzer, ancak saat dilimi biçimi 2 bayttır (HH:mm).Datetime2 gibi sıkıştırma da 2 bayt kaydedebilir. Saat dilimi değerleri için mm değer çoğu durumda olabilir 0 . Bu nedenle, sıkıştırma muhtemelen 1 bayt tasarruf edebilir.Satır sıkıştırma için depolamada değişiklik yoktur. |
| char | Yes | Sondaki doldurma karakterleri kaldırılır. Veritabanı Altyapısı, kullanılan harmanlamadan bağımsız olarak aynı doldurma karakterini ekler. |
| varchar | Hayı | Hiçbir etkisi yok. |
| text | Hayı | Hiçbir etkisi yok. |
| nchar | Evet 1 | Sondaki doldurma karakterleri kaldırılır. Veritabanı Altyapısı, kullanılan harmanlamadan bağımsız olarak aynı doldurma karakterini ekler. |
| nvarchar | Hayır 1 | Hiçbir etkisi yok. |
| ntext | Hayı | Hiçbir etkisi yok. |
| binary | Yes | Sondaki sıfırlar kaldırılır. |
| varbinary | Hayı | Hiçbir etkisi yok. |
| image | Hayı | Hiçbir etkisi yok. |
| imleç | Hayı | Hiçbir etkisi yok. |
| Zaman damgası / rowversion | Yes | 8 bayt kullanarak tamsayı veri gösterimini kullanır. Her veritabanı için tutulan bir zaman damgası sayacı vardır ve değeri 0'dan başlar. Bu, diğer herhangi bir tamsayı değeri gibi sıkıştırılabilir. |
| sql_variant | Hayı | Hiçbir etkisi yok. |
| uniqueidentifier | Hayı | Hiçbir etkisi yok. |
| table | Hayı | Hiçbir etkisi yok. |
| xml | 2 Yok | Hiçbir etkisi yok. |
| Kullanıcı tanımlı türler | Hayı | Bu, dahili olarak varbinary olarak temsil edilir. |
| FILESTREAM | Hayı | Bu, dahili olarak varbinary olarak temsil edilir. |
1 Unicode sıkıştırma, sabit uzunlukta nchar ve nvarchar veri türlerini destekler. Satır dışında veya nvarchar(max) sütunlarında depolanan veri değerleri sıkıştırılamaz. Satır içinde depolanmış olsa bile nvarchar(max) verilerinde Unicode sıkıştırma desteklenmez.
2 Veri sıkıştırma etkinleştirilirken satır dışı veriler sıkıştırılmıyor. Örneğin, 8.060 bayttan büyük bir XML kaydı, sıkıştırılmış olmayan satır dışı sayfalar kullanır.