全部产品
Search
文档中心

AnalyticDB:Gunakan detail tahap dan tugas untuk menganalisis kueri

更新时间:Jul 06, 2025

Setelah node akses frontend dari kluster AnalyticDB for MySQL menerima permintaan kueri, kluster membagi kueri menjadi beberapa tahap. Data kemudian dibaca dan dihitung secara terdistribusi pada node pekerja dan node eksekutor. Beberapa tahap dapat dieksekusi secara paralel, sementara tahap lain dengan dependensi hanya dapat dieksekusi secara seri. Akibatnya, pernyataan SQL yang kompleks dapat menyebabkan masalah kueri lambat. Anda dapat menggunakan detail tahap dan tugas untuk menganalisis masalah ini melalui operasi API atau di konsol AnalyticDB for MySQL. Topik ini menjelaskan cara menggunakan detail tahap dan tugas untuk menganalisis kueri.

Prosedur

  1. Masuk ke konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi sisi kiri, klik Clusters. Temukan kluster yang ingin dikelola dan klik ID kluster.

  2. Di panel navigasi sisi kiri, klik Diagnostics and Optimization.

  3. Pada tab SQL Queries, temukan kueri yang ingin didiagnosis dan klik Diagnose di kolom Aksi.

  4. Klik tab Stages & Tasks untuk melihat detail sebuah tahap. Untuk informasi tentang hasil kueri tahap, lihat bagian "Parameter tahap" dari topik ini.image

  5. Klik stage ID untuk melihat detail semua tugas dalam tahap tersebut. Untuk informasi tentang hasil kueri tugas, lihat bagian "Parameter tugas" dari topik ini.

    Penting

    Anda hanya dapat melihat detail tugas untuk kueri yang memakan waktu lebih dari 1 detik.

Parameter

Parameter tahap

Parameter

Deskripsi

ID Tahap

Pengenal unik dari tahap, yang sesuai dengan ID tahap dalam pohon rencana eksekusi.

Status

Status eksekusi tahap. Nilai valid:

  • Selesai: Semua tugas dalam tahap telah dieksekusi.

  • Gagal: Satu atau lebih tugas dalam tahap gagal.

  • Berjalan: Tugas dalam tahap sedang berjalan.

  • Dibatalkan: Satu atau lebih tugas dalam tahap dibatalkan.

Jumlah Baris Data Masukan

Jumlah baris data yang dimasukkan ke dalam tahap.

Jumlah Data Masukan

Jumlah data yang dimasukkan ke dalam tahap.

Jumlah Baris Data Keluaran

Jumlah baris data yang dikeluarkan dari tahap.

Jumlah Data Keluaran

Jumlah data yang dikeluarkan dari tahap.

Memori Puncak

Penggunaan memori puncak dari tahap.

Durasi Kumulatif

Jumlah total waktu yang dikonsumsi untuk mengeksekusi semua operator dalam tahap.

Anda dapat menggunakan parameter ini untuk mengidentifikasi tahap yang membutuhkan waktu lama untuk dieksekusi dan mengonsumsi banyak sumber daya CPU. Saat membandingkan durasi kumulatif dengan durasi kueri, Anda harus mempertimbangkan konkurensi tahap.

Parameter tugas

Parameter

Deskripsi

ID Tugas

Pengenal unik dari tugas.

Contoh: 2.24. Dalam contoh ini, 2 menunjukkan ID tahap tempat tugas tersebut berada, dan 24 menunjukkan ID tugas dalam tahap tersebut.

Status

Status eksekusi tugas. Nilai valid:

  • Selesai

  • Gagal

  • Terminated

  • Dibatalkan

Jumlah Data Masukan

Jumlah baris data yang dimasukkan ke dalam tugas dan jumlah data masukan.

Anda dapat mengurutkan jumlah data masukan untuk semua tugas untuk memeriksa apakah terjadi skew data pada data masukan tahap. Skew data dapat disebabkan oleh pengaturan field yang tidak tepat dalam klausa GROUP atau JOIN. Untuk menyelesaikan masalah ini, lacak kembali ke tahap hulu dari tahap tempat tugas saat ini berada.

Catatan

Jika bidang distribusi yang ditentukan tidak tepat, data mungkin didistribusikan secara tidak merata di antara node pekerja. Ini disebut skew data.

Jumlah Data Keluaran

Jumlah baris data yang dikeluarkan dari tugas dan jumlah data keluaran.

Anda dapat memeriksa apakah ada field gabungan dalam klausa GROUP atau JOIN dari pernyataan SQL berdasarkan atribut node Aggregation atau Join dalam pohon rencana operator tahap saat ini. Sebagai contoh, a.id=b.id hanya berisi field id, dan a.id = b.id and a.age=b.age berisi field id dan age.

Memori Puncak

Penggunaan memori puncak dari tugas.

Memori puncak sebanding dengan jumlah data masukan. Anda dapat menggunakan parameter ini untuk memeriksa apakah kegagalan kueri disebabkan oleh distribusi data masukan yang tidak seimbang.

Durasi Membaca Data Tabel

Jumlah total waktu yang dikonsumsi oleh semua operator TableScan dari tahap untuk membaca data tabel.

Parameter ini adalah nilai kumulatif yang melibatkan beberapa node dan thread dan tidak dapat dibandingkan dengan durasi kueri. Jika Anda membandingkan parameter ini dengan durasi kumulatif, Anda dapat menentukan berapa banyak sumber daya komputasi dari tahap yang digunakan untuk pemindaian data.

Jumlah Data Tabel yang Dibaca

Jumlah baris data dan jumlah data yang dibaca oleh semua operator TableScan dari tahap.

Anda dapat mengurutkan jumlah data tabel yang dibaca untuk semua tugas untuk memeriksa apakah terjadi skew data pada data tabel sumber. Jika skew data terjadi, Anda dapat memeriksa apakah skew data tersebut disebabkan oleh bidang distribusi di konsol AnalyticDB for MySQL. Untuk informasi lebih lanjut, lihat Diagnosis pemodelan data.

Dibuat Pada

Waktu ketika tugas dibuat.

Durasi Antrian

Jumlah waktu antrian tugas sebelum eksekusi.

Selesai Pada

Waktu ketika tugas selesai.

Interval Waktu Mulai dan Selesai

Interval antara waktu pembuatan dan waktu selesai tugas. Sebagai contoh, jika tugas dibuat pada 2022-12-12 12:00:00 dan selesai pada 2022-12-12 12:00:04, interval waktu mulai dan selesai adalah 4 detik.

Jika Anda membandingkan parameter ini dengan durasi kueri, Anda dapat mengidentifikasi penyebab utama pelaksanaan lambat. Sebagai contoh, jika durasi kueri adalah 6 detik dan interval waktu mulai dan selesai adalah 4 detik, tahap saat ini adalah alasan utama mengapa kueri membutuhkan waktu lama untuk dieksekusi. Untuk informasi lebih lanjut, lihat bagian "Contoh perhitungan durasi tugas dan konkurensi" dari topik ini.

Durasi Kumulatif

Jumlah total waktu yang dikonsumsi oleh semua thread dari semua tugas dalam tahap. Untuk informasi lebih lanjut, lihat bagian "Contoh perhitungan durasi tugas dan konkurensi" dari topik ini.

Rasio Waktu Komputasi

Rasio durasi komputasi data terhadap siklus hidup subtugas.

Parameter ini dapat dihitung dengan menggunakan rumus berikut: Rasio waktu komputasi = (Durasi kumulatif/Konkurensi subtugas)/Interval waktu mulai dan selesai. Dalam rumus ini, (Durasi kumulatif/Konkurensi subtugas) menunjukkan jumlah rata-rata waktu yang dikonsumsi oleh setiap thread untuk menghitung data. Interval waktu mulai dan selesai mencakup waktu komputasi data aktual, durasi antrian subtugas, dan latensi jaringan. Untuk informasi lebih lanjut, lihat bagian "Contoh perhitungan durasi tugas dan konkurensi" dari topik ini.

Catatan

Interval waktu mulai dan selesai yang lebih lama menghasilkan rasio waktu komputasi yang lebih kecil. Dalam hal ini, Anda perlu mengidentifikasi operator yang mengonsumsi waktu lama. Interval waktu mulai dan selesai yang lebih pendek menghasilkan rasio waktu komputasi yang lebih besar. Dalam hal ini, Anda perlu fokus pada masalah seperti antrian dan latensi jaringan.

Konkurensi Subtugas

Jumlah thread yang secara bersamaan mengeksekusi tugas pada sebuah node. Untuk informasi lebih lanjut, lihat bagian "Contoh perhitungan durasi tugas dan konkurensi" dari topik ini.

Node Eksekusi

Alamat IP dari node tempat tugas dieksekusi. Jika masalah ekor panjang terjadi pada node yang sama untuk beberapa kueri, Anda harus memeriksa node ini.

Catatan

Masalah ekor panjang di AnalyticDB for MySQL mengacu pada situasi di mana beberapa tugas membutuhkan waktu jauh lebih lama untuk dieksekusi daripada tugas lainnya.

Contoh perhitungan durasi tugas dan konkurensi

Dalam contoh ini, interval waktu mulai dan selesai, durasi kumulatif, rasio waktu komputasi, dan konkurensi subtugas dari Tugas 2.1 dihitung.

Tugas 2.1 termasuk dalam Tahap 2. Anggaplah bahwa Tahap 2 terdiri dari empat operator: StageOutput, Join, TableScan, dan RemoteSource. Gambar berikut menunjukkan diagram pohon operator dari Tahap 2.image

Operator-operator ini dieksekusi secara bersamaan pada beberapa node dalam arah panah. Pada node dengan alamat IP 192.168.12.23, Tugas 2.1 dieksekusi dengan empat thread bersamaan. Keempat thread tersebut masing-masing mengonsumsi 5, 5, 6, dan 6 detik untuk menghitung data, seperti yang ditunjukkan pada gambar berikut.

image

  • Durasi kumulatif tugas: 5s + 5s + 6s + 6s = 22s.

  • Interval waktu mulai dan selesai: 10s.

  • Rasio waktu komputasi: (22s/4)/10s = 0,55.

Operasi terkait

Operasi

Deskripsi

DescribeDiagnosisSQLInfo

Menanyakan informasi eksekusi tentang pernyataan SQL.

DescribeDiagnosisTasks

Menanyakan informasi eksekusi tentang tugas terdistribusi dalam tahap kueri.