Consistent Read
현재 블록이 너무 새로우면, 읽기는 Undo 체인에서 자기 시점보다 오래된 첫 버전을 고른다.
버전은 따로 복제되는 것이 아니라 현재 블록과 이전 상태 기록이 연결됩니다. 그래서 서로 다른 조회가 같은 체인을 보되, 멈추는 지점만 달라집니다.
현재 블록
가장 최신 상태
조회 시점보다 크면 그대로 읽지 못하고 이전 버전으로 이동합니다.
→
Undo 1
직전 버전
T1처럼 SCN 1500 시점 조회는 여기서 멈추고 값을 반환합니다.
→
Undo 2
더 오래된 버전
T2처럼 더 오래된 시점 조회는 한 단계 더 내려가서 일관된 값을 찾습니다.
조회 시점
현재 블록 2000
Undo 1 1500
Undo 2 1000
T1
snapshot SCN = 1500
너무 최신
2000 > 1500
여기서 채택
1500 ≤ 1500, A = 200 반환
더 내려갈 필요 없음
첫 일치 버전에서 정지
T2
snapshot SCN = 1200
너무 최신
2000 > 1200
여전히 최신
1500 > 1200
여기서 채택
1000 ≤ 1200, A = 100 반환
판단 규칙
읽기는 현재 값을 무조건 쓰지 않습니다. SCN이 조회 시점 이하가 되는 첫 버전을 찾을 때까지 Undo를 따라가며, 그래서 같은 행이라도 조회 시점마다 다른 값을 안정적으로 볼 수 있습니다.