mirror of
https://github.com/postgres/postgres.git
synced 2025-07-11 10:01:57 +03:00
Fix VACUUM's reporting of dead-tuple counts to the stats collector.
Historically, VACUUM has just reported its new_rel_tuples estimate (the same thing it puts into pg_class.reltuples) to the stats collector. That number counts both live and dead-but-not-yet-reclaimable tuples. This behavior may once have been right, but modern versions of the pgstats code track live and dead tuple counts separately, so putting the total into n_live_tuples and zero into n_dead_tuples is surely pretty bogus. Fix it to report live and dead tuple counts separately. This doesn't really do much for situations where updating transactions commit concurrently with a VACUUM scan (possibly causing double-counting or omission of the tuples they add or delete); but it's clearly an improvement over what we were doing before. Hari Babu, reviewed by Amit Kapila
This commit is contained in:
@ -333,7 +333,8 @@ typedef struct PgStat_MsgVacuum
|
||||
Oid m_tableoid;
|
||||
bool m_autovacuum;
|
||||
TimestampTz m_vacuumtime;
|
||||
PgStat_Counter m_tuples;
|
||||
PgStat_Counter m_live_tuples;
|
||||
PgStat_Counter m_dead_tuples;
|
||||
} PgStat_MsgVacuum;
|
||||
|
||||
|
||||
@ -775,7 +776,7 @@ extern void pgstat_reset_single_counter(Oid objectid, PgStat_Single_Reset_Type t
|
||||
|
||||
extern void pgstat_report_autovac(Oid dboid);
|
||||
extern void pgstat_report_vacuum(Oid tableoid, bool shared,
|
||||
PgStat_Counter tuples);
|
||||
PgStat_Counter livetuples, PgStat_Counter deadtuples);
|
||||
extern void pgstat_report_analyze(Relation rel,
|
||||
PgStat_Counter livetuples, PgStat_Counter deadtuples);
|
||||
|
||||
|
Reference in New Issue
Block a user