Bagikan melalui


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

  1. Masuk ke portal Microsoft Azure dan pilih Azure Database for MySQL Anda.
  2. Pilih Parameter Server di bagian Pengaturan pada menu.
  3. Cari parameter query_store_capture_mode.
  4. Atur nilainya ke SEMUA dan Simpan.

Untuk mengaktifkan statistik tunggu di Microsoft Store Kueri Anda:

  1. Cari parameter query_store_wait_sampling_capture_mode.
  2. 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