InnoDB Range Lock

Gap Lock과 Next-Key Lock은 인덱스 사이 공간까지 보호한다

행 자체만 보호하는 record lock과 달리, gap/next-key lock은 조건 범위 안으로 새 인덱스 레코드가 들어오는 것을 막는다.

(10, 20) gap
20
(20, 30] next-key
30
(30, ∞) gap
INSERT 차단
record lock
record + 앞 gap
범위 검색은 실행 계획이 스캔한 인덱스 구간을 기준으로 잠긴다.

고유 인덱스 동등 검색은 record만 잠글 수 있지만, 비고유/범위 검색은 gap까지 함께 보호한다.

Record Lock

record

인덱스 레코드 자체를 잠근다.

Gap Lock

gap

레코드 사이 빈 공간의 INSERT를 제한한다.

Next-Key Lock

record + gap

레코드와 앞 gap을 함께 보호한다.