Ketika lonjakan lalu lintas mendadak, kueri yang intensif sumber daya, atau volume tinggi kueri tanpa indeks mengancam kinerja database Anda, Anda memerlukan cara untuk mengendalikan dampaknya. Database Autonomy Service (DAS) menggunakan pembatasan SQL otomatis untuk menjaga stabilitas. Fitur ini mengidentifikasi pola SQL bermasalah dan membatasi konkurensinya berdasarkan kata kunci guna memastikan layanan inti Anda tetap tersedia.
Prasyarat
Fitur ini tersedia untuk instansiasi basis data berikut:
|
Database |
Wilayah |
|
Fitur pembatasan SQL otomatis hanya tersedia di wilayah yang mendukung deteksi anomali, karena fitur ini bergantung pada kemampuan tersebut. Wilayah yang didukung meliputi: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Shenzhen), Tiongkok (Heyuan), Tiongkok (Guangzhou), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Hohhot), Tiongkok (Ulanqab), Tiongkok (Nanjing - Local Region) (Sedang Dihentikan), Tiongkok (Fuzhou - Local Region) (Sedang Dihentikan), Tiongkok (Chengdu), Tiongkok (Zhengzhou), Tiongkok (Hong Kong), Jepang (Tokyo), Korea Selatan (Seoul), Singapura, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Filipina (Manila), Thailand (Bangkok), UEA (Dubai), Arab Saudi (Riyadh), Jerman (Frankfurt), AS (Silicon Valley), AS (Virginia), dan Inggris (London) |
Kasus Penggunaan
Pembatasan SQL otomatis ideal untuk skenario berikut:
-
Lonjakan beban kerja: Peningkatan mendadak dalam konkurensi kueri SQL tertentu, sering kali disebabkan oleh peristiwa seperti cache penetration atau perilaku aplikasi yang tidak biasa.
-
Persaingan sumber daya: Kueri yang terkait dengan akun tertentu, seperti yang memiliki volume besar data pesanan, mengonsumsi sumber daya database secara berlebihan.
-
Kueri tidak efisien: Volume tinggi kueri dieksekusi tanpa indeks yang tepat, sehingga menurunkan kinerja bisnis secara keseluruhan.
Batasan
Pembatasan SQL otomatis menggunakan mode Throttled by Keywords dan memiliki batasan berikut:
-
Jenis pernyataan SQL berikut didukung: SELECT, UPDATE, DELETE, dan INSERT.
-
Pernyataan SQL jenis INSERT...SELECT... tidak dapat dibatasi kecepatannya.
-
Hanya instans ApsaraDB RDS for MySQL 8.0 dan kluster PolarDB for MySQL 5.7 atau 8.0 yang mendukung pembatasan kecepatan untuk pernyataan INSERT.
Cara Kerja
Setelah Anda membuat aturan pembatasan otomatis, ketika sebuah aplikasi mengeksekusi pernyataan SQL yang sesuai dengan aturan pembatasan, database merespons sebagai berikut:
-
Instans ApsaraDB RDS for MySQL 5.6, ApsaraDB RDS for MySQL 5.7, dan kluster PolarDB for MySQL 5.6 mengembalikan error 1317 (eksekusi kueri diinterupsi).
-
Untuk instans ApsaraDB RDS for MySQL 8.0 dan kluster PolarDB for MySQL 5.7 atau PolarDB for MySQL 8.0, pernyataan SQL yang dibatasi masuk ke status
Concurrency control waiting. Jika jumlah pernyataan yang menunggu melebihi nilai parameter ccl_max_waiting_count (jika didukung oleh versi instans), sistem mengembalikan error "Concurrency control waiting count exceed max waiting count" dan salah satu kode kesalahan berikut:-
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).
Jika
ccl_max_waiting_countdiatur ke nilai default 0, semua pernyataan SQL yang dibatasi tetap dalam statusConcurrency control waitingdan tidak ada error yang dikembalikan. Saat Anda mengonfigurasi pembatasan melalui DAS, jika parameter ini bernilai 0, DAS secara otomatis mengaturnya ke nilai default 10. Jika Anda telah mengatur parameter ke nilai lain yang lebih besar dari 0, DAS akan menggunakan pengaturan kustom Anda. -
Untuk penjelasan teknis lengkap tentang pembatasan SQL otomatis, lihat Pembatasan SQL Otomatis.
Prosedur
Masuk ke Konsol DAS.
Di panel navigasi sebelah kiri, klik .
Temukan instans target dan klik ID instans 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 panel Autonomous Function Management, klik tab Autonomous Function Settings. Aktifkan sakelar utama layanan otonomi, buka tab Optimization and Throttling, pilih Automatic Throttling, lalu konfigurasikan kondisi pemicu berikut.
Parameter
Deskripsi
CPU Utilization >
Menentukan ambang batas utilisasi CPU. Nilainya harus 70% atau lebih tinggi.
Number of Active Sessions >
Menentukan ambang batas jumlah sesi aktif.
-
Jika Anda menggunakan operator OR, nilainya harus 16 atau lebih.
-
Jika Anda menggunakan operator AND, nilainya harus 2 atau lebih.
Available Time Range
Periode waktu saat pembatasan SQL otomatis dapat dilakukan.
Maximum Throttling Duration
Durasi maksimum untuk satu tugas pembatasan SQL.
Jika Maximum Throttling Duration diatur ke 0, pembatasan dipicu saat kondisi terpenuhi tetapi langsung menjadi tidak aktif.
Duration >
Durasi selama utilisasi CPU dan jumlah sesi aktif harus melebihi ambang batasnya sebelum pembatasan SQL otomatis dipicu.
CatatanContohnya, Anda dapat mengonfigurasi kondisi pemicu berikut dalam rentang waktu yang tersedia: Jika utilisasi CPU melebihi 80% DAN jumlah sesi aktif melebihi 64 selama lebih dari 2 menit, DAS memicu pembatasan otomatis.
-
Jika masalah tidak terselesaikan setelah pembatasan, operasi tersebut secara otomatis dikembalikan.
-
Durasi pembatasan tidak akan melebihi nilai yang ditentukan untuk Maximum Throttling Duration.
-
-
Klik OK.
Anda dapat melihat riwayat pembatasan SQL otomatis di halaman Instance Sessions. Untuk informasi lebih lanjut, lihat View automatic SQL throttling history.
-
(Opsional) Klik tab Event Subscription Settings untuk mengonfigurasi notifikasi untuk event pembatasan SQL otomatis.
Saat DAS memicu pembatasan SQL otomatis, sistem menghasilkan event tingkat Warning. Untuk menerima notifikasi, aktifkan sakelar Enable Subscription Service dan konfigurasikan parameter notifikasi. Untuk informasi lebih lanjut, lihat Enable event subscription.
-
Konfigurasikan Alert Template untuk berlangganan notifikasi. Hal ini memastikan Anda menerima notifikasi tentang event pembatasan SQL otomatis pada instans database Anda.
Sistem merekomendasikan templat dan menambahkan aturan peringatan yang sesuai untuk event otonomi. Anda dapat mengikuti petunjuk untuk menyelesaikan konfigurasi.
Catatan-
Jika Anda telah mengonfigurasi templat peringatan untuk instans tersebut, ikuti petunjuk untuk menambahkan aturan peringatan yang diperlukan ke templat yang sudah ada.
-
Untuk mengonfigurasi templat dan aturan peringatan secara manual, lihat Configure alert templates dan Configure alert rules.
-
-
Pilih Alert Contact Group untuk menerima notifikasi.
-
Klik Add Contact untuk menambahkan kontak peringatan baru.
-
Klik Add Contact Group untuk menambahkan kelompok kontak peringatan baru.
-
Untuk mengubah atau menghapus kontak yang sudah ada, temukan kontak tersebut lalu klik Modify atau Remove di kolom Actions.
Untuk informasi lebih lanjut, lihat Manage alert contacts.
-
-
Klik Submit Configuration dan konfirmasi pengaturan di kotak dialog yang muncul.
Lihat Riwayat Pembatasan
Masuk ke Konsol DAS.
Di panel navigasi sebelah kiri, klik .
Temukan instans target dan klik ID instans untuk membuka halaman detail instans.
-
Di panel navigasi sebelah kiri, klik Instance Sessions.
-
Di halaman Instance Sessions, lakukan langkah-langkah berikut:
-
Klik SQL Throttling.
-
Di tab Running, lihat aturan pembatasan yang sedang aktif.
-
Di tab Complete, pilih rentang waktu untuk melihat riwayat tugas pembatasan yang telah selesai.
Riwayat mencakup kolom berikut: Throttling Mode, Max Concurrency, Start Time, End Time, Throttling Rule, dan Actions. Anda dapat mengklik Enable di kolom Actions untuk mengaktifkan kembali aturan yang telah selesai.
-
-
Jika Anda memilih Kill Abnormal SQL Statements in Execution di pengaturan, Anda dapat mengklik End Session History untuk melihat catatan sesi yang dihentikan.
-
Referensi
-
Anda dapat mengoptimalkan kueri SQL untuk meningkatkan kinerja database dan mengurangi konsumsi sumber daya.
-
Untuk informasi tentang optimasi SQL otomatis, lihat Automatic SQL optimization.
-
Untuk informasi tentang optimasi SQL manual, lihat SQL optimization.
-
-
Jika CPU utilization atau number of active sessions tidak mencapai ambang batas yang ditentukan, DAS tidak memicu pembatasan otomatis. Dalam kasus ini, Anda dapat mengonfigurasi aturan secara manual untuk membatasi pernyataan SQL. Untuk informasi lebih lanjut, lihat SQL throttling.
Referensi API
|
API |
Deskripsi |
|
Mengonfigurasi parameter pembatasan SQL otomatis untuk satu atau beberapa instans database secara asinkron. |
|
|
Menanyakan aturan pembatasan SQL otomatis dari instans database tertentu. |
|
|
Menonaktifkan fitur pembatasan SQL otomatis untuk satu atau beberapa instans database tertentu. |