ApsaraDB RDS for PostgreSQL menyediakan plug-in pg_concurrency_control untuk mengontrol konkurensi pernyataan SQL.
Prasyarat
Instance RDS Anda harus menjalankan PostgreSQL 10 atau 11.Parameter
| Parameter | Nilai default | Deskripsi |
| pg_concurrency_control.query_concurrency | 0 | Menetapkan jumlah maksimum pekerjaan bersamaan dalam pernyataan SQL SELECT. Nilai valid: 0 hingga 1024. Nilai default: 0. Nilai default menunjukkan bahwa kontrol konkurensi dinonaktifkan untuk pernyataan SQL SELECT. |
| pg_concurrency_control.bigquery_concurrency | 0 | Menetapkan jumlah maksimum pekerjaan bersamaan dalam kueri lambat. Nilai valid: 0 hingga 1024. Nilai default: 0. Nilai default menunjukkan bahwa kontrol konkurensi dinonaktifkan untuk kueri lambat. Anda dapat menentukan suatu pernyataan sebagai kueri lambat dengan menggunakan Pernyataan |
| pg_concurrency_control.transaction_concurrency | 0 | Menetapkan jumlah maksimum pekerjaan bersamaan untuk blok transaksi. Nilai valid: 0 hingga 1024. Nilai default: 0. Nilai default menunjukkan bahwa kontrol konkurensi dinonaktifkan untuk blok transaksi. |
| pg_concurrency_control.autocommit_concurrency | 0 | Menetapkan jumlah maksimum pekerjaan bersamaan dalam pernyataan SQL DML. Nilai valid: 0 hingga 1024. Nilai default: 0. Nilai default menunjukkan bahwa kontrol konkurensi dinonaktifkan untuk pernyataan SQL DML. |
| pg_concurrency_control.control_timeout | 1s | Menetapkan waktu maksimum untuk menunggu pernyataan SQL SELECT, pernyataan SQL DML, dan blok transaksi. Nilai minimum adalah 30 ms, dan nilai maksimum adalah 3s. |
| pg_concurrency_control.bigsql_control_timeout | 1s | Menetapkan waktu maksimum untuk menunggu kueri lambat. Nilai minimum adalah 30 ms, dan nilai maksimum adalah 3s. |
| pg_concurrency_control.timeout_action | TCC_break | Menetapkan tindakan saat timeout untuk pernyataan SQL SELECT, pernyataan SQL DML, dan blok transaksi. Nilai valid:
|
| pg_concurrency_control.bigsql_timeout_action | TCC_wait | Menetapkan tindakan saat timeout untuk kueri lambat. Nilai valid:
|
Prosedur
- Jalankan perintah berikut untuk membuat plug-in:
create extension pg_concurrency_control; - Atur jumlah pekerjaan bersamaan ke nilai lebih besar dari 0 untuk mengaktifkan kontrol konkurensi di plug-in.
Sebagai contoh, atur parameter pg_concurrency_control.query_concurrency menjadi 10 untuk mengaktifkan kontrol konkurensi pada pernyataan SQL SELECT. Metode untuk jenis pernyataan lainnya serupa.
Contoh
Lakukan langkah-langkah berikut untuk mengaktifkan kontrol konkurensi pada pernyataan SQL kustom:
- Jalankan perintah berikut untuk melihat informasi antrian pernyataan:
select * from pg_concurrency_control_status();Sistem akan menampilkan informasi serupa dengan output berikut:
autocommit_count | bigquery_count | query_count | transaction_count ------------------+----------------+-------------+------------------- 0 | 0 | 0 | 0 (1 row) - Atur parameter pg_concurrency_control.query_concurrency ke nilai lebih besar dari 0, misalnya 10.
- Eksekusi kueri lambat.
/*+ bigsql */ select pg_sleep(10); - Jalankan perintah berikut untuk melihat informasi antrian pernyataan lagi:
select * from pg_concurrency_control_status();Sistem akan menampilkan informasi serupa dengan output berikut:
autocommit_count | bigquery_count | query_count | transaction_count ------------------+----------------+-------------+------------------- 0 | 1 | 0 | 0 (1 row)Catatan Setelah kueri lambat selesai, informasi antrian akan otomatis dihapus.