Foundationপ্রথম নীতি থেকে
LEVEL 8 · Database Systems

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-এ — জায়গা ভিন্ন, চিন্তা এক।