Memantau Azure Database for MySQL dengan Penyimpanan Kueri
BERLAKU UNTUK: Azure Database for MySQL - Server Tunggal
Penting
Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?
Berlaku untuk: Azure Database for MySQL 5.7, 8.0
Fitur Penyimpanan Kueri di Azure Database for MySQL menyediakan cara untuk melacak performa kueri dari waktu ke waktu. Penyimpanan Kueri menyederhanakan pemecahan masalah performa dengan membantu Anda menemukan kueri yang paling lama berjalan dan paling intensif sumber daya dengan cepat. Penyimpanan Kueri secara otomatis menangkap riwayat kueri dan statistik waktu proses, dan menyimpannya untuk Anda tinjau. Fitur ini memisahkan data menurut jendela waktu sehingga Anda dapat melihat pola penggunaan database. Data untuk semua pengguna, database, dan kueri disimpan dalam database skema mysql di instans Azure Database for MySQL.
Skenario umum untuk menggunakan Penyimpanan Kueri
Penyimpanan kueri bisa digunakan dalam sejumlah skenario, termasuk yang berikut ini:
- Mendeteksi kueri yang diregresi
- Menentukan berapa kali kueri dijalankan dalam jendela waktu tertentu
- Membandingkan waktu rata-rata menjalankan kueri di seluruh jendela waktu untuk melihat delta besar
Mengaktifkan Penyimpanan Kueri
Microsoft Store Kueri adalah fitur keikutsertaan, sehingga tidak aktif secara default di server. Penyimpanan kueri diaktifkan atau dinonaktifkan secara global untuk semua database di server tertentu dan tidak dapat diaktifkan atau dinonaktifkan per database.
Mengaktifkan Penyimpanan Kueri menggunakan portal Azure
- Masuk ke portal Microsoft Azure dan pilih Azure Database for MySQL Anda.
- Pilih Parameter Server di bagian Pengaturan pada menu.
- Cari parameter query_store_capture_mode.
- Atur nilainya ke SEMUA dan Simpan.
Untuk mengaktifkan statistik tunggu di Microsoft Store Kueri Anda:
- Cari parameter query_store_wait_sampling_capture_mode.
- Atur nilainya ke SEMUA dan Simpan.
Biarkan hingga 20 menit agar batch data pertama bertahan di database mysql.
Informasi di Penyimpanan Kueri
Penyimpanan Kueri memiliki dua penyimpanan:
- Penyimpanan statistik runtime untuk terus menyimpan informasi statistik eksekusi kueri.
- Penyimpanan statistik tunggu untuk informasi statistik tunggu yang terus berlanjut.
Untuk meminimalkan penggunaan ruang, statistik eksekusi runtime di penyimpanan statistik runtime diagregat melalui jendela waktu yang tetap dan dapat dikonfigurasikan. Informasi di penyimpanan ini dapat dilihat dengan mengkueri tampilan penyimpanan kueri.
Kueri berikut mengembalikan informasi tentang kueri di penyimpanan kueri:
SELECT * FROM mysql.query_store;
Atau kueri ini untuk statistik tunggu:
SELECT * FROM mysql.query_store_wait_stats;
Menemukan kueri tunggu
Catatan
Statistik tunggu tidak boleh diaktifkan selama jam beban kerja puncak atau dinyalakan tanpa batas waktu untuk beban kerja sensitif.
Untuk beban kerja yang berjalan dengan penggunaan CPU yang tinggi atau pada server yang dikonfigurasi dengan vCore yang lebih rendah, berhati-hatilah saat mengaktifkan statistik tunggu. Statistik tunggu tidak boleh dihidupkan tanpa batas waktu.
Jenis peristiwa tunggu menggabungkan berbagai peristiwa tunggu ke dalam wadah berdasarkan kesamaan. Microsoft Store Kueri menyediakan tipe peristiwa tunggu, nama peristiwa tunggu tertentu, dan kueri yang dimaksud. Mampu menghubungkan informasi tunggu ini dengan statistik runtime kueri yang berarti Anda bisa mendapatkan pemahaman yang mendalam tentang apa yang berkontribusi pada karakteristik performa kueri.
Berikut adalah beberapa contoh bagaimana Anda bisa mendapatkan lebih banyak insight tentang beban kerja Anda menggunakan statistik tunggu di Microsoft Store Kueri:
Pengamatan | Perbuatan |
---|---|
Waktu Tunggu Kunci Tinggi | Periksa teks kueri untuk kueri yang terpengaruh dan identifikasi entitas target. Lihat di Microsoft Store Kueri untuk kueri lain yang memodifikasi entitas yang sama, yang sering dieksekusi dan/atau memiliki durasi tinggi. Setelah mengidentifikasi kueri ini, pertimbangkan untuk mengubah logika aplikasi untuk meningkatkan konkurensi, atau menggunakan tingkat isolasi yang kurang ketat. |
Waktu Tunggu IO Buffer Tinggi | Temukan kueri dengan jumlah bacaan fisik yang tinggi di Microsoft Store Kueri. Jika kueri tersebut cocok dengan kueri dengan waktu tunggu IO tinggi, pertimbangkan untuk memperkenalkan indeks pada entitas yang mendasarinya, untuk melakukan pencarian alih-alih pemindaian. Ini akan meminimalkan overhead IO dari kueri. Periksa Rekomendasi Performa untuk server Anda di portal guna melihat apakah ada rekomendasi indeks untuk server ini yang akan mengoptimalkan kueri. |
Waktu Tunggu Memori Tinggi | Temukan kueri penggunaan memori teratas di Microsoft Store Kueri. Kueri ini mungkin menunda perkembangan lebih lanjut dari kueri yang terpengaruh. Periksa Rekomendasi Performa untuk server Anda di portal untuk melihat apakah ada rekomendasi indeks yang dapat mengoptimalkan kueri ini. |
Opsi konfigurasi
Saat Penyimpanan Kueri diaktifkan, penyimpanan menyimpan data ke jendela agregasi dalam 15 menit, hingga 500 kueri berbeda per jendela akan disimpan.
Opsi berikut tersedia untuk mengonfigurasi parameter Penyimpanan Kueri.
Parameter | Keterangan | Default | Rentang |
---|---|---|---|
query_store_capture_mode | Hidupkan/matikan fitur simpan kueri berdasarkan nilainya. Catatan: Jika performance_schema NONAKTIF, mengaktifkan query_store_capture_mode akan mengaktifkan performance_schema dan subset instrumen skema performa yang diperlukan untuk fitur ini. | SEMUA | TIDAK ADA, SEMUA |
query_store_capture_interval | Penyimpanan kueri mengambil interval dalam hitungan menit. Memungkinkan penentuan interval di mana metrik kueri diagregasi | 15 | 5 - 60 |
query_store_capture_utility_queries | Menghidupkan atau mematikan untuk mengambil semua kueri utilitas yang dijalankan di sistem. | TIDAK | YA, TIDAK |
query_store_retention_period_in_days | Jendela waktu dalam hari untuk menyimpan data di penyimpanan kueri. | 7 | 1 - 30 |
Opsi berikut ini berlaku khusus untuk statistik tunggu.
Parameter | Keterangan | Default | Rentang |
---|---|---|---|
query_store_wait_sampling_capture_mode | Memungkinkan menyalakan/mematikan statistik tunggu. | NONE | TIDAK ADA, SEMUA |
query_store_wait_sampling_frequency | Mengubah frekuensi sampel tunggu dalam hitungan detik. 5 hingga 300 detik. | 30 | 5-300 |
Catatan
Saat ini query_store_capture_mode menggantikan konfigurasi ini, artinya query_store_capture_mode dan query_store_wait_sampling_capture_mode harus diaktifkan ke SEMUA agar statistik menunggu berfungsi. Jika query_store_capture_mode dinonaktifkan, statistik tunggu juga dinonaktifkan karena statistik tunggu menggunakan performance_schema yang diaktifkan, dan query_text yang diambil oleh penyimpanan kueri.
Gunakan portal Azure atau Azure CLI untuk mendapatkan atau mengatur nilai yang berbeda untuk suatu parameter.
Tampilan dan fungsi
Menampilkan dan mengelola Penyimpanan Kueri menggunakan tampilan dan fungsi berikut. Siapa pun di pilih peran publik hak istimewa dapat menggunakan tampilan ini untuk melihat data di Microsoft Store Kueri. Tampilan ini hanya tersedia di database mysql.
Kueri dinormalisasi dengan melihat strukturnya setelah menghapus literal dan konstanta. Jika dua kueri identik maka keduanya akan memiliki hash yang sama, kecuali untuk nilai harfiah.
mysql.query_store
Tampilan ini mengembalikan semua data di Microsoft Store Kueri. Ada satu baris untuk setiap ID database, ID pengguna, dan ID kueri yang berbeda.
Nama | Tipe Data | IS_NULLABLE | Keterangan |
---|---|---|---|
schema_name |
varchar(64) | TIDAK | Nama skema |
query_id |
bigint(20) | TIDAK | ID unik yang dihasilkan untuk kueri tertentu, jika kueri yang sama dijalankan dalam skema yang berbeda, ID baru akan dibuat |
timestamp_id |
rentang waktu | TIDAK | Tanda waktu di mana kueri dijalankan. Tanda waktu didasarkan pada konfigurasi query_store_interval |
query_digest_text |
longtext | TIDAK | Teks kueri yang dinormalisasi setelah menghapus semua harfiah |
query_sample_text |
longtext | TIDAK | Tampilan pertama kueri aktual dengan harfiah |
query_digest_truncated |
bit | YA | Apakah teks kueri telah dipotong. Nilainya adalah Ya jika kueri lebih panjang dari 1 KB |
execution_count |
bigint(20) | TIDAK | Berapa kali kueri dieksekusi untuk ID tanda waktu ini/selama periode interval yang dikonfigurasi |
warning_count |
bigint(20) | TIDAK | Jumlah peringatan yang dihasilkan kueri ini selama internal |
error_count |
bigint(20) | TIDAK | Jumlah kesalahan yang dihasilkan kueri ini selama interval |
sum_timer_wait |
ganda | YA | Total waktu eksekusi kueri ini selama interval dalam milidetik |
avg_timer_wait |
ganda | YA | Waktu eksekusi rata-rata untuk kueri ini selama interval dalam milidetik |
min_timer_wait |
ganda | YA | Waktu eksekusi minimum untuk kueri ini dalam milidetik |
max_timer_wait |
ganda | YA | Waktu eksekusi maksimum dalam milidetik |
sum_lock_time |
bigint(20) | TIDAK | Jumlah total waktu yang dihabiskan untuk semua kunci untuk eksekusi kueri ini selama jendela waktu ini |
sum_rows_affected |
bigint(20) | TIDAK | Jumlah baris yang terpengaruh |
sum_rows_sent |
bigint(20) | TIDAK | Jumlah baris yang dikirim ke klien |
sum_rows_examined |
bigint(20) | TIDAK | Jumlah baris yang diperiksa |
sum_select_full_join |
bigint(20) | TIDAK | Jumlah gabungan lengkap |
sum_select_scan |
bigint(20) | TIDAK | Jumlah pemindaian tertentu |
sum_sort_rows |
bigint(20) | TIDAK | Jumlah baris yang diurutkan |
sum_no_index_used |
bigint(20) | TIDAK | Berapa kali kueri tidak menggunakan indeks apa pun |
sum_no_good_index_used |
bigint(20) | TIDAK | Berapa kali ketika mesin eksekusi kueri tidak menggunakan indeks yang baik |
sum_created_tmp_tables |
bigint(20) | TIDAK | Jumlah total tabel sementara yang dibuat |
sum_created_tmp_disk_tables |
bigint(20) | TIDAK | Jumlah total tabel sementara yang dibuat di disk (menghasilkan I/O) |
first_seen |
rentang waktu | TIDAK | Kemunculan pertama (UTC) kueri selama jendela agregasi |
last_seen |
rentang waktu | TIDAK | Kemunculan terakhir (UTC) kueri selama jendela agregasi ini |
mysql.query_store_wait_stats
Tampilan ini mengembalikan data tunggu peristiwa di Penyimpanan Kueri. Ada satu baris untuk setiap ID database, ID pengguna, ID kueri, dan peristiwa yang berbeda.
Nama | Tipe Data | IS_NULLABLE | Keterangan |
---|---|---|---|
interval_start |
rentang waktu | TIDAK | Mulai interval (tahapan 15 menit) |
interval_end |
rentang waktu | TIDAK | Akhir interval (tahapan 15 menit) |
query_id |
bigint(20) | TIDAK | ID unik yang dihasilkan pada kueri yang dinormalisasi (dari penyimpanan kueri) |
query_digest_id |
varchar(32) | TIDAK | Teks kueri yang dinormalisasi setelah menghapus semua harfiah (dari penyimpanan kueri) |
query_digest_text |
longtext | TIDAK | Tampilan pertama dari kueri aktual dengan harfiah (dari penyimpanan kueri) |
event_type |
varchar(32) | TIDAK | Kategori peristiwa tunggu |
event_name |
varchar(128) | TIDAK | Nama peristiwa tunggu |
count_star |
bigint(20) | TIDAK | Jumlah peristiwa tunggu yang diambil sampelnya selama interval untuk kueri |
sum_timer_wait_ms |
ganda | TIDAK | Total waktu tunggu (dalam milidetik) kueri ini selama interval |
Fungsi
Nama | Keterangan |
---|---|
mysql.az_purge_querystore_data(TIMESTAMP) |
Membersihkan semua data penyimpanan kueri sebelum tanda waktu tertentu |
mysql.az_procedure_purge_querystore_event(TIMESTAMP) |
Membersihkan semua data peristiwa tunggu sebelum tanda waktu tertentu |
mysql.az_procedure_purge_recommendation(TIMESTAMP) |
Membersihkan rekomendasi yang masa berlakunya sebelum tanda waktu tertentu |
Batasan dan masalah yang diketahui
- Jika server MySQL parameternya
read_only
aktif, Microsoft Store Kueri tidak dapat mengambil data. - Fungsionalitas Penyimpanan Kueri dapat terganggu jika menemukan kueri Unicode yang panjang (>= 6000 byte).
- Periode retensi untuk statistik tunggu adalah 24 jam.
- Statistik tunggu menggunakan sampel untuk mengambil sebagian kecil peristiwa. Frekuensi dapat dimodifikasi menggunakan parameter
query_store_wait_sampling_frequency
.
Langkah berikutnya
- Pelajari selengkapnya tentang Insight Performa Kueri