Doku veri ambarı istatistikleri

Şunlar için geçerlidir: Microsoft Fabric'te SQL analiz uç noktası ve Ambarı

Microsoft Fabric'teki Ambar, belirli bir SQL sorgusu için yürütme planı oluşturmak üzere bir sorgu altyapısı kullanır. Bir sorgu gönderdiğinizde, sorgu iyileştirici tüm olası planları listelemeye ve en verimli adayı seçmeye çalışır. Hangi planın en az ek yük (G/Ç, CPU, bellek) gerektirdiğini belirlemek için altyapının her işleçte işleçte işlenebilen iş veya satır miktarını değerlendirebilmesi gerekir. Ardından, her planın maliyetine bağlı olarak en az tahmini çalışma miktarına sahip olanı seçer. İstatistikler, sorgu iyileştiricinin bu maliyetleri tahmin etmesine olanak sağlamak için verilerinizle ilgili bilgiler içeren nesnelerdir.

İstatistiklerden yararlanma

En iyi sorgu performansını elde etmek için doğru istatistiklere sahip olmak önemlidir. Microsoft Fabric şu anda ilgili ve güncel istatistikler sağlamak için aşağıdaki yolları desteklemektedir:

Tüm tablolar için el ile istatistikler

geleneksel istatistik durumunu koruma seçeneği Microsoft Fabric'te kullanılabilir. Kullanıcılar sırasıyla CREATE STATISTICS, UPDATE STATISTICS ve DROP STATISTICS ile histogram tabanlı tek sütunlu istatistikler oluşturabilir, güncelleştirebilir ve bırakabilir. Kullanıcılar, DBCC SHOW_STATISTICS ile histogram tabanlı tek sütunlu istatistiklerin içeriğini de görüntüleyebilir. Şu anda bu deyimlerin sınırlı bir sürümü desteklenmektedir.

  • İstatistikleri el ile oluşturuyorsanız, sorgu iş yükünüzde (özellikle GRUP BY'leri, ORDER BY'ler, filtreler ve JOIN'lerde) yoğun olarak kullanılanlara odaklanmayı göz önünde bulundurun.
  • Satır sayısını veya verilerin dağılımını önemli ölçüde değiştiren veri değişikliklerinden sonra sütun düzeyi istatistikleri düzenli olarak güncelleştirmeyi göz önünde bulundurun.

El ile istatistik bakımı örnekleri

Bir sütundaki dbo.DimCustomerCustomerKeytüm satırları temel alarak tabloda istatistikler oluşturmak için:

CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;

İstatistik nesnesini DimCustomer_CustomerKey_FullScanel ile güncelleştirmek için, büyük bir veri güncelleştirmesinin ardından olabilir:

UPDATE STATISTICS dbo.DimCustomer (DimCustomer_CustomerKey_FullScan) WITH FULLSCAN;  

İstatistik nesnesi hakkındaki bilgileri göstermek için:

DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");

yalnızca istatistik nesnesinin histogramı hakkındaki bilgileri göstermek için:

DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;

İstatistik nesnesini DimCustomer_CustomerKey_FullScanel ile bırakmak için:

DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;

Microsoft Fabric'te el ile oluşturulan ve otomatik olarak oluşturulan istatistikleri denetlemek için aşağıdaki T-SQL nesneleri de kullanılabilir:

  • sys.stats katalog görünümü
  • katalog görünümünü sys.stats_columns
  • STATS_DATE sistem işlevi

Sorguda otomatik istatistikler

Bir sorgu yayımladığınızda ve sorgu iyileştiricisi plan keşfi için istatistikler gerektirdiğinde, Microsoft Fabric henüz yoksa bu istatistikleri otomatik olarak oluşturur. İstatistikler oluşturulduktan sonra, sorgu iyileştirici bunları tetikleyici sorgunun plan maliyetlerini tahmin etmek için kullanabilir. Ayrıca, sorgu altyapısı sorguyla ilgili mevcut istatistiklerin artık verileri doğru yansıtmadığını belirlerse, bu istatistikler otomatik olarak yenilenir. Bu otomatik işlemler zaman uyumlu olarak yapıldığından, gerekli istatistikler henüz mevcut değilse veya son istatistik yenileme işleminden bu yana önemli veri değişiklikleri olduysa sorgu süresinin bu süreyi içermesini bekleyebilirsiniz.

Sorgu zamanında otomatik istatistikleri doğrulamak için

Bir tür otomatik istatistik bekleyebileceğiniz çeşitli durumlar vardır. En yaygın olanı, GRUP BY'leri, JOIN'ler, DISTINCT yan tümceleri, filtreler (WHERE yan tümceleri) ve ORDER BY'lerinde başvurulan sütunlar için sorgu iyileştiricisi tarafından istenen histogram tabanlı istatistiklerdir. Örneğin, bu istatistiklerin otomatik olarak oluşturulmasını görmek istiyorsanız, istatistikleri COLUMN_NAME henüz yoksa bir sorgu oluşturma işlemini tetikler. Örneğin:

SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;

Bu durumda, istatistiklerinin COLUMN_NAME oluşturulmasını beklemelisiniz. Sütun aynı zamanda bir varchar sütunuysa, ortalama sütun uzunluğu istatistiklerinin de oluşturulduğunu görürsünüz. İstatistiklerin otomatik olarak oluşturulduğunu doğrulamak isterseniz aşağıdaki sorguyu çalıştırabilirsiniz:

select
    object_name(s.object_id) AS [object_name],
    c.name AS [column_name],
    s.name AS [stats_name],
    s.stats_id,
    STATS_DATE(s.object_id, s.stats_id) AS [stats_update_date], 
    s.auto_created,
    s.user_created,
    s.stats_generation_method_desc 
FROM sys.stats AS s 
INNER JOIN sys.objects AS o 
ON o.object_id = s.object_id 
INNER JOIN sys.stats_columns AS sc 
ON s.object_id = sc.object_id 
AND s.stats_id = sc.stats_id 
INNER JOIN sys.columns AS c 
ON sc.object_id = c.object_id 
AND c.column_id = sc.column_id
WHERE o.type = 'U' -- Only check for stats on user-tables
    AND s.auto_created = 1
    AND o.name = '<YOUR_TABLE_NAME>'
ORDER BY object_name, column_name;

Bu sorgu yalnızca sütun tabanlı istatistikleri arar. Bu tablo için var olan tüm istatistikleri görmek isterseniz ve sys.columnsüzerindeki sys.stats_columns JOIN'leri kaldırın.

Şimdi otomatik olarak oluşturulan histogram istatistiğini (gibi _WA_Sys_00000007_3B75D760olmalıdır) bulabilir statistics_name ve aşağıdaki T-SQL'i çalıştırabilirsiniz:

DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');

Örneğin:

DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');

Updated DBCC SHOW_STATISTICS sonuç kümesindeki değer, özgün GROUP BY sorgusunu çalıştırdığınıza benzer bir tarih (UTC olarak) olmalıdır.

Bu otomatik olarak oluşturulan istatistikler daha sonra plan maliyeti ve yürütme verimliliğini artırmak için sorgu altyapısı tarafından sonraki sorgularda kullanılabilir. Tabloda yeterli değişiklik olursa, sorgu altyapısı sorgu iyileştirmeyi geliştirmek için bu istatistikleri de yeniler. Tabloyu önemli ölçüde değiştirdikten sonra önceki örnek alıştırmanın aynısı uygulanabilir. Doku'da SQL sorgu altyapısı, istatistikleri yenilemek için SQL Server 2016 (13.x) ile aynı yeniden derleme eşiğini kullanır.

Otomatik olarak oluşturulan istatistik türleri

Microsoft Fabric'te, sorgu planlarını geliştirmek için altyapı tarafından otomatik olarak oluşturulan birden çok istatistik türü vardır. Şu anda, hepsi eyleme dönüştürülebilir olmasa da sys.stats içinde bulunabilirler:

  • Histogram istatistikleri
    • Sorgu zamanında histogram istatistiklerine ihtiyaç duyan sütun başına oluşturulur
    • Bu nesneler, belirli bir sütunun dağılımıyla ilgili histogram ve yoğunluk bilgilerini içerir. Azure Synapse Analytics ayrılmış havuzlarında sorgu zamanında otomatik olarak oluşturulan istatistiklere benzer.
    • Ad ile _WA_Sys_başlar.
    • İçerikler DBCC SHOW_STATISTICS ile görüntülenebilir
  • Ortalama sütun uzunluğu istatistikleri
    • Sorgu zamanında ortalama sütun uzunluğuna ihtiyaç duyan 100'den büyük değişken karakter sütunları (varchar) için oluşturuldu.
    • Bu nesneler, istatistik oluşturma sırasında varchar sütununun ortalama satır boyutunu temsil eden bir değer içerir.
    • Ad ile ACE-AverageColumnLength_başlar.
    • İçerikler görüntülenemez ve kullanıcı tarafından kullanılamaz.
  • Tablo tabanlı kardinalite istatistikleri
    • Sorgu zamanında kardinalite tahmini gereken tablo başına oluşturulur.
    • Bu nesneler bir tablonun satır sayısını tahmin eder.
    • olarak adlandırılır ACE-Cardinality.
    • İçerikler görüntülenemez ve kullanıcı tarafından kullanılamaz.

Sınırlamalar

  • Yalnızca tek sütunlu histogram istatistikleri el ile oluşturulabilir ve değiştirilebilir.
  • Çok sütunlu istatistikler oluşturma desteklenmez.
  • El ile oluşturulan istatistikler ve otomatik olarak oluşturulan istatistikler dışında diğer istatistik nesneleri sys.stats içinde görünebilir. Bu nesneler sorgu iyileştirme için kullanılmaz.