
81
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
InnoDB 행 잠금의 2원 2규칙
이 게시물은 MySQL InnoDB 스토리지 엔진에서 사용되는 넥스트 키 락(Next-Key Lock)과 관련된 "2원 2규칙"을 중심으로 행 잠금 메커니즘을 설명합니다.기본 잠금 알고리즘
- 레코드 락: 단일 행 데이터에 대한 잠금
- 갭 락: 행 사이 범위에 대한 잠금(레코드 미포함)
- 넥스트 키 락: 갭 락과 레코드 락의 결합 형태로 범위와 레코드 모두 잠금
2원 2규칙 개요
- 원칙 1: 기본 잠금 단위는 넥스트 키 락이며, 잠금 범위는 좌측 개구간, 우측 폐구간이다.
- 원칙 2: 잠금은 쿼리 수행 중 접근한 객체에만 적용된다.
- 규칙 1: 인덱스 사용 동등 조건 쿼리 시 스캔 방향은 오른쪽, 마지막 레코드가 조건 미충족 시 넥스트 키 락은 갭 락으로 강등된다.
- 규칙 2: 고유 인덱스 동등 조건 만족 시 넥스트 키 락은 레코드 락으로 강등된다.
적용 예제
- 동등 조건 업데이트 시 존재하지 않는 레코드는 갭 락 설정으로 삽입 차단
- 세컨더리 인덱스 조회 시 넥스트 키 락 범위 확장 및 잠금 차이 발생
- 범위 쿼리와 정렬, LIMIT 절에 따라 잠금 범위와 형태가 달라짐
- 갭 락과 레코드 락 결합으로 데드락 상황 발생 가능성 설명
이 글은 MySQL 8.4 기준 InnoDB의 REPEATABLE-READ 격리 수준에서 잠금 동작을 명확히 이해하도록 돕는 데 초점을 맞추고 있습니다.

