DB Internals AtlasPostgreSQL 18.6 Home About

Parameter · Resource Usage / Memory

multixact_offset_buffers

Sets the size of the dedicated buffer pool used for the MultiXact offset cache.

  • Default: 128kB
  • Type: integer (8kB)
  • Range: 128kB … 1GB
  • Applies: Restart required

In plain words

Each MultiXact ID points to its list of members. The pointers are stored in pg_multixact/offsets, and this setting is how many 8 kB pages of them are cached in shared memory.

For DBAs and operators

Configurable since PostgreSQL 17 (default 16 buffers, multiple of 16). Every multixact lookup first reads the offsets SLRU and then the members SLRU, so the two are tuned together: workloads that suffer from MultiXactOffsetSLRU / MultiXactOffsetBuffer waits usually also show member waits. Before PostgreSQL 17 these caches were tiny and fixed, and multixact-heavy systems hit severe LWLock contention; PostgreSQL 17 also split SLRUs into banks with separate locks.

SELECT name, blks_hit, blks_read, blks_written
  FROM pg_stat_slru WHERE name LIKE 'multixact%';
SELECT wait_event, count(*) FROM pg_stat_activity
 WHERE wait_event LIKE 'MultiXact%' GROUP BY 1;

How to change it

Change in postgresql.conf or ALTER SYSTEM, then restart the server.

See it in context

SLRU caches Locking and deadlocks

Related parameters

multixact_member_buffers autovacuum_multixact_freeze_max_age

All Resource Usage parameters