넥스트키 락

넥스트키 락은 InnoDB에서 레코드 락과 갭 락을 결합해 특정 인덱스 레코드와 그 앞의 공간을 함께 잠그는 락입니다.

동작 방식

넥스트키 락은 존재하는 인덱스 레코드를 잠그는 동시에, 그 레코드 앞의 갭도 잠급니다. 이를 통해 기존 레코드의 변경과 범위 안의 새 레코드 삽입을 함께 제어합니다.

인덱스 값: 10, 20, 30

넥스트키 락 범위 예:
(-∞, 10]
(10, 20]
(20, 30]
(30, +∞)

팬텀 리드 방지

트랜잭션이 범위 조건으로 데이터를 조회하면서 넥스트키 락을 잡으면, 다른 트랜잭션은 해당 범위에 새 레코드를 삽입할 수 없습니다. 따라서 같은 조건으로 다시 조회해도 새로운 행이 나타나는 팬텀 리드를 막을 수 있습니다.

주의사항

핵심 정리

넥스트키 락은 레코드와 갭을 함께 잠가 범위 조회의 일관성을 지킵니다.

InnoDB가 팬텀 리드를 방지하는 대표적인 잠금 메커니즘입니다.

→ MySQL InnoDB에서 갭락과 넥스트키 락이란 무엇이며, 어떻게 팬텀 리드를 방지하나요?

CSLOG에서 보기