MVCC Read

락 읽기는 기다리고, MVCC 읽기는 보이는 버전을 따라간다

MVCC의 핵심은 일반 SELECT가 현재 쓰기 락과 직접 부딪히지 않고 스냅샷 기준의 커밋 버전을 읽는 것이다.

락 기반 잠금 읽기

01 UPDATE

현재 행에 X-Lock을 잡는다.

02 SELECT ... FOR UPDATE

같은 행을 읽으려면 락 해제를 기다린다.

03 COMMIT 이후

최신 확정값을 읽는다.

MVCC 일관 읽기

Current A=300 수정 중, 스냅샷보다 최신
Undo A=200 스냅샷 시점에 보임
Undo A=100 더 오래된 커밋

일반 SELECT는 쓰기 락 대신 스냅샷에 맞는 커밋 버전을 따라간다.