正在取消来自 cli 的 运行 查询
Canceling running queries from cli
我正在寻找一种方法来取消当前 运行 来自 cli 的查询。
我找到了这些链接:
- https://www.postgresql.org/docs/11/libpq-cancel.html
- https://www.postgresql.org/docs/11/contrib-dblink-cancel-query.html
不过好像不是我要找的
给定会话 运行 查询的 pid
(相应后端进程的进程 ID,您可以在 pg_stat_activity
中找到,或者来自 ps
, top
, 等等), 你可以使用:
psql -c "SELECT pg_cancel_backend(<your_pid>)"
如果你试图杀死所有满足某些条件的查询(例如那些已经 running/blocking/idle 一段时间的查询,或者那些 运行 针对特定数据库的查询),像这通常很有用:
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()
是您用于 运行 命令的连接;如果没有此过滤器,"latest query" 将是您当前正在执行的过滤器。
我正在寻找一种方法来取消当前 运行 来自 cli 的查询。
我找到了这些链接:
- https://www.postgresql.org/docs/11/libpq-cancel.html
- https://www.postgresql.org/docs/11/contrib-dblink-cancel-query.html
不过好像不是我要找的
给定会话 运行 查询的 pid
(相应后端进程的进程 ID,您可以在 pg_stat_activity
中找到,或者来自 ps
, top
, 等等), 你可以使用:
psql -c "SELECT pg_cancel_backend(<your_pid>)"
如果你试图杀死所有满足某些条件的查询(例如那些已经 running/blocking/idle 一段时间的查询,或者那些 运行 针对特定数据库的查询),像这通常很有用:
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()
是您用于 运行 命令的连接;如果没有此过滤器,"latest query" 将是您当前正在执行的过滤器。