ACID
를 제공받기 위해 사용
Atomicity(원자성)
: All or nothing(모든 작업 성공 or 실패)Consistency(일치성)
: 동일하게 적용되는 조건Isolation(독립성)
: 한 작업이 수행될 때 다른 작업은 수행되지 않도록 함Durability(영구보존성)
: 작업이 끝난 데이터를 안전하게 DB에 저장하는 것을 보장
- Isolation Level이 낮을수록 성능이 높음
Read Uncommited
: 한 트랜잭션에서 처리한 작업(Commit)이 완료되지 않았음에도 다른 트랜잭션에서 읽을 수 있음
Read Commited
: Commit된 데이터만 읽을 수 있음
Repeatable Read
: 트랜잭션에서 최초로 읽은 데이터(Snapshot)를 다음에도 사용
Serializable Read
: 한 트랜잭션에서 읽고 쓰는 데이터를 다른 트랜잭션에서는 절대 접근할 수 없음
DIRTY READ
: 어떠한 트랜잭션에서 처리한 작업이 완료되지 않았음에도 다른 트랜잭션에서 읽을 수 있게 되는 현상NON-REPEATABLE READ
: 동일한 SELECT 쿼리를 실행했을 때 항상 같은 결과를 보장해야 한다는 REPEATABLE READ 정합성에 어긋나는 현상PHANTOM READ
: 한 트랜잭션 내에서 동일한 쿼리를 두 번 수행했을 때, 첫 번째 쿼리에서 존재하지 않던 유령(Phantom) 레코드가 두 번째 쿼리에서 나타나는 현상
격리 수준/문제점 | Dirty Read | Non-Repeatable Read | Phantom Read |
---|---|---|---|
Read Uncommited(Level 0) | O | O | O |
Read Commited(Level 1) | X | O | O |
Repeatable Read(Level 2) | X | X | O |
Serializable Read(Level 3) | X | X | X |