AnalyticDB for MySQL menyediakan fitur diagnostik SQL untuk mengumpulkan statistik terpisah pada tingkat query, tahap, dan operator. Statistik ini digunakan untuk mendiagnosis masalah serta memberikan saran optimasi. Topik ini menjelaskan cara melihat dan menganalisis hasil diagnosis tingkat query.
Jenis hasil diagnosis
Sejumlah besar data dikembalikan ke klien
- MasalahKetika sejumlah besar data dikembalikan ke klien, query dapat melambat dan memengaruhi penggunaan sumber daya jaringan frontend.Catatan Anda dapat melihat Returned Data di bagian Query Properties halaman detail query. Untuk informasi lebih lanjut, lihat Lihat Properti Query.
- Saran
- Kurangi jumlah data yang dikembalikan ke klien. Sebagai contoh, tambahkan kata kunci LIMIT atau kondisi filter saat melakukan query data.
- Ekspor data ke sistem lain menggunakan tabel eksternal untuk mengurangi jumlah data yang dikembalikan ke klien. Contohnya, Anda dapat mengekspor data ke Object Storage Service (OSS). Untuk informasi lebih lanjut, lihat Ekspor Data ke OSS.
Sejumlah besar sumber daya memori digunakan oleh query
- MasalahQuery mengonsumsi sejumlah besar sumber daya memori, yang dapat menyebabkan kegagalan eksekusi query lain, menurunkan kecepatan eksekusi, dan memengaruhi stabilitas keseluruhan kluster AnalyticDB for MySQL.Catatan Anda dapat melihat Peak Memory di bagian Query Properties halaman detail query. Untuk informasi lebih lanjut, lihat Lihat Properti Query.
- Saran
Tentukan alasan mengapa query mengonsumsi sejumlah besar sumber daya memori. Kemudian, identifikasi tahap atau operator yang mengonsumsi banyak memori menggunakan rencana eksekusi dalam diagnostik SQL AnalyticDB for MySQL. Untuk informasi lebih lanjut, lihat Query Lambat yang Mengonsumsi Sumber Daya Memori dan Gunakan Rencana Eksekusi untuk Menganalisis Query.
Sejumlah besar tahap dihasilkan untuk sebuah query
- MasalahSejumlah besar tahap dihasilkan untuk sebuah query. Hal ini meningkatkan penggunaan sumber daya jaringan dan membuat pemrosesan sistem menjadi lebih kompleks, yang berisiko bagi stabilitas keseluruhan kluster.Catatan Untuk informasi lebih lanjut, lihat Faktor-faktor yang Memengaruhi Kinerja Query.
- Saran
- Sebelum data ditulis ke kluster AnalyticDB for MySQL, gabungkan tabel di kluster untuk mengurangi jumlah tabel.
- Semakin banyak join dalam pernyataan SQL, semakin banyak tahap yang dihasilkan oleh AnalyticDB for MySQL untuk sebuah query. Oleh karena itu, kurangi jumlah join untuk mengurangi jumlah tahap yang dihasilkan.
- Saat menggunakan tampilan materialisasi untuk melakukan query, AnalyticDB for MySQL dapat menggunakan kembali tahap untuk mengurangi jumlah tahap yang dihasilkan untuk sebuah query. Untuk informasi lebih lanjut, lihat Ikhtisar.
Sejumlah besar data dibaca oleh sebuah query
- MasalahSebuah query membaca sejumlah besar data, yang mengonsumsi sumber daya disk I/O secara signifikan dan memengaruhi query lain atau penulisan data.Catatan Anda dapat melihat Scanned Data di bagian Query Properties halaman detail query. Untuk informasi lebih lanjut, lihat Lihat Properti Query.
- Saran
Temukan tahap yang membaca sejumlah besar data dan operator TableScan terkait. Anda dapat melihat Scanned Rows dan Scan Size dari sebuah tahap atau Input Rows dan Amount of Input Data dari operator TableScan di bagian Statistics dari rencana eksekusi pada tingkat tahap atau operator dalam diagnostik SQL AnalyticDB for MySQL. Untuk informasi lebih lanjut, lihat Statistik Status dan Statistik Operator.
Setelah menemukan operator TableScan yang memindai sejumlah besar data, gunakan salah satu metode berikut untuk optimasi:- Tambahkan kondisi filter AND dalam query.
- Atur ulang kondisi filter yang ada untuk mengurangi jumlah data yang difilter.
- Periksa apakah kondisi filter yang tidak didorong ke bawah ada. Jika kondisi filter ini ada, gunakan saran optimasi dalam Kondisi Filter Tidak Didorong ke Bawah untuk melakukan optimasi.