MVCC (Multi-Version Concurrency Control) cho phép nhiều transaction đọc/ghi đồng thời mà đọc không chặn ghi và ghi không chặn đọc. Thay vì khóa để tuần tự hóa, DB giữ nhiều phiên bản của mỗi hàng.
Cách PostgreSQL làm:
- Mỗi UPDATE không sửa tại chỗ mà tạo phiên bản hàng mới (tuple), đánh dấu phiên bản cũ hết hạn.
- Mỗi transaction thấy một snapshot nhất quán tương ứng thời điểm bắt đầu (theo isolation level) → transaction đọc vẫn thấy phiên bản cũ trong khi transaction khác ghi phiên bản mới.
Lợi: concurrency cao, đọc nhất quán không cần khóa đọc. Cái giá — bloat: phiên bản cũ (dead tuple) tích lại, cần VACUUM dọn để thu hồi không gian và tránh transaction-id wraparound. MVCC cũng là nền tảng cho các mức isolation trong Postgres.