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.