0

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

我找到了这些链接:

但似乎这不是我想要的。

4

1 回答 1

1

给定pid运行查询的会话的 (对应后端进程的进程 ID,您可以在pg_stat_activity、 或pstop等中找到),您可以使用:

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()是您用于运行命令的连接;如果没有此过滤器,“最新查询”将是您当前正在执行的查询。

于 2019-02-21T10:09:19.667 回答