Учитывая pid
сеанса, выполняющего запрос (идентификатор процесса соответствующего внутреннего процесса, который вы можете найти в 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()
- это соединение, которое вы используете для запуска команды;без этого фильтра «последний запрос» будет тем, который вы выполняете в данный момент.