All Products
Search
Document Center

PolarDB:Slow SQL query

Last Updated:Sep 09, 2026

PolarDB for MySQL mendefinisikan pernyataan SQL yang memerlukan waktu eksekusi lebih dari 1 detik sebagai slow SQL query dan menyediakan fitur analisis SQL di konsol. Anda dapat melihat tren dan statistik log kueri lambat. Selain itu, sistem menyediakan saran optimasi dan analisis diagnostik untuk kueri SQL terkait guna memudahkan analisis mendalam dan optimasi.

Prasyarat (opsional)

Untuk melihat log kueri lambat, pastikan akun Anda telah diberikan izin AliyunHDMFullAccess. Untuk pengelolaan izin yang lebih granular, Anda dapat menggunakan kebijakan kustom untuk memberikan izin kepada RAM user demi kontrol fleksibel atas PolarDB.

Catatan

Panjang maksimum log lambat adalah 16 KB. Bagian yang melebihi panjang ini akan dipotong.

Lihat slow SQL query

  1. Masuk ke PolarDB console. Di panel navigasi sebelah kiri, klik Clusters, pilih region tempat kluster ditempatkan, lalu klik ID kluster target untuk membuka halaman detail kluster.

  2. Di panel navigasi sebelah kiri, pilih Diagnostics and Optimization > Slow SQL.

  3. Halaman Slow SQL menyediakan tiga fitur berikut:

    Analisis log lambat

    Pada tab Slow Log Analysis, pilih rentang waktu, lalu lihat Slow Log Trend, Event Distribution, Slow Log Statistics, dan Slow Log Details.

    • Pada grafik Slow Log Trend, Anda dapat memilih titik waktu tertentu untuk melihat Slow Log Statistics dan Slow Log Details pada waktu tersebut.

      Catatan

      Jika pernyataan slow SQL terlalu panjang sehingga tidak dapat ditampilkan secara utuh, arahkan pointer mouse ke pernyataan tersebut untuk melihat seluruh pernyataan SQL dalam kotak pop-up.

    • Pada area Event Distribution, Anda dapat mencari event log lambat dalam rentang waktu tertentu. Klik suatu event untuk melihat detailnya.

    • Dari daftar drop-down Node ID, Anda dapat melihat jumlah kueri lambat untuk setiap node.

    • Pada tab Slow Query Log Statistics dan Slow Query Log Details, Anda dapat mengklik image untuk menyimpan informasi log kueri lambat ke komputer Anda.

    • Anda dapat mengklik image untuk membuka konsol OpenAPI Explorer. Parameter yang saat ini dipilih dan dimasukkan akan dibawa secara otomatis untuk debugging API.

    • Pada area Slow Log Statistics:

      • Di atas daftar, Anda dapat memilih kondisi filter untuk menyaring data. Kondisi filter yang tersedia bervariasi tergantung pada engine database.

      • Klik ID data pada kolom Query ID dari templat SQL target untuk melihat korelasi dan daftar detail yang mencakup distribusi pengguna, distribusi client, serta tren metrik.

      • Pada kolom Actions dari templat SQL target, klik Optimize. Pada kotak dialog SQL Diagnostic Optimization yang muncul, lihat hasil diagnosis SQL.

        Jika Anda menerima saran diagnosis, klik Copy di pojok kanan atas halaman dan tempel pernyataan SQL yang telah dioptimalkan ke client database atau DMS Anda untuk dieksekusi. Jika Anda tidak menerima saran tersebut, klik Cancel untuk mengakhiri diagnosis.

        Catatan

        DAS melakukan diagnosis SQL berdasarkan kompleksitas pernyataan SQL, volume data tabel terkait, dan muatan database. Saran diagnosis mungkin memerlukan waktu lebih dari 20 detik untuk dikembalikan. Setelah diagnosis selesai, mesin diagnostik menyediakan hasil diagnosis, saran optimasi, dan manfaat optimasi yang diharapkan. Anda dapat memutuskan apakah akan menerima saran tersebut berdasarkan hasil diagnosis.

      • Pada kolom Actions dari templat SQL target, klik Throttling. Pada halaman SQL Throttling, konfigurasikan parameter throttling untuk menerapkan pembatasan laju pada pernyataan SQL target. Untuk informasi selengkapnya, lihat SQL throttling.

      • Untuk instansiasi basis data PolarDB for MySQL, pada kolom Actions dari templat SQL target, klik IMCI untuk melihat dokumentasi tentang In-Memory Column Index (IMCI).

        Catatan
        • Tombol IMCI ditampilkan jika instansiasi basis data PolarDB for MySQL tidak memiliki node In-Memory Column Index, Max Execution Time dari log kueri lambat melebihi 20 detik, dan Max Scanned Rows melebihi 200.000.

        • Untuk kueri kompleks dengan volume data besar, Anda dapat menggunakan In-Memory Column Index (IMCI) untuk meningkatkan performa kueri.

    • Pada area Slow Log Details, Anda juga dapat mengklik Optimize dan Throttling pada kolom Actions untuk pernyataan SQL target guna melakukan SQL Diagnostic Optimization dan SQL Throttling.

    Saran optimasi SQL otomatis

    Pada halaman Automatic SQL optimization suggestions, pilih rentang waktu.

    Enable automatic SQL optimization: Fitur ini secara otomatis mengidentifikasi kueri SQL bermasalah, menghasilkan saran optimasi indeks, dan membuat indeks tanpa menyebabkan penguncian tabel.

    Catatan

    Untuk informasi selengkapnya, lihat Automatic SQL optimization.

    Query governance

    Pada halaman Query Governance, lihat hasil query governance.

    • Ikhtisar hasil query governance: Lihat data hasil yang dikategorikan oleh sistem.

      Catatan

      Hanya Failed SQL Executions untuk instans dengan DAS Enterprise Edition yang diaktifkan yang dihitung.

    • Tren query governance: Lihat tren hasil query governance dalam rentang waktu yang dipilih.

    • Top Rankings: Lihat Best-performing Instances dan Worst-performing Instances.

      • Instance blacklist: Lihat jumlah eksekusi slow SQL query untuk setiap instans database.

      • Instance red list: Lihat perubahan jumlah eksekusi slow SQL query untuk setiap instans database. Nilai negatif menunjukkan penurunan (hasil optimasi baik), sedangkan nilai positif menunjukkan peningkatan.

      DAS merekomendasikan agar Anda fokus pada peringkat Optimizable SQL.

    • SQL to Be Optimized: Anda dapat mengatur kriteria filter untuk menyaring kueri SQL yang memerlukan governance.

      Catatan

      Anda dapat memfilter berdasarkan nama DB, kata kunci SQL, tag aturan, dan username database. Keempat filter ini digabungkan dengan logika AND.

      • Nama DB ganda dipisahkan dengan koma (,) dan digabungkan dengan logika OR.

      • Kata kunci SQL ganda dipisahkan dengan spasi dan digabungkan dengan logika AND.

      • Username database ganda dipisahkan dengan koma (,) dan digabungkan dengan logika OR.

      • Anda dapat memilih beberapa tag aturan. Tag yang dipilih digabungkan dengan logika OR.

      • Pada kolom Actions untuk sampel SQL target, klik Suggestions untuk melihat rekomendasi governance detail.

      • Pada kolom Actions untuk sampel SQL target, klik Add Tag untuk memberi tag manual pada kueri SQL tersebut. Untuk informasi selengkapnya tentang tag, lihat SQL tags yang mendukung tagging manual.

        Anda juga dapat memilih beberapa kueri SQL untuk memberi tag secara batch.

      • Pada kolom Actions untuk sampel SQL target, klik Sample untuk melihat detail sampel log kueri lambat untuk kueri ini.

      • Pada kolom Actions untuk sampel SQL target, klik Trend untuk melihat detail analisis log lambat untuk kueri ini. Untuk informasi selengkapnya tentang analisis log lambat, lihat Slow query logs.

      Anda dapat mengekspor dan membagikan data kueri SQL yang perlu dioptimalkan. Untuk informasi selengkapnya, lihat Slow query logs.

    • Failed SQL: Anda dapat mengatur kriteria filter untuk menyaring kueri SQL yang ingin Anda lihat.

      Catatan
      • Hanya Failed SQL untuk instans dengan DAS Enterprise Edition yang diaktifkan yang dihitung.

      • Anda dapat memfilter berdasarkan nama DB dan kata kunci SQL. Kedua filter ini digabungkan dengan logika AND.

        • Nama DB ganda dipisahkan dengan koma (,) dan digabungkan dengan logika OR.

        • Kata kunci SQL ganda dipisahkan dengan spasi dan digabungkan dengan logika AND.

      Pada kolom Actions untuk sampel SQL target, klik Sample untuk melihat detail sampel SQL ini.

Menyesuaikan ambang batas slow SQL query

Anda dapat membuka PolarDB console dan menavigasi ke Settings and Management > Parameters. Pada halaman tersebut, atur parameter long_query_time untuk menyesuaikan ambang batas slow SQL query.

Parameter

Deskripsi

long_query_time

Mencatat semua kueri yang waktu eksekusinya melebihi nilai parameter dalam log kueri lambat.

Nilai valid: 0,03 hingga 31536000. Nilai default: 1. Satuan: detik.

FAQ

Mengapa waktu penyelesaian eksekusi SQL yang tercatat dalam log kueri lambat berbeda dengan waktu eksekusi aktual?

Masalah ini biasanya terjadi ketika zona waktu diubah oleh pernyataan SQL. Log kueri lambat mencatat waktu eksekusi SQL berdasarkan hierarki zona waktu: tingkat sesi, tingkat database, dan tingkat sistem. Saat zona waktu tingkat database diatur, prioritasnya lebih tinggi. Jika tidak, zona waktu sistem yang digunakan. Jika Anda mengubah zona waktu tingkat sesi menggunakan pernyataan SQL, zona waktu dalam log kueri lambat mungkin tidak dikonversi dengan benar.

Bagaimana cara menemukan slow SQL query?

Anda dapat menemukan slow SQL query dengan cara berikut:

  • Kueri slow SQL query langsung di konsol. Untuk informasi selengkapnya, lihat Slow SQL query.

  • Hubungkan ke kluster database dan jalankan perintah show processlist untuk menemukan kueri SQL berdurasi panjang. Untuk informasi selengkapnya tentang cara menghubungkan ke kluster database, lihat Cara menghubungkan ke Database.

Apa itu rows_examined? Apa yang harus saya lakukan jika jumlah baris yang dipindai jauh lebih besar daripada jumlah baris yang dikembalikan?

Jumlah baris yang dipindai (rows_examined) menunjukkan jumlah baris yang benar-benar dibaca selama eksekusi pernyataan SQL. Engine database mengumpulkan metrik ini secara otomatis. Tidak diperlukan konfigurasi tambahan.

Jika jumlah baris yang dipindai oleh slow SQL query jauh lebih besar daripada jumlah baris yang dikembalikan, kueri tersebut membaca banyak data yang tidak perlu. Masalah ini biasanya disebabkan oleh salah satu alasan berikut:

  • Kondisi kueri tidak memiliki indeks yang sesuai, sehingga menyebabkan pemindaian tabel penuh atau penggunaan indeks dengan selektivitas rendah.

  • Statistik tabel sudah usang, sehingga pengoptimal memilih rencana eksekusi yang suboptimal.

Anda dapat melakukan langkah-langkah berikut untuk mengoptimalkan kueri:

  1. Jalankan EXPLAIN untuk melihat rencana eksekusi pernyataan SQL dan periksa apakah indeks yang diharapkan digunakan.

  2. Jalankan ANALYZE TABLE untuk mengumpulkan ulang statistik tabel agar pengoptimal dapat memilih rencana eksekusi yang lebih baik.

  3. Jika rencana eksekusi masih suboptimal, tambahkan atau sesuaikan indeks berdasarkan kondisi kueri.

Fitur Automatic SQL optimization suggestions yang dijelaskan dalam topik ini dapat secara otomatis mengidentifikasi kueri SQL bermasalah dan menghasilkan saran optimasi indeks untuk membantu menilai apakah indeks saat ini sudah memadai.

Apa yang harus saya lakukan jika error InvalidVersion dikembalikan saat saya memanggil operasi API log lambat menggunakan SDK?

Jika error InvalidVersion dikembalikan saat Anda memanggil operasi API log lambat seperti DescribeSlowLogRecords menggunakan SDK (misalnya, skrip Python), periksa apakah parameter Version dalam permintaan sudah benar.

Kami menyarankan Anda terlebih dahulu menggunakan fitur debugging di Alibaba Cloud OpenAPI Explorer untuk memverifikasi bahwa parameter sudah benar dan path permintaan berfungsi sebagaimana mestinya, lalu perbarui konfigurasi dalam kode Anda.

Mengapa waktu eksekusi pernyataan SQL identik atau pembaruan berdasarkan primary key kadang-kadang berfluktuasi secara signifikan (misalnya, dari milidetik menjadi detik)?

Lakukan troubleshooting masalah ini dengan urutan berikut:

  1. Periksa statistik: Jalankan ANALYZE TABLE untuk mengumpulkan ulang statistik tabel terkait. Statistik yang usang dapat menyebabkan pengoptimal memilih indeks yang salah.

  2. Bandingkan rencana eksekusi: Dapatkan rencana eksekusi untuk eksekusi normal dan abnormal, lalu periksa apakah fluktuasi disebabkan oleh pemilihan indeks yang berbeda.

  3. Periksa client dan lingkungan runtime: Jika tidak ditemukan anomali di sisi database dan tidak ada catatan yang sesuai dalam log kueri lambat (artinya, waktu eksekusi tidak melebihi ambang batas long_query_time yang dijelaskan dalam bagian Menyesuaikan ambang batas slow SQL query topik ini), kemungkinan besar waktu tersebut tidak dihabiskan untuk eksekusi database. Periksa apakah server client mengalami latency jaringan, konflik sumber daya, atau kehabisan kolam koneksi (seperti timeout akuisisi koneksi HikariCP).

  4. Mitigasi sementara: Jika kolam koneksi habis, Anda dapat sementara menambah parameter maximumPoolSize kolam koneksi untuk mengurangi waktu tunggu. Namun, untuk menyelesaikan masalah ini, prioritaskan optimasi slow SQL query yang menyumbang porsi terbesar dari waktu eksekusi agar koneksi dipegang dalam periode yang lebih singkat.

Praktik terbaik

Utilisasi CPU tinggi untuk PolarDB for MySQL

API terkait

API

Deskripsi

DescribeSlowLogs

Menanyakan statistik log kueri lambat untuk kluster PolarDB for MySQL.

DescribeSlowLogRecords

Menanyakan detail log kueri lambat untuk kluster PolarDB for MySQL.

DescribeDBClusterAuditLogCollector

Menanyakan apakah fitur pengumpulan SQL (seperti log audit dan SQL Explorer) diaktifkan untuk kluster PolarDB for MySQL.

ModifyDBClusterAuditLogCollector

Mengaktifkan atau menonaktifkan fitur pengumpulan SQL (seperti log audit dan SQL Explorer) untuk kluster PolarDB for MySQL.