2008-09-09 13 views
60

Co to znaczy, gdy proces PostgreSQL jest "bezczynny w transakcji"?Co to znaczy, gdy proces PostgreSQL jest "bezczynny w transakcji"?

Na serwerze Patrzę na wyjście z „ps ax | grep PostgreSQL” widzę 9 procesów PostgreSQL że wyglądać następująco:

postgres: user db 127.0.0.1(55658) idle in transaction 

Czy oznacza to, że niektóre z procesów są zawieszone, czekając na zatwierdzenie transakcji? Wszelkie wskazówki do odpowiedniej dokumentacji są mile widziane.

Odpowiedz

34

PostgreSQL manual wskazuje, że oznacza to, że transakcja jest otwarta (wewnątrz BEGIN) i bezczynna. Najprawdopodobniej jest to użytkownik podłączony za pomocą monitora, który myśli lub pisze. Mam też mnóstwo tych w moim systemie.

Jeśli używasz Slony do replikacji, jednak Slony-I FAQ sugeruje, że idle in transaction może oznaczać, że połączenie sieciowe zostało nagle przerwane. Sprawdź dyskusję w tym FAQ, by dowiedzieć się więcej.

+7

Co oznacza tylko "bezczynność"? Czy transakcje w stanie "bezczynności" również są otwarte? –

+1

Co oznacza * monitor *? – Abdull

+1

@Abdull Klient psql. "Monitor" jest (podobno) archaicznym terminem dla oprogramowania używanego do kontrolowania bazy danych. – Anonymoose

9

Jak wspomniano tutaj: Re: BUG #4243: Idle in transaction prawdopodobnie najlepiej jest sprawdzić tabelę pg_locks, aby zobaczyć, co jest blokowane i które mogą dać ci lepszą wskazówkę, gdzie leży problem.