A snapshot read sees the latest committed version before its start timestamp.

highlighted = computed this step

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.

snapshot visibility\text{snapshot visibility}

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.

visible version=1,value=1\text{visible version}=1,\quad \text{value}=1

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.

Snapshot readsitemversionvaluewritercommitTsAv11T110Av22T220 snapshot readsreaderitemstartTsseesvalueR15A15v11R25A25v22

Later snapshot

Across 2 reads, the later reader sees visible version 2 and value 2. Note: version visibility is a timestamp comparison.

reads=2,visible version=2\text{reads}=2,\quad \text{visible version}=2

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.

Snapshot readsitemversionvaluewritercommitTsAv11T110Av22T220 snapshot readsreaderitemstartTsseesvalueR15A15v11R25A25v22

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.

snapshot summary\text{snapshot summary}