트랜잭션 격리성에 대해 좀 더 알아보자.

트랜잭션은 서로 끼어들지 못한다는 정의가 있었다. 그런데 무조건 서로 접근이 불가능한 것일까?

그렇지 않다.

격리성은 여러가지 단계(=격리 수준)가 있으며 해당 단계에 따라 격리성과 동시성의 정도가 다르다. 트랜잭션이 순차적으로 실행되면 격리성은 높아지지만 동시성은 너무 낮아져서 성능이 떨어지게 된다. 격리성과 동시성은 반비례 관계에 있다. 격리성이 너무 높으면 동시성이 낮아지고 격리성이 너무 낮으면 동시성은 높아진다.

또한 DB에서 이 단계를 조정할 수 있다.

ex) MySQL의 경우

set session transaction isolation elvel [격리수준];

Untitled

Untitled

격리수준은 다음과 같은 것들이 있고, 각 격리수준에 따라 나타나는 현상들로 팬텀리드, 반복가능하지 않은 조회, 더티리드 등이 있다.