我正在寻找一种方法来取消当前从 cli 运行的查询。
我找到了这些链接:
- https://www.postgresql.org/docs/11/libpq-cancel.html
- https://www.postgresql.org/docs/11/contrib-dblink-cancel-query.html
但似乎这不是我想要的。
我正在寻找一种方法来取消当前从 cli 运行的查询。
我找到了这些链接:
但似乎这不是我想要的。
给定pid
运行查询的会话的 (对应后端进程的进程 ID,您可以在pg_stat_activity
、 或ps
、top
等中找到),您可以使用:
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()
是您用于运行命令的连接;如果没有此过滤器,“最新查询”将是您当前正在执行的查询。