从CLI取消正在运行的查询

时间:2019-02-21 09:57:28

标签: postgresql postgresql-11

我正在寻找一种取消cli中当前正在运行的查询的方法。

我找到了以下链接:

但似乎不是我想要的。

1 个答案:

答案 0 :(得分:0)

鉴于运行查询的会话的pid(相应的后端进程的进程ID,可以在pg_stat_activitypstop中找到等等),您可以使用:

psql -c "SELECT pg_cancel_backend(<your_pid>)"

如果您要杀死所有满足某些条件的查询(例如,已运行/阻塞/空闲一段时间的查询,或针对特定数据库运行的查询),则通常这样有用:

psql -c "SELECT pg_cancel_backend(pid) FROM pg_stat_activity WHERE <your_conditions>"

您也可以使用pg_terminate_backend(pid)断开它们的连接。


要取消最近启动的查询:

SELECT pg_cancel_backend(pid)
FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
ORDER BY query_start DESC
LIMIT 1;

pg_backend_pid()是您用于运行命令的连接;如果没有此过滤器,则“最新查询”将是您当前正在执行的查询。