Re: per backend WAL statistics

Nazir Bilal Yavuz <byavuz81@gmail.com>

From: Nazir Bilal Yavuz <byavuz81@gmail.com>
To: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>, Andres Freund <andres@anarazel.de>, Xuneng Zhou <xunengzhou@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2025-03-10T12:08:49Z
Lists: pgsql-hackers
Hi,

Thank you for working on this!

I just started reading the code and have a couple of questions.

I think that every time we flush IO or WAL stats, we want(?) to flush
backend stats as well, so would it make sense to move
pgstat_flush_backend() calls to inside of pgstat_flush_io() and
pgstat_wal_flush_cb()? I see that backend statistics are not collected
for some of the backend types but that is already checked in the
pgstat_flush_backend() with pgstat_tracks_backend_bktype().

Also, is there a chance that wal_bytes gets incremented without
wal_records getting incremented? I searched the code and did not find
any example of that but I just wanted to be sure. If there is a case
like that, then pgstat_backend_wal_have_pending() needs to check
wal_bytes instead of wal_records.

-- 
Regards,
Nazir Bilal Yavuz
Microsoft



Commits

  1. Fix use-after-free in pgstat_fetch_stat_backend_by_pid()

  2. Remove initialization from PendingBackendStats

  3. Add WAL data to backend statistics

  4. Improve check for detection of pending data in backend statistics

  5. Fix some gaps in pg_stat_io with WAL receiver and WAL summarizer

  6. Handle auxiliary processes in SQL functions of backend statistics

  7. Invent pgstat_fetch_stat_backend_by_pid()

  8. Refactor code of pg_stat_get_wal() building result tuple

  9. Adding new PgStat_WalCounters structure in pgstat.h

  10. Remove pgstat_flush_wal()

  11. Refactor some code related to backend statistics

  12. Add backend-level statistics to pgstats