pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Michael Paquier <michael@paquier.xyz>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Add support for lock statistics in pgstats
Date: Tue, 24 Mar 2026 06:33:02 +0000
Message-ID: <E1w4vK2-001CSv-0M@gemulon.postgresql.org> (raw)

Add support for lock statistics in pgstats

This commit adds a new stats kind, called PGSTAT_KIND_LOCK, implementing
statistics for lock tags, as reported by pg_locks.  The implementation
is fixed-sized, as the data is caped based on the number of lock tags in
LockTagType.

The new statistics kind records the following fields, providing insight
regarding lock behavior, while avoiding impact on performance-critical
code paths (such as fast-path lock acquisition):
- waits and wait_time: respectively track the number of times a lock
required waiting and the total time spent acquiring it.  These metrics
are only collected once a lock is successfully acquired and after
deadlock_timeout has been exceeded.
fastpath_exceeded: counts how often a lock could not be acquired via
the fast path due to the max_locks_per_transaction slot limits.

A new view called pg_stat_lock can be used to access this data, coupled
with a SQL function called pg_stat_get_lock().

Bump stat file format PGSTAT_FILE_FORMAT_ID.
Bump catalog version.

Author: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Reviewed-by: Andres Freund <andres@anarazel.de>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/aIyNxBWFCybgBZBS%40ip-10-97-1-34.eu-west-3.compute.internal

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/4019f725f5d43f37b23222d06d20e3da1038d373

Modified Files
--------------
doc/src/sgml/monitoring.sgml               | 110 ++++++++++++++++
src/backend/catalog/system_views.sql       |   9 ++
src/backend/storage/lmgr/lock.c            |   9 ++
src/backend/storage/lmgr/proc.c            |   9 +-
src/backend/utils/activity/Makefile        |   1 +
src/backend/utils/activity/meson.build     |   1 +
src/backend/utils/activity/pgstat.c        |  18 +++
src/backend/utils/activity/pgstat_lock.c   | 178 ++++++++++++++++++++++++++
src/backend/utils/adt/pgstatfuncs.c        |  39 ++++++
src/include/catalog/catversion.h           |   2 +-
src/include/catalog/pg_proc.dat            |   8 ++
src/include/pgstat.h                       |  30 ++++-
src/include/utils/pgstat_internal.h        |  21 +++
src/include/utils/pgstat_kind.h            |   5 +-
src/test/isolation/expected/lock-stats.out | 197 +++++++++++++++++++++++++++++
src/test/isolation/isolation_schedule      |   1 +
src/test/isolation/specs/lock-stats.spec   | 128 +++++++++++++++++++
src/test/regress/expected/rules.out        |   6 +
src/test/regress/expected/stats.out        |  48 +++++++
src/test/regress/sql/stats.sql             |  36 ++++++
src/tools/pgindent/typedefs.list           |   4 +
21 files changed, 854 insertions(+), 6 deletions(-)



Message-ID: <E1w4vK2-001CSv-0M@gemulon.postgresql.org>
Permalink:  ../E1w4vK2-001CSv-0M@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1w4vK2-001CSv-0M@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: michael@paquier.xyz, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Add support for lock statistics in pgstats
  In-Reply-To: <E1w4vK2-001CSv-0M@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox