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)
说明 慢查询执行完毕后,排队信息会自动清空。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/156099.html