갭 락(Gap Lock) 이란? 레코드가 아니라 레코드와 바로 인접한 레코드 사이의 간격만을 잠그는 것을 의미한다. 갭 락의 역할은 레코드와 레코드 사이의 간격에 새로운 레코드가 생성되는 것을 제어한다. 의문: 어떻게 갭에 락을 걸 수 있는 거지? 그러면 어떻게 존재하지 않는 row에 락을 걸 수 있는 것일까? 한 번 살펴보았다. 현재 1번과 5번 row에만 데이터가 있는 상태이다. 우선 존재하는 데이터인 5번 row에 락을 걸어보겠다. select * from parent where id=5 for update; LOCK_TYPE: RECORD, LOCK_MODE: X, REC_NOT_GAP 이 보인다. 갭을 제외한 레코드에 쓰기 락이 걸렸다는 의미이다. 이건 예상되는 결과였다. 이제는 존재하지 않는 ..