격리 수준이란
READ UNCOMMITED
READ COMMITED
REPEATABLE_READ
MySQL에서 InnoDB 스토리지 엔진에서 기본으로 사용되는 격리 수준(바이너리 로그를 가진 MySQL에서는 최소 REPEATABLE READ를 사용해야함)
InnoDB 스토리지 엔진은 트랜잭션이 ROLLBACK될 가능성에 대비해 변경되기 전 레코드를 언두 공간에 백업해두고 실제 레코드 값을 변경함(이런 변경 방식을 MVCC 라고함)
위 이미지에서 transaction2는 transaction id 10을 가지고 수행하므로 transaction id 10보다 이전인 트랜잭션에 대해서만 읽어올 수 있는 구조
트랜잭션 아이디는 지속적으로 증가하는 방식으로 구성됨
하지만 REPEATABLE_READ에서는 PHANTOM READ문제가 발생(다른 트랜잭션에 의해 처리된 작업에 의해 레코드가 보였다가 안보였다 하는 현상)
SERIALIZABLE