REPEATABLE READ는 스냅샷 읽기와 현재 행 접근을 분리한다
일반 SELECT는 기준 시점을 유지하지만, UPDATE와 SELECT FOR UPDATE는 현재 행과 잠금 규칙을 따른다.
Snapshot lane
첫 SELECT
트랜잭션 기준 스냅샷을 생성
다시 SELECT
다른 커밋 후에도 같은 행 값을 봄
Current-row lane
UPDATE/DELETE
현재 행과 충돌 여부를 확인
SELECT FOR UPDATE
읽기가 아니라 잠금 읽기로 전환
주의: 일반 읽기와 locking read를 섞으면 같은 트랜잭션 안에서도 기준 시점이 달라진다.