인덱스 위에서 보는 잠금 범위
팬텀 방지는 "찾은 값"보다 "찾은 구간"을 잠그는 데서 시작됩니다
값 20을 찾는 잠금 조회라도, 실제로는 레코드 20만 묶지 않습니다. 앞쪽 갭과 다음 갭까지 잠금 단위에 포함되어 같은 조건의 재조회 결과가 흔들리지 않게 됩니다.
10
20
30
Next-Key Lock
(10, 20]
레코드 20과 그 앞 빈 구간을 함께 고정합니다. 그래서 15처럼 중간에 끼어드는 INSERT가 차단됩니다.
Gap Lock
(20, 30)
다음 레코드 앞의 빈 구간도 잠가, 같은 검색 범위에 25 같은 새 값이 생기지 못하게 만듭니다.