본문 바로가기

2_개발노트

[DB] 트랜잭션 격리수준 (Transaction Isolation level)

반응형

트랜잭션 격리수준(Transaction Isolation)은 DB 처리의 기초중 하나이다.
Isolation은 ACID 약어의 I로서 여러 트랜잭션이 동시에 데이터를 변경하고 쿼리를 수행할 때 성능과 안정성, 일관성, 결과 재현성 사이의 균형을 조정하는 설정이다.

※ ACID : Atomicity(원자성), Consistency(일관성), Isolation(고립성), Durability(영구성)

READ UNCOMITTED
커밋하지 않은 데이터에도 접근이 가능한 격리 수준.
트랜잭션의 작업중인 내용이 커밋 또는 롤백처리 되지않아도 즉시 노출이 된다. 다만 이렇게 될 경우 Dirty Read가 되어 롤백 또는 커밋 전의 데이터로 인해 정합성이 유지되지 않을 수 있습니다.
RDBMS에서는 권장하지 않는 격리 수준이므로 사용시 유의 필요.

REPEATABLE READ
트랜잭션이 시작되기 전에 커밋된 내용에 대해서만 조회가능 한 격리수준. 버저닝을 통해 트랜잭션 내에서 조회한 내용이 항상 동일함을 보장한다.
다만 Phantom Read가 발생할 수 있다.

READ COMMITTED
커밋된 데이터만 조회할 수 있는 격리 수준. 
Phantom Read와 Non-Repeatable Read 문제까지 발생할 수 있음.

SERIALIZABLE
트랜잭션들이 모두 동시에 일어나지 않고 순차적으로 실행되는 것 처럼 동작한다. 다만 처리 성능(속도)이 낮기 때문에 거의 사용 하지 않는다.

반응형