su3inni / cs-study

0 stars 0 forks source link

Transaction Isolation Level #2

Open su3inni opened 1 year ago

su3inni commented 1 year ago

ACID 를 강하게 지키기 위해서 동시성이 매우 떨어지게 된다. DB엔진은 ACID를 희생하고 Transaction Isolation Level을 사용하여 높은 동시성을 얻고자 한다.

Transaction Isolation Level에 따라 다른 Lock 방법을 사용한다. Isolation Level이 높아질 수록 더 빡빡하게 Lock을 거는 방식이다.

su3inni commented 1 year ago

속도는 빠르지만 데이터 일관성은 보장 못하는 순서대로 나열한다.

READ UNCOMMITTED

아직 커밋되지 않은 데이터를 읽을 수 있다.

Dirty Read

즉, Dirty-Read, Non-Repeatable-Read , Phantom-Read 문제 발생

READ COMMITTED

commit 된 데이터만 읽을 수 있다.

Non-Repeatable-Read

즉, Non-Repeatable-Read, Phantom-Read 발생

REPEATABLE READ

특정 데이터를 반복 조회시 같은 값을 반환한다.

Phantom-Read Non-Repeatable-Read의 한 종류로 새로운 데이터가 생기거나, 기존의 데이터가 사라지는 문제를 가지고 있다.

SERIALIZABLE

순차적으로 트랜잭션을 수행한다. 시간이 오래 걸린다는 단점으로 꼭 사용해야하는지 판단 후 사용하기