sql >> Databasteknik >  >> RDS >> PostgreSQL

pg_stat_activity uppdateras inte inom en procedur eller transaktion

PostgreSQL gör en per-backend (per anslutning, effektivt) cache av data som används av pg_stat_get_activity() funktion som används av både pg_stat_activity och pg_stat_replication .

Denna cache rensas vid commit/rollback, men inte i slutet av varje sats i en transaktion i READ COMMITTED som vanligt.

Du kan explicit rensa den med SELECT pg_stat_clear_snapshot() . Kalla det inom brödtexten i en PL/PgSQL LOOP för att uppdatera.

Det finns AFAIK inget sätt att be PostgreSQL att automatiskt uppdatera efter varje uttalande när du använder repeatable read eller högre isolering.

I källkoden, se pgstat_read_current_status(void) och pgstat_clear_snapshot(void) .




  1. Hur uttrycker jag en har många genom relation i Entity Framework 5?

  2. ColdFusion parametrerar en fråga

  3. SQL-fråga efter trådade meddelanden

  4. Kontrollera om tabellen finns i SQL Server