Doku veri ambarında istatistikler

Şunlar için geçerlidir: Microsoft Fabric'te SQL 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 olası tüm planları listelemeye ve en verimli adayı seçmeye çalışır. Hangi planın en az ek yük (G/Ç ve bellek) gerektireceğ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 göre 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.

Önemli

Microsoft Fabric şu anda ÖNİzLEME aşamasındadır. Bu bilgiler, yayımlanmadan önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Microsoft, burada sağlanan bilgilerle ilgili olarak açık veya zımni hiçbir garanti vermez.

İ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

İstatistiklerin durumunu korumanın geleneksel 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 ayrıca DBCC SHOW_STATISTICS 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 GROUP BY'ler, ORDER BY'ler, filtreler ve JOIN'lerde) yoğun olarak kullanılanlara odaklanmayı göz önünde bulundurun.
  • Verilerin satır sayısını veya 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 DimCustomer_CustomerKey_FullScan (CustomerKey) 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:

Sorguda otomatik istatistikler

Bir sorgu yayımladığınızda ve sorgu iyileştiricisi plan araştırması için istatistikler gerektirdiğinde, Microsoft Fabric henüz yoksa bu istatistikleri otomatik olarak oluşturur. İstatistikler oluşturulduktan sonra, sorgu iyileştirici bunları tetikleyen sorgunun plan maliyetlerini tahmin etmek için kullanabilir. Bu oluşturma zaman uyumlu olarak yapıldığından, ilk sorgu çalıştırmasının bu istatistik oluşturma zamanını içermesini bekleyebilirsiniz.

Sorgu zamanında otomatik istatistik oluşturmayı doğrulamak için

Bir tür istatistiğin otomatik olarak oluşturulmasını bekleyebileceğiniz çeşitli durumlar vardır. En yaygın olanı, genellikle GRUP BY'leri, JOIN'ler, DISTINCT yan tümceleri, filtreler (WHERE yan tümceleri) ve ORDER BY'lerinde başvurulan sütunlar için oluşturulan histogram tabanlı sistem istatistikleridir. Örneğin, bu istatistiklerin otomatik olarak oluşturulmasını görmek istiyorsanız, istatistikleri henüz yoksa COLUMN_NAME 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, oluşturulan ortalama sütun uzunluğu istatistiklerini de 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 mevcut olan tüm istatistikleri görmek isterseniz ve sys.columnsüzerindeki sys.stats_columns JOIN'leri kaldırın.

Artık 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');

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

Not

Microsoft Fabric şu anda sorgu zamanında istatistiklerin otomatik olarak güncelleştirilmesi için destek sağlamamaktadır.

Otomatik olarak oluşturulan istatistiklerin 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 bulunabilir:

  • Histogram istatistikleri
    • Sorgu zamanında histogram istatistiklerine ihtiyaç duyan sütun başına oluşturuldu
    • 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 karakter sütunları (char ve 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ıyla ilgili bir tahmin içerir.
    • adlı 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.
  • İstatistikler (herhangi bir türde) şu anda varchar(max) için desteklenmemektedir.
  • Diğer istatistik nesneleri, el ile oluşturulan istatistiklerin ve otomatik olarak oluşturulan istatistiklerin dışında sys.stats altında görüntülenebilir. Bu nesneler sorgu iyileştirme için kullanılmaz.

Sonraki adımlar