Ketika sebuah kueri berjalan lambat, mengetahui durasi total saja tidak cukup—Anda perlu mengetahui di mana waktu dihabiskan dan bagian mana dari rencana yang menjadi bottleneck. AnalyticDB for MySQL menyediakan fitur SQL diagnostics yang memvisualisasikan rencana eksekusi sebagai bagan hierarki interaktif dua lapisan, yang menunjukkan cara kueri dieksekusi di seluruh kluster (lapisan stage) dan di dalam setiap stage (lapisan operator). Setiap node menampilkan durasi, penggunaan memori, jumlah baris, serta rekomendasi diagnostik, sehingga Anda dapat mengidentifikasi stage atau operator paling lambat tanpa menebak-nebak.
Cara kerja
Rencana eksekusi berupa bagan hierarki dua lapisan:
Stage layer: Menunjukkan cara kueri dibagi menjadi beberapa stage dan bagaimana data berpindah antar node komputasi.
Operator layer: Memperdalam satu stage tertentu untuk menampilkan setiap operator, propertinya, serta penggunaan sumber dayanya.
Data mengalir dari bawah ke atas pada kedua lapisan tersebut. Pada lapisan stage, stage pemindaian (scan) membaca data mentah terlebih dahulu; stage perantara memprosesnya; node akar di bagian atas mengembalikan hasil ke klien. Lapisan operator mengikuti pola yang sama: operator TableScan dan RemoteSource di bagian bawah mengalirkan data ke atas menuju operator StageOutput atau Output di akar.
Jika sistem mendeteksi potensi optimasi untuk suatu stage atau operator, ikon merah berisi tanda seru (!) akan muncul pada node tersebut di bagan.
Stage layer
Lapisan stage memberikan tampilan eksekusi kueri secara keseluruhan kluster.

Apa yang ditampilkan setiap stage
Setiap persegi panjang merepresentasikan satu stage dan menampilkan:
Stage ID
Tipe output data (cara data keluar dari stage ini)
Duration atau consumed memory—alihkan tampilan menggunakan tombol By Duration dan By Memory di pojok kanan atas
Aliran data antar stage
Angka pada garis yang menghubungkan dua stage berdekatan menunjukkan jumlah baris yang dikirim dari stage hulu ke hilir. Garis yang lebih tebal berarti lebih banyak baris.
Data berpindah antar stage menggunakan salah satu dari tiga metode berikut:
| Metode output data | Deskripsi |
|---|---|
| Broadcast | Setiap node komputasi di stage hulu mengirim salinan lengkap datanya ke semua node komputasi di stage hilir. |
| Repartition | Setiap node komputasi di stage hulu mempartisi datanya sesuai aturan tertentu dan mengirim setiap partisi ke node komputasi tujuan di stage hilir. |
| Gather | Setiap node komputasi di stage hulu mengirim seluruh datanya ke satu node komputasi tunggal di stage hilir. |
Top 10 node berdasarkan durasi atau memori
Panel Top 10 Nodes in Descending Order by Duration or Memory di sebelah kanan mencantumkan stage-stage yang memiliki kontribusi terbesar terhadap total durasi atau penggunaan memori kueri. Secara default, panel ini diurutkan berdasarkan durasi. Pilih By Memory untuk beralih ke tampilan berdasarkan penggunaan memori.
Stage yang menyumbang kurang dari 1% terhadap total durasi atau memori tidak ditampilkan—node tersebut terlalu kecil untuk memengaruhi performa kueri secara keseluruhan. Persentase yang ditampilkan mungkin tidak berjumlah 100% karena perbedaan cara pengumpulan metrik.
Hasil diagnostik
Klik suatu stage (misalnya, Stage[1]) untuk membuka panel Diagnostic Results di sebelah kanan. Panel ini berisi:
Stage Diagnostics: Penjelasan rinci mengenai isu yang terdeteksi pada stage tersebut—seperti volume data broadcast yang besar atau data skew—beserta rekomendasi optimasi.
Operator Diagnostics: Ringkasan operator dalam stage tersebut yang memiliki isu terdeteksi. Untuk detail lengkap dan panduan optimasi, masuklah ke lapisan operator.
Untuk daftar lengkap jenis diagnostik tingkat stage, lihat Stage-level diagnostic results.
Statistik stage
Bagian Statistics di bawah Diagnostic Results menampilkan metrik sumber daya untuk stage yang dipilih.
| Metrik | Deskripsi |
|---|---|
| Peak Memory | Memori maksimum yang dikonsumsi oleh stage. Satuan otomatis menyesuaikan ke Bytes, KB, MB, GB, atau TB. |
| Cumulative Duration | Total waktu eksekusi di seluruh node, thread, dan operator dalam stage tersebut. Satuan otomatis menyesuaikan ke ms, s, m, atau h. Nilai ini merupakan jumlah dari seluruh Parallel Worker dan tidak dapat dibandingkan langsung dengan total durasi kueri. |
| Output Rows | Jumlah baris yang dihasilkan oleh stage. |
| Amount of Output Data | Volume data yang dihasilkan oleh stage. Satuan otomatis menyesuaikan ke Bytes, KB, MB, GB, atau TB. |
| Input Rows | Jumlah baris yang diterima oleh stage. |
| Amount of Input Data | Volume data yang diterima oleh stage. Satuan otomatis menyesuaikan ke Bytes, KB, MB, GB, atau TB. |
| Scanned Rows | Jumlah baris yang dibaca dari penyimpanan. Hanya ditampilkan untuk stage yang mengandung operator scan. |
| Scan Size | Volume data yang dibaca dari penyimpanan. Satuan otomatis menyesuaikan ke Bytes, KB, MB, GB, atau TB. Hanya ditampilkan untuk stage yang mengandung operator scan. |
Operator layer
Lapisan operator menampilkan rencana eksekusi di dalam satu stage, hingga ke level operator individual.
Untuk membuka lapisan operator, arahkan kursor ke stage apa pun dan klik View Stage Plans pada tooltip yang muncul.


Apa yang ditampilkan setiap operator
Setiap persegi panjang merepresentasikan satu operator dan menampilkan:
Nama dan ID operator
Properti—misalnya, kondisi join dan algoritma operator JOIN
Duration atau consumed memory—alihkan tampilan menggunakan By Duration dan By Memory
Aliran data antar operator
Angka pada garis yang menghubungkan dua operator berdekatan menunjukkan jumlah baris yang dikirim dari operator hulu ke hilir. Garis yang lebih tebal berarti lebih banyak baris.
Top 10 node berdasarkan durasi atau memori
Panel Top 10 Nodes in Descending Order by Duration or Memory mencantumkan operator-operator yang memiliki kontribusi terbesar terhadap durasi atau penggunaan memori dalam stage tersebut. Secara default, panel ini diurutkan berdasarkan durasi. Pilih By Memory untuk beralih ke tampilan berdasarkan penggunaan memori. Operator yang menyumbang kurang dari 1% terhadap total durasi atau memori tidak ditampilkan. Persentase yang ditampilkan mungkin tidak berjumlah 100% karena perbedaan cara pengumpulan metrik.
Hasil diagnostik
Klik suatu operator (misalnya, Join[36184]) untuk membuka panel Diagnostic Results. Panel ini menampilkan isu yang terdeteksi dan rekomendasi optimasi untuk operator tersebut—seperti data skew atau tabel sisi kanan join yang terlalu besar.

Untuk daftar lengkap jenis diagnostik tingkat operator, lihat Operator-level diagnostic results.
Statistik operator
Bagian Statistics di bawah Diagnostic Results menampilkan metrik sumber daya untuk operator yang dipilih.
| Metrik | Deskripsi |
|---|---|
| Peak Memory | Memori maksimum yang dikonsumsi oleh operator. Satuan otomatis menyesuaikan ke Bytes, KB, MB, GB, atau TB. |
| Time Consumed | Waktu eksekusi rata-rata operator pada tingkat konkurensi aktualnya. Satuan otomatis menyesuaikan ke ms, s, m, atau h. Nilai ini dapat dibandingkan langsung dengan total durasi kueri. |
| Output Rows | Jumlah baris yang dihasilkan oleh operator. |
| Amount of Output Data | Volume data yang dihasilkan oleh operator. Satuan otomatis menyesuaikan ke Bytes, KB, MB, GB, atau TB. |
| Input Rows | Jumlah baris yang diterima oleh operator. |
| Amount of Input Data | Volume data yang diterima oleh operator. Satuan otomatis menyesuaikan ke Bytes, KB, MB, GB, atau TB. |
| Builder Statistics | Statistik fase build untuk operator JOIN, termasuk tipe builder, peak memory, durasi, input rows, output rows, dan volume data. Tersedia tiga tipe builder: HashBuilder (membangun tabel hash untuk hash join), SetBuilder (membangun himpunan untuk semi join), dan NestLoopBuilder (menangani nested loop join). Hanya ditampilkan untuk operator JOIN. |
| Properties | Detail konfigurasi spesifik operator. Untuk operator JOIN, ini mencakup jenis join dan metode join. Untuk daftar lengkap properti operator, lihat Operators. |
Pola performa umum
Pola-pola berikut umumnya muncul dalam rencana eksekusi kueri yang lambat. Gunakan lapisan stage dan operator untuk mengidentifikasinya.
Volume data broadcast yang besar
Broadcast mentransfer salinan lengkap data hulu ke setiap node komputasi hilir. Jika stage hulu berukuran besar, hal ini secara signifikan meningkatkan lalu lintas jaringan dan penggunaan memori. Cari stage dengan output Broadcast dan jumlah baris tinggi pada garis penghubung. Panel Stage Diagnostics akan menandai isu ini dan memberikan rekomendasi optimasi.
Data skew
Data skew terjadi ketika satu node komputasi memproses jauh lebih banyak baris dibandingkan node lainnya. Pada lapisan stage, stage yang skewed biasanya menunjukkan Cumulative Duration tinggi relatif terhadap stage lain yang memiliki fungsi serupa. Panel Diagnostic Results mengidentifikasi skew dan menyarankan solusi optimasi.
Tabel sisi kanan join yang terlalu besar
Untuk operator JOIN, tabel sisi kanan dimuat ke dalam memori selama fase build. Tabel sisi kanan yang terlalu besar menyebabkan Peak Memory tinggi pada operator JOIN. Periksa Builder Statistics di bagian Statistics operator untuk melihat penggunaan memori dan jumlah baris pada fase build. Panel Diagnostic Results akan menandai isu ini jika terdeteksi.