The goal is to exploit parallelism to maximize TPS (transactions per second).
Two transactions read the same data, but one update gets overwritten and lost.
Sequence: R1 → R2 → W1 → W2
A transaction reads uncommitted changes of another transaction.
Sequence: R1 → W1 → R2 → A1 → W2
A transaction reads the same row twice but gets different values because another transaction updated it in between.
Sequence: R1 → R2 → W2 → R1