sql >> Database >  >> RDS >> PostgreSQL

pg_stat_activity wordt niet bijgewerkt binnen een procedure of transactie

PostgreSQL maakt een cache per backend (per verbinding, effectief) van de gegevens die worden gebruikt door de pg_stat_get_activity() functie gebruikt door zowel pg_stat_activity en pg_stat_replication .

Deze cache wordt gewist bij commit/rollback, maar niet aan het einde van elke instructie binnen een transactie in READ COMMITTED zoals gewoonlijk.

Je kunt het expliciet wissen met SELECT pg_stat_clear_snapshot() . Noem het binnen de body van een PL/PgSQL LOOP om te vernieuwen.

Er is geen manier om PostgreSQL te vragen om automatisch te vernieuwen na elke instructie bij gebruik van repeatable read of hogere isolatie.

Zie in de broncode pgstat_read_current_status(void) en pgstat_clear_snapshot(void) .




  1. Invoer bijwerken ZONDER tijdstempel bij te werken

  2. MYSQL:waarde bijwerken vanuit Query

  3. mysql full-text zoekfout

  4. Een getal opmaken als valuta in MariaDB