Bagikan melalui


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
    

Langkah berikutnya