▶ Interactive Lab

MVCC Snapshot Isolation

Two transactions, three versions, snapshot isolation.

Advertisement
MVCC: each row has multiple versions. Each transaction sees the snapshot from its start time.

What you're seeing

Multi-Version Concurrency Control. Each row has a chain of versions (txid_min, txid_max). A transaction sees only versions visible at its snapshot moment. Writers don't block readers; readers don't block writers.

Postgres MVCC: VACUUM cleans up dead versions. Long-running transactions block VACUUM → bloat. Watch pg_stat_activity.

★ KEY TAKEAWAY
MVCC: writers don't block readers. Each transaction sees the snapshot from its start. Versions chain via xmin/xmax.
▶ WHAT TO TRY
  • Run the sequence: T1 read → T2 write → T2 commit → T1 read.
  • T1 still sees the old version — snapshot isolation in action.