Add backend-level lock statistics
Michael Paquier <michael@paquier.xyz>
Add backend-level lock statistics This commit adds per-backend lock statistics, providing the same information as pg_stat_lock. It is now possible to retrieve those stats (lock wait counts, wait times, and fast-path exceeded count) on a per-backend basis. This data can be retrieved with a new system function called pg_stat_get_backend_lock(), that returns one tuple per lock type based on the PID provided in input. Like pg_stat_get_backend_io(), this is useful if joined with pg_stat_activity to get a live picture of the locks behavior for each running backend. pgstat_flush_backend() gains a new flag value, able to control the flush of the lock stats. This commit is straight-forward, relying on the infrastructure provided by 9aea73fc61d4 (backend-level pgstats). Bump catalog version. No need to touch PGSTAT_FILE_FORMAT_ID as backend statistics are never written to disk. Author: Bertrand Drouvot <bertranddrouvot.pg@gmail.com> Reviewed-by: Tatsuya Kawata <kawatatatsuya0913@gmail.com> Reviewed-by: Michael Paquier <michael@paquier.xyz> Reviewed-by: Tristan Partin <tristan@partin.io> Reviewed-by: Rui Zhao <zhaorui126@gmail.com> Discussion: https://postgr.es/m/aiAzEY+cMQb/W8yu@bdtpg
Files
| Path | Change | +/− |
|---|---|---|
| doc/src/sgml/monitoring.sgml | modified | +19 −0 |
| src/backend/utils/activity/pgstat_backend.c | modified | +72 −0 |
| src/backend/utils/activity/pgstat_lock.c | modified | +4 −0 |
| src/backend/utils/adt/pgstatfuncs.c | modified | +27 −2 |
| src/include/catalog/catversion.h | modified | +1 −1 |
| src/include/catalog/pg_proc.dat | modified | +8 −0 |
| src/include/pgstat.h | modified | +12 −0 |
| src/include/utils/pgstat_internal.h | modified | +2 −1 |
| src/test/regress/expected/stats.out | modified | +12 −0 |
| src/test/regress/sql/stats.sql | modified | +9 −0 |
Documentation touched
Discussion
- Add per-backend lock statistics 12 messages · 2026-06-03 → 2026-06-30