locking1 MySQL Repeatable Read는 어떻게 Phantom을 막을까? (Next-Key lock) MySQL은 Repeatable Read(RR)를 지원한다. 구글링을 하거나 MySQL 메뉴얼을 참고하면 RR은 SQL-92에 명시된 이상현상을 방지하는 단계라고 적혀있다. 하지만 RR은 Phantom Read를 방지할 수 없는데, MySQL에서는 가능하다고 나와있다. 왜 이것이 가능할까? 내부적으로 어떻게 동작하고 있을까? 1. Lock과 MVCC 들어가기 전에 MySQL InnoDB가 어떻게 구현되었는 지 확인할 필요가 있다. InnoDB는 MVCC(Snapshot Isolation)을 구현한 스토리지 엔진이다. MVCC는 트랜잭션마다 테이블의 여러 버전(보통 트랜잭션 시작 시간을 기준)을 만들고 트랜잭션 작업을 진행할 때 해당 버전을 참조하는 방법을 뜻한다. 이 방법은 Lock을 걸지 않고 트랜잭션.. 2022. 8. 14. 이전 1 다음