All Products
Search
Document Center

Database Autonomy Service:Query governance

Last Updated:Jul 18, 2026

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.

    Catatan

    Mulai 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 show, create, xa, commit, rollback, select sleep, atau explain.

Prosedur

  1. Masuk ke DAS console.
  2. Di panel navigasi kiri, pilih Intelligent O&M Center > Query Governance.

  3. 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.

      Catatan

      DAS 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.

      Catatan

      Filter-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, atau explain.

    FUZZY_LIKE

    Fuzzy LIKE query

    Notice

    Klausa like digunakan 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 IN berisi 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 join lebih dari tiga tabel. Bidang yang Anda join harus 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 JOIN untuk performa yang lebih baik.

    DEEP_PAGING

    Deep paging

    Critical

    Kueri menggunakan klausa LIMIT untuk 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 NULL atau IS NOT NULL untuk memeriksa nilai NULL, karena perbandingan langsung antara nilai dan NULL selalu menghasilkan NULL.

    COUNT_NOT_STAR

    Improper COUNT syntax

    Critical

    Gunakan COUNT(*) alih-alih count(column_name) atau count(constant). count(*) adalah sintaks standar untuk menghitung baris menurut definisi SQL92. Sintaks ini independen terhadap database dan tidak terpengaruh oleh nilai NULL atau non-NULL. count(column_name) tidak menghitung baris di mana kolom memiliki nilai NULL.

    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.

    Catatan

    Pertimbangkan 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.

      Catatan

      Data 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

CreateQueryOptimizeTag

Menambahkan tag ke kueri SQL target.

GetQueryOptimizeExecErrorStats

Mendapatkan data templat untuk eksekusi SQL yang gagal.

GetQueryOptimizeExecErrorSample

Mendapatkan data sampel untuk eksekusi SQL yang gagal.

GetQueryOptimizeSolution

Mendapatkan saran tata kelola untuk kueri.

GetQueryOptimizeRuleList

Mendapatkan daftar aturan untuk query governance.

GetQueryOptimizeDataTrend

Mendapatkan data tren untuk query governance.

GetQueryOptimizeDataTop

Mendapatkan data untuk daftar instans terbaik dan terburuk.

GetQueryOptimizeDataStats

Mendapatkan data templat untuk query governance.

GetQueryOptimizeTag

Mendapatkan tag dari kueri SQL tertentu.

GetQueryOptimizeShareUrl

Mendapatkan URL yang dapat dibagikan untuk hasil query governance.