sql >> Base de Datos >  >> RDS >> PostgreSQL

pg_stat_activity no se actualiza dentro de un procedimiento o transacción

PostgreSQL crea un caché por backend (por conexión, efectivamente) de los datos utilizados por pg_stat_get_activity() función utilizada por ambos pg_stat_activity y pg_stat_replication .

Este caché se borra en la confirmación/reversión, pero no al final de cada declaración dentro de una transacción en READ COMMITTED como de costumbre.

Puede borrarlo explícitamente con SELECT pg_stat_clear_snapshot() . Llámalo dentro del cuerpo de un PL/PgSQL LOOP para actualizar.

AFAIK no hay forma de pedirle a PostgreSQL que se actualice automáticamente después de cada declaración cuando se usa repeatable read o mayor aislamiento.

En el código fuente, consulte pgstat_read_current_status(void) y pgstat_clear_snapshot(void) .