Kueri lambat mengunci sumber daya, memblokir sesi lain, dan menurunkan throughput kluster secara keseluruhan. Secara default, PolarDB for MySQL menandai setiap pernyataan SQL yang memerlukan waktu eksekusi lebih dari 1 detik sebagai kueri lambat. Halaman Slow SQL di konsol menyediakan tiga tampilan komplementer—analisis log, saran optimasi otomatis, dan governance kueri—sehingga Anda dapat mengidentifikasi, memprioritaskan, dan memperbaiki bottleneck performa tanpa keluar dari konsol.
Dua metrik paling berguna saat melakukan triase kueri lambat:
Waktu eksekusi — mengidentifikasi kueri yang menahan sumber daya terlalu lama dan memblokir sesi lain.
Jumlah pemanggilan — mengidentifikasi kueri yang dieksekusi secara sering sehingga menghasilkan latensi kumulatif tinggi meskipun setiap pemanggilan individual berjalan cepat.
Prasyarat
Sebelum memulai, pastikan akun Anda memiliki izin AliyunHDMFullAccess. Untuk kontrol akses detail halus, buat kebijakan RAM kustom untuk memberikan izin spesifik.
Lihat kueri SQL lambat
Masuk ke Konsol PolarDB. Di panel navigasi kiri, klik Clusters. Pilih wilayah tempat kluster berada, lalu klik ID kluster tersebut.
Di panel navigasi kiri, pilih Diagnostics and Optimization > Slow SQL.
Halaman Slow SQL memiliki tiga tab: Slow Log Analysis, Automatic SQL Optimization Suggestions, dan Query Governance Trends.
Analisis log lambat
Tab Slow Log Analysis menampilkan tren dan statistik kueri lambat dalam rentang waktu yang dipilih.
Batasan rentang waktu:
Waktu selesai harus lebih baru daripada waktu mulai.
Interval tidak boleh melebihi 24 jam.
Log tersedia hingga satu bulan sebelumnya.
Tab ini mencakup empat bagian:
Tren Log Kueri Lambat — Menampilkan grafik tren volume kueri lambat dari waktu ke waktu. Klik titik mana pun pada grafik untuk melihat statistik dan detail pada waktu tersebut.
Jika pernyataan SQL terpotong di UI, arahkan kursor ke atasnya untuk melihat teks lengkapnya.
Distribusi Event — Menunjukkan distribusi event kueri lambat dalam rentang waktu yang dipilih. Klik suatu event untuk melihat detailnya. Gunakan menu drop-down Node ID untuk memfilter hasil berdasarkan node kluster.
Anda juga dapat:
Klik
untuk mengunduh log kueri lambat ke komputer Anda.Klik
untuk mengirim parameter saat ini ke konsol OpenAPI guna debugging API.
Statistik Log Kueri Lambat — Mengelompokkan kueri lambat berdasarkan templat SQL. Templat SQL adalah versi parameterisasi dari kueri di mana nilai literal diganti dengan placeholder. Misalnya, SELECT * FROM orders WHERE user_id = ? adalah templat yang merepresentasikan semua kueri terhadap tabel tersebut tanpa memedulikan user ID aktualnya. Pengelompokan ini memungkinkan Anda mengenali pola dari ribuan eksekusi individual.
Pada bagian ini:
Tetapkan kondisi filter di bagian atas daftar. Filter yang tersedia bervariasi tergantung engine database.
Klik SQL ID untuk melihat distribusi pengguna, distribusi client, dan tren metrik untuk templat tersebut.
Klik Optimize di kolom Actions untuk membuka dialog SQL Diagnostic Optimization. DAS melakukan diagnostik SQL berdasarkan kompleksitas pernyataan SQL, volume data di tabel, dan beban database. Saran mungkin dikembalikan lebih dari 20 detik setelah diagnostik SQL dilakukan. Jika Anda menerima saran tersebut, klik Copy untuk menempelkan SQL yang dioptimalkan ke client database atau Data Management (DMS) guna dieksekusi.
Klik Throttling di kolom Actions untuk mengonfigurasi pembatasan SQL. Untuk detail konfigurasi, lihat SQL throttling.
Untuk kluster PolarDB for MySQL, klik IMCI di kolom Actions untuk melihat dokumentasi fitur In-Memory Column Index (IMCI).
Tombol IMCI hanya muncul jika ketiga kondisi berikut terpenuhi: tidak ada node IMCI yang dibeli untuk kluster, durasi eksekusi maksimum templat SQL melebihi 20 detik, dan jumlah maksimum baris yang dipindai melebihi 200.000. Gunakan IMCI untuk meningkatkan performa kueri kompleks yang memindai volume data besar.
Detail Log Kueri Lambat — Menampilkan eksekusi kueri lambat individual. Klik Optimize atau Throttling di kolom Actions untuk menjalankan diagnostik SQL atau mengonfigurasi pembatasan kecepatan untuk pernyataan tertentu.
Saran optimasi SQL otomatis
Pada tab Automatic SQL Optimization Suggestions, pilih periode waktu untuk meninjau saran optimasi selama periode tersebut.
Enable Automatic SQL Optimization secara otomatis mengidentifikasi pernyataan SQL bermasalah, menghasilkan saran optimasi indeks, dan membuat indeks—semuanya tanpa menyebabkan penguncian tabel.
Untuk informasi lebih lanjut, lihat Automatic SQL optimization.
Governance kueri
Tab Query Governance menyediakan tampilan tingkat klaster mengenai kesehatan kueri.
Query Governance Results Overview — Menampilkan hasil kategorisasi kueri setelah tagging sistem.
Eksekusi SQL gagal hanya menghitung kegagalan pada instans yang telah mengaktifkan DAS Enterprise Edition.
Query Governance Trends — Menunjukkan bagaimana hasil governance kueri berubah selama rentang waktu yang dipilih.
Peringkat Teratas — Menyoroti Instans Berkinerja Terbaik dan Instans Berkinerja Terburuk:
Instans Berkinerja Terburuk: menunjukkan jumlah eksekusi pernyataan SQL yang menyebabkan kueri lambat.
Instans Berkinerja Terbaik: menunjukkan perubahan jumlah eksekusi kueri lambat. Nilai negatif berarti jumlah kueri lambat menurun (efek optimasi baik); nilai positif berarti jumlah tersebut meningkat.
Fokuslah pada instans berkinerja terbaik dan terburuk saat meninjau Optimizable SQL.
SQL yang perlu dioptimalkan — Gunakan filter untuk mempersempit pernyataan SQL yang perlu diperhatikan. Keempat filter ini digabungkan dengan logika AND.
| Filter | Pemisah | Operator |
|---|---|---|
| Nama database | Koma (,) | OR |
| Kata kunci SQL | Spasi | AND |
| Username database | Koma (,) | OR |
| Tag aturan | Pilihan ganda | OR |
Tindakan yang tersedia untuk setiap sampel SQL:
Suggestions — Lihat rekomendasi governance detail.
Add Tag — Tambahkan tag secara manual ke pernyataan SQL tersebut. Untuk definisi tag, lihat Tag SQL yang dapat ditambahkan secara manual. Pilih beberapa sampel SQL untuk menambahkan tag secara batch.
Sample — Lihat detail sampel log lambat untuk SQL ini.
Trend — Lihat detail analisis log lambat. Untuk informasi lebih lanjut, lihat Slow query logs.
Ekspor dan bagikan pernyataan SQL yang perlu dioptimalkan sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Slow query logs.
SQL gagal — Filter pernyataan SQL gagal berdasarkan nama database (dipisahkan koma, logika OR) atau kata kunci SQL (dipisahkan spasi, logika AND).
SQL gagal hanya menghitung kegagalan pada instans yang telah mengaktifkan DAS Enterprise Edition.
Klik Sample di kolom Actions untuk melihat detail eksekusi pernyataan yang gagal.
Menyesuaikan ambang batas kueri lambat
Ambang batas kueri lambat default adalah 1 detik. Untuk mengubahnya, buka Settings and Management > Parameters di Konsol PolarDB dan atur parameter long_query_time.
| Parameter | Deskripsi | Default | Rentang | Unit |
|---|---|---|---|---|
long_query_time | Mencatat semua kueri yang melebihi nilai ini ke log kueri lambat | 1 | 0,03–31.536.000 | Detik |
Untuk petunjuk, lihat Specify cluster and node parameters.
FAQ
Mengapa waktu penyelesaian eksekusi di log kueri lambat berbeda dengan waktu eksekusi aktual?
Hal ini terjadi ketika pernyataan SQL mengubah zona waktu tingkat sesi. PolarDB mencatat waktu penyelesaian eksekusi berdasarkan zona waktu pada tiga tingkat: sesi, database, dan sistem. Jika zona waktu ditentukan untuk database, waktu penyelesaian eksekusi dicatat berdasarkan zona waktu database tersebut. Jika tidak, waktu tersebut dicatat berdasarkan zona waktu sistem. Jika pernyataan SQL mengubah zona waktu sesi di tengah eksekusi, cap waktu yang direkam mungkin tidak dikonversi dengan benar.
Bagaimana cara menemukan kueri SQL lambat?
Dua opsi:
Lihat log kueri lambat langsung di halaman Slow SQL di konsol, seperti yang dijelaskan dalam artikel ini.
Hubungkan ke kluster dan jalankan
show processlistuntuk melihat pernyataan yang sedang dieksekusi. Untuk petunjuk koneksi, lihat Database connection.
Referensi API
| API | Deskripsi |
|---|---|
| DescribeSlowLogs | Menanyakan statistik tentang log kueri lambat kluster PolarDB for MySQL |
| DescribeSlowLogRecords | Menanyakan detail log kueri lambat kluster PolarDB for MySQL |
| DescribeDBClusterAuditLogCollector | Menanyakan apakah collector data SQL diaktifkan untuk kluster PolarDB for MySQL. Fitur collector data SQL mencakup log audit dan SQL Explorer. |
| ModifyDBClusterAuditLogCollector | Mengaktifkan atau menonaktifkan collector data SQL untuk kluster PolarDB for MySQL. Fitur collector data SQL mencakup log audit dan SQL Explorer. |