全部产品
Search
文档中心

Database Autonomy Service:Pembatasan SQL

更新时间:Nov 11, 2025

Database Autonomy Service (DAS) menyediakan fitur Pembatasan SQL yang memungkinkan Anda mengontrol jumlah permintaan akses database dan pernyataan SQL konkuren untuk memastikan ketersediaan layanan. Topik ini menjelaskan cara menggunakan fitur tersebut.

Prasyarat

Engine database berikut didukung:

  • ApsaraDB RDS for MySQL 5.6, 5.7, dan 8.0.

  • ApsaraDB RDS for PostgreSQL 13 dan versi yang lebih baru.

    Catatan
    • PostgreSQL 13: versi mesin minor harus 20250430 atau lebih baru.

    • PostgreSQL 14 atau 15: Versi mesin minor harus 20230330 atau lebih baru.

    • PostgreSQL versi di atas 15: Tidak ada persyaratan untuk versi mesin minor.

  • PolarDB for MySQL 5.6, 5.7, dan 8.0.

  • PolarDB-X 2.0.

Pesan pembatasan

Setelah Anda membuat aturan pembatasan SQL, sistem database akan mengembalikan pesan jika suatu aplikasi menjalankan pernyataan SQL yang berisi semua kata kunci yang ditentukan atau cocok dengan templat. Pesan yang dikembalikan bervariasi tergantung pada versi instans.

Konkurensi maksimum

Versi instance

Kode kesalahan

Pesan kesalahan

0 atau bilangan bulat positif

  • ApsaraDB RDS for MySQL 5.6

  • ApsaraDB RDS for MySQL 5.7 dengan versi mesin minor sebelum 20200630

  • PolarDB for MySQL 5.6

1317

query execution was interrupted

Bilangan bulat positif

ApsaraDB RDS for MySQL 5.7 dengan versi mesin minor 20200630 atau lebih baru

5041

Concurrency control waiting count exceed max waiting count

Catatan

Jika konkurensi maksimum adalah bilangan bulat positif, pernyataan SQL terkait akan masuk ke status Concurrency control waiting. Ketika jumlah pernyataan SQL yang menunggu melebihi nilai parameter ccl_max_waiting_count, pesan ini akan dikembalikan jika didukung oleh versi instans.

ApsaraDB RDS for MySQL 8.0

7534

PolarDB for MySQL 5.7

3277

PolarDB for MySQL 8.0

7533

0

ApsaraDB RDS for MySQL 5.7 dengan versi mesin minor 20200630 atau lebih baru

5042

Concurrency control refuse to execute query

Catatan

Jika konkurensi maksimum adalah 0, kesalahan akan langsung dikembalikan.

ApsaraDB RDS for MySQL 8.0

7535

PolarDB for MySQL 5.7

3278

PolarDB for MySQL 8.0

7534

Catatan
  • Saat DAS melakukan pembatasan pernyataan SQL, DAS memeriksa parameter ccl_max_waiting_count. Jika parameter ini diatur ke 0, DAS menggunakan nilai default 10. Jika parameter diatur ke nilai lebih besar dari 0, DAS menggunakan nilai yang dikonfigurasi.

  • Untuk instans ApsaraDB RDS for MySQL 5.7 dengan versi mesin minor 20200630 atau lebih baru dan instans ApsaraDB RDS for MySQL 8.0, Anda dapat mengatur parameter ccl_wait_timeout jika didukung oleh versi instans. Jika parameter ini diatur, pernyataan SQL dalam status Concurrency control waiting yang melebihi batas waktu tersebut tetap dijalankan dan tidak lagi dibatasi.

  • Untuk instans PolarDB for MySQL 8.0, Anda dapat mengatur parameter ccl_mode untuk mengontrol perilaku pernyataan SQL saat batas konkurensi terlampaui. Parameter ini hanya tersedia pada versi instans yang mendukung.

    • WAIT (default): Pernyataan menunggu dalam antrean.

    • REFUSE: Pernyataan tidak menunggu, dan kesalahan langsung dikembalikan.

Skenario

Skenario

Deskripsi

Kenaikan tajam pada konkurensi jenis pernyataan SQL tertentu

Penetrasi cache atau panggilan abnormal dapat menyebabkan peningkatan mendadak pada konkurensi SQL.

Pernyataan SQL yang menyebabkan kesenjangan data

Misalnya, sering melakukan kueri data panas selama promosi penjualan dapat menyebabkan sistem secara keseluruhan menjadi sibuk.

Tabel indeks yang hilang

Misalnya, volume tinggi panggilan SQL pada tabel tanpa indeks dapat menyebabkan sistem secara keseluruhan menjadi sibuk.

Mode pembatasan

Mode

Deskripsi

Database yang didukung

Keyword Throttling

Membatasi pernyataan SQL yang berisi kata kunci tertentu.

Catatan

Anda tidak dapat membatasi pernyataan SQL tertentu.

  • ApsaraDB RDS for MySQL

  • PolarDB for MySQL

  • PolarDB-X 2.0

SQL Template Throttling

Masukkan contoh SQL. Contoh tersebut diproses menjadi templat. Pernyataan SQL jenis ini kemudian dibatasi.

  • ApsaraDB RDS for MySQL 8.0 dengan versi mesin minor 20230630 atau lebih baru.

  • ApsaraDB RDS for PostgreSQL:

    • Versi 13 dengan versi mesin minor 20250430 atau lebih baru.

    • Versi 14 dengan versi mesin minor 20230330 atau lebih baru.

    • Versi 15 dengan versi mesin minor 20230330 atau lebih baru.

    • Versi di atas 15.

  • PolarDB for MySQL:

    • Versi 8.0.1 dengan versi mesin minor 8.0.1.1.31 atau lebih baru.

    • Versi 8.0.2 dengan versi mesin minor 8.0.2.2.12 atau lebih baru.

Membatasi pernyataan SQL dengan mencocokkan ID templat SQL. Anda dapat memperoleh ID templat SQL dari log SQL, sesi, dan hasil EXPLAIN.

Catatan

ID templat SQL adalah string heksadesimal 8 karakter.

PolarDB-X 2.0 Edisi Perusahaan

Execution Time Throttling

Membatasi pernyataan SQL berdasarkan waktu eksekusinya. Setelah Anda membuat aturan untuk mode ini, jika waktu eksekusi jenis pernyataan SQL tertentu melebihi ambang batas, ID templat SQL tersebut akan secara otomatis ditambahkan ke aturan pembatasan. Pernyataan SQL tersebut kemudian dieksekusi berdasarkan konkurensi yang ditentukan dalam aturan.

Catatan

Anda juga dapat mengatur batas jumlah ID templat SQL yang dibatasi. Setelah batas tercapai, tidak ada aturan pembatasan tambahan yang dibuat untuk pernyataan SQL lainnya.

PolarDB-X 2.0 Edisi Perusahaan

Prosedur

  1. Masuk ke Konsol DAS.

  2. Di panel navigasi sebelah kiri, klik Operation Center > Instance Monitoring.

  3. Temukan instans target, klik ID instans, lalu buka halaman detail instans.

  4. Di panel navigasi sebelah kiri, klik Instance Sessions.

  5. Di halaman Session Management, klik SQL Throttling.

  6. Di kotak dialog yang muncul, klik Create Throttling Rule.

  7. Di kotak dialog Create Throttling Rule, konfigurasikan parameter berdasarkan engine database.

  8. ApsaraDB RDS for MySQL

    Parameter

    Deskripsi

    Throttling Mode

    Pilih mode pembatasan sesuai kebutuhan.

    SQL Type

    Pilih jenis pernyataan SQL. Nilai yang valid: SELECT, UPDATE, DELETE, dan INSERT.

    Catatan
    • Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Keyword Throttling.

    • Anda hanya dapat membatasi pernyataan INSERT pada engine database berikut:

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 dan 8.0

      • PolarDB-X 2.0

    • Anda tidak dapat membatasi pernyataan INSERT...SELECT....

    Database

    Database tempat pernyataan SQL dibatasi.

    Catatan

    Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke SQL Template Throttling.

    Maximum Concurrency

    Jumlah maksimum pernyataan SQL konkuren. Nilai minimum adalah 0.

    Catatan

    Pembatasan dipicu ketika jumlah pernyataan SQL konkuren yang sedang berjalan dan memenuhi kebijakan mencapai konkurensi maksimum.

    Throttling Duration

    Periode efektif aturan pembatasan SQL.

    Penting

    Pembatasan SQL adalah tindakan darurat. Atur durasi sesuai kebutuhan dan nonaktifkan aturan ketika tidak diperlukan lagi.

    SQL Keywords

    Kata kunci pernyataan SQL yang akan dibatasi.

    Catatan
    • Parameter ini wajib diisi jika Anda mengatur Throttling mode ke Keyword throttling.

    • Jika Anda menetapkan beberapa kata kunci, aturan pembatasan hanya dipicu jika pernyataan SQL berisi semua kata kunci tersebut. Pisahkan beberapa kata kunci dengan tanda tilde (~). Urutan kata kunci tidak berpengaruh.

      Misalnya, pernyataan aslinya adalah SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673 .

      Kata kunci pembatasan yang sesuai adalah SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id .

    • Anda tidak dapat menetapkan hanya SELECT, INSERT, UPDATE, DELETE sebagai kata kunci pembatasan. Kata kunci bersifat case-sensitive, tetapi beberapa versi instans sebelumnya tidak case-sensitive.

    SQL Sample

    Pernyataan SQL contoh yang akan dibatasi.

    Catatan
    • Parameter ini wajib diisi jika Anda mengatur Throttling mode ke SQL template throttling.

    • Untuk pernyataan SQL kompleks, DAS mengoptimalkan contoh SQL tetapi menjaga templat SQL akhir tetap tidak berubah. Efek pembatasan tidak terpengaruh oleh optimasi tersebut.

      Misalnya, jika Anda memasukkan select name from das where name = `das` and age = 21 limit 20,

      templatnya menjadi select name from das where name = ? and age = ? limit ?,

      kemudian ditulis ulang menjadi select name from das where name = `param0` and age = `param1` limit 20.

    ApsaraDB RDS for PostgreSQL

    Parameter

    Deskripsi

    Throttling Mode

    ApsaraDB RDS for PostgreSQL hanya mendukung SQL template throttling.

    Database

    Database tempat pernyataan SQL dibatasi.

    Search Path

    Jalur pencarian untuk pembatasan SQL.

    Catatan

    Pisahkan beberapa jalur dengan koma (,). Nilai default adalah information_schema,public.

    Maximum Concurrency

    Jumlah maksimum pernyataan SQL konkuren. Nilai minimum adalah 0.

    Catatan

    Pembatasan dipicu ketika jumlah pernyataan SQL konkuren yang sedang berjalan dan memenuhi kebijakan mencapai konkurensi maksimum.

    Maximum Waiting Count

    Jumlah maksimum pernyataan yang menunggu.

    Throttling Duration

    Periode efektif aturan pembatasan SQL.

    Penting

    Pembatasan SQL adalah tindakan darurat. Atur durasi sesuai kebutuhan dan nonaktifkan aturan ketika tidak diperlukan lagi.

    SQL Sample

    Pernyataan SQL contoh yang akan dibatasi.

    Catatan
    • Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke SQL Template Throttling.

    • Untuk pernyataan SQL kompleks, DAS membuat templat dari contoh SQL tetapi menjaga templat SQL akhir tetap tidak berubah. Efek pembatasan tidak terpengaruh oleh transformasi tersebut.

      Misalnya, jika Anda memasukkan select name from das where name = "das" and age = 21 limit 20,

      templatnya menjadi select name from das where name = ? and age = ? limit ?,

      kemudian ditulis ulang menjadi select name from das where name = "param0" and age = "param1" limit 20.

    PolarDB for MySQL

    Parameter

    Deskripsi

    Throttling Mode

    Pilih mode pembatasan sesuai kebutuhan.

    SQL Type

    Pilih jenis pernyataan SQL. Nilai yang valid: SELECT, UPDATE, DELETE, dan INSERT.

    Catatan
    • Anda hanya dapat membatasi pernyataan INSERT pada engine database berikut:

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 dan 8.0

      • PolarDB-X 2.0

    • Anda tidak dapat membatasi pernyataan INSERT...SELECT....

    Maximum Concurrency

    Jumlah maksimum pernyataan SQL konkuren. Nilai minimum adalah 0.

    Catatan

    Pembatasan dipicu ketika jumlah pernyataan SQL konkuren yang sedang berjalan dan memenuhi kebijakan mencapai konkurensi maksimum.

    Database

    Database tempat pernyataan SQL dibatasi.

    Catatan

    Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke SQL Template Throttling.

    Throttling Duration

    Periode efektif aturan pembatasan SQL.

    Penting

    Pembatasan SQL adalah tindakan darurat. Atur durasi sesuai kebutuhan dan nonaktifkan aturan ketika tidak diperlukan lagi.

    SQL Keywords

    Kata kunci pernyataan SQL yang akan dibatasi.

    Catatan
    • Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Keyword Throttling.

    • Jika Anda menetapkan beberapa kata kunci, aturan pembatasan hanya dipicu jika pernyataan SQL berisi semua kata kunci tersebut. Pisahkan beberapa kata kunci dengan tanda tilde (~). Urutan kata kunci tidak berpengaruh.

      Misalnya, pernyataan aslinya adalah SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673 .

      Kata kunci pembatasan yang sesuai adalah SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id .

    • Anda tidak dapat menetapkan hanya SELECT, INSERT, UPDATE, atau DELETE sebagai kata kunci pembatasan. Kata kunci bersifat case-sensitive, tetapi beberapa versi instans sebelumnya tidak case-sensitive.

    SQL Sample

    Pernyataan SQL contoh yang akan dibatasi.

    Catatan
    • Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke SQL Template Throttling.

    • Untuk pernyataan SQL kompleks, DAS membuat templat dari contoh SQL tetapi menjaga templat SQL akhir tetap tidak berubah. Efek pembatasan tidak terpengaruh oleh transformasi tersebut.

      Misalnya, jika Anda memasukkan select name from das where name = "das" and age = 21 limit 20,

      templatnya menjadi select name from das where name = ? and age = ? limit ?,

      kemudian ditulis ulang menjadi select name from das where name = "param0" and age = "param1" limit 20.

    PolarDB-X 2.0

    Parameter

    Deskripsi

    Throttling Mode

    Pilih mode pembatasan sesuai kebutuhan.

    SQL Type

    Pilih jenis pernyataan SQL. Nilai yang valid: SELECT, UPDATE, DELETE, dan INSERT.

    Catatan
    • Anda hanya dapat membatasi pernyataan INSERT pada engine database berikut:

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 dan 8.0

      • PolarDB-X 2.0

    • Anda tidak dapat membatasi pernyataan INSERT...SELECT....

    Maximum Concurrency

    Jumlah maksimum pernyataan SQL konkuren. Nilai minimum adalah 0.

    Catatan

    Pembatasan dipicu ketika jumlah pernyataan SQL konkuren yang sedang berjalan dan memenuhi kebijakan mencapai konkurensi maksimum.

    Throttling Duration

    Periode efektif aturan pembatasan SQL.

    Penting

    Pembatasan SQL adalah tindakan darurat. Atur durasi sesuai kebutuhan dan nonaktifkan aturan ketika tidak diperlukan lagi.

    SQL Keywords

    Kata kunci pernyataan SQL yang akan dibatasi.

    Catatan
    • Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Keyword Throttling.

    • Jika Anda menetapkan beberapa kata kunci, aturan pembatasan hanya dipicu jika pernyataan SQL berisi semua kata kunci tersebut. Pisahkan beberapa kata kunci dengan tanda tilde (~). Urutan kata kunci tidak berpengaruh.

      Misalnya, pernyataan aslinya adalah SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673 .

      Kata kunci pembatasan yang sesuai adalah SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id .

    • Anda tidak dapat menetapkan hanya SELECT, INSERT, UPDATE, atau DELETE sebagai kata kunci pembatasan. Kata kunci bersifat case-sensitive, tetapi beberapa versi instans sebelumnya tidak case-sensitive.

    SQL Template ID

    ID templat SQL yang akan dibatasi. ID berupa string heksadesimal 8 karakter. Pisahkan beberapa ID templat SQL dengan koma (,).

    Catatan

    Parameter ini wajib diisi jika instans adalah PolarDB-X Edisi Perusahaan dan Anda mengatur Throttling Mode ke SQL Template Throttling.

    Minimum SQL Running Time

    Ambang batas waktu eksekusi SQL. Ketika waktu eksekusi pernyataan SQL melebihi ambang batas, sistem akan menambahkan ID templat SQL tempat pernyataan SQL tersebut berada ke aturan pembatasan.

    Catatan

    Parameter ini wajib diisi jika instans adalah PolarDB-X Edisi Perusahaan dan Anda mengatur Throttling Mode ke Execution Time Throttling.

    Maximum Number Of Throttled SQL IDs

    Jumlah maksimum ID templat SQL yang dapat dibatasi berdasarkan waktu eksekusi. Setelah batas ini tercapai, sistem tidak lagi membuat aturan pembatasan untuk pernyataan SQL lain yang waktu eksekusinya melebihi ambang batas.

    Catatan

    Parameter ini wajib diisi jika instans adalah PolarDB-X Edisi Perusahaan dan Anda mengatur Throttling Mode ke Execution Time Throttling.

    Database Account For Throttled SQL

    Akun database tempat pernyataan SQL yang dibatasi berasal.

    Catatan

    Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Keyword Throttling atau SQL Template Throttling.

  9. Klik Submit untuk membuat aturan.

    Setelah aturan pembatasan SQL dibuat, Anda dapat melihat informasi tentang aturan tersebut di tab Running. Tabel berikut menjelaskan parameter-parameter tersebut.

    Catatan

    Parameter-parameter tersebut sedikit berbeda tergantung pada engine database dan mode pembatasan.

    Parameter

    Deskripsi

    Throttling Mode

    Mode yang Anda pilih.

    Throttling Rule

    • Keyword Throttling: Konfigurasi kata kunci pembatasan.

    • SQL Template Throttling: ID templat yang sesuai dengan contoh yang dibatasi.

    • Execution Time Throttling: Ambang batas waktu eksekusi yang dikonfigurasi dan jumlah pernyataan SQL yang dibatasi berdasarkan templat.

    Maximum Concurrency

    Jumlah maksimum pernyataan SQL konkuren.

    Maximum Waiting Count

    Jumlah maksimum pernyataan yang menunggu yang dikonfigurasi dalam aturan pembatasan.

    Catatan

    Parameter ini ditampilkan jika instans database adalah ApsaraDB RDS for PostgreSQL dan Throttling Mode diatur ke SQL Template Throttling.

    Throttling Duration (minutes)

    Periode efektif aturan pembatasan SQL.

    Start Time

    Waktu saat aturan pembatasan dikonfigurasi untuk mulai berlaku.

    Remaining Time

    Sisa waktu sebelum aturan pembatasan kedaluwarsa.

    Throttled SQL Sample

    Konfigurasi contoh SQL yang dibatasi.

    Catatan

    Parameter ini ditampilkan jika Anda mengatur Throttling Mode ke SQL Template Throttling.

    Throttling Template ID

    ID templat yang sesuai dengan contoh SQL yang dibatasi.

    Catatan

    Parameter ini ditampilkan jika Anda mengatur Throttling Mode ke SQL Template Throttling.

    Status

    Aturan yang sedang berjalan memiliki status Enabled.

    Database

    Database tempat pernyataan SQL dibatasi.

    Catatan

    Parameter ini ditampilkan jika Anda mengatur Throttling Mode ke SQL Template Throttling.

    Search Path

    Jalur pencarian yang sesuai dengan pernyataan SQL yang dibatasi.

    Catatan

    Parameter ini ditampilkan jika instans database adalah ApsaraDB RDS for PostgreSQL dan Throttling Mode diatur ke SQL Template Throttling.

    Number Of Matched SQL Statements

    Jumlah pernyataan SQL yang cocok dengan aturan pembatasan.

    Catatan

    Parameter ini ditampilkan jika Anda mengatur Throttling Mode ke SQL Template Throttling.

    Number Of Waiting SQL Statements

    Jumlah pernyataan SQL yang menunggu berdasarkan aturan pembatasan.

    Catatan

    Parameter ini ditampilkan jika Anda mengatur Throttling Mode ke SQL Template Throttling.

    Actions

    Tombol untuk Disable atau Modify aturan pembatasan.

Referensi

Operasi API terkait

API

Deskripsi

EnableSqlConcurrencyControl

Mengaktifkan pembatasan SQL.

DisableSqlConcurrencyControl

Menonaktifkan aturan pembatasan tertentu.

DisableAllSqlConcurrencyControlRules

Menonaktifkan semua aturan pembatasan yang sedang berjalan.

GetRunningSqlConcurrencyControlRules

Mendapatkan aturan pembatasan yang sedang berjalan.

GetSqlConcurrencyControlRulesHistory

Mendapatkan aturan pembatasan yang sedang berjalan atau telah dipicu.

GetSqlConcurrencyControlKeywordsFromSqlText

Menghasilkan kata kunci pembatasan dari pernyataan SQL.