MVCC

Problem

Readers and writers constantly blocking one another can severely reduce concurrency. Can a reader see a stable view while another transaction updates the data?

Solution — MVCC

MVCC stands for Multiversion Concurrency Control. The database maintains multiple versions of data.
Old version ← Reader
New version ← Writer
Transactions can see appropriate versions without every read blocking every write.
Core idea: MVCC uses data versions to provide transactional views with greater concurrency.