开发者社区> 问答> 正文

如何终止异常SQL执行?

如何终止异常SQL执行?

展开
收起
保持可爱mmm 2020-03-29 13:11:24 724 0
1 条回答
写回答
取消 提交回答
  • 若需要终止特定的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的大小写

    pg_cancel_backend

    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的大小写

    pg_terminate_backend

    t (1 rows)

    说明 cancel 和terminate仅适用于当前用户的查询或权限小于等于当前用户的查询。若提示"ERROR: must be superuser or rds_superuser to signal other server processes",则说明后台有其他用户的连接,但不影响cancel 和terminate的执行。

    2020-03-29 13:16:16
    赞同 展开评论 打赏
问答分类:
SQL
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载