Range Protection

팬텀은 “아직 없는 행”까지 막아야 해서 어렵다

행 잠금은 존재하는 행에는 잘 맞지만, 조건 안으로 새로 들어올 INSERT까지 막으려면 범위 보호가 필요하다.

행 잠금만

이미 있는 WAITING 행은 보호하지만 새 INSERT는 비집고 들어올 수 있다.

Range / Gap Lock

인덱스 범위 사이의 빈 공간까지 잠근다.

Predicate Lock

WHERE 조건 자체를 보호 대상으로 본다.

Serializable

직렬 실행과 같은 결과가 되도록 충돌을 감지하거나 차단한다.

주의: DBMS마다 REPEATABLE READ와 SERIALIZABLE의 팬텀 처리 방식이 다르다.