全部产品
Search
文档中心

AnalyticDB:Hasil diagnosis tingkat operator

更新时间:Jul 02, 2025

AnalyticDB for MySQL menyediakan fitur diagnostik SQL untuk mengumpulkan statistik terpisah pada tingkat kueri, tahap, dan operator. Statistik ini digunakan untuk mendiagnosis masalah dan memberikan saran optimasi. Topik ini menjelaskan cara melihat serta menganalisis hasil diagnosis tingkat operator.

Jenis hasil diagnosis

Catatan

Untuk informasi lebih lanjut tentang cara melihat hasil diagnosis tingkat operator, lihat Lihat Hasil Diagnosis.

Tingkat agregasi operator agregasi rendah

  • Masalah

    Tingkat agregasi operator agregasi adalah rasio ukuran data input terhadap ukuran data output setelah pengelompokan berdasarkan kolom GROUP BY dan agregasi per grup. Rasio rendah menunjukkan efek agregasi yang buruk. Di AnalyticDB for MySQL, operasi GROUP BY terdiri dari dua langkah: agregasi parsial dan akhir. Sejumlah besar kelompok operator agregasi dapat menyebabkan tingkat agregasi rendah, meningkatkan transfer data jaringan, dan konsumsi sumber daya komputasi.

  • Saran

    Anda dapat melewati langkah agregasi parsial, mendistribusikan ulang data di antara node, lalu melakukan agregasi akhir. Untuk informasi lebih lanjut, lihat Optimasi Kueri Pengelompokan dan Agregasi.

Kondisi filter tidak didorong ke bawah

  • Masalah

    Secara default, AnalyticDB for MySQL membuat indeks untuk semua kolom dalam tabel selama penyimpanan data. Indeks ini dapat digunakan untuk mempercepat penyaringan data saat melakukan kueri. Namun, AnalyticDB for MySQL tidak menerapkan kondisi filter ke bawah dalam skenario berikut:

    • Hint no_index_columns atau filter_not_pushdown_columns digunakan dalam pernyataan kueri, atau kluster menggunakan konfigurasi adb_config filter_not_pushdown_columns.

    • Fungsi seperti CAST digunakan dalam kondisi filter.

    • Kolom terkait dalam kondisi filter tidak memiliki indeks. Misalnya, kata kunci no_index digunakan saat pembuatan tabel, atau pernyataan no_index dieksekusi untuk menghapus indeks setelah tabel dibuat.

  • Saran

    • Jika penurunan kondisi filter dinonaktifkan karena hint atau konfigurasi, periksa alasan penggunaannya dan tentukan apakah dapat dibatalkan. Untuk informasi lebih lanjut, lihat Kondisi Filter Tanpa Penurunan.

    • Jika Anda menggunakan fungsi, pertimbangkan untuk menulis ulang data tanpa fungsi atau menghapus fungsi selama kueri.

    • Jika kondisi filter tidak didorong ke bawah karena kolom terkait tidak memiliki indeks, periksa alasan ketiadaan indeks tersebut.

Ekspansi data terjadi dalam join

  • Masalah

    Tingkat ekspansi data join adalah rasio jumlah baris output terhadap jumlah baris input. Jika jumlah baris output lebih besar daripada jumlah baris input, ekspansi data terjadi. Hal ini meningkatkan konsumsi sumber daya komputasi dan memori, sehingga memperlambat kueri.

  • Saran

    • Jika ekspansi data disebabkan oleh karakteristik data seperti nilai duplikat di kedua tabel, saring nilai duplikat sebelum join.

    • Jika ekspansi data disebabkan oleh urutan join yang tidak tepat, sesuaikan urutan join secara manual. Untuk informasi lebih lanjut, lihat Sesuaikan Urutan Join Secara Manual.

Ukuran tabel kanan dalam join besar

  • Masalah

    Di AnalyticDB for MySQL, tabel kanan dalam join digunakan untuk membangun struktur hash atau set di memori. Ukuran tabel kanan yang besar dapat memengaruhi stabilitas kluster. Penyebab umum termasuk:

    • Pernyataan SQL berisi klausa LEFT JOIN. Tabel kanan dalam left join harus digunakan sebagai tabel pembangun, yang dapat meningkatkan konsumsi memori jika ukurannya besar.

    • Saat AnalyticDB for MySQL memperkirakan ukuran data tabel kiri dan kanan, estimasi tersebut mungkin tidak akurat karena faktor seperti kedaluwarsa statistik.

  • Saran

    Tulis ulang left join menjadi right join. Untuk informasi lebih lanjut, lihat Tulis Ulang Left Join Menjadi Right Join.

Join silang ada

  • Masalah

    Join silang adalah operasi JOIN tanpa kondisi join yang mengembalikan Produk Kartesius dari baris-baris tabel kiri dan kanan. Jika kedua tabel besar, stabilitas kluster AnalyticDB for MySQL sangat terpengaruh.

  • Saran

    Tambahkan kondisi join untuk menghilangkan join silang.

Operator scan membaca sejumlah besar kolom

  • Masalah

    Operator scan menyaring dan membaca data detail di lapisan penyimpanan AnalyticDB for MySQL. Jika pernyataan SELECT mencakup banyak kolom dan melibatkan pembacaan sejumlah besar data detail, penggunaan sumber daya disk I/O akan meningkat secara signifikan, sehingga memengaruhi stabilitas keseluruhan kluster AnalyticDB for MySQL.

  • Saran

    Optimalkan pernyataan SQL untuk mengurangi kolom yang tidak perlu dalam pernyataan SELECT.

Kemiringan data terjadi dalam jumlah data yang dipindai

  • Masalah

    AnalyticDB for MySQL menggunakan arsitektur eksekusi terdistribusi. Jika nilai kolom distribusi tidak tersebar merata, data disimpan secara tidak merata di setiap node, memengaruhi waktu eksekusi dan hasil kueri.

  • Saran

    Pilih kolom distribusi yang sesuai untuk mengurangi kemiringan data. Untuk informasi lebih lanjut, lihat Diagnostik Penyimpanan.

Indeks tidak efisien

  • Masalah

    Jika AnalyticDB for MySQL menggunakan indeks tetapi rasio ukuran data input terhadap output operator filter rendah, data mungkin tidak difilter dengan efektif oleh indeks.

  • Saran

    Gunakan operasi filter pada node komputasi alih-alih mendorong kondisi filter ke bawah. Untuk informasi lebih lanjut, lihat Kondisi Filter Tanpa Penurunan.