728x90

트랜잭션의 격리 수준(Isolation Level)은 동시에 실행되는 다른 트랜잭션으로부터 해당 트랜잭션이 얼마나 격리되어 있는지를 나타내는 개념이다. 레벨이 높아질수록 트랜잭션 간 고립(격리) 정도가 높아지며, 성능 저하도 야기된다.

 

격리 수준은 다음과 같이 4개로 나뉜다.  

 

● READ UNCOMMITTED: 어떤 트랜잭션에서 커밋되지 않은 데이터를 읽을 수 있다. 이 수준은 트랜잭션에 대한 보호를 제공하지 않는다.
● READ COMMITTED: 어떤 트랜잭션의 변경 내용이 COMMIT  되어야만 다른 트랜잭션에서 조회할 수 있다.
● REPEATABLE READ: 트랜잭션 내에서 읽은 데이터는 같은 트랜잭션에서 다시 읽을 때 항상 같은 값을 가진다. 이 수준은 다른 트랜잭션에서 변경 중인 데이터를 읽는 것을 방지한다.
● SERIALIZABLE: 동시에 실행되는 다른 트랜잭션과 격리 수준이 가장 높다. 다른 트랜잭션에서 변경 중인 데이터를 읽거나 쓰는 것을 방지한다.

 

READ UNCOMMITTED는 다른 트랜잭션에서 커밋되지 않은 데이터도 읽을 수 있기 때문에 격리 수준이 가장 낮고, SERIALIZABLE은 동시에 실행되는 다른 트랜잭션과 격리 수준이 가장 높다. 격리 수준이 낮을수록 동시성은 증가하지만, 데이터 무결성이 감소할 수 있다. 격리 수준을 선택할 때는 동시성과 데이터 무결성 사이에서 균형을 유지해야 한다.

 

여러 사용자가 동시에 작업을 수행해야 하는 경우, 격리 수준을 높게 유지하면 대기하는 사용자들이 많아지고 성능이 저하될 수 있다.

반면에, 금융 시스템이나 은행 업무와 같이 데이터 무결성이 중요한 시스템에서는 격리 수준을 높이는 것이 중요하다. 이런 시스템에서는 트랜잭션 간 충돌이 발생하면 큰 문제가 발생할 수 있다. 따라서 격리 수준을 높게 유지하여 데이터의 일관성과 무결성을 보장해야 한다.



728x90

+ Recent posts