全部产品
Search
文档中心

Database Autonomy Service:Pembatasan SQL Otomatis

更新时间:Jun 28, 2025

Pembatasan SQL membatasi konkurensi dari pernyataan SQL yang dieksekusi pada database. Fitur ini membatasi konkurensi dari pernyataan SQL abnormal dan memastikan bahwa database merespons permintaan bisnis secara normal, serta sebagian besar layanan berjalan sesuai harapan. Dengan cara ini, Anda dapat mengorbankan sejumlah kecil layanan yang terganggu demi kelancaran sebagian besar layanan.

Informasi Latar Belakang

Seiring dengan perkembangan teknologi, terutama adopsi luas database cloud, sistem database menjadi semakin stabil dan lebih mudah dipelihara. Beberapa tugas O&M seperti peningkatan versi dan migrasi instans dapat diselesaikan secara otomatis tanpa memengaruhi layanan lapisan atas. Jika terjadi kegagalan perangkat keras atau jaringan, sistem inspeksi dapat memigrasikan layanan dan memulai ulang sistem database dengan cepat untuk memastikan stabilitas layanan. Namun, hampir semua metode O&M yang ada digunakan untuk memastikan stabilitas server. Masalah yang disebabkan oleh operasi abnormal dalam bisnis harus ditangani secara manual. Misalnya, pernyataan SQL lambat diperkenalkan selama perubahan bisnis, atau lonjakan trafik terjadi. Ketika pengecualian bisnis ini terjadi, tidak ada metode O&M sebelumnya yang dapat digunakan untuk menangani pengecualian ini dengan cepat guna mencegah kegagalan sistem.

Masalah

  • Trafik: Lonjakan trafik memengaruhi layanan normal database. Contohnya, penetrasi cache, pemanggilan abnormal, dan promosi menyebabkan peningkatan tajam dalam konkurensi pernyataan SQL.

  • Data: Kemiringan data yang disebabkan oleh distribusi tidak merata dari pernyataan SQL memengaruhi layanan normal database. Contohnya, sejumlah besar pernyataan SQL dikirimkan dari pengguna yang telah melakukan transaksi besar. Pernyataan SQL ini mengonsumsi sejumlah besar sumber daya database dan mengakibatkan respons database yang lambat.

  • Pernyataan SQL: Pernyataan SQL yang intensif sumber daya memengaruhi layanan normal database. Contohnya, sejumlah besar pernyataan SQL dikirimkan untuk menanyakan tabel yang tidak diindeks. Dalam kasus ini, sejumlah besar sumber daya ditempati dan seluruh sistem terpengaruh.

FAQ

  • Bagaimana saya bisa segera mengidentifikasi pengecualian ketika itu terjadi?

  • Bagaimana saya bisa mengidentifikasi pernyataan SQL yang harus dibatasi setelah pengecualian diidentifikasi?

  • Bagaimana saya bisa mengekstrak kata kunci dari pernyataan SQL yang harus dibatasi untuk memulihkan layanan dan meminimalkan dampak negatif pada layanan?

  • Bagaimana saya bisa menentukan apakah operasi pembatasan dilakukan sesuai harapan setelah pembatasan diimplementasikan?

Anda mungkin menghadapi masalah lain dalam situasi nyata. Contohnya, Anda mungkin gagal menghubungi personel yang bertugas. Personel tersebut mungkin tidak memiliki komputer yang tersedia, sejumlah besar informasi mengakibatkan kesulitan signifikan dalam analisis, atau operasi yang tidak tepat mungkin dilakukan karena tekanan tinggi dan kecemasan.

Untuk menangani masalah-masalah ini, pastikan seluruh proses diotomatisasi jika memungkinkan. Seluruh proses mencakup penemuan pengecualian, lokasi pernyataan SQL abnormal, pembatasan SQL, pelacakan, dan rollback.

Catatan

Solusi pembatasan SQL otomatis dirilis untuk menanggapi kebutuhan ini. Solusi ini telah diterapkan di dalam Alibaba Group selama lebih dari dua tahun dan diluncurkan di Alibaba Cloud pada Februari 2020. Anda dapat menggunakan solusi ini di Database Autonomy Service (DAS).

Interpretasi

Seluruh proses:Entire process

  • Pengumpulan data deret waktu: Secara default, metrik performa host dan engine dikumpulkan untuk instans ApsaraDB RDS yang diterapkan di Alibaba Cloud. Metrik performa termasuk CPU, operasi input/output per detik (IOPS), permintaan per detik (QPS), dan sesi aktif. Data performa real-time adalah dasar untuk analisis dan tindakan selanjutnya.

  • Deteksi anomali: DAS menggunakan algoritma pembelajaran mesin untuk melatih model secara offline menggunakan data performa historis dari instans database, kemudian menggunakan model ini untuk mendeteksi pengecualian berdasarkan metrik real-time. Dibandingkan dengan deteksi berbasis ambang batas, fitur deteksi anomali memberikan notifikasi real-time ketika peristiwa sistem memicu peringatan. Untuk informasi lebih lanjut tentang fitur ini, lihat topik-topik berikutnya.

  • Analisis penyebab akar: DAS berlangganan setiap pengecualian dari instans database dan mengumpulkan informasi tentang sesi saat ini jika pengecualian terjadi. Kemudian, DAS menggunakan fitur analisis permintaan penuh dalam Audit SQL dan statistik di performance_schema untuk mengidentifikasi penyebab akar dari pengecualian. DAS membagi pernyataan SQL abnormal menjadi empat jenis berdasarkan penyebab akar:

    • Pernyataan SQL yang memblokir: DAS menganalisis sesi, kunci, dan transaksi yang sedang berjalan secara real-time untuk mendeteksi pernyataan SQL yang menyebabkan perubahan DDL, tunggu kunci, dan transaksi besar. DAS juga memeriksa jumlah sesi yang terpengaruh oleh pernyataan SQL dan waktu eksekusi pernyataan SQL. Jika sejumlah besar sesi terpengaruh atau waktu eksekusi pernyataan SQL terlalu lama, DAS menutup sesi tersebut alih-alih menerapkan pembatasan pada pernyataan SQL.

    • Pernyataan SQL yang intensif sumber daya: Jumlah pernyataan SQL konkuren dari jenis ini mungkin tidak besar. Namun, pernyataan SQL dari jenis ini mengonsumsi sejumlah besar CPU, I/O, atau sumber daya jaringan, dan terus dikirimkan.

    • Pernyataan SQL yang intensif trafik: Pernyataan SQL ini adalah pernyataan normal. Namun, ketika sejumlah besar pernyataan SQL seperti ini dieksekusi pada saat yang sama, mereka mengonsumsi sejumlah besar sumber daya di database. Ini menyebabkan hambatan performa dan pengecualian, seperti respons lambat terhadap kueri key-value sederhana.

    • Pernyataan SQL lainnya: Pernyataan SQL dari jenis ini adalah pernyataan SQL lain yang menyebabkan pengecualian database.

  • Pembatasan otomatis: Ketika DAS mendeteksi pernyataan SQL yang intensif sumber daya dan trafik, DAS secara otomatis mengekstrak fitur-fitur dari pernyataan SQL ini. Setelah Anda memberikan izin yang diperlukan kepada DAS, DAS secara otomatis menerapkan pembatasan pada semua pernyataan SQL yang memiliki fitur-fitur ini. Selama proses ini, tantangan terbesar adalah mengekstrak fitur yang akurat dari pernyataan SQL untuk pembatasan yang tepat guna mencegah seluruh layanan terganggu.

  • Ekstraksi fitur: Setiap kali DAS mendeteksi pernyataan SQL abnormal yang harus dibatasi, DAS mengekstrak fitur dari pernyataan SQL untuk pembatasan yang tepat. Dalam skenario ideal, fitur yang diekstraksi bersifat unik dan pembatasan hanya diterapkan pada pernyataan SQL abnormal yang teridentifikasi. DAS mendukung dua jenis pembatasan SQL:

    • Pembatasan berbasis template SQL: Template SQL adalah pernyataan SQL di mana parameter tidak memiliki nilai spesifik. Jika sejumlah besar pernyataan SQL yang menggunakan template SQL tertentu dieksekusi pada saat yang sama, pengecualian mungkin terjadi, terlepas dari nilai parameter. Oleh karena itu, Anda hanya perlu mengekstrak fitur dari template SQL.

    • Pembatasan berbasis pernyataan SQL: Jenis pembatasan ini berlaku untuk skenario di mana kemiringan data terdeteksi. Jika beberapa pernyataan SQL yang menggunakan template SQL tertentu menyebabkan pengecualian, Anda harus mengekstrak fitur dari template SQL dan pernyataan SQL yang berisi nilai parameter spesifik.

    Dalam pembatasan berbasis template SQL, DAS mengekstrak ID template bermasalah dari pernyataan SQL dan menerapkan pembatasan pada pernyataan yang memiliki ID template. ID template mungkin merupakan ID SQL yang dihasilkan secara otomatis oleh middleware database atau hint SQL yang ditambahkan oleh pengembang ke template SQL.

    Ini memungkinkan pembatasan yang tepat dan memastikan bahwa pernyataan SQL yang menggunakan template lain tidak terpengaruh. Namun, pernyataan SQL identik yang tidak mengandung ID template, seperti yang dikirimkan di baris perintah, tidak terpengaruh oleh pembatasan. Pernyataan ini masih dapat dieksekusi.

    Oleh karena itu, jika pernyataan SQL tidak mengandung ID template, Anda harus mengekstrak fitur dari pernyataan SQL. Template SQL dihasilkan berdasarkan komputasi dalam proses analisis. Dalam contoh berikut, Template SQL 1 dihasilkan berdasarkan Pernyataan SQL 1, dan Template SQL 2 dihasilkan berdasarkan Pernyataan SQL 2. Anggaplah Anda menggunakan template SQL 1 untuk pembatasan SQL. Fitur dari template SQL 1 adalah select id, name, age from students where name.

    /* Pernyataan SQL 1 */
    select id,name,age from students where name='Bob';
    
    /* Template SQL 1 */
    select id,name,age from students where name=?
    
    /* Pernyataan SQL 2 */
    select id,name,age from students where name='Bob' and sid='ID Unik';
    
    /* Template SQL 2 */
    select id,name,age from students where name=? and sid=?

    Jika fitur-fitur ini digunakan untuk pembatasan, pembatasan diterapkan pada pernyataan SQL yang memiliki fitur-fitur ini, terlepas dari metode pengiriman. Kelemahannya adalah pembatasan mungkin diterapkan pada beberapa pernyataan SQL dengan cara yang tidak terduga. Misalnya, template SQL 2 memiliki semua fitur dari template SQL 1. Oleh karena itu, DAS juga menerapkan pembatasan pada pernyataan SQL 2 berdasarkan template SQL 1. Ini mungkin tidak sesuai dengan harapan Anda.

  • Optimasi otomatis: Setelah DAS mendeteksi pernyataan SQL abnormal yang dapat dioptimalkan selama analisis penyebab akar, DAS menerapkan pembatasan sebagai tanggapan darurat. DAS juga secara otomatis mengoptimalkan pernyataan SQL. DAS secara otomatis membuat indeks untuk tabel yang relevan untuk optimasi. Untuk informasi lebih lanjut, lihat topik-topik berikutnya.

  • Pelacakan dan rollback: Setelah DAS memulai pembatasan SQL otomatis, DAS terus melacak performa database. Jika beban kerja database tidak berkurang atau jika trafik tidak berkurang sebanyak yang diharapkan, DAS membatalkan operasi pembatasan. Kemudian, DAS mengidentifikasi penyebab akar lagi.