Was bedeutet es, wenn ein PostgreSQL-Prozess in der Transaktion inaktiv ist?

83

Was bedeutet es, wenn ein PostgreSQL- Prozess "in Transaktion inaktiv" ist?

Auf einem Server, den ich betrachte, werden in der Ausgabe von "ps ax | grep postgres" 9 PostgreSQL-Prozesse angezeigt, die wie folgt aussehen:

postgres: user db 127.0.0.1(55658) idle in transaction

Bedeutet dies, dass einige der Prozesse hängen bleiben und darauf warten, dass eine Transaktion festgeschrieben wird? Hinweise auf relevante Dokumentationen sind willkommen.

Schreibgeschützt
quelle

Antworten:

53

Das PostgreSQL-Handbuch gibt an, dass die Transaktion offen (innerhalb von BEGIN) und inaktiv ist. Es ist höchstwahrscheinlich ein Benutzer, der über den Monitor verbunden ist und denkt oder tippt. Ich habe auch viele davon auf meinem System.

Wenn Sie Slony für die Replikation verwenden, aber die Slony-I FAQ schlägt vor , idle in transactionkann bedeuten, dass die Netzwerkverbindung wurde abrupt beendet. Weitere Informationen finden Sie in der Diskussion in diesen FAQ.

Anonymoose
quelle
9
Was bedeutet nur "Leerlauf"? Sind die Transaktionen im Ruhezustand ebenfalls geöffnet?
Yousuf Sultan
2
Was bedeutet Monitor ?
Abdull
2
@Abdull Der psql-Client. "Monitor" ist ein (anscheinend) archaischer Begriff für die Software zur Steuerung einer Datenbank.
Anonymoose
@YousufSultan Siehe: dba.stackexchange.com/a/202028/26781
pdoherty926
18

Wie hier erwähnt: Re: BUG # 4243: Leerlauf in der Transaktion Es ist wahrscheinlich am besten, Ihre pg_locks-Tabelle zu überprüfen, um festzustellen, was gesperrt wird, und dies könnte Ihnen einen besseren Hinweis geben, wo das Problem liegt.

Arthur Thomas
quelle