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 Anda harus merupakan salah satu dari berikut:
-
ApsaraDB RDS for MySQL
-
PolarDB for MySQL
-
MyBase MySQL
-
ApsaraDB RDS for PostgreSQL
-
-
Fitur ini mendukung instansiasi basis data di wilayah Tiongkok daratan, China (Hong Kong), dan Singapura.
CatatanMulai 1 April 2023, query governance mendukung instansiasi basis data di wilayah China (Hong Kong) dan Singapura.
-
Layanan O&M telah diaktifkan.
Tutorial video
Batasan
-
Query governance 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 merupakan 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 DAS console.
-
Di panel navigasi kiri, pilih Intelligent O&M Center > Query Governance.
-
Di halaman Query Governance, lihat hasil query governance.
Filter berdasarkan rentang waktu, wilayah, dan engine, atau masukkan ID instans untuk melihat hasil instans tertentu.
-
Query Governance Overview: Lihat hasil setelah sistem memberi tag dan mengklasifikasikan templat SQL.
CatatanDAS hanya menghitung Failed SQL Executions pada instans yang telah mengaktifkan DAS Enterprise Edition.
-
Query Governance Trend: Lihat tren hasil query governance dalam rentang waktu yang dipilih.
-
Top Rankings: Lihat daftar Best-performing Instances dan Worst-performing Instances.
-
Worst-performing Instances: Mengurutkan instans berdasarkan jumlah eksekusi kueri lambat secara menurun untuk mengidentifikasi instans paling bermasalah.
-
Best-performing Instances: Mengurutkan instans secara menaik berdasarkan perubahan jumlah eksekusi kueri lambat. Nilai negatif menunjukkan lebih sedikit eksekusi kueri lambat (optimasi baik), sedangkan nilai positif menunjukkan lebih banyak.
DAS merekomendasikan Anda fokus pada peringkat untuk Optimizable SQL.
-
-
SQL to Be Optimized: Atur filter untuk mengidentifikasi pernyataan SQL yang memerlukan tata kelola.
CatatanFilter-filter ini dikombinasikan dengan logika AND.
-
Pisahkan beberapa nama database dengan koma (,) untuk menggabungkannya dengan logika OR.
-
Pisahkan beberapa kata kunci SQL dengan spasi untuk menggabungkannya dengan logika AND.
-
Pisahkan beberapa username database dengan koma (,) untuk menggabungkannya dengan logika OR.
-
Memilih beberapa tag aturan akan menggabungkannya dengan logika OR.
-
Di kolom Actions untuk sampel SQL target, klik Suggestions untuk melihat saran tata kelola detail.
-
Di kolom Actions untuk sampel SQL target, klik Add Tag untuk memberi tag manual pernyataan SQL tersebut. Untuk informasi selengkapnya tentang tag, lihat Manual Tagging.
Anda juga dapat memilih dan memberi tag beberapa pernyataan SQL sekaligus.
-
Di kolom Actions untuk sampel SQL target, klik Samples untuk melihat detail sampel log kueri lambat untuk pernyataan SQL tersebut.
-
Di kolom Actions untuk sampel SQL target, klik Trend untuk melihat detail analisis log kueri lambat untuk pernyataan SQL tersebut. Untuk informasi selengkapnya tentang analisis log kueri lambat, lihat Slow query logs.
Ekspor dan bagikan data pernyataan SQL yang dapat dioptimalkan sesuai kebutuhan. Untuk informasi selengkapnya, lihat best practices.
-
-
Failed SQL: Atur filter untuk mengidentifikasi pernyataan SQL yang ingin Anda lihat.
Catatan-
DAS hanya menghitung Failed SQL pada instans yang telah mengaktifkan DAS Enterprise Edition.
-
Anda dapat memfilter berdasarkan nama database dan kata kunci SQL. Kedua filter ini dikombinasikan dengan logika AND.
-
Nama database ganda dipisahkan dengan koma (,) dan dikombinasikan dengan logika OR.
-
Kata kunci SQL ganda dipisahkan dengan spasi dan dikombinasikan dengan logika AND.
-
Di kolom Actions untuk sampel SQL target, klik Samples untuk melihat detail sampel pernyataan SQL tersebut.
-
-
Best practices
-
Gunakan tag untuk menentukan apakah kueri SQL perlu dioptimalkan:
Tata kelola mengklasifikasikan pernyataan dari daftar Overall Slow SQL menjadi dua kategori: Optimization Not Required dan Optimizable SQL. Gunakan tag SQL berikut untuk memfilter dan memprioritaskan pernyataan tersebut.
ID
Tag name
Level
Recommendation
Description
NEW_SQL
New slow SQL
Critical
✔️
Kueri SQL lambat yang tidak 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, sehingga 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 deep paging. 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, 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
➖
Dieksekusi pada waktu tetap setiap hari.
Fokus pada Optimizable SQL. Gunakan tag berikut untuk menandai pernyataan SQL sebagai Optimization Not Required dan mengurangi jumlah pernyataan Optimizable SQL. Tag berikut mendukung pemberian tag manual.
ID
Tag name
Level
Description
USER_IGNORE
No need to optimize
Notice
Setelah Anda menambahkan tag ini, DAS mengecualikan kueri 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 unduhan dengan kondisi filter berbeda, seperti instans atau aturan, dan tetapkan kepada pemilik berbeda untuk optimasi.
-
Atau, pilih beberapa catatan SQL untuk hanya mengekspor item tersebut.
-
-
Bagikan data:
Bagikan kueri SQL lambat yang telah difilter kepada anggota tim dengan dua cara:
-
Anda dapat memilih beberapa catatan SQL dan mengklik Batch Sharing. Sistem akan menghasilkan tautan pendek. Saat pengguna yang memiliki izin mengakses DAS console 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 DAS console dapat membuka URL tersebut untuk melihat data yang sama tanpa perlu mengatur ulang filter.
-
Referensi API
|
API |
Description |
|
Menambahkan tag ke kueri SQL target. |
|
|
Mendapatkan data templat untuk eksekusi SQL yang gagal. |
|
|
Mendapatkan data sampel untuk eksekusi SQL yang gagal. |
|
|
Mendapatkan saran tata kelola untuk kueri. |
|
|
Mendapatkan daftar aturan untuk query governance. |
|
|
Mendapatkan data tren untuk query governance. |
|
|
Mendapatkan data untuk daftar instans terbaik dan terburuk. |
|
|
Mendapatkan data templat untuk query governance. |
|
|
Mendapatkan tag dari kueri SQL tertentu. |
|
|
Mendapatkan URL yang dapat dibagikan untuk hasil query governance. |