Postgresql Проверить, если запрос все еще выполняется
В своей работе мне нужно было создать новую таблицу соединений в базе данных postgresql, которая требовала выполнения большого количества вычислений для двух существующих таблиц. Процесс должен был занять много времени, поэтому я настроил его на выходные, а потом уехал в пятницу. Теперь я хочу проверить, завершен ли запрос или нет.
Как я могу проверить, завершена ли команда INSERT, пока она не находится на компьютере, на котором я ее запускал? (Нет, я не знаю, сколько строк предполагалось добавить.)
2 ответа
Select * from pg_stat_activity where state not ilike 'idle%' and query ilike 'insert%'
Это вернет все бездействующие сеансы, где запрос начинается с insert
, если ваш запрос не отображается в этом списке, он больше не выполняется.
Вы можете взглянуть на стол pg_stat_activity
который содержит все соединения с базой данных, включая активный запрос, владельца и т. д.
На https://gist.github.com/rgreenjr/3637525 приведен пример с возможностью копирования, как может выглядеть такой запрос.