Database Autonomy Service (DAS) menggunakan analisis data offline untuk menganalisis dan secara otomatis memberi tag kueri SQL lambat dari semua instans Anda pada hari sebelumnya. Proses ini dijalankan setiap hari pukul 01.00. DAS secara otomatis mengklasifikasikan kueri SQL lambat, memprioritaskannya untuk optimasi, serta memberikan saran tata kelola dan ekspor data.
Prasyarat
-
Instansiasi basis data target adalah PolarDB for MySQL.
-
Fitur ini mendukung instansiasi basis data di wilayah Tiongkok daratan, China (Hong Kong), dan Singapura.
CatatanMulai 1 April 2023, tata kelola kueri mendukung instansiasi basis data di wilayah China (Hong Kong) dan Singapura.
Batasan
-
Tata kelola kueri menggunakan analisis offline T+1. Jika Anda memberi tag kueri SQL sebagai Optimization Not Required, perubahan jumlah kueri Optimizable SQL akan muncul pada hari berikutnya.
-
Tag SQL bawaan dari DAS tidak dapat dinonaktifkan.
-
Untuk setiap instansiasi basis data, DAS hanya menganalisis 200 kueri SQL lambat teratas berdasarkan jumlah eksekusi. Oleh karena itu, jumlah maksimum Slow SQL Templates untuk setiap instans adalah 200.
Konsep utama
|
Term |
Description |
|
Optimizable SQL |
Setelah mengecualikan SQL statements that do not require optimization dari semua pernyataan SQL lambat, pernyataan yang tersisa adalah Optimizable SQL. |
|
SQL Not Requiring Optimization |
Mencakup kueri yang secara otomatis diberi tag oleh DAS sebagai Ignored dan kueri yang diberi tag manual oleh pengguna sebagai Optimization Not Required. |
|
Ignored |
DAS secara otomatis memberi tag pernyataan SQL sebagai Optimization Not Required, seperti yang diawali dengan |
Prosedur
Masuk ke Konsol DAS.
Di panel navigasi kiri, klik .
Temukan instans target dan klik ID instans untuk membuka halaman detail instans.
-
Di panel navigasi kiri, pilih .
-
Di halaman Query Governance, lihat hasil analisis.
-
Overview of query governance results: Lihat data statistik kueri yang diberi tag dan diklasifikasikan secara otomatis.
CatatanDAS hanya menghitung Failed SQL Executions untuk instans yang telah mengaktifkan DAS Enterprise Edition.
-
Query governance trend: Lihat tren hasil tata kelola kueri dalam rentang waktu yang dipilih.
-
Top Rankings: Lihat daftar Best-performing Instances dan Worst-performing Instances.
-
Worst-performing Instances: Lihat jumlah eksekusi kueri lambat untuk setiap instansiasi basis data.
-
Best-performing Instances: Lihat perubahan jumlah eksekusi kueri lambat untuk setiap instansiasi basis data. Angka negatif menunjukkan penurunan jumlah eksekusi kueri lambat, yang mengindikasikan optimasi berhasil. Angka positif menunjukkan peningkatan.
DAS merekomendasikan agar Anda fokus pada daftar peringkat teratas untuk Optimizable SQL.
-
-
SQL to Be Optimized: Tetapkan kondisi filter untuk mengidentifikasi pernyataan SQL yang ingin Anda optimalkan.
CatatanAnda dapat memfilter pernyataan SQL berdasarkan nama DB, kata kunci SQL, tag aturan, dan username database. Kondisi-kondisi ini digabungkan dengan operator logika AND.
-
Untuk menentukan beberapa nama DB, pisahkan dengan koma (,). Operator logika di antara mereka adalah OR.
-
Untuk menentukan beberapa kata kunci SQL, pisahkan dengan spasi. Operator logika di antara mereka adalah AND.
-
Untuk menentukan beberapa username database, pisahkan dengan koma (,). Operator logika di antara mereka adalah OR.
-
Anda dapat memilih beberapa tag aturan. Operator logika di antara tag aturan tersebut adalah OR.
-
Di kolom Actions sampel SQL tertentu, klik Suggestions untuk melihat saran optimasi terperinci.
-
Di kolom Actions sampel SQL tertentu, klik Add Tag untuk memberi tag manual pernyataan SQL tersebut. Untuk informasi lebih lanjut tentang makna tag, lihat Manually added SQL tags.
Anda juga dapat menambahkan tag ke beberapa pernyataan SQL sekaligus.
-
Di kolom Actions sampel SQL tertentu, klik Samples untuk melihat detail sampel log lambat untuk pernyataan SQL tersebut.
-
Di kolom Actions sampel SQL tertentu, klik Trend untuk melihat detail analisis log lambat pernyataan SQL tersebut. Untuk informasi lebih lanjut tentang analisis log lambat, lihat Slow Logs.
Anda dapat mengekspor dan berbagi data untuk pernyataan SQL yang perlu dioptimalkan. Untuk informasi lebih lanjut, lihat Best practices.
-
-
Failed SQL: Tetapkan kondisi filter untuk mengidentifikasi pernyataan SQL yang ingin Anda lihat.
Catatan-
DAS hanya menghitung templat Failed SQL untuk instans yang telah mengaktifkan DAS Enterprise Edition.
-
Anda dapat memfilter pernyataan SQL berdasarkan nama DB dan kata kunci SQL. Kondisi-kondisi ini digabungkan dengan operator logika AND.
-
Untuk menentukan beberapa nama DB, pisahkan dengan koma (,). Operator logika di antara mereka adalah OR.
-
Untuk menentukan beberapa kata kunci SQL, pisahkan dengan spasi. Operator logika di antara mereka adalah AND.
-
Di kolom Actions sampel SQL tertentu, klik Samples untuk melihat detail sampel SQL tersebut.
-
-
Praktik terbaik
-
Gunakan tag untuk menentukan apakah suatu pernyataan SQL perlu dioptimalkan:
Logika inti tata kelola kueri adalah membagi semua slow queries menjadi dua kategori: Optimization Not Required dan Optimizable SQL. Anda dapat menggunakan tag SQL berikut untuk memfilter kueri secara cepat dan mengoptimalkannya berdasarkan prioritas.
ID
Tag name
Level
Recommendation
Description
NEW_SQL
New slow SQL
Critical
✔️
Kueri SQL lambat yang belum pernah muncul dalam tujuh hari terakhir.
DAS_IGNORE
DAS ignored
Notice
➖
DAS secara otomatis memberi tag kueri sebagai tidak memerlukan optimasi. Contohnya termasuk pernyataan SQL yang diawali dengan
show,create,xa,commit,rollback,select sleep, atauexplain.FUZZY_LIKE
Fuzzy LIKE query
Notice
➖
Klausa
likedigunakan untuk pencocokan kabur, yang mencegah penggunaan indeks.HAS_EXPR
Contains expression
Notice
➖
Kueri berisi ekspresi. Kolom yang terlibat dalam perhitungan tidak dapat menggunakan indeks.
LARGE_IN_LIST
Large IN list
Notice
➖
Klausa
INberisi lebih dari 200 elemen, yang kemungkinan besar dihasilkan oleh program. Indeks tidak dapat digunakan pada kolom yang terlibat.SELECT_STAR
SELECT full column
Notice
➖
Saat menggunakan
SELECT, tentukan hanya bidang yang diperlukan untuk menghindari masalah performa dan pemborosan resource akibat pengembalian kolom yang tidak perlu.INDEX_ADVISOR
Index suggestion
Notice
✔️
Saran untuk membuat indeks guna mempercepat eksekusi SQL.
COMPLEX_JOIN
Complex JOIN
Notice
➖
Jangan
joinlebih dari tiga tabel. Bidang yang Andajoinharus memiliki tipe data yang identik. Untuk join multi-tabel, pastikan bidang join telah diindeks.CROSS_DB
Cross-database query
Notice
➖
Saat melakukan migrasi database dan tabel lintas instans, kueri lintas database mungkin menjadi tidak tersedia.
SUBQUERY
Contains subquery
Notice
➖
Kueri berisi subkueri. Pertimbangkan untuk menulis ulang dengan
JOINuntuk performa yang lebih baik.DEEP_PAGING
Deep paging
Critical
➖
Kueri menggunakan klausa
LIMITuntuk halaman dalam. Kami merekomendasikan menulis ulang kueri dengan join.WITHOUT_PREDICATE
No predicate
Critical
✔️
Pernyataan tidak berisi predikat. Periksa apakah melibatkan pemindaian tabel penuh.
NULL_COMPARE
NULL match error
Critical
➖
Gunakan
IS NULLatauIS NOT NULLuntuk memeriksa nilaiNULL, karena perbandingan langsung antara nilai dan NULL selalu menghasilkan NULL.COUNT_NOT_STAR
Improper COUNT syntax
Critical
➖
Gunakan
COUNT(*)alih-alihcount(column_name) ataucount(constant).count(*)adalah sintaks standar untuk menghitung baris menurut definisi SQL92. Sintaks ini independen terhadap database dan tidak terpengaruh oleh nilaiNULLatau non-NULL.count(column_name) tidak menghitung baris di mana kolom memiliki nilaiNULL.LARGE_ROWS_EXAMINED
Excessive rows scanned
Notice
➖
Kueri memindai lebih dari 50.000 baris rata-rata. Pemindaian berlebihan mengonsumsi lebih banyak resource, yang memperlambat kueri dan dapat memengaruhi performa database secara keseluruhan.
CatatanPertimbangkan untuk menggunakan kondisi filter yang lebih selektif.
LARGE_ROWS_SENT
Excessive rows returned
Notice
➖
Kueri mengembalikan lebih dari 5.000 baris rata-rata. Pertimbangkan untuk mengurangi jumlah baris yang dikembalikan.
NO_ADVICE
No suggestion
Notice
➖
Tidak tersedia saran analisis.
PERIOD_SQL
Periodic SQL
Notice
➖
Dijalankan pada waktu tetap setiap hari.
DAS merekomendasikan agar Anda fokus pada Optimizable SQL. Anda dapat memberi tag kueri sebagai Optimization Not Required, seperti yang dijelaskan dalam tabel di bawah, untuk terus mengurangi jumlah kueri dalam kategori Optimizable SQL. Tag SQL berikut dapat ditambahkan secara manual.
ID
Tag name
Level
Description
USER_IGNORE
No need to optimize
Notice
Setelah Anda menambahkan tag ini, DAS mengecualikan kueri tersebut dari statistik Optimizable SQL pada hari berikutnya.
DAS_IMPORTANT
Important SQL
Notice
Menandai kueri SQL sebagai penting.
DAS_NOT_IMPORTANT
Not important SQL
Notice
Menandai kueri SQL sebagai tidak penting.
DAS_IN_PLAN
Optimization planned
Notice
Menandai kueri SQL sebagai dijadwalkan untuk optimasi.
-
Ekspor data:
-
Anda dapat mengklik Create Export Task untuk mengunduh semua data yang saat ini ditampilkan di tab SQL Details.
CatatanData yang diekspor tersedia untuk diunduh selama tiga hari.
-
Buat tugas unduh dengan kondisi filter berbeda, seperti instans atau aturan, dan tetapkan kepada pemilik berbeda untuk optimasi.
-
Atau, pilih beberapa catatan SQL untuk hanya mengekspor item-item tersebut.
-
-
Berbagi data:
Berbagi kueri SQL lambat yang telah difilter dengan anggota tim melalui dua cara:
-
Anda dapat memilih beberapa catatan SQL dan mengklik Batch Sharing. Sistem akan menghasilkan tautan pendek. Ketika pengguna yang memiliki izin mengakses Konsol DAS mengklik tautan tersebut, mereka hanya akan melihat catatan SQL yang Anda pilih.
-
Atau, klik Share (di samping Export) untuk menghasilkan URL yang menangkap tampilan Anda saat ini, termasuk semua filter. Pengguna dengan izin Konsol DAS dapat membuka URL tersebut untuk melihat data yang sama tanpa perlu mengonfigurasi ulang filter.
-