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
Related parameters
multixact_member_buffers autovacuum_multixact_freeze_max_age