All Products
Search
Document Center

PolarDB:Pembatasan SQL

Last Updated:Nov 11, 2025

PolarDB for PostgreSQL menyediakan fitur Pembatasan SQL yang memungkinkan Anda mengonfigurasi aturan pengendalian aliran berdasarkan titik akhir untuk mencegah lalu lintas tidak biasa dari pernyataan SQL memengaruhi bisnis Anda. Topik ini menjelaskan cara menggunakan fitur tersebut.

Ikhtisar

Fitur Pembatasan SQL memungkinkan Anda mengonfigurasi aturan pengendalian aliran berdasarkan titik akhir dengan menggunakan templat SQL untuk mencocokkan pernyataan SQL yang dieksekusi pada titik akhir tersebut, serta membatasi konkurensi maksimum atau permintaan per detik (QPS). Fitur ini dapat digunakan dalam skenario berikut:

  • Kluster PolarDB mengalami pernyataan SQL lambat yang menyebabkan beban database tinggi dan mengganggu operasi bisnis normal.

  • Anda ingin membatasi sumber daya yang tersedia untuk jenis tertentu dari pernyataan SQL berisiko tinggi atau sepenuhnya menolak eksekusinya.

Prosedur

Catatan

Untuk mengaktifkan fitur Pembatasan SQL, hubungi kami.

  1. Masuk ke Konsol PolarDB. Di panel navigasi sebelah kiri, klik Cluster List. Pilih wilayah tempat kluster berada, lalu klik ID kluster target untuk membuka halaman detail kluster.

  2. Di panel navigasi sebelah kiri, pilih Configuration and Management > Security Management.

  3. Pada tab SQL Throttling, klik Add untuk membuat aturan pembatasan SQL.

    image

  4. Pada kotak dialog Create SQL Throttling Rule, atur parameter berikut dan klik OK.

    Bagian

    Parameter

    Deskripsi

    Basic Information

    Rule Name

    Nama aturan pengendalian aliran. Nama harus memenuhi persyaratan berikut:

    • Panjang maksimal 30 karakter.

    • Hanya terdiri dari huruf besar, huruf kecil, dan angka.

    Rule Description

    Opsional. Deskripsi aturan pengendalian aliran. Ini membantu manajemen di masa mendatang. Panjang deskripsi maksimal 64 karakter.

    EndpointID

    Pilih titik akhir tempat aturan pengendalian aliran diterapkan.

    Catatan
    • Saat ini, Anda hanya dapat mengonfigurasi aturan pengendalian aliran pada titik akhir kluster dan titik akhir kustom yang menggunakan penyeimbangan beban berdasarkan permintaan aktif. Titik akhir ini dapat bersifat read/write atau read-only. Titik akhir primer dan titik akhir read-only yang menggunakan penyeimbangan beban berdasarkan koneksi tidak mendukung pembatasan SQL.

    • Aturan pengendalian aliran yang dikonfigurasi pada titik akhir berbeda tidak saling memengaruhi. Aturan pengendalian aliran yang dikonfigurasi pada titik akhir yang sama hanya berlaku untuk koneksi bisnis yang menggunakan titik akhir tersebut.

    Rule Configuration

    Rule Type

    Pilih mode aturan pengendalian aliran. Nilai yang valid adalah Throttle Active Concurrent Statements dan Throttle QPS Per Connection.

    Catatan

    Pengendalian aliran QPS per koneksi membatasi jumlah permintaan per detik untuk satu koneksi. Anda dapat menggunakan mode ini dalam skenario di mana sisi bisnis memiliki kolam koneksi atau menggunakan koneksi persisten. Dalam skenario dengan koneksi singkat, kami merekomendasikan agar Anda menggunakan pengendalian aliran pernyataan konkuren aktif.

    Current Mode

    Pilih mode pencocokan untuk templat SQL. Nilai yang valid adalah Template Match dan Full-text Match. Untuk informasi selengkapnya tentang perbedaan antara dua mode pencocokan tersebut, lihat Template matching dan full-text matching.

    Database Account Name

    Tentukan akun database tempat aturan pengendalian aliran diterapkan. Anda dapat menentukan hingga 10 akun. Pisahkan beberapa nama akun dengan koma (,). Jika Anda mengosongkan parameter ini, aturan akan berlaku untuk semua akun secara default.

    Database Name

    Tentukan database tempat aturan pengendalian aliran diterapkan. Anda dapat menentukan hingga 10 database. Pisahkan beberapa nama database dengan koma (,). Jika Anda mengosongkan parameter ini, aturan akan berlaku untuk semua database secara default.

    SQL Template

    Konfigurasikan templat SQL. Untuk informasi selengkapnya, lihat Templat SQL dan mode pencocokan.

    Maximum Waiting Queue Length

    Konfigurasikan panjang maksimum antrian tunggu. Nilainya harus berada dalam rentang 0 hingga 1024. Ketika konkurensi atau QPS pernyataan SQL yang cocok mencapai batas aturan, pernyataan tersebut masuk ke antrian penundaan untuk dicoba ulang. Ketika jumlah pernyataan SQL dalam antrian penundaan melebihi panjang maksimum, permintaan baru langsung mengembalikan kesalahan. Panjang maksimum antrian tunggu yang wajar dapat mencegah antrian penundaan terus bertambah tanpa batas ketika banyak pernyataan SQL dibatasi. Hal ini menghindari kesalahan kehabisan memori (OOM) pada proksi database.

    Maximum Active Concurrent Statements

    Tetapkan jumlah maksimum pernyataan konkuren aktif.

    Catatan

    Parameter ini hanya diperlukan ketika parameter Rule Type diatur ke Throttle Active Concurrent Statements.

    Maximum QPS Per Connection

    Tetapkan QPS maksimum untuk setiap koneksi.

    Catatan

    Parameter ini hanya diperlukan ketika parameter Rule Type diatur ke Throttle QPS Per Connection.

Cara Kerja

Pembatasan SQL adalah fitur yang diimplementasikan pada proksi database. Anda mengonfigurasi aturan pengendalian aliran pada proksi database untuk mengontrol konkurensi atau QPS pernyataan SQL tertentu yang diteruskan. Fitur ini tidak memengaruhi node read-write atau read-only dari kluster database, sehingga hanya dapat dikonfigurasi untuk titik akhir kluster atau titik akhir kustom.

Templat SQL dan mode pencocokan

Template matching dan full-text matching

Templat SQL dapat berupa pernyataan SQL apa pun yang mengikuti sintaks standar kluster PolarDB for PostgreSQL atau . Setelah Anda mengonfigurasi templat SQL, proksi database melakukan pra-pemrosesan berdasarkan mode pencocokan yang dipilih.

  • Misalnya, Anda mengonfigurasi aturan pengendalian aliran dengan templat SQL berikut:

    SELECT * FROM tbl WHERE id < 1;
    • Jika Anda memilih template matching, templat SQL dinormalisasi: spasi tambahan dan komentar dihapus, sedangkan bagian konstan seperti string dalam tanda kutip tunggal dan angka diganti dengan karakter wildcard. Hasilnya sebagai berikut:

      -- Template result
      SELECT * FROM tbl WHERE id < ?
    • Jika Anda memilih full-text matching, templat SQL juga dinormalisasi, tetapi bagian konstan tidak diganti. Hasilnya sebagai berikut:

      -- Formatted result only
      SELECT * FROM tbl WHERE id < 1

    Proksi database kemudian menghasilkan pengenal unik untuk pernyataan SQL yang telah diformat guna pencocokan selanjutnya.

  • Saat aturan pengendalian aliran diaktifkan, proksi database juga melakukan pra-pemrosesan setiap pernyataan SQL bisnis dengan cara yang mirip dengan templat SQL. Sebagai contoh, pertimbangkan pernyataan SQL bisnis berikut:

    SELECT * FROM tbl WHERE id < 100;

    Dua versi pernyataan SQL yang telah diformat juga dihasilkan, pengenal unik dihitung, dan upaya pencocokan dengan aturan pengendalian aliran dilakukan:

    -- Template result
    SELECT * FROM tbl WHERE id < ?
    
    -- Formatted result only
    SELECT * FROM tbl WHERE id < 100

Setelah aturan pembatasan SQL diaktifkan, proksi database menelusuri aturan pengendalian aliran yang telah dikonfigurasi sebelum meneruskan pernyataan SQL saat ini. Jika aturan dikonfigurasi untuk template matching, hasil templated digunakan untuk mencocokkan templat SQL dalam aturan. Jika aturan dikonfigurasi untuk full-text matching, hasil formatted digunakan untuk pencocokan. Setelah terjadi kecocokan, konkurensi atau QPS dicatat, dan operasi pengendalian aliran yang sesuai dilakukan.

Oleh karena itu, dalam contoh sebelumnya, aturan hanya terpicu ketika template matching dikonfigurasi.

Dukungan parameterisasi

Templat SQL mendukung sintaks parameterisasi yang konsisten dengan sintaks pengikatan parameter standar PostgreSQL:

SELECT * FROM tbl WHERE id < $1 AND name = $2 LIMIT 1;

Bagian yang diparameterisasi diformat sebagai karakter wildcard baik dalam template matching maupun full-text matching:

-- Template result
SELECT * FROM tbl WHERE id < ? AND name = ? limit ?

-- Formatted result only
SELECT * FROM tbl WHERE id < ? AND name = ? limit 1

Sebagai contoh, untuk pernyataan SQL bisnis berikut:

SELECT * FROM tbl WHERE id < $1 AND name = 2 LIMIT 100;

Aturan sebelumnya akan terpicu jika current mode diatur ke template matching, tetapi tidak akan terpicu jika diatur ke full-text matching.

Catatan

Anda tidak dapat menggunakan simbol ? secara langsung untuk parameterisasi dalam templat SQL:

-- Ini adalah templat SQL yang tidak valid. Tidak mengikuti sintaks standar PostgreSQL dan tidak akan mencocokkan pernyataan SQL apa pun.
SELECT ?, ?, ?;

-- Ini adalah templat SQL yang valid.
SELECT $1, $2, $3;

Pernyataan prepared

Saat bisnis Anda menggunakan pernyataan prepared, pernyataan PREPARE itu sendiri tidak memicu pembatasan—hanya pernyataan EXECUTE yang memicunya. Untuk pernyataan EXECUTE, bagian SQL dalam pernyataan PREPARE yang sesuai diformat atau ditemplatkan untuk mencocokkan aturan.

Catatan

Untuk informasi selengkapnya tentang pernyataan prepared, lihat PREPARE.

Contoh

Gunakan templat SQL berikut untuk mengonfigurasi aturan pembatasan dengan memilih template matching sebagai mode pencocokan:

SELECT * FROM tbl WHERE id < $1 AND name > $2;

Untuk pernyataan SQL bisnis berikut:

-- Pernyataan PREPARE tidak memicu pembatasan.
PREPARE s1 AS SELECT * FROM tbl WHERE id < $1 AND name > 100;

-- Pernyataan EXECUTE menggunakan bagian SQL dalam pernyataan PREPARE yang sesuai untuk mencocokkan aturan pembatasan.
EXECUTE s1;

EXECUTE s1;

EXECUTE s1;

Ketiga pernyataan EXECUTE tersebut akan memicu aturan pembatasan dan dibatasi.

Demikian pula, saat Anda menggunakan pernyataan PREPARE dalam templat SQL aturan pembatasan, hanya bagian SQL dalam pernyataan PREPARE yang diformat atau ditemplatkan untuk pembatasan. Oleh karena itu, kedua templat SQL berikut setara saat membuat aturan:

-- Template 1
PREPARE s1 AS SELECT * FROM tbl WHERE id < $1 AND name > $2;

-- Template 2
SELECT * FROM tbl WHERE id < $1 AND name > $2;

Dukungan protokol diperluas

Mirip dengan pernyataan prepared, ketika driver bisnis menggunakan protokol diperluas, hanya pesan Execute yang memicu pembatasan. Untuk setiap pesan Execute, proksi database menemukan pesan Parse yang sesuai dan menghitung templat SQL untuk mencocokkan aturan pembatasan. Dengan demikian, pembatasan SQL mendukung protokol diperluas, sehingga Anda tidak perlu khawatir tentang protokol yang digunakan oleh aplikasi Anda.

Catatan

Untuk informasi selengkapnya tentang protokol diperluas, lihat dokumentasi PostgreSQL.

Batasan

Fitur pembatasan SQL memiliki batasan berikut:

  • SQL multi-pernyataan tidak didukung untuk pembatasan. Jika Anda menggunakan SQL multi-pernyataan, tidak ada aturan pembatasan yang dikonfigurasi yang akan dipicu.

    SQL multi-pernyataan mengacu pada teks SQL tunggal yang berisi beberapa pernyataan SQL yang dipisahkan oleh titik koma. Berikut contoh eksekusi multi-pernyataan menggunakan driver Java Database Connectivity (JDBC):

    Statement statement = connection.createStatement();
    
    statement.execute("select 1; select 2; select 3");

    Eksekusi multi-pernyataan dapat memicu beberapa aturan pembatasan secara bersamaan. Untuk menghindari hasil yang tidak diinginkan, pembatasan tidak didukung.

  • Beberapa pernyataan khusus, seperti pernyataan kontrol transaksi dan prosedur tersimpan, tidak didukung untuk pembatasan. Membatasi pernyataan kontrol transaksi seperti COMMIT dapat mencegah transaksi berakhir secara normal, sehingga pernyataan tersebut tidak memicu aturan pembatasan.

  • Saat klien atau driver menggunakan mode batching pernyataan, hanya aturan pembatasan pertama yang dipicu untuk pernyataan SQL yang dibatch. Berikut contoh eksekusi batch menggunakan driver JDBC:

    Statement statement = connection.createStatement();
    
    statement.addBatch("select 1");
    statement.addBatch("select 2");
    statement.addBatch("select 3");
    
    int[] result = statement.executeBatch();
    statement.close();
    connection.close();

    Mirip dengan eksekusi multi-pernyataan, saat menggunakan batching pernyataan, driver biasanya menggabungkan pesan protokol diperluas dari beberapa pernyataan SQL dan mengirimkannya sekaligus. Hal ini juga dapat menyebabkan beberapa aturan pembatasan dipicu secara bersamaan. Dalam kasus ini, hanya aturan pembatasan pertama yang dipicu yang diaktifkan. Sebagai contoh, jika aturan pembatasan untuk ketiga templat SQL berikut dikonfigurasi secara bersamaan pada titik akhir:

    -- Template 1
    SELECT 1;
    
    -- Template 2
    SELECT 2;
    
    --Template 3
    SELECT 3;

    Hanya Template 1 yang dipicu.

  • Templat SQL tidak mendukung kata kunci case-insensitive. Saat mengonfigurasi templat SQL, huruf besar/kecil harus sesuai dengan teks SQL yang ingin Anda batasi.

  • Templat SQL tidak mendukung templating untuk ekspresi dengan panjang variabel seperti `in` atau `any` yang mengabaikan jumlah elemen. Misalnya:

    -- SQL template
    SELECT * FROM tbl WHERE id IN ($1, $2, $3);
    
    -- SQL1, dapat memicu templat
    SELECT * FROM tbl WHERE id IN (1, 6, 8);
    
    -- SQL2, tidak dapat memicu templat
    SELECT * FROM tbl WHERE id IN (1, 6, 8, 8);
  • Jika tidak ada aturan pembatasan yang dikonfigurasi, aturan baru yang ditambahkan tidak berlaku pada koneksi yang sudah ada. Namun, jika terdapat aturan pembatasan apa pun di konsol—terlepas dari status aktif atau tidak—operasi penambahan, pengubahan, atau penghapusan selanjutnya berlaku pada semua koneksi secara real time.

    Catatan
    • Jika bisnis Anda menggunakan koneksi persisten dan Anda ingin aturan baru berlaku segera kapan saja, kami merekomendasikan agar Anda mengonfigurasi aturan arbitrer pada titik akhir yang sesuai, menonaktifkannya, lalu menyimpannya. Penambahan atau modifikasi aturan selanjutnya kemudian dapat berlaku pada koneksi baru maupun lama.

    • Jika versi proksi database adalah 2.3.58 atau lebih baru, penambahan, modifikasi, atau penghapusan aturan pembatasan dapat berlaku pada semua koneksi secara real time. Anda dapat melihat versi proksi database di konsol. Jika versi mesin minor tidak memenuhi persyaratan, Anda dapat meningkatkan versi proksi database.

Metode pembatasan

Saat ini, pembatasan SQL menggunakan templat SQL dan antrian penundaan untuk mengimplementasikan pembatasan QPS atau konkurensi aktif. Pernyataan SQL bisnis harus memicu aturan pembatasan agar QPS atau konkurensi pada aturan tersebut dapat dicatat. Ketika konkurensi atau QPS melebihi batas yang dikonfigurasi, proksi database menempatkan pernyataan SQL ke dalam antrian penundaan dan mencoba mengeksekusinya ulang setelah periode waktu tertentu. Pendekatan ini menjaga konkurensi atau QPS di sisi database agar tidak melebihi batas aturan.

Waktu penundaan dalam antrian berbanding terbalik dengan QPS atau konkurensi yang dikonfigurasi dalam aturan. Jumlah maksimum pernyataan SQL yang dapat memicu aturan dan menunggu dalam antrian penundaan dibatasi oleh panjang maksimum antrian tunggu yang dikonfigurasi. Jika batas tersebut terlampaui, proksi tidak meneruskan pernyataan SQL dan mengembalikan kesalahan berikut ke klien:

SELECT 123;
Current query is being throttled and waiting queue is full.
Catatan

Kesalahan di atas tidak mengganggu atau mengubah resolusi transaksi koneksi saat ini. Setelah menerima kesalahan ini, klien masih dapat memilih untuk commit atau rollback transaksi.

Selain itu, jika konkurensi aktif maksimum atau QPS maksimum per koneksi dalam aturan pembatasan SQL dikonfigurasi sebagai 0, setiap pernyataan SQL yang memicu aturan tersebut akan langsung ditolak, dan kesalahan di atas dikembalikan ke klien. Metode ini dapat digunakan untuk sepenuhnya menolak eksekusi kelas pernyataan SQL tertentu.

Catatan
  • Antrian penundaan memiliki interval percobaan ulang minimum. Jika QPS maksimum yang dikonfigurasi besar, QPS aktual mungkin sedikit lebih rendah dari nilai yang dikonfigurasi.

  • Untuk ketersediaan tinggi (HA), proksi database biasanya ditempatkan pada dua node atau lebih. Koneksi klien dialokasikan secara acak ke node-node tersebut. Parameter Maximum Active Concurrent Statements dan Maximum Waiting Queue Length dikonfigurasi pada tingkat node, dan setiap node menghitung konkurensi serta panjang antrian secara independen. Akibatnya, konkurensi total aktual tidak dapat dikontrol secara tepat. Misalkan jumlah node adalah N, satu node dikonfigurasi dengan C untuk Maximum Active Concurrent Statements dan Q untuk Maximum Waiting Queue Length. Rentang konkurensi klien adalah [C+Q, N × (C+Q)], sedangkan rentang konkurensi aktif database adalah [C, N × C].

  • Setelah mengonfigurasi aturan pembatasan SQL, proksi melakukan beberapa operasi untuk setiap pernyataan SQL bisnis—terlepas dari apakah pernyataan tersebut memicu aturan atau tidak—termasuk templating, menghasilkan pengenal unik, dan mencoba mencocokkan aturan. Mengaktifkan pembatasan SQL dapat mengurangi kinerja penerusan sebesar 5% hingga 10%. Gunakan fitur ini hanya ketika pernyataan SQL lambat di sisi database memengaruhi operasi bisnis normal. Setelah masalah terselesaikan, Anda dapat menonaktifkan aturan pembatasan di konsol. Aturan yang dinonaktifkan tidak berlaku tetapi tetap disimpan dan dapat diaktifkan kapan saja.

Praktik Terbaik

Uji apakah aturan pembatasan yang dikonfigurasi berlaku

Karena Anda dapat mengonfigurasi akun dan database tempat aturan pembatasan diterapkan, buat akun baru dan konfigurasikan aturan pembatasan untuknya dengan konkurensi atau QPS 0. Hal ini memungkinkan Anda menguji apakah aturan dapat memicu pernyataan SQL yang ingin Anda batasi.

Misalnya, Anda ingin membatasi pernyataan SQL berikut:

SELECT * FROM generate_series(1, 100000);
  1. Buat akun database uji coba.

    image

  2. Konfigurasikan aturan pembatasan untuk akun uji coba dan atur konkurensi aktif maksimum ke 0. Untuk informasi selengkapnya tentang cara mengonfigurasi aturan pembatasan, lihat Prosedur.

    image

  3. Verifikasi bahwa aturan berlaku. Aturan tersebut hanya berlaku untuk akun uji coba yang baru dibuat dan tidak memengaruhi bisnis saat ini. Setelah mengonfigurasi aturan, sambungkan ke database melalui titik akhir yang dipilih dalam aturan dan eksekusi pernyataan SQL. Jika kesalahan dikembalikan seperti yang diharapkan, berarti aturan telah berlaku:

    SELECT * FROM generate_series(1, 100000);
    Current query is being throttled and waiting queue is full.

Gunakan pembatasan SQL untuk menangani pernyataan SQL lambat di lingkungan produksi

  1. Persiapkan lingkungan pengujian.

    • Persiapkan instance ECS

      1. Buat instance ECS yang menjalankan sistem operasi Linux. Dalam contoh ini, digunakan instance ECS dengan CentOS 7.6 64-bit. Untuk informasi selengkapnya, lihat Buat instance menggunakan wizard.

        Catatan

        Kami merekomendasikan agar instance ECS dan kluster PolarDB ditempatkan di zona dan VPC yang sama.

      2. Instal alat pgbench pada instance ECS.

        sudo yum install postgresql-contrib
    • Persiapkan kluster PolarDB

      1. Masuk ke halaman pembelian kluster PolarDB untuk membuat kluster database.

      2. Buat akun database.

      3. Lihat titik akhir kluster. Jika kluster PolarDB dan instance ECS berada di zona yang sama, Anda dapat menggunakan titik akhir privat. Jika tidak, ajukan titik akhir publik. Tambahkan alamat IP instance ECS ke daftar putih kluster PolarDB. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih kluster.

      4. Di konsol, buat database uji coba.

      5. Untuk memastikan aturan pembatasan yang dikonfigurasi selanjutnya berlaku pada koneksi yang sudah ada, konfigurasikan aturan arbitrer di konsol dan nonaktifkan. Untuk informasi selengkapnya, lihat Prosedur.

        Catatan

        Jika versi proksi database adalah 2.3.58 atau lebih baru, penambahan, modifikasi, atau penghapusan aturan pembatasan dapat berlaku pada semua koneksi secara real time, sehingga langkah ini tidak diperlukan. Anda dapat melihat versi proksi database di konsol. Jika versi mesin minor tidak memenuhi persyaratan, Anda dapat meningkatkan versi proksi database.

        image

  2. Di instance ECS, gunakan alat pgbench untuk menyambung ke titik akhir kluster PolarDB dan inisialisasi data uji stres.

    pgbench -h <PolarDB_cluster_endpoint> -p <Port_of_the_PolarDB_cluster_endpoint> -i -s 10 -U <Username_of_the_PolarDB_database_account> <Name_of_the_test_database>

    Kemudian, mulai uji stres menggunakan mode bawaan TPC-B-like pgbench untuk mensimulasikan beban bisnis normal.

    pgbench -h <PolarDB_cluster_endpoint> -p <Port_of_the_PolarDB_cluster_endpoint> -P 1 -b tpcb-like -j 5 -c 10 -M prepared -T 6000 -U <Username_of_the_PolarDB_database_account> <Name_of_the_test_database> 
  3. Simulasikan skenario pernyataan SQL lambat. Buat sesi koneksi baru dan eksekusi pernyataan berikut di database uji coba:

    WITH t AS (SELECT md5(i::text) AS id FROM generate_series(1, 10000000) i) SELECT * FROM t ORDER BY id LIMIT 1;

    Pernyataan SQL ini mengonsumsi banyak sumber daya komputasi dan biasanya membutuhkan waktu sekitar 5 detik untuk mengembalikan hasil berikut:

                    id                
    ----------------------------------
     0000023f507999464aa2b78875b7e5d6
    (1 row)

    Jalankan pgbench lagi dengan skrip kustom untuk menjalankan uji stres pada pernyataan SQL di atas. Mulai 10 koneksi untuk mensimulasikan skenario di mana pernyataan SQL lambat menyebabkan beban kluster tinggi:

    echo "WITH t AS (SELECT md5(i::text) AS id FROM generate_series(1, 10000000) i) SELECT * FROM t ORDER BY id LIMIT 1;" > slow.sql
    
    pgbench -h <PolarDB_cluster_endpoint> -p <Port_of_the_PolarDB_cluster_endpoint> -P 1 -f slow.sql -j 5 -c 10 -M prepared -T 6000 -U <Username_of_the_PolarDB_database_account> <Name_of_the_test_database> 

    Setelah uji stres dimulai, beban bisnis normal langsung turun drastis:

    image

  4. Di konsol, gunakan templat SQL berikut untuk mengonfigurasi aturan pembatasan dan atur Rule Type ke Throttle Active Concurrent Statements:

    WITH t AS (SELECT md5(i::text) AS id FROM generate_series($1, $2) i) SELECT * FROM t ORDER BY id LIMIT $3;

    image

    Batasi konkurensi pernyataan SQL lambat menjadi 1. Setelah mengaktifkan aturan, Anda akan melihat bahwa beban bisnis meningkat, menunjukkan bahwa aturan pembatasan telah berlaku.

    image

  5. Di konsol, ubah aturan pembatasan. Pada baris aturan pembatasan target, klik Modify di kolom Actions dan atur konkurensi aktif maksimum ke 0 untuk sepenuhnya menolak eksekusi pernyataan SQL lambat:

    image

    Setelah mengonfigurasi aturan, Anda akan melihat bahwa uji stres pernyataan SQL lambat mengembalikan kesalahan dan terganggu, sehingga beban bisnis sepenuhnya pulih.

    image