ver tabla sesiones rendimiento procesos postgres pg_stat_activity monitorear funciona desbloquear como comandos bloqueos abiertas postgresql transactions sqlalchemy

tabla - Cómo verificar operaciones pendientes en una transacción de PostgreSQL



ver bloqueos en postgres (3)

Tengo una sesión (SQLAlchemy) en PostgreSQL, con una transacción activa no confirmada. Acabo de pasar la sesión a algún árbol de llamadas que puede o no haber emitido INSERT SQL INSERT / UPDATE / DELETE , a través de sqlalchemy.orm o directamente a través de la conexión subyacente.

¿Hay alguna manera de verificar si hay alguna declaración pendiente de modificación de datos en esta transacción? Es decir, si el compromiso sería no operativo o no, y si la reversión descartaría algo o no.

He visto personas señalar v$transaction en Oracle por la misma cosa (ver esta pregunta SO ). Estoy buscando algo similar para usar en PostgreSQL.


Considere la siguiente secuencia de declaraciones:

select txid_current(); begin; select txid_current();

Si la identificación de la transacción devuelta por las dos selecciones es igual, entonces hay una transacción abierta. Si no, entonces no había, (pero ahora es).

Si los números son diferentes, entonces, como efecto secundario, habrá abierto una transacción, que probablemente quiera cerrar.



No, no desde el nivel de la base de datos, realmente. ¿Quizás pueda agregar algún rastreo en el nivel de sqlalchemy para rastrearlo?

Además, ¿cómo defines un no-op? ¿Qué sucede si actualizaste un valor con el mismo valor que tenía antes, es un no-operativo o no? Desde la perspectiva de las bases de datos, si tuviera una, no sería un no-op. Pero desde la perspectiva de la aplicación, probablemente lo haría.