sys.dm_exec_query_optimizer_info (T-SQL)
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)
Mengembalikan statistik terperinci tentang operasi pengoptimal kueri SQL Server. Anda dapat menggunakan tampilan ini saat menyetel beban kerja untuk mengidentifikasi masalah atau penyempurnaan pengoptimalan kueri. Misalnya, Anda dapat menggunakan jumlah total pengoptimalan, nilai waktu yang berlalu, dan nilai biaya akhir untuk membandingkan pengoptimalan kueri beban kerja saat ini dan perubahan apa pun yang diamati selama proses penyetelan. Beberapa penghitung menyediakan data yang hanya relevan untuk penggunaan diagnostik internal SQL Server. Penghitung ini ditandai sebagai "Hanya internal."
Catatan
Untuk memanggil ini dari Azure Synapse Analytics atau Analytics Platform System (PDW), gunakan nama sys.dm_pdw_nodes_exec_query_optimizer_info
. Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.
Nama | Jenis data | Deskripsi |
---|---|---|
Counter | nvarchar(4000) | Nama peristiwa statistik pengoptimal. |
kemunculan | bigint | Jumlah kemunculan peristiwa pengoptimalan untuk penghitung ini. |
value | float | Nilai properti rata-rata per kejadian. |
pdw_node_id | int | Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW) Pengidentifikasi untuk simpul tempat distribusi ini aktif. |
Izin
Pada SQL Server dan SQL Managed Instance, memerlukan VIEW SERVER STATE
izin.
Pada tujuan layanan SQL Database Basic, S0, dan S1, dan untuk database di kumpulan elastis, akun admin server, akun admin Microsoft Entra, atau keanggotaan dalam##MS_ServerStateReader##
peran server diperlukan. Pada semua tujuan layanan SQL Database lainnya, izin VIEW DATABASE STATE
pada database, atau keanggotaan dalam ##MS_ServerStateReader##
peran server diperlukan.
Izin untuk SQL Server 2022 dan yang lebih baru
Memerlukan izin TAMPILKAN STATUS PERFORMA SERVER pada server.
Keterangan
sys.dm_exec_query_optimizer_info berisi properti berikut (penghitung). Semua nilai kemunculan bersifat kumulatif dan diatur ke 0 saat sistem dimulai ulang. Semua nilai untuk bidang nilai diatur ke NULL saat menghidupkan ulang sistem. Semua nilai kolom nilai yang menentukan rata-rata menggunakan nilai kemunculan dari baris yang sama dengan denominator dalam perhitungan rata-rata. Semua pengoptimalan kueri diukur ketika SQL Server menentukan perubahan pada dm_exec_query_optimizer_info, termasuk kueri yang dihasilkan pengguna dan sistem. Eksekusi paket yang sudah di-cache tidak mengubah nilai dalam dm_exec_query_optimizer_info, hanya pengoptimalan yang signifikan.
Penghitung | Kemunculan | Value |
---|---|---|
Optimasi | Jumlah total pengoptimalan. | Tidak berlaku |
waktu yang berlalu | Jumlah total pengoptimalan. | Waktu rata-rata yang berlalu per pengoptimalan pernyataan individu (kueri), dalam hitungan detik. |
biaya akhir | Jumlah total pengoptimalan. | Perkiraan biaya rata-rata untuk rencana yang dioptimalkan dalam unit biaya internal. |
rencana sepele | khusus internal | khusus internal |
tugas | khusus internal | khusus internal |
tidak ada rencana | khusus internal | khusus internal |
cari 0 | khusus internal | khusus internal |
cari 0 kali | khusus internal | khusus internal |
cari 0 tugas | khusus internal | khusus internal |
pencarian 1 | khusus internal | khusus internal |
pencarian 1 kali | khusus internal | khusus internal |
cari 1 tugas | khusus internal | khusus internal |
pencarian 2 | khusus internal | khusus internal |
pencarian 2 kali | khusus internal | khusus internal |
cari 2 tugas | khusus internal | khusus internal |
mendapatkan tahap 0 hingga tahap 1 | khusus internal | khusus internal |
mendapatkan tahap 1 hingga tahap 2 | khusus internal | khusus internal |
waktu habis | khusus internal | khusus internal |
batas memori terlampaui | khusus internal | khusus internal |
sisipkan stmt | Jumlah pengoptimalan yang untuk pernyataan INSERT. | Tidak berlaku |
hapus stmt | Jumlah pengoptimalan yang untuk pernyataan DELETE. | Tidak berlaku |
perbarui stmt | Jumlah pengoptimalan yang untuk pernyataan UPDATE. | Tidak berlaku |
berisi subkueri | Jumlah pengoptimalan untuk kueri yang berisi setidaknya satu subkueri. | Tidak berlaku |
unnest gagal | khusus internal | khusus internal |
tabel | Jumlah total pengoptimalan. | Jumlah rata-rata tabel yang dirujuk per kueri yang dioptimalkan. |
petunjuk | Berapa kali beberapa petunjuk ditentukan. Petunjuk yang dihitung meliputi: petunjuk kueri JOIN, GROUP, UNION, dan FORCE ORDER, opsi set FORCE PLAN, dan petunjuk gabungan. | Tidak berlaku |
petunjuk pesanan | Berapa kali petunjuk urutan paksa ditentukan. | Tidak berlaku |
petunjuk gabungan | Berapa kali algoritma gabungan dipaksa oleh petunjuk gabungan. | Tidak berlaku |
lihat referensi | Berapa kali tampilan telah dirujuk dalam kueri. | Tidak berlaku |
kueri jarak jauh | Jumlah pengoptimalan di mana kueri mereferensikan setidaknya satu sumber data jarak jauh, seperti tabel dengan nama empat bagian atau hasil OPENROWSET. | Tidak berlaku |
DOP maksimum | Jumlah total pengoptimalan. | Nilai MAXDOP efektif rata-rata untuk paket yang dioptimalkan. Secara default, MAXDOP yang efektif ditentukan oleh tingkat maksimum opsi konfigurasi server paralelisme , dan dapat ditimpa untuk kueri tertentu dengan nilai petunjuk kueri MAXDOP. |
tingkat rekursi maksimum | Jumlah pengoptimalan di mana tingkat MAXRECURSION yang lebih besar dari 0 telah ditentukan dengan petunjuk kueri. | Tingkat MAXRECURSION rata-rata dalam pengoptimalan di mana tingkat rekursi maksimum ditentukan dengan petunjuk kueri. |
tampilan terindeks dimuat | khusus internal | khusus internal |
tampilan terindeks cocok | Jumlah pengoptimalan di mana satu atau beberapa tampilan terindeks telah dicocokkan. | Jumlah rata-rata tampilan yang cocok. |
tampilan terindeks yang digunakan | Jumlah pengoptimalan di mana satu atau beberapa tampilan terindeks digunakan dalam rencana output setelah dicocokkan. | Jumlah rata-rata tampilan yang digunakan. |
tampilan terindeks diperbarui | Jumlah pengoptimalan pernyataan DML yang menghasilkan rencana yang mempertahankan satu atau beberapa tampilan terindeks. | Jumlah rata-rata tampilan dipertahankan. |
permintaan kursor dinamis | Jumlah pengoptimalan di mana permintaan kursor dinamis telah ditentukan. | Tidak berlaku |
permintaan kursor maju cepat | Jumlah pengoptimalan di mana permintaan kursor maju cepat telah ditentukan. | Tidak berlaku |
gabungkan stmt | Jumlah pengoptimalan yang untuk pernyataan MERGE. | Tidak berlaku |
Contoh
J. Melihat statistik pada eksekusi pengoptimal
Apa statistik eksekusi pengoptimal saat ini untuk instans SQL Server ini?
SELECT * FROM sys.dm_exec_query_optimizer_info;
B. Melihat jumlah total pengoptimalan
Berapa banyak pengoptimalan yang dilakukan?
SELECT occurrence AS Optimizations FROM sys.dm_exec_query_optimizer_info
WHERE counter = 'optimizations';
C. Waktu rata-rata yang berlalu per pengoptimalan
Berapa rata-rata waktu yang berlalu per pengoptimalan?
SELECT ISNULL(value,0.0) AS ElapsedTimePerOptimization
FROM sys.dm_exec_query_optimizer_info WHERE counter = 'elapsed time';
D. Pecahan pengoptimalan yang melibatkan subkueri
Pecahan kueri yang dioptimalkan apa yang berisi subkueri?
SELECT (SELECT CAST (occurrence AS float) FROM sys.dm_exec_query_optimizer_info WHERE counter = 'contains subquery') /
(SELECT CAST (occurrence AS float)
FROM sys.dm_exec_query_optimizer_info WHERE counter = 'optimizations')
AS ContainsSubqueryFraction;
Lihat Juga
Tampilan dan Fungsi Manajemen Dinamis (Transact-SQL)
Tampilan dan Fungsi Manajemen Dinamis Terkait Eksekusi (Transact-SQL)
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