Fitur diagnostik SQL di AnalyticDB for MySQL memvisualisasikan rencana eksekusi untuk kueri SQL dalam bentuk diagram pohon. Pohon rencana eksekusi terdiri dari dua lapisan: lapisan stage dan lapisan operator. Topik ini menjelaskan cara menggunakan pohon rencana eksekusi pada kedua lapisan tersebut untuk menganalisis performa kueri.
Pohon rencana eksekusi lapisan stage
Pohon rencana eksekusi lapisan stage terdiri dari beberapa node stage, dengan aliran data mengalir dari bawah ke atas. Proses dimulai dari stage yang berisi operator scan untuk memindai data. Data kemudian diproses melalui stage-stage perantara sebelum node akar di bagian atas mengembalikan hasil kueri ke klien.
Pohon rencana eksekusi lapisan stage menyediakan informasi berikut:
-
Informasi dasar
Setiap persegi panjang dalam diagram merepresentasikan satu stage. Informasi yang ditampilkan mencakup ID stage, jenis output data, serta durasi atau Penggunaan memori. Penggunaan memori akan ditampilkan ketika Anda mengurutkan rencana dengan memilih By Memory.
CatatanIkon peringatan merah pada suatu stage dalam pohon rencana eksekusi menunjukkan bahwa stage tersebut berpotensi untuk dioptimalkan.
-
Baris output
Angka pada garis yang menghubungkan dua stage berdekatan merepresentasikan jumlah baris yang dioutput oleh stage hulu ke stage hilir. Semakin banyak baris yang dioutput, semakin tebal garis penghubungnya.
-
Metode output data
Ini adalah metode yang digunakan untuk mentransfer data antara stage hulu dan hilir. AnalyticDB for MySQL mendukung metode output data berikut.
Metode output
Deskripsi
Broadcast
Menyalin data dari setiap compute node pada stage hulu ke semua compute node pada stage hilir.

Repartition
Mempartisi data dari setiap compute node pada stage hulu berdasarkan aturan tertentu, lalu mendistribusikannya ke compute node tertentu pada stage hilir.

Gather
Mengirim data dari setiap compute node pada stage hulu ke satu compute node spesifik pada stage hilir.

-
10 stage teratas berdasarkan penggunaan memori atau durasi eksekusi
Tab Top 10 Nodes in Descending Order by Duration or Memory di sisi kanan pohon rencana eksekusi mencantumkan ID dan persentase yang sesuai untuk 10 stage teratas yang menyumbang proporsi terbesar terhadap total durasi kueri atau total Penggunaan memori.
Catatan-
Secara default, stage diurutkan By Duration. Anda juga dapat memilih By Memory di pojok kanan atas pohon rencana eksekusi.
-
Tab Top 10 Nodes in Descending Order by Duration or Memory tidak menampilkan stage yang Penggunaan memorinya atau durasi eksekusinya kurang dari 1% dari total.
-
Karena perbedaan metode statistik, jumlah persentase durasi atau memori untuk seluruh stage dalam suatu kueri mungkin tidak sama dengan 100%.
-
-
Diagnostic Results
Klik suatu stage, misalnya Stage[1], dalam pohon rencana eksekusi untuk melihat detailnya di panel Diagnostic Results di sebelah kanan. Detail tersebut mencakup dua jenis diagnostik:
-
Diagnostik stage: Memberikan deskripsi rinci mengenai hasil diagnostik untuk stage target, termasuk masalah yang teridentifikasi seperti broadcast data volume besar atau data skew, serta rekomendasi optimasi yang sesuai.
-
Diagnostik operator: Hanya menampilkan nama operator bermasalah dalam stage saat ini dan ringkasan singkat mengenai isu tersebut. Untuk deskripsi lengkap dan solusi optimasi, lihat pohon rencana eksekusi lapisan operator. Untuk informasi lebih lanjut, lihat Operator layer execution plan tree.
Untuk informasi lebih lanjut mengenai hasil diagnostik suatu stage, lihat Stage-level diagnostic results.
-
-
Statistics
Di bawah panel Diagnostic Results, bagian Statistics menampilkan metrik untuk stage target.
Metrik
Deskripsi
Peak Memory
Puncak memori yang dikonsumsi oleh stage. Sistem secara otomatis memilih satuan (Bytes, KB, MB, GB, atau TB) berdasarkan konsumsi memori aktual.
Cumulative Duration
Jumlah waktu eksekusi semua operator dalam stage tersebut, diagregasi di seluruh compute node dan thread. Sistem secara otomatis memilih satuan (ms, s, m, atau h) berdasarkan durasi aktual.
CatatanDurasi kumulatif ini tidak dapat dibandingkan langsung dengan total durasi kueri.
Output Rows
Jumlah baris yang dioutput oleh stage.
Amount of Output Data
Ukuran data yang dioutput oleh stage. Sistem secara otomatis memilih satuan (Bytes, KB, MB, GB, atau TB) berdasarkan ukuran data aktual.
Input Rows
Jumlah baris yang diinput ke stage.
Amount of Input Data
Ukuran data yang diinput ke stage. Sistem secara otomatis memilih satuan (Bytes, KB, MB, GB, atau TB) berdasarkan ukuran data aktual.
Scanned Rows
Jumlah baris yang dipindai oleh stage.
CatatanMetrik ini hanya tersedia jika stage berisi operator scan.
Scan Size
Ukuran data yang dipindai oleh stage. Sistem secara otomatis memilih satuan (Bytes, KB, MB, GB, atau TB) berdasarkan ukuran data aktual.
CatatanMetrik ini hanya tersedia jika stage berisi operator scan.
Pohon rencana eksekusi lapisan operator
Rencana eksekusi lapisan operator terdiri dari beberapa operator. Setiap persegi panjang dalam diagram merepresentasikan satu operator, dan data mengalir dari bawah ke atas. Proses dimulai dari operator di bagian bawah pohon, seperti TableScan dan RemoteSource, yang memindai data atau menerimanya dari jaringan. Data kemudian melewati operator-operator perantara. Terakhir, operator akar, seperti StageOutput atau Output, di bagian atas mengirimkan data ke stage hilir atau mengembalikan hasil kueri akhir ke klien.
Untuk melihat pohon rencana eksekusi lapisan operator, arahkan kursor ke suatu stage dan klik View Stage Plans pada kotak pop-up untuk membuka halaman detail rencana untuk stage tersebut.
Pohon rencana eksekusi lapisan operator menyediakan informasi berikut:
Ikon peringatan merah pada suatu operator dalam pohon rencana eksekusi menunjukkan bahwa operator tersebut berpotensi untuk dioptimalkan.
-
Informasi dasar
Setiap persegi panjang dalam diagram merepresentasikan satu operator. Informasi yang ditampilkan mencakup nama dan ID operator, properti operator seperti join conditions and algorithm untuk operator
Join, serta durasi atau Penggunaan memori. Penggunaan memori akan ditampilkan ketika Anda mengurutkan rencana dengan memilih By Memory. -
Baris output
Angka pada garis yang menghubungkan dua operator berdekatan merepresentasikan jumlah baris yang dioutput oleh operator hulu ke operator hilir. Semakin banyak baris yang dioutput, semakin tebal garis penghubungnya.
-
10 operator teratas berdasarkan penggunaan memori atau durasi eksekusi
Tab Top 10 Nodes in Descending Order by Duration or Memory di sisi kanan pohon rencana eksekusi menampilkan ID dan rasio yang sesuai untuk 10 operator teratas yang menyumbang persentase terbesar terhadap total durasi kueri atau total Penggunaan memori.
Catatan-
Secara default, operator diurutkan By Duration. Anda juga dapat memilih By Memory di pojok kanan atas pohon rencana eksekusi.
-
Tab Top 10 Nodes in Descending Order by Duration or Memory tidak menampilkan operator yang Penggunaan memorinya atau durasi eksekusinya kurang dari 1% dari total.
-
Karena perbedaan metode statistik, jumlah persentase durasi atau memori untuk seluruh operator dalam suatu stage mungkin tidak sama dengan 100%.
-
-
Diagnostic Results
Klik suatu operator, misalnya Join[36148], dalam pohon rencana eksekusi untuk melihat detailnya di panel Diagnostic Results di sebelah kanan. Detail tersebut mencakup masalah yang teridentifikasi, seperti data explosion atau tabel kanan yang terlalu besar dalam
join, serta rekomendasi optimasi yang sesuai. Untuk informasi lebih lanjut mengenai diagnostik operator, lihat Operator-level diagnostic results. -
Statistics
Di bawah panel Diagnostic Results, bagian Statistics menampilkan metrik untuk operator target.
Metrik
Deskripsi
Peak Memory
Puncak memori yang dikonsumsi oleh operator. Sistem secara otomatis memilih satuan (Bytes, KB, MB, GB, atau TB) berdasarkan konsumsi memori aktual.
Time Consumed
Durasi rata-rata operator pada tingkat konkurensi tertentu. Sistem secara otomatis memilih satuan (ms, s, m, atau h) berdasarkan durasi aktual.
CatatanDurasi ini dapat dibandingkan dengan total durasi kueri.
Output Rows
Jumlah baris yang dioutput oleh operator.
Amount of Output Data
Ukuran data yang dioutput oleh operator. Sistem secara otomatis memilih satuan (Bytes, KB, MB, GB, atau TB) berdasarkan ukuran data aktual.
Input Rows
Jumlah baris yang diinput ke operator.
Amount of Input Data
Ukuran data yang diinput ke operator. Sistem secara otomatis memilih satuan (Bytes, KB, MB, GB, atau TB) berdasarkan ukuran data aktual.
Builder Statistics
Berisi informasi mengenai builder, seperti tipe, puncak memori, durasi, baris input/output, dan volume data. Tipe builder berikut tersedia:
-
HashBuilder: Digunakan untuk membangun tabel hash dalam komputasi hash join. -
SetBuilder: Digunakan untuk membangun struktur set dalam komputasi semi-join. -
NestLoopBuilder: Digunakan untuk melakukan komputasi nested-loop join.
CatatanMetrik ini hanya tersedia untuk operator join.
Properties
Properti bervariasi tergantung pada tipe operator. Sebagai contoh, properti operator join mencakup jenis join dan metode. Untuk informasi lebih lanjut, lihat Operators.
-