MySQL의 3가지 lock - Record lock, Gap lock, Next-key lock

  • Record lock(레코드 락): 단일 인덱스 레코드의 락.
  • Gap lock(갭 락): 인덱스 레코드 사이의 갭의 락, 선두 인덱스 레코드의 앞이나 말미 인덱스 레코드의 뒤의 갭의 락
  • Next-key lock(넥스트 키 락):레코드 락과 이 레코드 직전의 갭 락의 조합

InnoDB의 default 분리 레벨(REPEATABLE-READ)에서는 락 단위는 넥스트 키 락이 기본으로 어느 인덱스에 값 10,11,13,20 이 포함됐을 때 넥스트 키 락 구간은 아래와 같은 느낌으로 기본적으로 이 구간 단위로 잠근다.

(negative infinity, 10]
(10, 11]
(11, 13]
(13, 20]
(20, positive infinity)


참고


이 글은 2017-09-08에 작성되었습니다.