全部产品
Search
文档中心

ApsaraDB RDS:Menggunakan plug-in pg_concurrency_control

更新时间:Jun 25, 2025

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

ParameterNilai defaultDeskripsi
pg_concurrency_control.query_concurrency0Menetapkan 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_concurrency0Menetapkan 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 hint "/*+bigsql*/". Contoh:

/*+bigsql*/select * from test;

Pernyataan select * from test; adalah kueri lambat.

pg_concurrency_control.transaction_concurrency0Menetapkan 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_concurrency0Menetapkan 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_timeout1sMenetapkan 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_timeout1sMenetapkan waktu maksimum untuk menunggu kueri lambat. Nilai minimum adalah 30 ms, dan nilai maksimum adalah 3s.
pg_concurrency_control.timeout_actionTCC_breakMenetapkan tindakan saat timeout untuk pernyataan SQL SELECT, pernyataan SQL DML, dan blok transaksi. Nilai valid:
  • TCC_break: melewati pernyataan yang sedang menunggu dan mengeksekusi pernyataan berikutnya.
  • TCC_rollback: melaporkan kesalahan dan melakukan rollback transaksi.
  • TCC_wait: mereset timestamp setelah timeout dan terus menunggu.
pg_concurrency_control.bigsql_timeout_actionTCC_waitMenetapkan tindakan saat timeout untuk kueri lambat. Nilai valid:
  • TCC_break: melewati pernyataan yang sedang menunggu dan mengeksekusi pernyataan berikutnya.
  • TCC_rollback: melaporkan kesalahan dan melakukan rollback transaksi.
  • TCC_wait: mereset timestamp setelah timeout dan terus menunggu.

Prosedur

  1. Jalankan perintah berikut untuk membuat plug-in:
    create extension pg_concurrency_control;
  2. 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:

  1. 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)
  2. Atur parameter pg_concurrency_control.query_concurrency ke nilai lebih besar dari 0, misalnya 10.
  3. Eksekusi kueri lambat.
    /*+ bigsql */ select pg_sleep(10);
  4. 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.