如果查询长时间没有返回结果,则需要确认查询是否处于锁等待状态。AnalyticDB PostgreSQL版新增锁诊断功能,帮助您快速诊断数据库中的锁情况。
前提条件
- 实例资源类型为存储弹性模式。
- 引擎版本为6.0。
操作步骤
处理方法
如果查询长时间未返回结果且锁诊断页面显示查询状态为锁等待,您可以选择等待之前的查询完成后系统自动执行您的查询任务,也可以结束造成阻塞的查询任务。
您可以取消(Cancel)或结束(Kill)造成阻塞的查询,方法如下。
说明 只有高权限(superuser权限)账号才能取消或结束查询。
- 取消查询
查询所属的会话必须在运行中状态才能取消该查询,取消查询后数据库需要花费一定的时间来做清理和事务的回滚。取消查询语句如下:
SELECT pg_cancel_backend(<进程ID>);
如果会话已经处于空闲(Idle)状态,则需要使用结束查询的方法。
- 结束查询
结束查询语句如下:
SELECT pg_terminate_backend(<进程ID>);
相关文档
AnalyticDB PostgreSQL版还支持通过pg_stat_activity视图查看SQL的运行信息,详细信息,请参见通过pg_stat_activity分析诊断正在执行的SQL。
相关API
API | 说明 |
---|---|
DescribeWaitingSQLRecords | 获取锁诊断列表。 |
DescribeWaitingSQLInfo | 获取锁诊断详细信息。 |