LWLock: MultiXactMemberSLRU
Waiting to access the multixact member SLRU cache
PostgreSQL wait event dossier
ClassLWLock
Event
MultiXactMemberSLRU
VersionsPG 13-18
Evidence3 source location(s)
Official description
Waiting to access the multixact member SLRU cache
| PG 13 | PG 14 | PG 15 | PG 16 | PG 17 | PG 18 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Trigger mechanism
This lock protects the SLRU cache for pg_multixact/members, which stores the transaction members of multitransaction IDs used by shared row locks. Concurrent row-lock creation and old member lookups meet here.
Normal or trouble?
- Normal: Brief waits occur in workloads that use SELECT FOR SHARE/KEY SHARE or create multixacts through foreign-key checks.
- Investigate: Sustained contention points to heavy shared row locking, multixact churn, lagging freeze, or slow pg_multixact storage.
Diagnostic SQL
Sessions waiting on LWLock/MultiXactMemberSLRU
Current LWLock cohort
Lock and relation context for these sessions
Response
- Find statements and tables creating many shared row locks.
- Check multixact age and autovacuum progress.
- Reduce lock fan-out and unblock multixact freeze; investigate member SLRU I/O if paired with buffer waits.
Source evidence
- PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:174 —
MultiXactMemberSLRU - PostgreSQL 18.6 · src/backend/storage/lmgr/lwlock.c:739 —
pgstat_report_wait_start - PostgreSQL 18.6 · src/backend/utils/activity/wait_event_names.txt:399 —
MultiXactMemberSLRU
Related controls and signals
- GUCs: [guc:autovacuum_multixact_freeze_max_age] · [guc:vacuum_multixact_freeze_table_age]
- Metrics: [metric:waiting_sessions] · [metric:wait_event_share] · [metric:oldest_multixact_age] · [metric:multixact_member_io]
Typical incident pattern
A high-fan-out foreign-key workload locks many parent rows while a long transaction delays multixact cleanup, driving member-cache contention.