본문 바로가기

IT

Transaction Isolation Level에 관한 정리

**transaction이란?

db에서는 분리되지 않는 db처리 최소 묶음을 말한다트랜잭션은 이러한 단위안에서 유효성의 문 제가 없도록 commit과 rollback하는 일련의 과정자체다물론2개의 컨넥션에서 유효한 이야기다. 

 

 

**isolation level이란?

sql서버에서 db locking을 어떤식으로 적용할 것인가에 관한 것을 말한다.

select,update,insert,delete시 lock을 어떻게 걸어서 처리할 것인지에 따라 레벨이 정해진다. 

 

 

**level 의 종류 

  

1.uncommited read(오라클에는 존재하지 않음)

두 개이상의 트랜잭션에서 하나의 트랜잭션이 데이터를 업데이트 후 커밋을 하지 않았는 데도 다른 트랜잭션이 업데이트한 데이터를 읽을수 있다.

그래서 커밋되지 않은 내용을 읽을수 있다고 해서 uncommited read라고 한다.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED -- 해당 세션에 적용  

 

  

2.commited read(mssql의 디폴트값)

uncommited read의 내용과는 반대로 commit이 완료되기 전에는 업데이트된 데이터를 읽을수 없는걸 말한다트랜잭션을 시작한 유저가 update를 하고 commit을 하기전에는 업데이트된 데이터보기는 불가능하다 

 

 

3.repeatable read

트랜잭션A가 시작이 되었을 때 트랜잭션B는 트랜잭션A가 종료되기 전까진 update와 delete가 불가능하고 select는 가능하다트랜잭션A가 select한 영역에 대해서만 트 랜잭션B가 update,delete가 불가능하다는 소리지값이 있는 영역을 제외한 범위에는 insert는 불가능 하지 않다또한 다른영역은 문제되지 않는다.

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ -- 해당 세션에 적용  

 

 

4.serializable read

트랜잭션이 시작되고 접근한 모든 테이블에 대해선선 update,delete,insert가 전부 차단 되고 동일한 select결과를 받을수 있다가장 높은 수준의 레벨이다

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE -- 해당 세션에 적용