데이터베이스 기초
SQL 표준 규격이 정하는 격리 수준 중 READ COMMITTED에서 일어날 수 있는 현상의 조합으로 올바른 것은?
- A더티 리드, 반복 불가능한 읽기, 팬텀 리드 모두 일어나지 않는다
- B더티 리드는 일어나지 않지만, 반복 불가능한 읽기와 팬텀 리드는 일어날 수 있다
- C더티 리드와 반복 불가능한 읽기는 일어나지 않지만, 팬텀 리드는 일어날 수 있다
정답과 해설 보기
정답: B. 더티 리드는 일어나지 않지만, 반복 불가능한 읽기와 팬텀 리드는 일어날 수 있다
SQL 표준 규격은 격리 수준을 막는 현상이 적은 순서대로 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE의 4가지로 정하고 있습니다. READ UNCOMMITTED에서는 세 가지 현상이 모두 일어날 수 있습니다. READ COMMITTED는 커밋된 데이터만 읽으므로 더티 리드를 막지만, 읽을 때마다 그 시점의 커밋된 값을 보므로 반복 불가능한 읽기와 팬텀 리드는 일어날 수 있습니다. REPEATABLE READ는 여기에 더해 반복 불가능한 읽기를 막지만, 팬텀 리드는 일어날 수 있습니다. SERIALIZABLE은 세 가지를 모두 막으며, 트랜잭션을 어떤 순서로 하나씩 실행한 경우와 같은 결과를 보장합니다. 격리 수준을 올릴수록 락 대기나 처리의 재실행이 늘어 동시에 처리할 수 있는 양이 줄어들므로, 용도에 따라 고릅니다. 실제 DBMS에서는 기본 격리 수준이나 각 수준에서 실제로 막을 수 있는 현상이 표준 규격의 최소한의 규정보다 강한 경우가 있습니다.