데이터베이스 고립화 수준
✒️ 2025-05-28 16:01 내용 수정
수제비 2024 정보처리기사 필기 5판 1권의 내용 일부를 참고하여 정리
데이터베이스 고립화 수준(Isolation Level)
여러 트랜잭션이 동시에 실행될 때 서로에게 영향을 주지 않고 독립적으로 실행되도록 할지를 결정하는 정도
- 다른 트랜잭션이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도이다.
- 다중 사용자 환경에서 여러 트랜잭션이 동시에 DB에 접근한다면 여러 문제가 발생한다.
- Dirty Read : 아직 Commit되지 않은 데이터를 다른 트랜잭션이 읽는다.
- Non-repeatable Read : 같은 데이터를 두 번 읽는데 그 사이에 값이 변할 수 있다.
- Phantom Read : 조건에 맞는 행을 여러 번 조회했는데 그 개수가 달라지는 삽입/삭제가 발생한다.
- 낮은 수준의 고립화는 빠르지만 오류 가능성이 있고, 높은 수준의 고립화는 안전하지만 느리다.
| 고립화 수준 | 설명 |
|---|---|
| Read Uncommitted | 한 트랜잭션에서 연산 중인 데이터를 다른 트랜잭션이 읽는 것을 허용 연산 중인 데이터에 대한 연산은 불허 |
| Read Committed | 한 트랜잭션에서 연산을 수행 시, 연산이 완료될 때까지 읽기를 제한 |
| Repeatable Read | 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신/삭제를 제한 |
| Serializable Read | 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근을 제한 |