Cara Penyimpanan Kueri mengumpulkan data

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Penyimpanan Kueri SQL Server berfungsi seperti perekam data penerbangan, terus mengumpulkan informasi kompilasi dan runtime yang terkait dengan kueri dan paket. Data terkait kueri dipertahankan dalam tabel internal dan disajikan kepada pengguna melalui serangkaian tampilan.

Tampilan

Diagram berikut menunjukkan tampilan Penyimpanan Kueri dan hubungan logisnya, dengan informasi waktu kompilasi yang disajikan sebagai entitas biru:

Query Store process views
Lihat deskripsi

Tampilan Deskripsi
sys.query_store_query_text Menyajikan teks kueri unik yang dijalankan terhadap database. Komentar dan spasi sebelum dan sesudah teks kueri diabaikan. Komentar dan spasi di dalam teks tidak diabaikan. Setiap pernyataan dalam batch menghasilkan entri teks kueri terpisah.
sys.query_context_settings Menyajikan kombinasi unik pengaturan yang memengaruhi rencana di mana kueri dijalankan. Teks kueri yang sama yang dijalankan dengan pengaturan yang memengaruhi rencana yang berbeda menghasilkan entri kueri terpisah di Penyimpanan Kueri karena context_settings_id merupakan bagian dari kunci kueri.
sys.query_store_query Entri kueri yang dilacak dan dipaksa secara terpisah di Penyimpanan Kueri. Satu teks kueri dapat menghasilkan beberapa entri kueri jika dijalankan di bawah pengaturan konteks yang berbeda atau jika dijalankan di luar versus di dalam modul Transact-SQL yang berbeda, seperti prosedur dan pemicu yang disimpan.
sys.query_store_plan Menyajikan perkiraan rencana untuk kueri dengan statistik waktu kompilasi. Paket tersimpan setara dengan paket yang Anda dapatkan dengan menggunakan SET SHOWPLAN_XML ON.
sys.query_store_runtime_stats_interval Penyimpanan Kueri membagi waktu menjadi jendela waktu (interval) yang dihasilkan secara otomatis dan menyimpan statistik agregat pada interval tersebut untuk setiap rencana yang dijalankan. Ukuran interval dikontrol oleh opsi konfigurasi Interval Pengumpulan Statistik (di Management Studio) atau INTERVAL_LENGTH_MINUTES menggunakan AlTER DATABASE SET Options (Transact-SQL).
sys.query_store_runtime_stats Statistik runtime agregat untuk rencana yang dijalankan. Semua metrik yang ditangkap dinyatakan dalam bentuk empat fungsi statistik: Rata-rata, Minimum, Maksimum, dan Simpang Siur Standar.

Untuk informasi selengkapnya tentang tampilan Penyimpanan Kueri, lihat bagian "Tampilan, Fungsi, dan Prosedur Terkait" dari Memantau performa dengan menggunakan Penyimpanan Kueri.

Pemrosesan kueri

Penyimpanan Kueri berinteraksi dengan alur pemrosesan kueri di titik-titik utama berikut:

  1. Saat kueri dikompilasi untuk pertama kalinya, teks kueri dan paket awal dikirim ke Penyimpanan Kueri.

  2. Saat kueri dikompresi ulang, paket diperbarui di Penyimpanan Kueri. Jika paket baru dibuat, Query Store menambahkan entri paket baru untuk kueri dan menyimpan paket sebelumnya bersama dengan statistik eksekusinya.

  3. Setelah eksekusi kueri, statistik runtime dikirim ke Penyimpanan Kueri. Penyimpanan Kueri menjaga statistik agregat tetap akurat untuk setiap paket yang dijalankan dalam interval yang saat ini aktif.

  4. Selama kompilasi dan periksa fase kompilasi ulang, SQL Server menentukan apakah ada rencana di Penyimpanan Kueri yang harus diterapkan untuk kueri yang sedang berjalan. Jika ada rencana paksa dan rencana dalam cache prosedur berbeda dari rencana paksa, kueri akan dikommpilasikan ulang. Ini secara efektif dengan cara yang sama seolah-olah PLAN HINT diterapkan ke kueri tersebut. Proses ini terjadi secara transparan ke aplikasi pengguna.

Diagram berikut menggambarkan titik integrasi yang dijelaskan dalam langkah-langkah sebelumnya:

Query Store process

Keterangan

Untuk meminimalkan overhead I/O, data baru diambil dalam memori. Operasi tulis diantrekan dan dibersihkan ke disk setelahnya. Informasi kueri dan rencana, ditampilkan sebagai Penyimpanan Paket dalam diagram berikut, dibersihkan dengan latensi minimal. Statistik runtime, yang ditampilkan sebagai Statistik Runtime, disimpan dalam memori untuk jangka waktu yang ditentukan dengan DATA_FLUSH_INTERVAL_SECONDS opsi SET QUERY_STORE pernyataan. Anda dapat menggunakan kotak dialog Penyimpanan Kueri Management Studio untuk memasukkan nilai untuk Interval Flush Data (Menit), yang dikonversi secara internal menjadi detik.

Query Store process plan

Jika sistem mengalami crash atau pematian terjadi saat menggunakan bendera pelacakan 7745, Penyimpanan Kueri dapat kehilangan data runtime yang telah dikumpulkan tetapi belum bertahan, hingga jendela waktu yang ditentukan dengan DATA_FLUSH_INTERVAL_SECONDS. Kami merekomendasikan nilai default 900 detik (15 menit) sebagai keseimbangan antara performa pengambilan kueri dan ketersediaan data.

Penting

Batas Ukuran Maksimum (MB) tidak diberlakukan secara ketat. Ukuran penyimpanan dicentang hanya saat Penyimpanan Kueri menulis data ke disk. Interval ini diatur oleh nilai Interval Flush Data. Jika Penyimpanan Kueri telah melanggar batas ukuran maksimum antara pemeriksaan ukuran penyimpanan, penyimpanan akan beralih ke mode baca-saja. Jika Mode Pembersihan Berbasis Ukuran diaktifkan, mekanisme pembersihan untuk memberlakukan batas ukuran maksimum juga dipicu.

Catatan

Jika sistem berada di bawah tekanan memori, statistik runtime dapat dibersihkan ke disk lebih awal dari yang ditentukan dengan DATA_FLUSH_INTERVAL_SECONDS.

Selama pembacaan data Penyimpanan Kueri, data dalam memori dan pada disk disatukan secara transparan.

Jika sesi dihentikan atau aplikasi klien dimulai ulang atau crash, statistik kueri tidak akan direkam.

Query Store process plan information

Baca juga

Memantau Performa dengan menggunakan Penyimpanan Kueri
Praktik terbaik dengan Penyimpanan Kueri
Tampilan Katalog Penyimpanan Kueri (Transact-SQL)