- 동시에 여러 트랜잭션이 처리될 때
- 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 잇도록 허용할지 말지를 결정하는것
트랜잭션 격리 수준은 어떤게 있을까?
- READ UNCOMMITTED
- READ COMMITTED
- REPEATABLE READ
- SERIALIZABLE
READ UNCOMMITTED
- 각 트랜잭션에서의 변경 내용이 COMMIT 이나 ROLLBACK 여부에 상관없이 다른 트랜잭션에서 값을 읽을 수 있다.
- 정합성에 문제가 많은 격리 수준이기 때문에 사용하지 않는 것을 권자아한다.
- 아래의 그림과 같이 Commit 이 되지 않느 상태지만 Update 된 값을 다른 트랜잭션에서 읽을 수 있다.

- DIRTY READ 현상 발생
- 트랜잭션이 작업이 완료되지 않았는데도 다른 트랙잭션에서 볼수 있게 되는 현상
READ UNCOMMITTED
- RDB 에서 대부분 기본적으로 사용되고 있는 격리 수준이다.
- Dirty Read와 같은 현상은 발생하지 않는다.
- 실제 테이블 값을 가져오는 것이 아니라 Undo 영역에 백업된 레코드에서 값을 가져온다.

그렇다면 READ COMMITTED는 문제가 없을까?
- 트랜잭션-1 이 Commit한 이후 아직 끝나지 않는 트랜잭션-2가 다시 테이블 값을 읽으면 값이 변경됨을 알 수 있다.
- 하나의 트랜잭션내에서 똑같은 SELECT 쿼리를 실행했을 떄는 한상 같은 결과를 가져와야 하는 REPEATABLE READ의 정합성에 어긋난다.