Parameter · Resource Usage / Memory
multixact_member_buffers
Sets the size of the dedicated buffer pool used for the MultiXact member cache.
- Default:
256kB - Type: integer (8kB)
- Range: 128kB … 1GB
- Applies: Restart required
In plain words
When several transactions lock the same row (for example with foreign keys or SELECT … FOR SHARE), PostgreSQL stores the group as a MultiXact. The list of members lives in pg_multixact/members; this is how many 8 kB pages of it are cached.
For DBAs and operators
Configurable since PostgreSQL 17 (default 32 buffers = 256 kB, multiple of 16). Workloads with heavy foreign-key checks against hot parent rows, or many concurrent FOR SHARE/FOR KEY SHARE locks, create lots of multixacts; lookups that miss this cache show up as MultiXactMemberSLRU / MultiXactMemberBuffer waits and climbing blks_read in pg_stat_slru (name = 'multixact_member').
Raising it (e.g. 128–256) helps such workloads at a small shared-memory cost. Separate from caching, the members area can also run out: WARNING: database with OID 16384 must be vacuumed before 1000 more multixact members are used. That is a vacuum/freeze problem (autovacuum_multixact_freeze_max_age), not a buffer one.
How to change it
Change in postgresql.conf or ALTER SYSTEM, then restart the server.
See it in context
Related parameters
multixact_offset_buffers autovacuum_multixact_freeze_max_age vacuum_multixact_freeze_min_age