DB Internals AtlasPostgreSQL 18.6 Home About

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

SLRU caches Locking and deadlocks

Related parameters

multixact_offset_buffers autovacuum_multixact_freeze_max_age vacuum_multixact_freeze_min_age

All Resource Usage parameters