Statistik dalam pergudangan data Fabric
Berlaku untuk:✅ Titik akhir analitik SQL dan Gudang di Microsoft Fabric
Gudang di Microsoft Fabric menggunakan mesin kueri untuk membuat rencana eksekusi untuk kueri SQL tertentu. Saat Anda mengirimkan kueri, pengoptimal kueri mencoba menghitung semua rencana yang mungkin dan memilih kandidat yang paling efisien. Untuk menentukan rencana mana yang akan memerlukan overhead paling sedikit (I/O, CPU, memori), mesin harus dapat mengevaluasi jumlah pekerjaan atau baris yang mungkin diproses di setiap operator. Kemudian, berdasarkan biaya setiap paket, paket memilih yang memiliki perkiraan pekerjaan paling sedikit. Statistik adalah objek yang berisi informasi relevan tentang data Anda, untuk memungkinkan pengoptimal kueri memperkirakan biaya ini.
Cara menggunakan statistik
Untuk mencapai performa kueri yang optimal, penting untuk memiliki statistik yang akurat. Microsoft Fabric saat ini mendukung jalur berikut untuk memberikan statistik yang relevan dan terbaru:
- Statistik yang ditentukan pengguna
- Pengguna secara manual menggunakan sintaks bahasa definisi data (DDL) untuk membuat, memperbarui, dan menghilangkan statistik sesuai kebutuhan
- Statistik otomatis
- Mesin secara otomatis membuat dan memelihara statistik pada waktu kueri
Statistik manual untuk semua tabel
Opsi tradisional untuk mempertahankan kesehatan statistik tersedia di Microsoft Fabric. Pengguna dapat membuat, memperbarui, dan menghilangkan statistik kolom tunggal berbasis histogram dengan STATISTIK CREATE, UPDATE STATISTICS, dan DROP STATISTICS. Pengguna juga dapat melihat konten statistik kolom tunggal berbasis histogram dengan DBCC SHOW_STATISTICS. Saat ini, versi terbatas dari pernyataan ini didukung.
- Jika membuat statistik secara manual, pertimbangkan untuk berfokus pada kolom yang banyak digunakan dalam beban kerja kueri Anda (khususnya di GROUP BYs, ORDER BYs, filter, dan JOIN).
- Pertimbangkan untuk memperbarui statistik tingkat kolom secara teratur setelah perubahan data yang secara signifikan mengubah rowcount atau distribusi data.
Contoh pemeliharaan statistik manual
Untuk membuat statistik pada dbo.DimCustomer
tabel, berdasarkan semua baris dalam kolom CustomerKey
:
CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;
Untuk memperbarui objek DimCustomer_CustomerKey_FullScan
statistik secara manual , mungkin setelah pembaruan data besar:
UPDATE STATISTICS dbo.DimCustomer (DimCustomer_CustomerKey_FullScan) WITH FULLSCAN;
Untuk menampilkan informasi tentang objek statistik:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");
Untuk memperlihatkan hanya informasi tentang histogram objek statistik:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;
Untuk menghilangkan objek DimCustomer_CustomerKey_FullScan
statistik secara manual :
DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;
Objek T-SQL berikut juga dapat digunakan untuk memeriksa statistik yang dibuat dan dibuat secara manual di Microsoft Fabric:
- tampilan katalog sys.stats
- tampilan katalog sys.stats_columns
- STATS_DATE fungsi sistem
Statistik otomatis saat kueri
Setiap kali Anda mengeluarkan pengoptimal kueri dan pengoptimal kueri memerlukan statistik untuk eksplorasi rencana, Microsoft Fabric secara otomatis membuat statistik tersebut jika belum ada. Setelah statistik dibuat, pengoptimal kueri dapat menggunakannya dalam memperkirakan biaya rencana kueri pemicu. Selain itu, jika mesin kueri menentukan bahwa statistik yang ada relevan dengan kueri tidak lagi secara akurat mencerminkan data, statistik tersebut secara otomatis disegarkan. Karena operasi otomatis ini dilakukan secara sinkron, Anda dapat mengharapkan durasi kueri untuk menyertakan kali ini jika statistik yang diperlukan belum ada atau perubahan data yang signifikan telah terjadi sejak refresh statistik terakhir.
Memverifikasi statistik otomatis pada waktu kueri
Ada berbagai kasus di mana Anda dapat mengharapkan beberapa jenis statistik otomatis. Yang paling umum adalah statistik berbasis histogram, yang diminta oleh pengoptimal kueri untuk kolom yang direferensikan dalam GROUP BYs, JOIN, klausa DISTINCT, filter (klausa WHERE), dan ORDER BYs. Misalnya, jika Anda ingin melihat pembuatan otomatis statistik ini, kueri akan memicu pembuatan jika statistik belum COLUMN_NAME
ada. Contohnya:
SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;
Dalam hal ini, Anda harus mengharapkan bahwa statistik COLUMN_NAME
telah dibuat. Jika kolom juga merupakan kolom varchar, Anda juga akan melihat statistik panjang kolom rata-rata yang dibuat. Jika Anda ingin memvalidasi statistik dibuat secara otomatis, Anda bisa menjalankan kueri berikut:
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
LEFT JOIN sys.stats_columns AS sc
ON s.object_id = sc.object_id
AND s.stats_id = sc.stats_id
LEFT 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;
Sekarang, Anda dapat menemukan statistics_name
statistik histogram yang dihasilkan secara otomatis (harus seperti _WA_Sys_00000007_3B75D760
) dan menjalankan T-SQL berikut:
DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');
Contohnya:
DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');
Nilai Updated
dalam kumpulan hasil SHOW_STATISTICS DBCC harus berupa tanggal (dalam UTC) yang mirip dengan saat Anda menjalankan kueri GROUP BY asli.
Statistik yang dihasilkan secara otomatis ini kemudian dapat dimanfaatkan dalam kueri berikutnya oleh mesin kueri untuk meningkatkan biaya rencana dan efisiensi eksekusi. Jika terjadi perubahan yang cukup dalam tabel, mesin kueri juga akan menyegarkan statistik tersebut untuk meningkatkan pengoptimalan kueri. Latihan sampel sebelumnya yang sama dapat diterapkan setelah mengubah tabel secara signifikan. Dalam Fabric, mesin kueri SQL menggunakan ambang kompilasi ulang yang sama dengan SQL Server 2016 (13.x) untuk menyegarkan statistik.
Jenis statistik yang dihasilkan secara otomatis
Di Microsoft Fabric, ada beberapa jenis statistik yang secara otomatis dihasilkan oleh mesin untuk meningkatkan rencana kueri. Saat ini, mereka dapat ditemukan di sys.stats meskipun tidak semua dapat ditindakkan:
- Statistik histogram
- Dibuat per kolom yang memerlukan statistik histogram pada waktu kueri
- Objek-objek ini berisi histogram dan informasi kepadatan mengenai distribusi kolom tertentu. Mirip dengan statistik yang dibuat secara otomatis pada querytime di kumpulan khusus Azure Synapse Analytics.
- Nama dimulai dengan
_WA_Sys_
. - Konten dapat dilihat dengan DBCC SHOW_STATISTICS
- Statistik panjang kolom rata-rata
- Dibuat untuk kolom karakter variabel (varchar) yang lebih besar dari 100 membutuhkan panjang kolom rata-rata pada waktu kueri.
- Objek ini berisi nilai yang mewakili ukuran baris rata-rata kolom varchar pada saat pembuatan statistik.
- Nama dimulai dengan
ACE-AverageColumnLength_
. - Isi tidak dapat dilihat dan dapat diganggu oleh pengguna.
- Statistik kardinalitas berbasis tabel
- Dibuat per tabel yang membutuhkan estimasi kardinalitas pada waktu kueri.
- Objek ini berisi perkiraan rowcount tabel.
- Bernama
ACE-Cardinality
. - Isi tidak dapat dilihat dan dapat diganggu oleh pengguna.
Batasan
- Hanya statistik histogram kolom tunggal yang dapat dibuat dan dimodifikasi secara manual.
- Pembuatan statistik multi-kolom tidak didukung.
- Objek statistik lainnya mungkin muncul di sys.stats, selain statistik yang dibuat secara manual dan statistik yang dibuat secara otomatis. Objek ini tidak digunakan untuk pengoptimalan kueri.