sql >> Databáze >  >> RDS >> PostgreSQL

pg_stat_activity se v rámci procedury nebo transakce neaktualizuje

PostgreSQL vytváří mezipaměť dat používaných funkcí pg_stat_get_activity() pro každý backend (efektivně pro každé připojení) funkce používaná oběma pg_stat_activity a pg_stat_replication .

Tato mezipaměť se vymaže při odevzdání/vrácení zpět, ale ne na konci každého příkazu v rámci transakce v READ COMMITTED jako obvykle.

Můžete jej explicitně vymazat pomocí SELECT pg_stat_clear_snapshot() . Volejte jej v těle PL/PgSQL LOOP obnovit.

Neexistuje AFAIK žádný způsob, jak požádat PostgreSQL o automatické obnovení po každém příkazu při použití repeatable read nebo vyšší izolace.

Ve zdrojovém kódu viz pgstat_read_current_status(void) a pgstat_clear_snapshot(void) .




  1. Dotaz PL/SQL V řetězci odděleném čárkou

  2. PHP ukládá do pole pouze 1048576 znaků

  3. Jak vypočítat vícenásobný klouzavý průměr v MySQL

  4. Jak importovat data aplikace Excel do tabulky Toad 9.5