我正在寻找一种取消cli中当前正在运行的查询的方法。
我找到了以下链接:
但似乎不是我想要的。
答案 0 :(得分:0)
鉴于运行查询的会话的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()
是您用于运行命令的连接;如果没有此过滤器,则“最新查询”将是您当前正在执行的查询。