Concurrency Control
Snapshot Reads
A snapshot read sees the latest committed version before its start timestamp.
Snapshot reads
A snapshot read sees the latest version committed before the reader's start timestamp. Later versions remain in the chain but are invisible to that reader. Note: highlighted version rows show what the reads see.
Earlier snapshot
The first reader sees visible version 1 with returned value 1. Note: the read table and highlighted chain row come from the same compile.
2PL and MVCC are exact protocol traces on tiny schedules; real lock managers, deadlock avoidance/timeouts, version garbage-collection, and isolation-level tuning are beyond these traces - no product claims.
Later snapshot
Across 2 reads, the later reader sees visible version 2 and value 2. Note: version visibility is a timestamp comparison.
2PL and MVCC are exact protocol traces on tiny schedules; real lock managers, deadlock avoidance/timeouts, version garbage-collection, and isolation-level tuning are beyond these traces - no product claims.
Summary
Snapshot reads choose from committed version history instead of waiting on read locks. Note: 2PL and MVCC are exact protocol traces here; real lock managers, timeouts, garbage collection, and isolation tuning are beyond these traces.