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ı
İstenen nesnenin mevcut boyutunu döndürür ve istenen sıkıştırma durumu için nesne boyutunu tahmin eder. Sıkıştırma, tüm tablolar veya tablo parçaları için değerlendirilebilir. Buna heaps, kümelenmiş indeksler, kümelenmiş indeksler, sütun deposu indeksleri, indekslenmiş görünümler ve tablo ile indeks bölümleri dahildir. Nesneler, satır, sayfa, columnstore veya columnstore arşiv sıkıştırmasıyla sıkıştırılabilir. Tablo, indeks veya bölüm zaten sıkıştırılmışsa, bu prosedürü kullanarak tablo, indeks veya bölme yeniden sıkıştırılırsa veya sıkıştırılmadan saklanırsa boyutunu tahmin edebilirsiniz.
Sistem sys.sp_estimate_data_compression_savings depolanmış prosedür Azure SQL Database ve Azure SQL Managed Instance içinde mevcuttur.
SQL Server 2022 (16.x) ile itibaren, xml veri tipini kullanarak satır dışı XML verilerini sütunlar halinde sıkıştırarak depolama ve bellek gereksinimlerini azaltabilirsiniz. Daha fazla bilgi için bkz. CREATE TABLE sp_estimate_data_compression_savings XML sıkıştırma tahminlerini destekler.
Uyarı
Sıkıştırma ve sp_estimate_data_compression_savings SQL Server'ın her sürümünde bulunmuyor. SQL Server sürümleri tarafından desteklenen özelliklerin listesi için bkz. Sürümleri ve SQL Server 2022'nin desteklenen özellikleri.
İstenen sıkıştırma ayarı kullanılırsa nesnenin boyutunu tahmin etmek için, bu saklanan prosedür kaynak nesneyi örnekler ve bu verileri oluşturulan tempdbeşdeğer bir tablo ve indekse yükler. Oluşturulan tempdb tablo veya indeks daha sonra istenen ayara sıkıştırılır ve tahmini sıkıştırma tasarrufu hesaplanır.
Bir tablo, indeks veya bölümün sıkıştırma durumunu değiştirmek için ALTER TABLE veya ALTER INDEX ifadelerini kullanın. Sıkıştırma hakkında genel bilgi için bkz. Veri sıkıştırma.
Uyarı
Mevcut veri parçalanmışsa, dizini yeniden oluşturarak sıkıştırma kullanmadan boyutunu küçültebilirsiniz. İndeksler için, doldurma faktörü bir indeks yeniden yapısı sırasında uygulanır. Bu, endeksin boyutunu artırabilir.
Transact-SQL söz dizimi kuralları
Sözdizimi
sp_estimate_data_compression_savings
[ @schema_name = ] N'schema_name'
, [ @object_name = ] N'object_name'
, [ @index_id = ] index_id
, [ @partition_number = ] partition_number
, [ @data_compression = ] N'data_compression'
[ , [ @xml_compression = ] xml_compression ]
[ ; ]
Arguments
[ @schema_name = ] N'schema_name'
Tabloyu veya indekslenmiş görünümü içeren veritabanı şemasının adı.
@schema_namesysname'dir, varsayılan yoktur.
Eğer @schema_nameNULLise, mevcut kullanıcının varsayılan şeması kullanılır.
[ @object_name = ] N'object_name'
Indeksin olduğu tablonun veya indeksli görünümün adı. @object_namesysname'dir, varsayılan yoktur.
[ @index_id = ] index_id
Dizinin kimliği. @index_idint'dir ve aşağıdaki değerlerden biri olabilir:
- bir indeksin ID numarası
NULL-
0eğer object_id bir yığın ise
Bir temel tablo veya görünüm için tüm indeksler için bilgi döndürmek için NULL. Eğer belirtirsenizNULL, NULL için de belirtmeniz gerekir.
[ @partition_number = ] partition_number
Nesnedeki bölüm numarası. @partition_numberint'tir ve aşağıdaki değerlerden biri olabilir:
- bir indeks veya yığının bölüm numarası
NULL-
1bölünmemiş bir indeks veya yığın için
Bölümü belirtmek için $PARTITION fonksiyonunu da belirtebilirsiniz. Sahip nesnenin tüm bölümleri için bilgi döndürmek için NULL.
[ @data_compression = ] N'data_compression'
Değerlendirilecek sıkıştırma türünü belirtir. @data_compressionnvarchar(60)'dır ve aşağıdaki değerlerden biri olabilir:
NONEROWPAGECOLUMNSTORECOLUMNSTORE_ARCHIVE
SQL Server 2022 (16.x) ve sonraki sürümler NULL için de olası bir değer vardır.
@data_compressionNULLise olamazNULL.
[ @xml_compression = ] xml_compression
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği
XML sıkıştırma için tasarrufun hesaplanıp hesaplanmayacağını belirtir. @xml_compressionbittir ve aşağıdaki değerlerden biri olabilir:
-
NULL(varsayılan) 01
@xml_compressionNULLise olamazNULL.
Dönüş kodu değerleri
0 (başarı) veya 1 (başarısızlık).
Sonuç kümesi
Aşağıdaki sonuç kümesi, tablo, indeks veya bölüm için güncel ve tahmini boyut sağlamak üzere geri getirilir.
| Sütun adı | Veri türü | Description |
|---|---|---|
object_name |
sysname | Tablonun adı veya indekslenmiş görünüm. |
schema_name |
sysname | Tablonun şeması veya indeksli görünüm. |
index_id |
int | Bir indeksin Indeks Kimliği:0 = Yığın1 = Kümelenmiş indeks>1 = Kümelenmemiş indeks |
partition_number |
int | Bölüm numarası. Bölünmemiş bir tablo veya indeks için dönüşler 1 . |
size_with_current_compression_setting (KB) |
bigint | İstenen tablo, indeks veya bölümün mevcut boyutu. |
size_with_requested_compression_setting (KB) |
bigint | İstenen sıkıştırma ayarını kullanan tablo, indeks veya bölümün tahmini boyutu; ve varsayarsa, mevcut dolgu faktörünü ve parçalanma olmadığını varsayarsak. |
sample_size_with_current_compression_setting (KB) |
bigint | Mevcut sıkıştırma ayarıyla numunenin boyutu. Bu boyut herhangi bir parçalanmayı da kapsar. |
sample_size_with_requested_compression_setting (KB) |
bigint | İstenen sıkıştırma ayarı kullanılarak oluşturulan örneklemin boyutu; ve varsa, mevcut dolgu faktörü ve parçalanma yok. |
Açıklamalar
Bir tablo veya bölüm etkinleştirdiğinizde satır, sayfa, columnstore, columnstore arşivi veya XML sıkıştırması için tasarruf yapabileceğiniz tasarrufları tahmin etmek için kullanın sp_estimate_data_compression_savings . Örneğin, sıranın ortalama boyutu %40 küçültülebilirse, nesnenin boyutunu da %40 küçültebilirsiniz. Yer tasarrufu almayabilirsiniz çünkü bu dolgu faktörüne ve sıranın büyüklüğüne bağlıdır. Örneğin, 8.000 bayt uzunluğunda bir satırınız varsa ve boyutunu %40 azaltıyorsanız, bir veri sayfasına sadece bir satır sığdırabilirsiniz. Birikim yok.
Sıkıştırılmamış bir tablo veya indeks üzerinde çalışmanın sp_estimate_data_compression_savings sonuçları boyutun artacağını gösteriyorsa, bu birçok satırın veri tiplerinin neredeyse tüm hassasiyetini kullandığı ve sıkıştırılmış format için gereken küçük ek yükün eklenmesi, sıkıştırmadan elde edilen tasarruftan daha fazla olduğu anlamına gelir. Bu nadir durumda, sıkıştırmayı etkinleştirmeyin.
Bir tablo zaten sıkıştırma için etkinleştirilmişse, tablo sıkıştırılmamışsa sıranın ortalama boyutunu tahmin etmek için kullanılabilir sp_estimate_data_compression_savings .
Bu işlem sırasında masada bir niyet paylaşımlı (IS) kilidi elde edilir. Eğer IS kilidi alınamazsa, işlem engellenir. Tablo, varsayılan okuma taahhüdü izolasyon seviyesi altında taranır.
İstenen sıkıştırma ayarı mevcut sıkıştırma ayarı ile aynıysa, saklanan prosedür kaynak nesnedeki mevcut indeksler için doldurma faktörü kullanılarak veri parçalanması olmadan tahmini boyutu döndürür.
İndeks veya bölüm kimliği yoksa, sonuç döndürülmez.
Permissions
Tablo SELECT ve VIEW DATABASE STATE tabloyu içeren veritabanı üzerinde ve üzerinde VIEW DEFINITIONizin gerektirirtempdb.
Sınırlamalar
SQL Server 2017 (14.x) ve daha önceki sürümlerde bu prosedür columnstore indeksleri için geçerli değildi ve bu nedenle veri sıkıştırma parametrelerini COLUMNSTORE ve COLUMNSTORE_ARCHIVE. SQL Server 2019 (15.x) ve sonraki sürümlerde, ayrıca Azure SQL Database ve Azure SQL Managed Instance'da, columnstore indeksleri hem tahmin için kaynak nesne olarak hem de istenen sıkıştırma türü olarak kullanılabilir.
Memory-Optimized TempDB Metaveri etkinleştirildiğinde, geçici tablolarda columnstore indeksleri oluşturulması desteklenmez. Bu sınırlama nedeniyle, sp_estimate_data_compression_savingsCOLUMNSTORECOLUMNSTORE_ARCHIVE TempDB Meta Verisi etkinleştirildiğinde ve veri sıkıştırma parametreleriyle desteklenmemektedirMemory-Optimized.
Columnstore indeksleri için dikkate alınanlar
SQL Server 2019 (15.x) ile başlayarak, Azure SQL Database ve Azure SQL Managed Instance ile hem sp_estimate_compression_savings columnstore arşiv sıkıştırmalarının tahmin edilmesini destekler. Sayfa ve satır sıkıştırmanın aksine, bir nesneye columnstore sıkıştırmasının uygulanması yeni bir columnstore indeksi oluşturulmasını gerektirir. Bu nedenle, bu prosedürün ve COLUMNSTORE seçenekleri kullanılırkenCOLUMNSTORE_ARCHIVE, prosedüre sağlanan kaynak nesnenin türü, sıkıştırılmış boyut tahmini için kullanılan columnstore indeksi türünü belirler. Aşağıdaki tablo, @data_compression parametresi ya veya COLUMNSTOREolarak ayarlandığındaCOLUMNSTORE_ARCHIVE, her kaynak nesne türü için sıkıştırma tasarrufunu tahmin etmek için kullanılan referans nesneleri gösterilmektedir.
| Kaynak nesne | Referans nesne |
|---|---|
| **Yığın | Kümelenmiş sütun deposu dizini |
| Kümelenmiş | Kümelenmiş sütun deposu dizini |
| Kümelenmemiş indeks | Kümelenmiş olmayan columnstore indeksi (sağlanan kümelenmiş olmayan indeksin anahtar sütunları ve dahil edilen sütunları ile varsa tablonun bölüm sütunu dahil) |
| Kümelenmemiş columnstore indeksi | Kümelenmiş olmayan columnstore indeksi (sunulan kümelenmiş olmayan columnstore indeksiyle aynı sütunlar dahil) |
| Kümelenmiş sütun deposu dizini | Kümelenmiş sütun deposu dizini |
Uyarı
Columnstore sıkıştırmasını bir sıra deposu kaynak nesnesinden (kümelenmiş indeks, kümelenmiş olmayan indeks veya yığın) tahmin ederken, kaynak nesnede columnstore indeksinde desteklenmeyen veri tipine sahip sütun varsa, sp_estimate_compression_savings hata ile başarısız olur.
Benzer şekilde, @data_compression parametresi , NONE, veya ROW olarak ayarlandığında PAGEve kaynak nesne bir columnstore indeksi olduğunda, aşağıdaki tablo kullanılan referans nesneleri özetler.
| Kaynak nesne | Referans nesne |
|---|---|
| Kümelenmiş sütun deposu dizini | Yığın |
| Kümelenmemiş columnstore indeksi | Kümelenmemiş indeks (kümelenmiş olmayan columnstore indeksindeki sütunlar anahtar sütunlar olarak ve varsa tablonun bölüm sütunu dahil edilen sütun olarak dahil) |
Uyarı
Columnstore kaynak nesnesinden sıralı mağaza sıkıştırmasını (NONE, ROW veya PAGE) tahmin ederken, kaynak indeksin 32'den fazla anahtar sütun içermediğinden emin olun; çünkü bu, bir sıralı depo (kümelenmemiş) indekste desteklenen sınırdır.
Örnekler
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
A. ROW sıkıştırmasıyla tahmini tasarruf
Aşağıdaki örnek, sıkıştırma kullanılarak sıkıştırıldığında tablonun Production.WorkOrderRoutingROW boyutunu tahmin eder.
EXECUTE sys.sp_estimate_data_compression_savings 'Production', 'WorkOrderRouting', NULL, NULL, 'ROW';
GO
B. PAGE ve XML sıkıştırma ile tahmini tasarruf
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri
Aşağıdaki örnek, sıkıştırma kullanılarak sıkıştırıldığında tablonun Production.ProductModelPAGE tahmin eder ve @xml_compression değeri etkinleştirilir.
EXECUTE sys.sp_estimate_data_compression_savings 'Production', 'ProductModel', NULL, NULL, 'PAGE', 1;
GO