Отмена запущенных запросов из Cli - PullRequest
0 голосов
/ 21 февраля 2019

Я ищу способ отменить запросы, которые в данный момент выполняются из cli.

Я нашел эти ссылки:

но кажется, что это не то, что я ищу.

1 Ответ

0 голосов
/ 21 февраля 2019

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

...