Database Autonomy Service (DAS) menyediakan fitur SQL throttling untuk mengontrol volume permintaan akses database dan konkurensi SQL guna memastikan ketersediaan layanan.
Prasyarat
Engine database yang didukung adalah:
-
ApsaraDB RDS for MySQL 5.6, 5.7, dan 8.0.
-
ApsaraDB RDS for PostgreSQL 13 dan versi yang lebih baru.
Catatan-
Untuk PostgreSQL 13, minor engine version harus 20250430 atau lebih baru.
-
Untuk PostgreSQL 14 atau 15, minor engine version harus 20230330 atau lebih baru.
-
Untuk versi PostgreSQL yang lebih baru dari 15, semua minor engine version didukung.
-
-
PolarDB for MySQL 5.6, 5.7, dan 8.0.
-
PolarDB-X 2.0.
-
MongoDB.
Throttling error messages
Setelah Anda membuat aturan SQL throttling, sistem database akan mengembalikan pesan error tertentu jika aplikasi menjalankan pernyataan SQL yang sesuai dengan kata kunci atau templat aturan tersebut.
|
Maximum concurrency |
Instance version |
Error code |
Error message |
|
0 atau bilangan bulat positif |
|
1317 |
|
|
MongoDB |
56900 |
|
|
|
Bilangan bulat positif |
ApsaraDB RDS for MySQL 5.7 (minor engine version 20200630 atau lebih baru) |
5041 |
Catatan
Maximum concurrency berupa bilangan bulat positif, dan kueri SQL terkait akan berada dalam status |
|
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 (minor engine version 20200630 atau lebih baru) |
5042 |
Catatan
Jika maximum concurrency bernilai 0, error langsung dikembalikan. |
|
ApsaraDB RDS for MySQL 8.0 |
7535 |
||
|
PolarDB for MySQL 5.7 |
3278 |
||
|
PolarDB for MySQL 8.0 |
7534 |
-
Saat DAS melakukan SQL throttling, jika parameter
ccl_max_waiting_countdiatur ke 0, DAS menggunakan nilai default 10. Jika parameter diatur ke nilai lebih besar dari 0, DAS menggunakan nilai yang ditentukan. -
Untuk instans ApsaraDB RDS for MySQL 5.7 (dengan minor version 20200630 atau lebih baru) dan ApsaraDB RDS for MySQL 8.0, jika parameter
ccl_wait_timeoutdiatur (dan didukung oleh versi instans), pernyataan SQL dalam statusConcurrency control waitingtetap dieksekusi dan tidak lagi dibatasi setelah batas waktu tersebut terlampaui. -
Untuk instans PolarDB for MySQL 8.0, Anda dapat mengatur parameter
ccl_modeuntuk mengontrol perilaku pernyataan SQL saat batas konkurensi terlampaui. Parameter ini hanya tersedia pada versi instans yang didukung.-
WAIT (default): Pernyataan menunggu dalam antrean.
-
REFUSE: Pernyataan tidak menunggu, dan error langsung dikembalikan.
-
Skenario
|
Scenario |
Description |
|
Sudden increase in SQL concurrency |
Cache penetration atau panggilan abnormal dapat menyebabkan lonjakan konkurensi SQL secara tiba-tiba. |
|
SQL queries with data skew |
Pertanyaan data hot yang sering dilakukan selama promosi penjualan dapat membebani sistem. |
|
Missing indexes |
Volume tinggi panggilan SQL pada tabel tanpa indeks dapat membebani sistem. |
Throttling modes
|
Mode |
Description |
Supported databases |
|
Keyword throttling |
Membatasi pernyataan SQL yang mengandung kata kunci tertentu. Catatan
Anda tidak dapat menggunakan mode ini untuk membatasi pernyataan SQL tertentu. |
|
|
Throttle by SQL Template |
Masukkan contoh SQL. Sistem akan memprosesnya menjadi templat SQL, lalu membatasi semua pernyataan SQL yang sesuai. |
|
|
Membatasi pernyataan SQL dengan mencocokkan ID templat SQL. Anda dapat memperoleh ID templat SQL dari log SQL, session, dan hasil eksekusi EXPLAIN. Catatan
ID templat SQL merupakan string heksadesimal 8 karakter. |
PolarDB-X 2.0 Enterprise Edition |
|
|
Throttle by Execution Duration |
Jika durasi eksekusi pernyataan SQL melebihi ambang batas yang ditentukan, ID templat SQL-nya secara otomatis ditambahkan ke aturan pembatasan. Pernyataan berikutnya yang sesuai dengan ID ini kemudian dieksekusi berdasarkan konkurensi yang ditentukan dalam aturan. Catatan
Anda juga dapat menetapkan 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 Enterprise Edition |
|
Operation Type Throttling |
Mengontrol konkurensi operasi find, insert, update, dan delete pada koleksi tertentu. |
MongoDB
|
Prosedur
Topik ini menggunakan ApsaraDB RDS for MySQL sebagai contoh untuk menjelaskan cara menggunakan fitur throttling. Untuk operasi terkait jenis database lainnya, lihat Dokumentasi Terkait.
Masuk ke Konsol DAS.
Di panel navigasi kiri, klik .
Temukan instans target dan klik ID instans untuk membuka halaman detail instans.
-
Di panel navigasi sisi kiri, klik Instance Sessions.
-
Pada halaman Session Management, klik SQL Throttling.
-
Di kotak dialog, klik Create Throttling Rule.
-
Di kotak dialog Create Throttling Rule, konfigurasikan parameter berikut berdasarkan engine database.
-
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by Keyword.
-
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.... -
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by Keyword.
-
Jika Anda menentukan beberapa kata kunci, aturan pembatasan hanya dipicu jika pernyataan SQL mengandung semua kata kunci yang ditentukan. Pisahkan beberapa kata kunci dengan tanda tilde (~). Urutan kata kunci tidak berpengaruh.
Sebagai contoh, jika 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 pembatasannya 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 menentukan hanya
SELECT, INSERT, UPDATE, DELETEsebagai kata kunci pembatasan. Kata kunci bersifat case-sensitive. Namun, beberapa versi instans lama tidak case-sensitive. -
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by SQL Template.
-
Untuk pernyataan SQL kompleks, DAS mentransformasi SQL Sample untuk pemrosesan internal, tetapi templat SQL akhir tetap tidak berubah. Efek pembatasan tidak terpengaruh oleh transformasi ini.
Sebagai contoh, 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 ?lalu ditulis ulang menjadi
select name from das where name = `param0` and age = `param1` limit 20. -
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by SQL Template.
-
Untuk pernyataan SQL kompleks, DAS mentransformasi SQL Sample untuk pemrosesan internal, tetapi templat SQL akhir tetap tidak berubah. Efek pembatasan tidak terpengaruh oleh transformasi ini.
Sebagai contoh, 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 ?lalu ditulis ulang menjadi
select name from das where name = "param0" and age = "param1" limit 20. -
Anda hanya dapat membatasi pernyataan
INSERTpada 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.... -
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by Keyword.
-
Jika Anda menentukan beberapa kata kunci, aturan pembatasan hanya dipicu jika pernyataan SQL mengandung semua kata kunci yang ditentukan. Pisahkan beberapa kata kunci dengan tanda tilde (~). Urutan kata kunci tidak berpengaruh.
Sebagai contoh, jika 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 pembatasannya 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 menentukan hanya SELECT, INSERT, UPDATE, atau DELETE sebagai kata kunci pembatasan. Kata kunci bersifat case-sensitive. Namun, beberapa versi instans lama tidak case-sensitive.
-
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by SQL Template.
-
Untuk pernyataan SQL kompleks, DAS mentransformasi SQL Sample untuk pemrosesan internal, tetapi templat SQL akhir tetap tidak berubah. Efek pembatasan tidak terpengaruh oleh transformasi ini.
Sebagai contoh, 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 ?lalu ditulis ulang menjadi
select name from das where name = "param0" and age = "param1" limit 20. -
Anda hanya dapat membatasi pernyataan
INSERTpada 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.... -
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by Keyword.
-
Jika Anda menentukan beberapa kata kunci, aturan pembatasan hanya dipicu jika pernyataan SQL mengandung semua kata kunci yang ditentukan. Pisahkan beberapa kata kunci dengan tanda tilde (~). Urutan kata kunci tidak berpengaruh.
Sebagai contoh, jika 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 pembatasannya 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 menentukan hanya SELECT, INSERT, UPDATE, atau DELETE sebagai kata kunci pembatasan. Kata kunci bersifat case-sensitive. Namun, beberapa versi instans lama tidak case-sensitive.
-
Klik Submit.
Setelah aturan SQL throttling dibuat, Anda dapat melihat detailnya di tab Running. Tabel berikut menjelaskan parameter-parameter tersebut.
CatatanParameter dalam daftar sedikit berbeda tergantung pada engine database dan mode pembatasan.
Parameter
Description
Throttling Mode
Mode yang Anda pilih.
Throttling Rule
-
Throttle by Keyword: Kata kunci pembatasan yang dikonfigurasi.
-
Throttle by SQL Template: ID templat yang sesuai dengan SQL Sample.
-
Throttle by Execution Duration: Ambang batas durasi eksekusi dan jumlah templat SQL yang dibatasi.
Maximum Concurrency
Jumlah maksimum pernyataan SQL konkuren.
Maximum Waiting Queries
Jumlah maksimum kueri yang menunggu yang dikonfigurasi dalam aturan pembatasan.
CatatanParameter ini ditampilkan untuk instans ApsaraDB RDS for PostgreSQL saat Throttling Mode diatur ke Throttle by SQL Template.
Throttling Duration (min)
Durasi efektif aturan SQL throttling.
Start Time
Waktu saat aturan pembatasan dikonfigurasi dan mulai berlaku.
Remaining time
Sisa waktu sebelum aturan pembatasan kedaluwarsa.
SQL Sample
Contoh pernyataan SQL yang akan dibatasi.
CatatanParameter ini ditampilkan jika Anda mengatur Throttling Mode ke Throttle by SQL Template.
Throttling Template ID
ID templat yang sesuai dengan SQL Sample.
CatatanParameter ini ditampilkan jika Anda mengatur Throttling Mode ke Throttle by SQL Template.
Status
Menunjukkan bahwa aturan sedang aktif.
Database
Database tempat pernyataan SQL akan dibatasi.
CatatanParameter ini ditampilkan jika Anda mengatur Throttling Mode ke Throttle by SQL Template.
Search Path
Jalur pencarian yang sesuai dengan pernyataan SQL yang dibatasi.
CatatanParameter ini ditampilkan untuk instans ApsaraDB RDS for PostgreSQL saat Throttling Mode diatur ke Throttle by SQL Template.
Matched SQL Query
Jumlah kueri SQL yang sesuai dengan aturan pembatasan.
CatatanParameter ini ditampilkan jika Anda mengatur Throttling Mode ke Throttle by SQL Template.
Waiting SQL Query
Jumlah kueri SQL yang sedang menunggu akibat aturan pembatasan.
CatatanParameter ini ditampilkan jika Anda mengatur Throttling Mode ke Throttle by SQL Template.
Actions
Memungkinkan Anda Disable atau Modify aturan.
-
RDS for MySQL
|
Parameter |
Description |
|
Throttling Mode |
Pilih throttling mode sesuai kebutuhan. |
|
SQL Type |
Jenis pernyataan SQL. Nilai yang valid: SELECT, UPDATE, DELETE, dan INSERT. Catatan
|
|
Database |
Database tempat pernyataan SQL akan dibatasi. Catatan
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by SQL Template. |
|
Maximum Concurrency |
Jumlah maksimum pernyataan SQL konkuren. Nilai minimum adalah 0. Catatan
Pembatasan dimulai ketika jumlah pernyataan SQL konkuren yang sesuai aturan mencapai nilai ini. |
|
Throttling Duration |
Durasi efektif aturan SQL throttling. Penting
SQL throttling merupakan tindakan darurat. Kami menyarankan menetapkan durasi sesuai kebutuhan bisnis Anda dan menonaktifkan aturan ketika tidak diperlukan lagi. |
|
SQL Keywords |
Kata kunci dalam pernyataan SQL yang akan dibatasi. Catatan
|
|
SQL Sample |
Contoh pernyataan SQL yang akan dibatasi. Catatan
|
RDS for PostgreSQL
|
Parameter |
Description |
|
Throttling Mode |
ApsaraDB RDS for PostgreSQL hanya mendukung Throttle by SQL Template. |
|
Database |
Database tempat pernyataan SQL akan dibatasi. |
|
Search Path |
Jalur pencarian untuk SQL throttling. Catatan
Pisahkan beberapa jalur dengan koma ( |
|
Maximum Concurrency |
Jumlah maksimum pernyataan SQL konkuren. Nilai minimum adalah 0. Catatan
Pembatasan dimulai ketika jumlah pernyataan SQL konkuren yang sesuai aturan mencapai nilai ini. |
|
Maximum Waiting Queries |
Jumlah maksimum kueri yang menunggu. |
|
Throttling Duration |
Durasi efektif aturan SQL throttling. Penting
SQL throttling merupakan tindakan darurat. Kami menyarankan menetapkan durasi sesuai kebutuhan bisnis Anda dan menonaktifkan aturan ketika tidak diperlukan lagi. |
|
SQL Sample |
Contoh pernyataan SQL yang akan dibatasi. Catatan
|
PolarDB for MySQL
|
Parameter |
Description |
|
Throttling Mode |
Pilih throttling mode sesuai kebutuhan. |
|
SQL Type |
Jenis pernyataan SQL. Nilai yang valid: Catatan
|
|
Maximum Concurrency |
Jumlah maksimum pernyataan SQL konkuren. Nilai minimum adalah 0. Catatan
Pembatasan dimulai ketika jumlah pernyataan SQL konkuren yang sesuai aturan mencapai nilai ini. |
|
Database |
Database tempat pernyataan SQL akan dibatasi. Catatan
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by SQL Template. |
|
Throttling Duration |
Durasi efektif aturan SQL throttling. Penting
SQL throttling merupakan tindakan darurat. Kami menyarankan menetapkan durasi sesuai kebutuhan bisnis Anda dan menonaktifkan aturan ketika tidak diperlukan lagi. |
|
SQL Keywords |
Kata kunci dalam pernyataan SQL yang akan dibatasi. Catatan
|
|
SQL Sample |
Contoh pernyataan SQL yang akan dibatasi. Catatan
|
PolarDB-X 2.0
|
Parameter |
Description |
|
Throttling Mode |
Pilih throttling mode sesuai kebutuhan. |
|
SQL Type |
Jenis pernyataan SQL. Nilai yang valid: Catatan
|
|
Maximum Concurrency |
Jumlah maksimum pernyataan SQL konkuren. Nilai minimum adalah 0. Catatan
Pembatasan dimulai ketika jumlah pernyataan SQL konkuren yang sesuai aturan mencapai nilai ini. |
|
Throttling Duration |
Durasi efektif aturan SQL throttling. Penting
SQL throttling merupakan tindakan darurat. Kami menyarankan menetapkan durasi sesuai kebutuhan bisnis Anda dan menonaktifkan aturan ketika tidak diperlukan lagi. |
|
SQL Keywords |
Kata kunci dalam pernyataan SQL yang akan dibatasi. Catatan
|
|
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 untuk instans PolarDB-X saat Throttling Mode diatur ke Throttle by SQL Template. |
|
Minimum SQL Execution Duration |
Ambang batas durasi eksekusi SQL. Jika durasi eksekusi pernyataan SQL melebihi ambang batas yang ditentukan, sistem akan menambahkan ID templat pernyataan SQL tersebut ke aturan pembatasan. Catatan
Parameter ini wajib diisi untuk instans PolarDB-X saat Throttling Mode diatur ke Throttle by Execution Duration. |
|
Maximum Number of Throttled Queries |
Jumlah maksimum ID templat SQL yang dapat dibatasi berdasarkan durasi eksekusi. Setelah batas ini tercapai, sistem tidak lagi membuat aturan pembatasan untuk pernyataan SQL lain yang durasi eksekusinya melebihi ambang batas yang ditentukan. Catatan
Parameter ini wajib diisi untuk instans PolarDB-X saat Throttling Mode diatur ke Throttle by Execution Duration. |
|
Database Account with Throttled Queries |
Akun database yang terkait dengan pernyataan SQL yang dibatasi. Catatan
Parameter ini wajib diisi jika Anda mengatur Throttling Mode ke Throttle by Keyword atau Throttle by SQL Template. |
MongoDB
Parameter | Description |
Operation type | Pilih jenis operasi yang akan dibatasi. Anda dapat memilih beberapa jenis. Nilai yang valid: |
Operation concurrency | Tentukan jumlah maksimum operasi konkuren yang diizinkan untuk jenis operasi yang dipilih. Permintaan yang melebihi ambang batas ini akan dibatasi. |
Throttling duration | Tetapkan durasi aktif aturan pembatasan. Setelah aturan kedaluwarsa, sistem secara otomatis menonaktifkannya dan memindahkannya ke tab Ended. |
Kill Statement | (Opsional) Jika Anda mengaktifkan opsi ini, saat aturan pembatasan berlaku, sistem secara otomatis menghentikan (kills) operasi aktif yang sesuai aturan, seperti operasi |
Throttling scope | Opsi ini hanya tersedia untuk instans sharded cluster ApsaraDB for MongoDB. Anda dapat menerapkan aturan ke All Shards atau Partial Shards. |
Throttled collections | Tentukan koleksi yang dikenai aturan. Gunakan format |
Topik Terkait
API Terkait
|
API |
Description |
|
Mengaktifkan SQL throttling. |
|
|
Menonaktifkan aturan pembatasan tertentu. |
|
|
Menonaktifkan semua aturan pembatasan yang sedang berjalan. |
|
|
Mengembalikan aturan pembatasan yang sedang berjalan. |
|
|
Mengembalikan aturan pembatasan yang sedang berjalan atau telah dipicu. |
|
|
Menghasilkan kata kunci pembatasan dari pernyataan SQL. |