✔ 트랜잭션과 락

1. 트랜잭션과 격리 수준

트랜잭션은 ACID라 하는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장해야 한다.

문제는 격리성이다. 트랜잭션 간에 격리성을 완벽히 보장하려면 트랜잭션을 거의 차례대로 실행해야 한다. 이렇게 되면 동시성 처리 성능이 매우 나빠진다.

이런 문제로 ANSI 표준은 트랜잭션의 격리 수준을 4단계로 나누어 정의했다.

순서대로 READ UNCOMMITED의 격리 수준이 가장 낮고 SERIALIZABLE의 격리 수준이 가장 높다. 격리 수준이 낮을수록 동시성은 증가하지만 격리 수준에 따른 다양한 문제가 발생한다.(격리 수준이 낮을수록 더 많은 문제가 발생)

트랜잭션 격리 수준에 따른 문제점 |격리 수준|DIRTY READ| NON-REPEATABLE READ|PHANTOM READ| |–|–|–|–| |READ UNCOMMITED|O|O|O| |READ COMMITED||O|O| |REPEATABLE READ|||O| |SERIALIZABLE||||