MVCC
Multi-Version Concurrency Control — база хранит несколько версий одной строки, поэтому читатели не блокируют писателей (и наоборот).
Каждая транзакция получает снимок на основе идентификатора транзакции и видит только те версии, которые были зафиксированы к её началу. Запись создаёт новую версию, а старые удаляются позже (VACUUM в Postgres, undo log в Oracle и MySQL InnoDB).
Используется по умолчанию в Postgres, Oracle, MySQL InnoDB, SQL Server (режим snapshot), SQLite (режим WAL) и Spanner. Цена: больше места на диске и в памяти, периодическая сборка мусора, а аномалия «write skew» при snapshot isolation всё равно возможна.