若需要终止特定的SQL或会话来恢复系统状态,先通过pg_stat_activity系统视图查询当前的查询:
select current_query,procpid from pg_stat_activity ;
current_query | procpid
-----------------------------------------------------+--------- select current_query,procpid from pg_stat_activity; | 32584 SELECT xxx | 32238
说明 current_query为当前正在进行的查询,procpid为后台进程的PID。 终止非当前连接的SELECT:
SELECT pg_cancel_backend(pg_stat_activity.procpid) FROM pg_stat_activity WHERE procpid <> pg_backend_pid() and current_query like 'SELECT%';--注意SELECT的大小写
t (1 rows) 或
SELECT pg_terminate_backend(pg_stat_activity.procpid) FROM pg_stat_activity WHERE procpid <> pg_backend_pid() and current_query like 'SELECT%'; --注意SELECT的大小写
t (1 rows)
说明 cancel 和terminate仅适用于当前用户的查询或权限小于等于当前用户的查询。若提示"ERROR: must be superuser or rds_superuser to signal other server processes",则说明后台有其他用户的连接,但不影响cancel 和terminate的执行。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。