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 memanfaatkan 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
- DDL masalah pengguna 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 mereka 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 akan 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 akan disegarkan secara otomatis. 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
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;
Kueri ini hanya mencari statistik berbasis kolom. Jika Anda ingin melihat semua statistik yang ada untuk tabel ini, hapus JOIN pada sys.stats_columns
dan sys.columns
.
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.
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk