문제
한 트랜잭션이 같은 쿼리를 두 번 실행했을 때 첫 번째 실행에서는 보이지 않던 새로운 레코드가 두 번째 실행에서 나타나는 현상을 방지하는 가장 높은 격리 수준은 무엇인가?
정답
SERIALIZABLE
SERIALIZABLESerializable시리얼라이저블직렬화
해설
Phantom Read는 한 트랜잭션이 동일한 범위 쿼리를 반복 실행할 때 새로운 레코드가 나타나는 현상입니다. 격리 수준별로 방지 가능한 이상 현상을 보면: READ UNCOMMITTED(방지 없음) < READ COMMITTED(Dirty Read 방지) < REPEATABLE READ(Non-repeatable Read까지 방지) < SERIALIZABLE(Phantom Read까지 모두 방지)입니다. 따라서 Phantom Read를 방지하려면 가장 높은 격리 수준인 SERIALIZABLE이 필요합니다.