RDS PostgreSQL提供pg_concurrency_control插件,用于对SQL进行并发控制。
您可以加入RDS PostgreSQL插件交流钉钉群(103525002795),进行咨询、交流和反馈,获取更多关于插件的信息。
前提条件
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)
说明慢查询执行完毕后,排队信息会自动清空。