Что это значит, когда процесс PostgreSQL «простаивает в транзакции»?

87

Что это значит, когда процесс PostgreSQL «простаивает в транзакции»?

На сервере, который я просматриваю, в выводе "ps ax | grep postgres" я вижу 9 процессов PostgreSQL, которые выглядят следующим образом:

postgres: user db 127.0.0.1(55658) idle in transaction

Означает ли это, что некоторые процессы зависли в ожидании фиксации транзакции? Любые указатели на соответствующую документацию приветствуются.

Только чтение
источник

Ответы:

56

В руководстве PostgreSQL указано, что это означает, что транзакция открыта (внутри BEGIN) и простаивает. Скорее всего, с помощью монитора подключился пользователь, который думает или печатает. У меня тоже много таких в моей системе.

Если вы используете Слон для репликации, однако, Slony-I FAQ предполагает idle in transactionможет означать , что подключение к сети было прекращено внезапно. Ознакомьтесь с обсуждением в этом FAQ для получения более подробной информации.

Анонимус
источник
9
Что значит «простаивать» ?? Открыты ли также транзакции в состоянии ожидания?
Юсуф Султан
2
Что означает монитор ?
Абдул
2
@Abdull Клиент psql. «Монитор» - это (очевидно) архаичный термин для программного обеспечения, используемого для управления базой данных.
Anonymoose 04
@YousufSultan См .: dba.stackexchange.com/a/202028/26781
pdoherty926