Gaplock


title: 2025-10-15 author: 강병호 date: 2025-10-15 category: TIL/강병호/2025/10 layout: post (자유) —

갭락(Gap Lock)이란?

갭 락은 특정 인덱스 값 사이의 공간을 잠그는 락입니다. 기존 레코드 간의 간격을 보호하여 새로운 레코드의 삽입을 방지합니다. 갭 락은 범위 내에 특정 레코드가 존재하지 않을 때 적용됩니다. 트랜잭션이 특정 범위 내에서 데이터의 삽입을 막아 팬텀 읽기(Phantom Read) 현상을 방지합니다. 예를 들어, 인덱스 값 10과 20 사이의 갭을 잠그면 이 범위 내에 새로운 레코드 15를 추가할 수 없습니다.

START TRANSACTION;

[트랜잭션 A 1-3과 3-5 사이의 갭과 3 레코드 락 설정(넥스트키 락)] SELECT * FROM orders WHERE orders_id BETWEEN 2 AND 4 FOR UPDATE;

START TRANSACTION;

INSERT INTO orders (orders_id, orders_amount) VALUES (4, 200); 트랜잭션 B가 id 4에 데이터 삽입 시도 시, 갭락으로 인해 삽입이 차단되어 대기

results matching ""

    No results matching ""