全部產品
Search
文件中心

ApsaraDB RDS:並發控制(pg_concurrency_control)

更新時間:Feb 28, 2024

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

前提條件

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

參數說明

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

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

/*+bigsql*/select * from test;

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

pg_concurrency_control.transaction_concurrency0設定事務塊並發控制的排隊個數限制。取值範圍為0~1024,預設值為0,表示關閉事務塊並發控制。
pg_concurrency_control.autocommit_concurrency0設定DML類型SQL並發控制的排隊個數限制。取值範圍為0~1024,預設值為0,表示關閉DML類型SQL並發控制。
pg_concurrency_control.control_timeout1秒設定Select類型SQL、DML類型SQL和事務塊的並發控制排隊等待時間。最小值為30毫秒(ms),最大值為3秒(s)。
pg_concurrency_control.bigsql_control_timeout1秒設定慢查詢並發控制排隊等待時間。最小值為30毫秒(ms),最大值為3秒(s)。
pg_concurrency_control.timeout_actionTCC_break設定Select類型SQL、DML類型SQL和事務塊的並發控制等待逾時後的行為。取值:
  • TCC_break:跳過等待繼續執行。
  • TCC_rollback:逾時後報錯,交易回復。
  • TCC_wait:逾時後重設時間戳記繼續等待。
pg_concurrency_control.bigsql_timeout_actionTCC_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)
    說明 慢查詢執行完畢後,排隊資訊會自動清空。