DB

트랜잭션 격리 레벨 정리

91cm 2021. 4. 3. 18:14

 

평소에 쓰고는 있지만, 머리속에서 깔끔하게 정리가 안되니 설명하기가 힘든것 같다.

 

이번 기회에 정리를!

 

트랜잭션 격리 레벨에는 4가지가 있다.

READ-UNCOMMITED / READ-COMMITED / REPEATABLE-READ / SERIALIZABLE

 

1 -> 4로 갈수록 데이터 정합성이 높아지면서, 동시성이 떨어진다

 

1.READ-UNCOMMITED

커밋전의 데이터 변경 내용을 다른 트랜잭션에서 읽는 것을 허용함

주의점 : DIRTY-READ 발생, NON-REAPEATABLE-READ 발생

 

2.READ-COMMITED

커밋이 완료된 트랜잭션의 변경사항만 , 다른 트랜잭션에서 조회가 가능함

주의점 : NON-REAPEATABLE-READ 발생 , PANTOM-READ 발생

 

3.REPEATABLE-READ

트랜잭션 범위내에서 조회한 내용이 항상 동일함을 보장함

주의점 : PTANTOM-READ 발생

 

4.SERIALIZABLE

한 트랜잭션에서 사용하는 데이터는 다른 트랜잭션에서 접근 불가 (동시성이 가장 많이 떨어짐 -> 데드락 조심!)

 

 

 

NON-REPEATABLE 현상이란?

하나의 트랜잭션 안에서 결과값이 불일치 하는 현상을 말합니다

NON-REAPEATABLE-READ 현상

PANTOM-READ현상이란?

NON-REPEATABLE현상과 비슷해보이지만, 다른점이 있다.

하나의  트랜잭션안에서 데이터가 없어지거나, 추가되어지는 것이다.

PANTOM-READ 현상