Мой запрос PostgreSQL все еще выполняется, даже если сервер закрыл соединение? - PullRequest
0 голосов
/ 05 мая 2020

Postgres нуб здесь. У меня очень длинный запрос postgresql, в котором выполняется обновление примерно для 3 миллионов строк. Я сделал это через psql и примерно через второй час получил следующее сообщение:

server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.

Мой запрос все еще выполняется? Я запустил:

select *
from pg_stat_activity
where datname = 'mydb';

, и я все еще вижу строку с моим запросом на обновление с state = active, wait_event_type = IO и wait_event = DataFileRead. Мне нужно беспокоиться о том, что мое соединение разорвано? Выполняется ли мой запрос, и это лучший способ проверить выполнение, чтобы продолжить проверку с помощью

select *
from pg_stat_activity
where datname = 'mydb';

?

1 Ответ

1 голос
/ 05 мая 2020

Ваш запрос не будет успешным. Ваш клиент потерял соединение, и хотя процесс внутреннего сервера, который обрабатывал ваше ОБНОВЛЕНИЕ, все еще продолжается, он заметит, что клиент отключился, когда он пытается вернуть статус запроса после завершения, и прервет транзакцию (независимо от того, выполнили вы это или нет. a BEGIN; каждый оператор в PG неявно присутствует в транзакции даже без BEGIN / COMMIT). Вам нужно будет повторно выпустить ОБНОВЛЕНИЕ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...