- Published on
트랜잭션 격리 수준 네 가지와 dirty read, non-repeatable read, phantom read를 정리하되, 교과서의 표 하나로 끝내지 않습니다. PostgreSQL의 Read Committed가 왜 처음부터 dirty read를 만들 수 없는지, Repeatable Read가 왜 사실은 스냅샷 격리이고 직렬화 실패를 애플리케이션이 재시도해야 하는지, MySQL InnoDB의 Repeatable Read가 갭 락으로 어떻게 다르게 동작하는지 실제 SQL 세션으로 보여 줍니다. 스냅샷 격리의 진짜 구멍인 write skew와 SERIALIZABLE이 그것을 잡는 방식, 그리고 비관적 잠금과 낙관적 잠금의 선택 기준까지 다룹니다.