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
SQL Server, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği, satır deposu tablosu ve dizinleri için satır ve sayfa sıkıştırmayı destekler ve sütun deposu tabloları ve dizinleri için sütun deposu ve sütun deposu arşiv sıkıştırmasını destekler.
Satır deposu tabloları ve dizinleri için, veritabanının boyutunu küçültmeye yardımcı olmak için veri sıkıştırma özelliğini kullanın. Veriler daha az sayfada depolandığından ve sorguların diskten daha az sayfa okuması gerektiğinden, veri sıkıştırma, alan tasarrufuna ek olarak G/Ç yoğunluklu iş yüklerinin performansını artırmaya yardımcı olabilir. Öte yandan, uygulamayla veri alışverişinde bulunulurken verileri sıkıştırmak ve açmak için veritabanı sunucusunda fazladan CPU kaynakları gerekir. Satır ve sayfa sıkıştırmayı aşağıdaki veritabanı nesnelerinde yapılandırabilirsiniz:
- Bir tablo tamamıyla yığın olarak depolanır.
- Kümelenmiş dizin olarak depolanan tablonun tamamı.
- Tam bir kümelenmemiş dizin.
- Dizinlenmiş görünümün tamamı.
- Bölümlenmiş tablolar ve dizinler için, her bölüm için sıkıştırma seçeneğini yapılandırabilirsiniz ve bir nesnenin çeşitli bölümlerinin aynı sıkıştırma ayarına sahip olması gerekmez.
Columnstore tabloları ve dizinleri için tüm columnstore tabloları ve dizinleri her zaman columnstore sıkıştırmasını kullanır ve bu kullanıcı tarafından yapılandırılamaz. Verileri depolamak ve almak için ek süre ve CPU kaynaklarını karşılayabildiğiniz durumlarda veri boyutunu daha da azaltmak için columnstore arşiv sıkıştırmasını kullanın. Sütun deposu arşiv sıkıştırmasını aşağıdaki veritabanı nesnelerinde yapılandırabilirsiniz:
- Bir sütun deposu tablosunun tamamı veya kümelenmiş sütun deposu dizininin tamamı. Columnstore tablosu kümelenmiş columnstore dizini olarak depolandığından her iki yaklaşım da aynı sonuçlara sahiptir.
- Bir bütün kümelenmemiş sütun deposu dizini.
- Bölümlenmiş columnstore tabloları ve columnstore dizinleri için her bölüm için arşiv sıkıştırma seçeneğini yapılandırabilirsiniz ve çeşitli bölümlerin aynı arşiv sıkıştırma ayarına sahip olması gerekmez.
Uyarı
Veriler GZIP algoritma biçimi kullanılarak da sıkıştırılabilir. Bu ek bir adımdır ve eski verileri uzun süreli depolama için arşivlerken verilerin bölümlerini sıkıştırmak için en uygundur. İşlev kullanılarak COMPRESS
sıkıştırılmış veriler dizine alınamaz. Daha fazla bilgi için bkz . COMPRESS (Transact-SQL).
Satır ve sayfa sıkıştırma konusunda dikkat edilmesi gerekenler
Satır ve sayfa sıkıştırma kullanırken aşağıdaki noktaları unutmayın:
Veri sıkıştırma ayrıntıları hizmet paketlerinde veya sonraki sürümlerde bildirimde bulunmadan değiştirilebilir.
Sıkıştırma, Azure SQL Veritabanı'nda kullanılabilir
Sıkıştırma, SQL Server'ın her sürümünde kullanılamaz. Daha fazla bilgi için bu bölümün sonundaki sürümlerin ve desteklenen özelliklerin listesine bakın.
Sıkıştırma, sistem tablolarında kullanılamaz.
Sıkıştırma, sayfada daha fazla satırın depolanmasına izin verebilir, ancak bir tablonun veya dizinin en büyük satır boyutunu değiştirmez.
En büyük satır boyutu artı sıkıştırma ek yükü en fazla 8.060 bayt satır boyutunu aştığında, tablo sıkıştırma için etkinleştirilemiyor. Örneğin,
c1 CHAR(8000)
vec2 CHAR(53)
sütunlarına sahip bir tablo, ek sıkıştırma yükü nedeniyle sıkıştırılamaz. vardecimal depolama formatı kullanıldığında, bu format etkinleştirildiğinde satır boyutu kontrolü gerçekleştirilir. Satır ve sayfa sıkıştırma için, nesne başlangıçta sıkıştırıldığında satır boyutu denetimi gerçekleştirilir ve her satır eklendiğinde veya değiştirildiğinde denetlenir. Sıkıştırma aşağıdaki iki kuralı zorunlu kılar:- Sabit uzunlukta bir türe yapılan güncelleştirme her zaman başarılı olmalıdır.
- Veri sıkıştırmayı devre dışı bırakma işlemi her zaman başarılı olmalıdır. Sıkıştırılmış satır sayfaya sığsa bile, bu da 8.060 bayttan az olduğu anlamına gelir; SQL Server, sıkıştırılmadığında satıra sığmayan güncelleştirmeleri engeller.
Veri sıkıştırma etkinleştirilirken satır dışı veriler sıkıştırılamaz. Örneğin, 8.060 bayttan büyük bir XML kaydı, sıkıştırılmış olmayan satır dışı sayfalar kullanır.
Çeşitli veri türleri veri sıkıştırmadan etkilenmez. Daha fazla ayrıntı için bkz. Satır sıkıştırması depolamayı nasıl etkiler.
Bölümlerin listesi belirtildiğinde, sıkıştırma türü
ROW
,PAGE
veyaNONE
olarak tek tek bölümlere ayarlanabilir. Bölüm listesi belirtilmezse, tüm bölümler deyiminde belirtilen veri sıkıştırma özelliğiyle ayarlanır. Tablo veya dizin oluşturulduğunda, aksi belirtilmedikçe veri sıkıştırma NONE olarak ayarlanır. Bir tablo değiştirildiğinde, aksi belirtilmedikçe mevcut sıkıştırma korunur.Bölümlerin listesini veya aralık dışında olan bir bölümü belirtirseniz bir hata oluşturulur.
Kümelenmemiş dizinler tablonun sıkıştırma özelliğini devralmıyor. Dizinleri sıkıştırmak için dizinlerin sıkıştırma özelliğini açıkça ayarlamanız gerekir. Dizin oluşturulduğunda dizinler için sıkıştırma ayarı varsayılan olarak NONE olarak ayarlanır.
Kümelenmiş dizin bir yığında oluşturulduğunda, kümelenmiş dizin, alternatif bir sıkıştırma durumu belirtilmediği sürece yığının sıkıştırma durumunu devralır.
Bir yığın sayfa düzeyinde sıkıştırma için yapılandırıldığında sayfalar yalnızca aşağıdaki yollarla sayfa düzeyinde sıkıştırma alır:
- Toplu iyileştirmeler etkinleştirildiğinde veriler toplu olarak içeri aktarılır.
- Veriler
INSERT INTO ... WITH (TABLOCK)
söz dizimi kullanılarak eklenir ve tabloda kümelenmemiş bir dizin bulunmamaktadır. - Tablo,
ALTER TABLE ... REBUILD
deyimi,PAGE
sıkıştırma seçeneğiyle yürütülerek yeniden oluşturulur.
DML işlemleri kapsamında bir yığında ayrılan yeni sayfalar, yığın yeniden oluşturulana kadar
PAGE
sıkıştırması kullanmaz. Sıkıştırmayı kaldırıp yeniden ekleyerek veya kümelenmiş dizin oluşturup kaldırarak yığını yeniden oluşturun.Bir yığının sıkıştırma ayarının değiştirilmesi, yığındaki yeni satır konumlarına yönelik işaretçilere sahip olmaları için tablodaki tüm kümelenmemiş dizinlerin yeniden oluşturulmasını gerektirir.
Çevrimiçi veya çevrimdışı olarak
ROW
veyaPAGE
sıkıştırmayı etkinleştirebilir veya devre dışı bırakabilirsiniz. Bir yığında sıkıştırmayı etkinleştirmek, çevrimiçi bir işlem için tek iş parçacıklı bir işlemdir.Satır veya sayfa sıkıştırmayı etkinleştirmeye veya devre dışı bırakmaya yönelik disk alanı gereksinimleri, dizin oluşturma veya yeniden derleme ile aynıdır. Bölümlenmiş veriler için, tek seferde bir bölüm için sıkıştırmayı etkinleştirerek veya devre dışı bırakarak gerekli alanı azaltabilirsiniz.
Bölümlenmiş bir tablodaki bölümlerin sıkıştırma durumunu belirlemek için katalog görünümünün
data_compression
sütununusys.partitions
sorgular.Dizinleri sıkıştırdığınızda yaprak düzeyi sayfalar hem satır hem de sayfa sıkıştırma ile sıkıştırılabilir. Yaprak düzeyi olmayan sayfalar sayfa sıkıştırması almaz.
Boyutları nedeniyle, büyük değerli veri türleri bazen özel amaçlı sayfalardaki normal satır verilerinden ayrı olarak depolanır. Ayrı olarak depolanan veriler için veri sıkıştırma kullanılamaz.
SQL Server 2005'te (9.x) vardecimal depolama biçimini uygulayan tablolar, yükseltildiğinde bu ayarı korur. Vardecimal depolama biçimine sahip bir tabloya satır sıkıştırması uygulayabilirsiniz. Ancak satır sıkıştırma , vardecimal depolama biçiminin üst kümesi olduğundan, vardecimal depolama biçimini korumak için bir neden yoktur. Vardecimal depolama biçimini satır sıkıştırmasıyla birleştirdiğinizde ondalık değerler ek sıkıştırma elde edilemez. Vardecimal depolama biçimine sahip bir tabloya sayfa sıkıştırma uygulayabilirsiniz; ancak, vardecimal depolama biçimi sütunları büyük olasılıkla ek sıkıştırma elde etmemektedir.
Uyarı
SQL Server'ın desteklenen tüm sürümleri vardecimal depolama biçimini destekler; ancak veri sıkıştırma aynı hedeflere ulaştığı için vardecimal depolama biçimi kullanım dışıdır. Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.
Windows'da SQL Server sürümleri tarafından desteklenen özelliklerin listesi için bkz:
- SQL Server 2025 Preview'ın sürümleri ve desteklenen özellikleri
- SQL Server 2022'nin Sürümleri ve desteklenen özellikleri
- SQL Server 2019'nin
Sürümleri ve desteklenen özellikleri - SQL Server 2017'nin Sürümleri ve desteklenen özellikleri
- SQL Server 2016'nın Sürümleri ve desteklenen özellikleri
Columnstore ve columnstore arşiv sıkıştırması
Columnstore tabloları ve dizinleri her zaman columnstore sıkıştırması kullanılarak saklanır. Arşiv sıkıştırma adı verilen ek bir sıkıştırma yapılandırarak columnstore verilerinin boyutunu daha da küçültebilirsiniz. Arşiv sıkıştırma gerçekleştirmek için SQL Server, veriler üzerinde Microsoft XPRESS sıkıştırma algoritmasını çalıştırır. Aşağıdaki veri sıkıştırma türlerini kullanarak arşiv sıkıştırması ekleyin veya kaldırın:
- Arşiv sıkıştırma ile columnstore verilerini sıkıştırmak için veri sıkıştırmayı kullanın
COLUMNSTORE_ARCHIVE
. - Arşiv sıkıştırmasını açmak için veri sıkıştırmayı kullanın
COLUMNSTORE
. Sonuçta elde edilen veriler columnstore sıkıştırmasıyla sıkıştırılmaya devam eder.
Arşiv sıkıştırması eklemek için ALTER TABLE (Transact-SQL) veya ALTER INDEX (Transact-SQL) komutlarını REBUILD
seçeneğiyle ve DATA COMPRESSION = COLUMNSTORE_ARCHIVE
kullanın.
Örneğin:
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = 1 WITH (
DATA_COMPRESSION = COLUMNSTORE_ARCHIVE
);
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE_ARCHIVE
);
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (2, 4)
);
Arşiv sıkıştırmasını kaldırmak ve verileri columnstore sıkıştırmasına geri yüklemek için ve seçenekleriyle REBUILD
veya DATA COMPRESSION = COLUMNSTORE
kullanın.
Örneğin:
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = 1 WITH (
DATA_COMPRESSION = COLUMNSTORE
);
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE
);
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE ON PARTITIONS (2, 4)
);
Bu sonraki örnek, veri sıkıştırma ayarını bazı parçalar üzerinde columnstore, diğer parçalar üzerinde ise archival columnstore olarak ayarlar.
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE
ON PARTITIONS (4, 5),
DATA COMPRESSION = COLUMNSTORE_ARCHIVE
ON PARTITIONS (1, 2, 3)
);
Gösteri
Arşiv sıkıştırması ile columnstore dizinlerini sıkıştırdığınızda bu, dizinin arşiv sıkıştırması olmayan columnstore dizinlerinden daha yavaş performans göstermesine neden olur. Arşiv sıkıştırmayı yalnızca verileri sıkıştırmak ve almak için fazladan zaman ve CPU kaynakları kullanmaya gücü yettiğinde kullanın.
Arşiv sıkıştırmanın avantajı, sık erişilmeyen veriler için yararlı olan azaltılmış depolama alanıdır. Örneğin, her bir veri ayı için bir bölümünüz varsa ve etkinliğinizin çoğu en son aylara aitse, depolama gereksinimlerini azaltmak için eski ayları arşivleyebilirsiniz.
Meta veriler
Aşağıdaki sistem görünümleri, kümelenmiş dizinler için veri sıkıştırma hakkında bilgi içerir:
-
sys.indexes (Transact-SQL) -
type
vetype_desc
sütunlarıCLUSTERED COLUMNSTORE
veNONCLUSTERED COLUMNSTORE
içerir. -
sys.partitions (Transact-SQL) -
data_compression
vedata_compression_desc
sütunlarıCOLUMNSTORE
veCOLUMNSTORE_ARCHIVE
değerlerini içerir.
sp_estimate_data_compression_savings (Transact-SQL) yordamı columnstore dizinlerine de uygulanabilir.
Bölümlenmiş tablolar ve dizinler üzerindeki etki
Bölümlenmiş tablolar ve dizinlerle veri sıkıştırmayı kullandığınızda, aşağıdaki noktalara dikkat edin:
Bölümler deyimi kullanılarak bölündüğünde
ALTER PARTITION
, her iki bölüm de özgün bölümün veri sıkıştırma özniteliğini devralır.İki bölüm birleştirildiğinde, sonuçta elde edilen bölüm hedef bölümün veri sıkıştırma özniteliğini devralır.
Bölüm değiştirmek için, bölümün veri sıkıştırma özelliği tablonun sıkıştırma özelliğiyle eşleşmelidir.
Bölümlenmiş bir tablonun veya dizinin sıkıştırmasını değiştirmek için kullanabileceğiniz iki söz dizimi varyasyonu vardır:
Aşağıdaki söz dizimi yalnızca başvuruda bulunan bölümü yeniden oluşturur:
ALTER TABLE <table_name> REBUILD PARTITION = 1 WITH ( DATA_COMPRESSION = <option> );
Aşağıdaki söz dizimi, başvurulmayacak bölümler için mevcut sıkıştırma ayarını kullanarak tablonun tamamını yeniden oluşturur:
ALTER TABLE <table_name> REBUILD PARTITION = ALL WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS(<range>), ... );
Bölümlenmiş dizinler
ALTER INDEX
kullanarak aynı ilkeyi takip eder.Kümelenmiş dizin bırakıldığında, bölümleme düzeni değiştirilmediği sürece ilgili yığın bölümleri veri sıkıştırma ayarlarını korur. Bölümleme düzeni değiştirilirse, tüm bölümler sıkıştırılmamış duruma yeniden oluşturulur. Kümelenmiş dizini bırakmak ve bölümleme düzenini değiştirmek için aşağıdaki adımlar gerekir:
- Kümelenmiş dizini bırakın.
- Sıkıştırma seçeneğini belirten seçeneği kullanarak
ALTER TABLE ... REBUILD
tabloyu değiştirin.
Kümelenmiş dizinlerin
OFFLINE
yalnızca üst düzeyleri kaldırıldığından kümelenmiş dizini bırakmak hızlı bir işlemdir. Kümelenmiş dizin bırakıldığındaONLINE
, SQL Server'ın 1. adım için bir kez ve 2. adım için bir kez olmak üzere yığını iki kez yeniden oluşturması gerekir.
Sıkıştırma çoğaltmayı nasıl etkiler?
Çoğaltma ile veri sıkıştırmayı kullanırken aşağıdaki noktalara dikkat edin:
Anlık Görüntü Aracısı ilk şema betiğini oluşturduğunda, yeni şema hem tablo hem de dizinleri için aynı sıkıştırma ayarlarını kullanır. Yalnızca tabloda sıkıştırma etkinleştirilemez, dizinde ise etkinleştirilmeyebilir.
İşlemsel çoğaltma için makale şeması seçeneği, betik yazılması gereken bağımlı nesne ve özellikleri belirler. Daha fazla bilgi için bkz. sp_addarticle.
Dağıtım Aracısı betikler uyguladığında alt düzey Aboneleri denetlemez. Sıkıştırma replikasyonu seçildiğinde, alt düzey Abonelerde tablo oluşturma işlemi başarısız olur. Karışık topoloji için sıkıştırmanın çoğaltılmasını etkinleştirmeyin.
Birleştirme çoğaltması için yayın uyumluluk düzeyi şema seçeneklerini aşar ve betiklenen şema nesnelerini belirler.
Karma topoloji için, yeni sıkıştırma seçeneklerini desteklemek gerekli değilse yayın uyumluluk düzeyi alt düzey Abone sürümüne ayarlanmalıdır. Gerekirse, oluşturulduktan sonra abone cihazında tabloları sıkıştırın.
Aşağıdaki tabloda, çoğaltma sırasında sıkıştırmayı denetleen çoğaltma ayarları gösterilmektedir.
Kullanıcı amacı | Tablo veya dizin için bölüm düzenini kopyalama | Sıkıştırma ayarlarını kopyala | Betik oluşturma davranışı |
---|---|---|---|
Abonedeki bölümde bölümleme düzenini kopyalamak ve sıkıştırmayı etkinleştirmek. | Doğru | Doğru | Hem bölüm şemasını hem de sıkıştırma ayarlarını yazar. |
Bölüm düzenini çoğaltmak ancak abonedeki verileri sıkıştırmamak için. | Doğru | Yanlış | Bölüm şemasını betikleyerek kaydeder, ancak bölüm için sıkıştırma ayarlarını kaydetmez. |
Bölüm düzenini çoğaltmamak ve abonedeki verileri sıkıştırmamak. | Yanlış | Yanlış | Bölümleme veya sıkıştırma ayarlarını betiklemez. |
Tüm bölümler Publisher'da sıkıştırılmışsa, ancak bölüm düzeni çoğaltılmıyorsa, tabloyu Abonede sıkıştırın. | Yanlış | Doğru | Tüm bölümlerin sıkıştırma için etkinleştirilip etkinleştirilmediğini denetler. Betikler, tablo düzeyinde sıkıştırmayı devre dışı bırakır. |
Diğer SQL Server bileşenleri üzerindeki etkisi
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Sıkıştırma Veritabanı Altyapısı'nda gerçekleşir ve veriler SQL Server'ın diğer bileşenlerinin çoğuna sıkıştırılmamış durumda sunulur. Bu, sıkıştırmanın diğer bileşenler üzerindeki etkilerini aşağıdaki faktörlerle sınırlar:
- Toplu ithalat ve ihracat işlemleri
- Veriler, yerel biçimde bile dışarı aktarıldığında, veriler sıkıştırılmamış satır biçiminde çıkar. Bu, dışarı aktarılan veri dosyasının boyutunun kaynak verilerden önemli ölçüde büyük olmasını sağlayabilir.
- Veriler içeri aktarıldığında, hedef tablo sıkıştırma için etkinleştirildiyse, Veritabanı Altyapısı verileri sıkıştırılmış satır biçimine dönüştürür. Bu, verilerin sıkıştırılmamış bir tabloya içeri aktarıldığı durumla karşılaştırıldığında daha fazla CPU kullanımına neden olabilir.
- Veriler sayfa sıkıştırmalı bir yığına toplu olarak aktarıldığında, toplu içeri aktarma işlemi veriler eklendiğinde sayfa sıkıştırma ile verileri sıkıştırmaya çalışır.
- Sıkıştırma yedeklemeyi ve geri yüklemeyi etkilemez.
- Sıkıştırma, log aktarımını etkilemez.
- Veri sıkıştırma seyrek sütunlarla uyumsuz. Bu nedenle seyrek sütun içeren tablolar sıkıştırılamaz veya sıkıştırılmış tabloya seyrek sütunlar eklenemez.
- Veriler farklı sayıda sayfa ve sayfa başına satır sayısı kullanılarak depolandığından sıkıştırmanın etkinleştirilmesi sorgu planlarının değişmesine neden olabilir.
İlgili içerik
- satır sıkıştırma uygulaması
- sayfa sıkıştırma uygulaması
- Unicode sıkıştırma uygulaması
- BÖLÜM DÜZENİ OLUŞTURMA (Transact-SQL)
- BÖLÜM FONKSİYONU OLUŞTUR (Transact-SQL)
- TABLO OLUŞTUR (Transact-SQL)
- TABLO DEĞİŞTİR (Transact-SQL)
- İNDEKS OLUŞTUR (Transact-SQL)
- ALTER INDEX (Transact-SQL)