全部產品
Search
文件中心

ApsaraDB RDS:並發控制(pg_concurrency_control)

更新時間:Jul 16, 2025

RDS PostgreSQL提供pg_concurrency_control外掛程式,用於對SQL進行並發控制。

前提條件

RDS PostgreSQL執行個體版本為PostgreSQL 10或11。

參數說明

參數

預設值

說明

pg_concurrency_control.query_concurrency

0

設定Select類型SQL並發控制的排隊個數限制。取值範圍為0~1024,預設值為0,表示關閉Select類型SQL並發控制。

pg_concurrency_control.bigquery_concurrency

0

設定慢查詢類型SQL並發控制的排隊個數限制。取值範圍為0~1024,預設值為0,表示關閉慢查詢類型SQL並發控制。

您可以使用hint "/*+bigsql*/"的方式來指定一個請求為慢查詢。例如:

/*+bigsql*/select * from test;

此時select * from test;被認為是一個慢查詢。

pg_concurrency_control.transaction_concurrency

0

設定事務塊並發控制的排隊個數限制。取值範圍為0~1024,預設值為0,表示關閉事務塊並發控制。

pg_concurrency_control.autocommit_concurrency

0

設定DML類型SQL並發控制的排隊個數限制。取值範圍為0~1024,預設值為0,表示關閉DML類型SQL並發控制。

pg_concurrency_control.control_timeout

1秒

設定Select類型SQL、DML類型SQL和事務塊的並發控制排隊等待時間。最小值為30毫秒(ms),最大值為3秒(s)。

pg_concurrency_control.bigsql_control_timeout

1秒

設定慢查詢並發控制排隊等待時間。最小值為30毫秒(ms),最大值為3秒(s)。

pg_concurrency_control.timeout_action

TCC_break

設定Select類型SQL、DML類型SQL和事務塊的並發控制等待逾時後的行為。取值:

  • TCC_break:跳過等待繼續執行。

  • TCC_rollback:逾時後報錯,交易回復。

  • TCC_wait:逾時後重設時間戳記繼續等待。

pg_concurrency_control.bigsql_timeout_action

TCC_wait

設定慢查詢並發控制等待逾時後的行為。取值:

  • TCC_break:跳過等待繼續執行。

  • TCC_rollback:逾時後報錯,交易回復。

  • TCC_wait:逾時後重設時間戳記繼續等待。

使用方法

  1. 使用如下命令建立外掛程式:

    create extension pg_concurrency_control;
  2. 設定並發控制排隊個數限制大於0,即開啟外掛程式排隊功能。

    例如設定pg_concurrency_control.query_concurrency=10,即開啟Select類型SQL並發控制功能。其餘功能開啟方式類似。

使用樣本

對自訂SQL操作進行並發控制。

  1. 使用如下命令查看排隊視圖:

    select * from pg_concurrency_control_status();

    系統輸出類似如下結果:

     autocommit_count | bigquery_count | query_count | transaction_count 
    ------------------+----------------+-------------+-------------------
                    0 |              0 |           0 |                 0 
    (1 row)
  2. 設定pg_concurrency_control.query_concurrency大於0,例如10。

  3. 執行慢查詢語句:

    /*+ bigsql */ select pg_sleep(10);
  4. 再次查看排隊視圖:

    select * from pg_concurrency_control_status();

    系統輸出類似如下結果:

     autocommit_count | bigquery_count | query_count | transaction_count 
    ------------------+----------------+-------------+-------------------
                    0 |              1 |           0 |                 0 
    (1 row)
    說明

    慢查詢執行完畢後,排隊資訊會自動清空。