반응형

트랜잭션 isolation level

 

트랜잭션 isloation level은 아래의 4가지 단계로 구분된다.

    • read uncommited: commit되지 않은 데이터도 읽을 수 있다
    • read committed: commit된 데이터만 읽는다
    • repeatable read: 하나의 트랜잭션에서는 하나의 스냅샷만 사용
    • serializable: read시에 DML작업이 동시에 진행될 수 없다

 

transaction isolation level table

- 따라서 read commited의 경우 하나의 트랜잭션에서 같은 쿼리를 두 번 실행하면 처음의 쿼리결과와 두번째 쿼리 결과가 다를 수 있다.

- repeatable read는 하나의 트랜잭션에서 같은 쿼리를 두 번 실행하더라도 두 결과가 동일하다.

 

여기서 Phantom read란?

Phantom read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행 시, 첫 번째 쿼리에서 없던 레코드(유령, Phantom)가 두 번째 쿼리에서 발생하는 현상

 

non-repeatable read와 phantom read는 무슨 차이??

둘 다 한 트랙잭션 내에서 같은 쿼리를 두 번 실행했을 때 처음 쿼리 결과와 두번째 쿼리 결과가 다를 때를 말한다.

- non-repeatable read는 한 레코드의 값이 다른 경우, 즉 달라진 value에 초점

- phantom read는 없던 레코드가 생기거나, 있던 레코드가 없어지는 경우, 즉 레코드의 존재 유무에 초점

 

repeatable read isolation level에서는 non-repeatable read가 발생하지 않는다.

- 다른 트랜잭션이 수정사항을 commit하더라도, 그 트랜잭션이 자신보다 늦게 생긴 트랜잭션이면 해당 변경사항을 반영하지 않기 때문이다.

반응형

+ Recent posts