All Products
Search
Document Center

AnalyticDB:Hasil Diagnostik Tingkat Operator

Last Updated:Aug 25, 2026

Fitur diagnosis SQL di AnalyticDB for MySQL mengumpulkan statistik kueri SQL pada tingkat kueri, tahap (stage), dan operator, lalu menggunakan statistik tersebut untuk memberikan diagnosis dan saran optimasi. Topik ini menjelaskan cara melihat dan menganalisis hasil diagnostik tingkat operator.

Jenis hasil diagnostik

Catatan Untuk informasi lebih lanjut, lihat Lihat hasil diagnostik.

Tingkat agregasi rendah untuk operator agregasi

  • Masalah

    Tingkat agregasi operator agregasi adalah rasio antara volume data masukan (InputDataSize) dan volume data keluaran (OutputDataSize) dalam operasi GROUP BY. Rasio yang lebih kecil menunjukkan tingkat agregasi yang lebih rendah dan agregasi yang kurang efektif. Di AnalyticDB for MySQL, operasi pengelompokan dan agregasi terdiri dari dua langkah: agregasi parsial (PARTIAL) dan agregasi akhir (FINAL). Jika operator agregasi memiliki banyak kelompok, tingkat agregasinya rendah. Akibatnya, langkah agregasi parsial gagal mengurangi transfer data jaringan dan justru mengonsumsi banyak sumber daya komputasi.

  • Saran

    Pertimbangkan untuk melewati langkah agregasi parsial. Sebarkan ulang data di antara node, lalu lakukan satu kali agregasi akhir. Untuk informasi lebih lanjut, lihat Optimalkan kueri pengelompokan dan agregasi.

Kondisi filter tidak didorong ke bawah

  • Masalah
    AnalyticDB for MySQL membuat indeks untuk setiap field dalam tabel saat menyimpan data. Indeks ini mempercepat penyaringan data selama kueri. Namun, AnalyticDB for MySQL tidak mendorong kondisi filter ke bawah dalam skenario berikut:
    • Fitur penurunan kondisi filter dinonaktifkan karena pernyataan kueri menggunakan petunjuk (hint) no_index_columns atau filter_not_pushdown_columns, atau kluster menggunakan konfigurasi adb_config filter_not_pushdown_columns.
    • Kondisi filter menggunakan fungsi, seperti operator cast.
    • Field terkait dalam kondisi filter tidak memiliki indeks. Hal ini dapat terjadi jika kata kunci no_index ditentukan saat pembuatan tabel, atau jika indeks dihapus dengan menjalankan DROP INDEX setelah tabel dibuat.
  • Saran
    • Jika fitur penurunan kondisi filter dinonaktifkan karena hint dalam pernyataan kueri atau konfigurasi kluster, telusuri alasan penggunaan hint atau konfigurasi tersebut dan pertimbangkan untuk menghapusnya. Untuk informasi lebih lanjut, lihat Jangan dorong kondisi filter ke bawah.
    • Jika fungsi digunakan, pertimbangkan untuk menerapkan fungsi tersebut saat menulis data, lalu hapus fungsi tersebut dari kueri.
    • Jika kondisi filter tidak didorong ke bawah karena field terkait tidak memiliki indeks, telusuri penyebab hilangnya indeks tersebut.

Pembengkakan data dalam operasi Join

  • Masalah

    Laju pembengkakan data dalam operasi Join adalah rasio antara jumlah baris keluaran dan jumlah baris masukan. Jumlah baris masukan adalah total baris dari tabel kiri dan kanan. Dengan kondisi join yang tepat, jumlah baris keluaran biasanya lebih kecil daripada jumlah baris masukan. Jika jumlah baris keluaran lebih besar daripada jumlah baris masukan, terjadi pembengkakan data. Pembengkakan data mengonsumsi sumber daya komputasi dan memori dalam jumlah besar, sehingga memperlambat kueri.

  • Saran
    • Jika pembengkakan data disebabkan oleh karakteristik data—misalnya, banyak nilai identik terdapat di kedua tabel—pertimbangkan untuk menyaring nilai-nilai tersebut pada tahap penyaringan tabel agar tidak ikut dalam operasi Join.
    • Jika pembengkakan data disebabkan oleh urutan join yang tidak optimal, sesuaikan secara manual urutan join tersebut. Untuk informasi lebih lanjut, lihat Sesuaikan secara manual urutan join.

Tabel kanan dalam operasi Join terlalu besar

  • Masalah
    Di AnalyticDB for MySQL, tabel kanan operasi Join biasanya merupakan tabel builder, yang digunakan untuk membangun struktur hash atau set di memori. Tabel kanan yang besar dapat mengonsumsi sumber daya memori berlebihan dan memengaruhi stabilitas keseluruhan kluster. Tabel kanan mungkin terlalu besar karena alasan berikut:
    • Pernyataan SQL berisi Left Join. Tabel kanan Left Join harus menjadi tabel builder selama eksekusi. Oleh karena itu, jika tabel kanan dalam Left Join besar, sumber daya memori yang dikonsumsi juga besar.
    • AnalyticDB for MySQL membuat estimasi volume data tabel kiri dan kanan yang salah. Hal ini dapat disebabkan oleh faktor-faktor seperti statistik yang kedaluwarsa.
  • Saran

    Untuk optimasi, kami menyarankan agar Anda menulis ulang Left Join menjadi Right Join. Untuk informasi lebih lanjut, lihat Menulis ulang Left Join menjadi Right Join.

Terdapat operasi Cross Join

  • Masalah

    Cross Join adalah operasi Join yang tidak memiliki kondisi join. Jumlah baris keluaran adalah hasil perkalian jumlah baris di tabel kiri dan kanan. Jika kedua tabel besar, Cross Join dapat sangat memengaruhi stabilitas kluster AnalyticDB for MySQL.

  • Saran

    Tambahkan kondisi join untuk menghilangkan Cross Join.

Operator scan membaca terlalu banyak field

  • Masalah

    Operator scan melakukan penyaringan dan membaca data detail dari lapisan penyimpanan AnalyticDB for MySQL. Jika pernyataan SELECT mencakup banyak field, sejumlah besar data detail harus dibaca. Hal ini mengonsumsi sumber daya disk I/O yang signifikan dan memengaruhi stabilitas keseluruhan kluster AnalyticDB for MySQL.

  • Saran

    Optimalkan pernyataan SQL dengan menghapus field yang tidak diperlukan dari pernyataan SELECT.

Kesenjangan data dalam pemindaian tabel

  • Masalah

    AnalyticDB for MySQL menggunakan arsitektur eksekusi terdistribusi. Untuk tabel besar, Anda harus menentukan kunci distribusi. Data didistribusikan ke node penyimpanan berbeda berdasarkan kunci ini saat data ditulis. Jika nilai kunci distribusi tidak merata, data juga disimpan secara tidak merata di seluruh node. Hal ini menyebabkan efek long tail selama pembacaan data, di mana beberapa node membutuhkan waktu jauh lebih lama daripada yang lain. Ketidakseimbangan ini berdampak buruk pada kinerja kueri.

  • Saran

    Kurangi kesenjangan data dalam pemindaian tabel dengan memilih kunci distribusi yang sesuai. Untuk informasi lebih lanjut tentang metode optimasi, lihat Diagnosis ruang penyimpanan.

Indeks tidak efisien

  • Masalah

    Saat AnalyticDB for MySQL menggunakan indeks untuk penyaringan data, indeks tersebut mungkin tidak berkinerja sesuai harapan jika selektivitas field yang difilter rendah. Selektivitas adalah rasio antara volume data keluaran dan volume data masukan operator filter.

  • Saran

    Pertimbangkan untuk tidak mendorong kondisi filter ke bawah. Sebaliknya, lakukan operasi penyaringan langsung di node komputasi. Untuk informasi lebih lanjut, lihat Jangan dorong kondisi filter ke bawah.