2008-09-09 17 views
60

¿Qué significa cuando un proceso PostgreSQL está "inactivo en la transacción"?¿Qué significa cuando un proceso de PostgreSQL está "inactivo en la transacción"?

En un servidor que estoy mirando, la salida de "ps ax | grep postgres" Veo procesos 9 PostgreSQL que se parecen a lo siguiente:

postgres: user db 127.0.0.1(55658) idle in transaction 

¿Quiere decir esto que algunos de los procesos se cuelgan, esperando que se realice una transacción? Se aprecian los indicadores de la documentación relevante.

Respuesta

34

El PostgreSQL manual indica que esto significa que la transacción está abierta (dentro de BEGIN) y está inactiva. Lo más probable es que un usuario conectado usando el monitor esté pensando o escribiendo. También tengo muchos en mi sistema.

Si está utilizando Slony para la replicación, sin embargo, el Slony-I FAQ sugiere idle in transaction puede significar que la conexión de red se terminó abruptamente. Consulte la discusión en esa pregunta frecuente para más detalles.

+7

¿Qué significa "inactivo"? ¿Las transacciones en estado 'inactivo' también están abiertas? –

+1

¿Qué significa * monitor *? – Abdull

+1

@Abdull El cliente psql. "Monitor" es un término (aparentemente) arcaico para el software utilizado para controlar una base de datos. – Anonymoose

9

Como se menciona aquí: Re: BUG #4243: Idle in transaction, probablemente sea mejor que revise su tabla pg_locks para ver qué está bloqueado y que podría darle una mejor pista sobre dónde se encuentra el problema.

Cuestiones relacionadas