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並發控制。 您可以使用
此時 |
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和事務塊的並發控制等待逾時後的行為。取值:
|
pg_concurrency_control.bigsql_timeout_action | TCC_wait | 設定慢查詢並發控制等待逾時後的行為。取值:
|
使用方法
- 使用如下命令建立外掛程式:
create extension pg_concurrency_control;
- 設定並發控制排隊個數限制大於0,即開啟外掛程式排隊功能。
例如設定pg_concurrency_control.query_concurrency=10,即開啟Select類型SQL並發控制功能。其餘功能開啟方式類似。
使用樣本
對自訂SQL操作進行並發控制。
- 使用如下命令查看排隊視圖:
select * from pg_concurrency_control_status();
系統輸出類似如下結果:
autocommit_count | bigquery_count | query_count | transaction_count ------------------+----------------+-------------+------------------- 0 | 0 | 0 | 0 (1 row)
- 設定pg_concurrency_control.query_concurrency大於0,例如10。
- 執行慢查詢語句:
/*+ bigsql */ select pg_sleep(10);
- 再次查看排隊視圖:
select * from pg_concurrency_control_status();
系統輸出類似如下結果:
autocommit_count | bigquery_count | query_count | transaction_count ------------------+----------------+-------------+------------------- 0 | 1 | 0 | 0 (1 row)
說明 慢查詢執行完畢後,排隊資訊會自動清空。