MVCC
এমভিসিসি
Multi-Version Concurrency Control — প্রতিটা row-র একাধিক version রেখে reader-কে writer থেকে আলাদা; read কখনো write-কে block করে না।
also: multiversion-concurrency-control
Writer নতুন version বানায়, old version থেকেই যায়; reader snapshot দেখে কোন version তার জন্য ‘বর্তমান’:
UPDATE balance 100 → 200:
v1: xmin=10 xmax=20, bal=100 ← পুরনো snapshot-এর দৃষ্টিতে এখনো সত্য
v2: xmin=20, bal=200 ← নতুন snapshot এটা দেখে
- Snapshot = running transaction list + cutoff xid — visibility rule এর উপরেই দাঁড়ায়
- 2PL-এর wait/blocking নেই read-এ — OLTP concurrency-র আসল খুঁটি
- মূল্য: dead tuple জমে (vacuum লাগবে), index bloat, long-running transaction-এর ছায়া
PostgreSQL heap-এ version tuple-এ; MySQL InnoDB undo log-এ — জায়গা ভিন্ন, চিন্তা এক।