
백엔드
InnoDB 행 잠금의 2원 2규칙
두줄요약
MySQL InnoDB의 넥스트 키 락을 2원 2규칙으로 정리해 동작 원리를 설명했습니다. 동등 조건, 범위 조건, LIMIT, DESC 정렬에서의 잠금 차이도 예제로 살펴보았습니다.
핵심 내용
- MySQL InnoDB 행 잠금의 핵심 개념인 넥스트 키 락, 갭 락, 레코드 락의 관계 정리
- REPEATABLE-READ 격리 수준에서의 잠금 동작을 이해하기 위한 2원 2규칙 제시
- 동등 조건, 범위 조건, 중복 레코드, LIMIT, DESC 정렬에서의 실제 잠금 범위 예시 설명
구조와 흐름
- 기본 잠금 단위를 넥스트 키 락으로 보고, 접근한 객체에만 잠금이 걸리는 원칙 정리
- 유니크/비유니크 인덱스, 동등/범위 조건에 따라 갭 락 또는 레코드 락으로 강등되는 흐름 설명
- 검색 순서와 조건 만족 시점에 따라 최종 잠금 범위가 달라지는 사례 제시
주의할 점
- 겉보기 조회 결과가 같아도 잠금 범위는 쿼리 형태에 따라 달라질 수 있음
- FOR SHARE와 FOR UPDATE, 커버링 인덱스 여부에 따라 잠금 대상이 달라질 수 있음
- 넥스트 키 락은 InnoDB와 REPEATABLE-READ에 국한된 개념이라는 점 유의
