개요
SQL 트랜잭션의 격리수준을 정리중입니다.
트랜잭션 격리수준이란?
SQL 표준에서는 트랜잭션의 동시성을 제어하기 위한 방법으로 네 종류의 트랜잭션 격리 수준을 정의하고 있다.
트랜잭션 격리 수준이 필요한 이유는?
데이터베이스에는 ACID라는 트랜잭션이 올바르게 처리되고 데이터가 항상 일관된 상태로 유지할 수 있도록 하는 원칙이 존재한다. 항상 일관된 상태로 데이터를 유지하기 위해서는 멀티 스레드로 돌아가는 데이터베이스의 동시성 작업에서 무조건 락을걸어서 순차적으로 제어를 한다면 데이터베이스의 성능이 낮아질 수 밖에 없다. 이에, 성능을 위해 격리 수준을 제어할 수 있는 방법이 필요하다.
트랜잭션 격리수준의 종류
- Read uncommitted
- Read committed
- Repeatable read
- Serializable
Read uncommitted
Read committed
Repeatable read
Serializable
가장 높은 수준의 격리수준으로 직렬화가 가능한 스냅숏 격리이다. 이 단계는 여러 세션에 있는 트랜잭션 작업들을 한번에 하나씩 진행하는 것과 같은 결과를 보장한다. 하지만, 그만큼 성능이 느려지게된다.