MVCC
Multi-Version Concurrency Control: il database conserva più versioni della stessa riga, così i lettori non bloccano gli scrittori (e viceversa).
Ogni transazione riceve uno snapshot basato su un ID di transazione e vede solo le versioni già confermate (commit) al momento del suo inizio. Le scritture creano nuove versioni; quelle vecchie vengono ripulite in seguito (VACUUM in Postgres, undo log in Oracle e MySQL InnoDB).
È il comportamento predefinito in Postgres, Oracle, MySQL InnoDB, SQL Server (modalità snapshot), SQLite (modalità WAL) e Spanner. Il prezzo: più disco e memoria, una garbage collection periodica e l'anomalia di "write skew", che resta possibile con la snapshot isolation.