Ketika eksekusi SQL konkuren melonjak—akibat cache penetration, traffic mencurigakan, atau indeks yang tidak tersedia—fitur Pembatasan SQL Otomatis akan aktif untuk melindungi instans database Anda. Database Autonomy Service (DAS) memantau kinerja, mendeteksi anomali, dan secara otomatis mengekstraksi karakteristik SQL untuk membatasi pernyataan bermasalah berdasarkan kata kunci.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Jenis instans database yang didukung:
ApsaraDB RDS for MySQL Edisi Ketersediaan Tinggi atau Edisi Perusahaan (MySQL 5.5 tidak didukung)
PolarDB for MySQL Cluster Edition (kluster single-node tidak didukung)
ApsaraDB MyBase for MySQL Edisi Ketersediaan Tinggi
Instans database di wilayah yang mendukung fitur deteksi anomali. Wilayah yang didukung: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Shenzhen), Tiongkok (Heyuan), Tiongkok (Guangzhou), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Hohhot), Tiongkok (Ulanqab), Tiongkok (Nanjing - Local Region), Tiongkok (Fuzhou - Local Region), Tiongkok (Chengdu), Tiongkok (Zhengzhou - Local Region), Tiongkok (Hong Kong), Jepang (Tokyo), Korea Selatan (Seoul), Singapura, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Filipina (Manila), Thailand (Bangkok), UEA (Dubai), SAU (Riyadh - Partner Region), Jerman (Frankfurt), AS (Silicon Valley), AS (Virginia), dan Inggris (London)
Kasus Penggunaan
| Skenario | Deskripsi |
|---|---|
| Traffic spike | Cache penetration atau permintaan mencurigakan menyebabkan lonjakan kueri SQL konkuren dari jenis tertentu. |
| Single-source overload | Sejumlah besar kueri SQL berasal dari sumber yang sama — misalnya, satu pengguna melakukan banyak pesanan di platform e-commerce. |
| Missing indexes | Sejumlah besar pernyataan SQL dijalankan tanpa indeks, sehingga menurunkan kinerja database. |
Batasan
Pembatasan SQL otomatis hanya menggunakan mode Throttled by Keywords.
Jenis pernyataan yang dapat dibatasi:
SELECT,UPDATE,DELETE, danINSERTPernyataan
INSERT...SELECT...tidak dapat dibatasiPembatasan
INSERThanya didukung pada ApsaraDB RDS for MySQL yang menjalankan MySQL 8.0 dan kluster PolarDB for MySQL yang menjalankan MySQL 5.7 atau 8.0
Cara Kerja
Saat aturan pembatasan aktif dan aplikasi mengeksekusi pernyataan SQL yang cocok, database akan mengembalikan error atau menahan pernyataan dalam status menunggu tergantung pada versi MySQL.
MySQL 5.6 dan 5.7 (ApsaraDB RDS for MySQL) serta MySQL 5.6 (PolarDB for MySQL)
Database mengembalikan kode kesalahan 1317 dengan pesan query execution was interrupted.
MySQL 8.0 (ApsaraDB RDS for MySQL) dan MySQL 5.7 atau 8.0 (PolarDB for MySQL)
Pernyataan yang cocok masuk ke status Concurrency control waiting. Setelah jumlah pernyataan yang menunggu melebihi ambang batas ccl_max_waiting_count, database mengembalikan salah satu error berikut:
| Jenis instans | Kode kesalahan |
|---|---|
| ApsaraDB RDS for MySQL 8.0 | ERROR 7534 (HY000) |
| PolarDB for MySQL 5.7 | ERROR 3277 (HY000) |
| PolarDB for MySQL 8.0 | ERROR 7533 (HY000) |
Tentang `ccl_max_waiting_count`: Nilai default-nya adalah 0, yang membuat semua pernyataan yang dibatasi tetap dalam status menunggu tanpa mengembalikan error. Saat DAS menerapkan aturan pembatasan dan mendeteksi bahwa ccl_max_waiting_count bernilai 0, DAS secara otomatis mengaturnya menjadi 10. Jika Anda mengaturnya ke nilai apa pun yang lebih besar dari 0, DAS akan menggunakan nilai tersebut.
Untuk ikhtisar konseptual tentang Pembatasan SQL Otomatis, lihat Pembatasan SQL Otomatis.
Aktifkan Pembatasan SQL Otomatis
Masuk ke Konsol DAS.
Di panel navigasi sebelah kiri, klik Instance Monitoring.
Temukan instans database yang ingin Anda kelola dan klik ID instans-nya untuk membuka halaman detail instans.
Di panel navigasi sebelah kiri, klik Autonomy Center.
Di halaman Autonomy Center, klik Autonomy Service Settings di pojok kanan atas.

Di tab Autonomous Function Settings pada panel Autonomous Function Management, aktifkan layanan otonomi. Lalu buka tab Optimization and Throttling, pilih Automatic Throttling, dan konfigurasikan parameter berikut.

| Parameter | Deskripsi |
|---|---|
| CPU Utilization > | Ambang batas utilisasi CPU. Atur ke 70 atau lebih tinggi. |
| Number of Active Sessions > | Ambang batas sesi aktif. Atur ke 16 atau lebih tinggi jika dikombinasikan dengan utilisasi CPU menggunakan operator OR; atur ke 2 atau lebih tinggi jika menggunakan operator AND. |
| Available Time Range | Rentang waktu selama pembatasan otomatis diperbolehkan berjalan. |
| Maximum Throttling Duration | Durasi maksimum untuk satu event pembatasan. Jika diatur ke 0, pembatasan dipicu tetapi langsung dinonaktifkan — tidak ada pernyataan SQL yang benar-benar dibatasi. |
| Duration > | Berapa lama utilisasi CPU dan sesi aktif harus terus-menerus memenuhi ambang batas sebelum pembatasan dipicu. |
Contohnya, atur utilisasi CPU di atas 80%, sesi aktif di atas 64, dan durasi di atas 2 menit. Ketika kondisi ini terpenuhi dalam rentang waktu yang dikonfigurasi, DAS mulai membatasi dan memantau instans. Jika masalah tetap berlanjut setelah pembatasan, DAS secara otomatis membatalkan operasi pembatasan tersebut. Durasi pembatasan tidak akan melebihi durasi maksimum pembatasan yang Anda konfigurasi.
Klik OK. Setelah pembatasan dipicu, lihat aturan pembatasan aktif dan riwayatnya di halaman Instance Sessions. Untuk detailnya, lihat Lihat riwayat pembatasan.
(Opsional) Klik tab Event Subscription Settings untuk mengonfigurasi notifikasi untuk event pembatasan SQL otomatis. Saat pembatasan SQL otomatis dipicu, DAS mengirim notifikasi event Warning. Aktifkan Enable Subscription Service dan konfigurasikan parameter-parameter tersebut. Untuk informasi lebih lanjut, lihat Event subscription.
Di bagian Alert Configuration, konfigurasikan templat peringatan dan berlangganan pemberitahuan peringatan untuk melacak status tugas pembatasan secara real time. DAS merekomendasikan templat peringatan dan secara otomatis menambahkan aturan peringatan untuk event otonomi yang diperlukan. Konfigurasikan templat sesuai petunjuk.
Jika templat peringatan sudah dikonfigurasi untuk instans Anda, tambahkan aturan peringatan untuk event otonomi yang diperlukan ke templat yang sudah ada sesuai petunjuk. Untuk informasi lebih lanjut, lihat Konfigurasi templat peringatan dan Konfigurasi aturan peringatan.
Pada bagian Select Contact Group, pilih kelompok kontak peringatan. Untuk informasi selengkapnya, lihat Mengelola kontak peringatan.
Klik Add Contact untuk menambahkan kontak peringatan.
Klik Create Contact Group untuk membuat kelompok kontak peringatan baru.
Untuk mengedit atau menghapus kontak yang sudah ada, klik Edit atau Remove di kolom Actions.
Klik Submit Configuration dan konfirmasi pengaturan di kotak dialog.
Lihat Riwayat Pembatasan
Masuk ke Konsol DAS.
Di panel navigasi sebelah kiri, klik Instance Monitoring.
Temukan instans database yang ingin Anda kelola dan klik ID instans-nya untuk membuka halaman detail instans.
Di panel navigasi sebelah kiri, klik Instance Sessions.
Di bagian Instance Sessions pada tab Session Management, lakukan tindakan yang relevan.

Klik SQL Throttling untuk membuka kotak dialog SQL Throttling:
Tab Running: Lihat aturan pembatasan yang sedang berlaku.
Tab Complete: Pilih rentang waktu untuk meninjau event pembatasan historis.

Langkah Berikutnya
Optimalkan pernyataan SQL untuk mengurangi konsumsi resource dan meningkatkan efisiensi kueri:
Pembatasan SQL manual: Jika utilisasi CPU atau sesi aktif tidak mencapai ambang batas yang diperlukan untuk memicu pembatasan otomatis, konfigurasikan aturan secara manual. Lihat Pembatasan SQL.
Referensi API
| Operasi | Deskripsi |
|---|---|
| UpdateAutoThrottleRulesAsync | Mengonfigurasi parameter pembatasan SQL otomatis untuk beberapa instans database sekaligus secara asinkron. |
| GetAutoThrottleRules | Menanyakan aturan pembatasan SQL otomatis dari instans database. |
| DisableAutoThrottleRules | Menonaktifkan pembatasan SQL otomatis untuk beberapa instans database sekaligus. |