[DB] Transaction 격리성
2023. 7. 10. 21:52ㆍDataBase
ACID 중 Isolation을 의미하는 격리성에 대해서 간단하게 정리해보려고 한다.
여기서 격리성의 의미는 실행중인 트랜잭션에 다른 트랜잭션이 접근할 수 없음을 의미한다.
그리고 이러한 격리성의 정도는 직접 정할 수 있다.
격리성의 정도와 그에 따라 발생할 수 있는 문제점을 정리해보겠다 !
- Read UnCommitted
: 트랜잭션인 커밋되기 전에 다른 트랜잭션인 읽기를 허용하는 것이다.
: 데이터의 정합성 문제를 일으킨다. (Dirty Read, Non-Reatable Read, Phantom Read)
- Read Committed
: 커밋이 확정된 데이터만 읽도록 허용한다. 커밋되지 않은 데이터는 실제 DB가 아닌, Undo로그에 있는 이전 데이터를 가져온다. -> Dirty Read를 해결할 수 있다.
: 하지만 Non-Reatable Read, Phantom Read는 여전히 발생할 수 있다.
- Repeatable Read
: 한 번 읽은 데이터를 다시 읽어도 Undo에서 이전에 읽은 데이터를 그대로 보여준다.
: Dirty Read와 Non-Reatable Read 둘 다 해결하지만, 실제 DB에 저장되어 있는 집합과는 다른 데이터를 읽게 될 수 있다. 즉 Phantom Read 발생 가능
- Serialized Read
: 모든 격리성에서 오는 문제를 해결할 수 있지만 성능이 매우 떨어질 수 있다.
'DataBase' 카테고리의 다른 글
[DB] 낙관적 락 VS 비관적 락 (0) | 2023.07.10 |
---|