Transaction Isolation Level
ACID
Atomicity : 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장.
Consistency : 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지.
Isolation : 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것.
Durabillity : 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함.
특히 격리성과 관련된 문제점들 중 대표적인 3가지가 아래에 있다.
격리성 관련 문제점
(1) Dirty Read : 다른 트랜잭션이 커밋되지 않은 변경된 데이터를 읽게되고, 변경된 데이터가 롤백으로 인해 변경 전으로 돌아갔지만, 이미 다른 트랜잭션이 변경된 데이터를 읽게 된 것.
(2) Non-Repeatable Read : 트랜잭션 중간에 READ된 데이터에 대해 다른 트랜잭션이 중간에 끼어들어 값을 변경하고 커밋하였을 경우, 다시 READ했을 때 변경된 데이터가 나오게 되는 것.
(3) Phantom Read : 2번과 비슷해보이지만 추가적으로 값이 변경되는 경우가 아닌 컬럼 하나가 삭제 되거나 추가되는 수준.
Trancsaction Isolation Level
이러한 고립성(Isolation) 문제점들에 대해 데이터베이스에서는 4가지의 격리 레벨을 가지고 있다. 각각은 다음과 같다.
- READ UNCOMMITED
- READ COMMITTED
- REPEATABLE READ
- SERIALIZABLE
4. SERIALIZABLE : 트랜잭션이 완료될 때까지 READ에 사용된 모든 데이터가 락이 거려 다른 트랜잭션이 수정 및 입력이 불가능하다
[출처 : https://lng1982.tistory.com/287 , http://feco.tistory.com/45]