SQL 표준에서 정의한 3가지 이상 현상(dirty read, non-repeatable read, phantom read)에 대한 허용 수준입니다.
dirty read
는 여러 트랜잭션이 실행되는 과정에서 아직 커밋되지 않은 데이터를 읽었을 때의 이상 현상을 의미합니다.non-repeatable read
는 두 번의 읽기 연산을 수행하는 트랜잭션을 실행할 때 다른 트랜잭션에 의해 각 연산의 결과가 달라지는 이상 현상을 의미합니다.phantom read
는 두 번의 읽기 연산을 수행하는 트랜잭션을 실행할 때 다른 트랜잭션에 의해 첫 번째 읽기 연산에서 보이지 않았던 데이터가 두 번째 읽기 연산에서 보이는 이상 현상을 의미합니다.허용 수준에 따라 트랜잭션 격리 레벨(isolation level)을 다음과 같이 정의할 수 있습니다.
Dirty read | Non-repeatable read | Phantom read | |
---|---|---|---|
Read uncommitted | O | O | O |
Read committed | X | O | O |
Repeatable read | X | X | O |
Serializable | X | X | X |
Undo 영역
은 UPDATE나 DELETE로 데이터를 변경했을 때 변경되기 이전의 데이터를 보관하는 영역입니다.Redo 영역
은 DB상의 변경된 내용을 순차적으로 디스크에 기록하는 로그 파일이 저장되는 영역입니다.🙏 본 개념의 정리에 대한 피드백과 질문은 환영입니다!
본 개념의 다른 정리 및 피드백, 인터뷰 주제의 순서는 테크 인터뷰 스터디 Repository에서 확인 가능합니다.
깃블로그 - [db] 트랜잭션 격리 수준(isolation level)