2008-09-09 5 views
60

Qu'est-ce que cela signifie lorsqu'un processus PostgreSQL est "inactif dans la transaction"?Qu'est-ce que cela signifie quand un processus PostgreSQL est "inactif dans la transaction"?

Sur un serveur que je regarde, la sortie de « ps ax | grep postgres » Je vois 9 processus de PostgreSQL qui ressemblent à ce qui suit:

postgres: user db 127.0.0.1(55658) idle in transaction 

Est-ce que cela signifie que certains des processus sont suspendus, en attente d'une transaction à commettre? Tout pointeur vers la documentation pertinente est apprécié.

Répondre

34

Le PostgreSQL manual indique que cela signifie que la transaction est ouverte (dans BEGIN) et inactive. Il s'agit très probablement d'un utilisateur connecté à l'aide du moniteur qui pense ou qui tape. J'en ai aussi beaucoup sur mon système.

Si vous utilisez Slony pour la réplication, cependant, le Slony-I FAQ suggère idle in transaction peut signifier que la connexion réseau a été interrompue brutalement. Consultez la discussion dans cette FAQ pour plus de détails.

+7

Qu'est-ce que "ralenti" signifie? Les transactions en état «inactif» sont-elles également ouvertes? –

+1

Que signifie * monitor *? – Abdull

+1

@Abdull Le client psql. "Monitor" est un terme (apparemment) archaïque pour le logiciel utilisé pour contrôler une base de données. – Anonymoose

9

Comme mentionné ici: Re: BUG #4243: Idle in transaction il est probablement préférable de vérifier votre table pg_locks pour voir ce qui est verrouillé et cela pourrait vous donner une meilleure idée de l'origine du problème.

Questions connexes