2단계 로킹 규약 완전 정복 — 2PL, Strict 2PL, 직렬 가능성까지
스터디·11분 읽기
2PL의 Growing phase와 Shrinking phase, Strict 2PL과 Conservative 2PL의 차이, 그리고 MySQL InnoDB를 2PL로만 보면 안 되는 이유를 정리합니다.
6개의 글
2PL의 Growing phase와 Shrinking phase, Strict 2PL과 Conservative 2PL의 차이, 그리고 MySQL InnoDB를 2PL로만 보면 안 되는 이유를 정리합니다.
`Dirty Read`가 왜 실무에서 거의 안 보이는지, `Phantom Read`가 왜 MySQL InnoDB에서는 다른 문제처럼 관찰되는지 실제 발생 조건 중심으로 정리합니다.
`REPEATABLE READ`에서 일반 `SELECT`를 최신값처럼 믿었다가, 한 주문에 환불 이력이 두 번 쌓인 장애를 재현과 수정안으로 정리합니다.
낙관적 락과 비관적 락을 충돌률, 재시도 비용, 트랜잭션 길이 관점에서 비교하고, 조건부 `UPDATE`나 `UNIQUE` 제약이 더 나은 경우까지 정리합니다.
SELECT ... FOR UPDATE가 정확히 무엇을 잠그는지, 어떤 상황에서 필요하고 어떤 상황에서는 과한지, 인덱스와 트랜잭션 범위까지 실무 기준으로 정리합니다.
트랜잭션 격리 수준이 왜 필요한지, 각 레벨에서 어떤 이상 현상이 발생하는지 예제와 함께 정리합니다.