Log kueri lambat di Azure Database untuk MySQL
BERLAKU UNTUKAzure 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?
Di Azure Database untuk MySQL, log kueri lambat tersedia untuk pengguna. Akses ke log transaksi tidak didukung. Log kueri lambat dapat digunakan untuk mengidentifikasi hambatan performa untuk pemecahan masalah.
Untuk informasi selengkapnya mengenai log kueri lambat MySQL, lihat bagian log kueri lambat di petunjuk referensi MySQL.
Ketika Penyimpanan Kueri diaktifkan di server, Anda mungkin melihat kueri seperti "CALL mysql.az_procedure_collect_wait_stats (900, 30);
" yang dicatat dalam log kueri lambat. Perilaku ini diharapkan sebagai fitur Penyimpanan Kueri yang mengumpulkan statistik tentang kueri Anda.
Mengonfigurasi pengelogan kueri lambat
Secara default log kueri lambat dinonaktifkan. Untuk mengaktifkannya, set slow_query_log
ke AKTIF. Anda dapat mengaktifkannya menggunakan portal Microsoft Azure atau Azure CLI.
Parameter lain yang dapat Anda sesuaikan meliputi:
- long_query_time: jika kueri membutuhkan waktu lebih lama dibandingkan long_query_time (dalam detik) kueri tersebut dicatat. Interval defaultnya adalah 10 detik.
- log_slow_admin_statements: jika AKTIF maka parameter ini mencakup pernyataan administratif seperti ALTER_TABLE dan ANALYZE_TABLE dalam pernyataan yang tertulis pada slow_query_log.
- log_queries_not_using_indexes: menentukan apakah kueri yang tidak menggunakan indeks dicatat ke slow_query_log
- log_throttle_queries_not_using_indexes: Parameter ini membatasi jumlah kueri yang tidak diindeks yang dapat ditulis ke log kueri lambat. Parameter ini berlaku ketika log_queries_not_using_indexes diatur ke AKTIF.
- log_output: jika "File", memungkinkan log kueri lambat ditulis ke penyimpanan server lokal dan ke Log Diagnostik Azure Monitor. Jika "Tidak Ada", log kueri lambat hanya akan ditulis ke Log Diagnostik Azure Monitor.
Penting
Jika tabel Anda tidak diindeks, mengatur parameter log_queries_not_using_indexes
dan log_throttle_queries_not_using_indexes
ke AKTIF dapat memengaruhi performa MySQL karena semua kueri yang berjalan pada tabel yang tidak diindeks tersebut akan ditulis ke log kueri lambat.
Jika berencana untuk mencatat kueri lambat untuk jangka waktu yang lama, disarankan untuk mengatur ke log_output
"Tidak Ada". Jika diatur ke "File", log ini ditulis ke penyimpanan server lokal dan dapat memengaruhi kinerja MySQL.
Lihat dokumentasi log kueri lambat MySQL untuk deskripsi lengkap parameter log kueri lambat.
Akses log kueri lambat
Ada dua opsi untuk mengakses log kueri lambat di Azure Database untuk MySQL: penyimpanan server lokal atau Log Diagnostik Azure Monitor. Perilaku ini diatur menggunakan log_output
parameter.
Untuk penyimpanan server lokal, Anda dapat mencantumkan dan mengunduh log kueri lambat menggunakan portal Azure atau Azure CLI. Di portal Microsoft Azure, navigasi ke server Anda di portal Microsoft Azure. Di bawah judul Pemantauan, pilih halaman Log Server. Untuk informasi selengkapnya tentang Azure CLI, lihat Konfigurasikan dan akses log kueri lambat menggunakan Azure CLI.
Log Diagnostik Azure Monitor memungkinkan Anda menyalurkan log kueri lambat ke Azure Monitor Logs (Log Analytics), Azure Storage, atau Event Hubs. Lihat di bawah ini untuk informasi selengkapnya.
Retensi log penyimpanan server lokal
Saat pembuatan log ke penyimpanan lokal server, log tersedia hingga tujuh hari sejak pembuatannya. Jika ukuran total log yang tersedia melebihi 7 GB, maka file tertua akan dihapus hingga ruang tersedia. Batas penyimpanan 7 GB untuk log server tersedia gratis dan tidak dapat diperpanjang.
Log diputar setiap 24 jam atau 7 GB, mana yang lebih dulu.
Catatan
Retensi log di atas tidak berlaku untuk log yang disalurkan menggunakan Log Diagnostik Azure Monitor. Anda dapat mengubah periode penyimpanan untuk data sink yang dipancarkan (mis. Azure Storage).
Log Diagnostik
Azure Database for MySQL terintegrasi dengan Log Diagnostik Azure Monitor. Setelah mengaktifkan log kueri lambat di server MySQL, Anda dapat memilih untuk memancarkannya ke log Azure Monitor, Event Hubs, atau Azure Storage. Untuk mempelajari selengkapnya tentang cara mengaktifkan log diagnostik, lihat bagian cara dari dokumentasi log diagnostik.
Catatan
Akun Storage Premium tidak didukung jika Anda mengirim log ke penyimpanan Azure melalui diagnostik dan pengaturan
Tabel berikut ini menjelaskan apa yang ada di setiap log. Tergantung pada metode output, bidang yang dimasukkan dan urutan munculnya dapat bervariasi.
Properti | Keterangan |
---|---|
TenantId |
ID penyewa Anda |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Tanda waktu ketika log direkam di UTC |
Type |
Jenis log. Selalu AzureDiagnostics |
SubscriptionId |
GUID untuk langganan milik server |
ResourceGroup |
Nama grup sumber daya milik server |
ResourceProvider |
Nama penyedia sumber daya. Selalu MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
URI Sumber Daya |
Resource |
Nama server |
Category |
MySqlSlowLogs |
OperationName |
LogEvent |
Logical_server_name_s |
Nama server |
start_time_t [UTC] |
Waktu kueri dimulai |
query_time_s |
Total waktu dalam detik yang diperlukan kueri untuk dijalankan |
lock_time_s |
Total waktu dalam detik yang diperlukan kueri untuk dikunci |
user_host_s |
Nama Pengguna |
rows_sent_d |
Jumlah baris yang dikirim |
rows_examined_s |
Jumlah baris yang diperiksa |
last_insert_id_s |
last_insert_id |
insert_id_s |
Masukkan ID |
sql_text_s |
Kueri lengkap |
server_id_s |
ID server |
thread_id_s |
ID Utas |
\_ResourceId |
URI Sumber Daya |
Catatan
Untuk sql_text
, log akan terpotong jika melebihi 2.048 karakter.
Menganalisis log di Azure Monitor Logs
Setelah log kueri lambat disalurkan ke Azure Monitor Logs melalui Log Diagnostik, Anda dapat melakukan analisis selengkapnya tentang kueri lambat. Di bawah ini adalah beberapa contoh kueri untuk membantu Anda memulai. Pastikan untuk memperbarui di bawah ini dengan nama server Anda.
Kueri lebih lama dari 10 detik di sebuah server tertentu
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | where query_time_d > 10
Daftar 5 kueri terpanjang di sebuah server tertentu
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | order by query_time_d desc | take 5
Ringkas kueri lambat dengan waktu kueri minimum, maksimum, rata-rata, dan simpangan baku pada server tertentu
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by LogicalServerName_s
Membuat grafik distribusi kueri lambat di server tertentu
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m) | render timechart
Tampilkan kueri lebih dari 10 detik di semua server MySQL dengan Diagnostic Logs yang diaktifkan
AzureDiagnostics | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | where query_time_d > 10