Correct State
는 도메인의 유효 범위, 무결성 제약조건등의 제약조근을 위배하지 않은 상태를 의미
DEFAULT
: 기본 격리 수준READ_UNCOMMITED
(level0) : 커밋되지 않은 데이터에 대한 읽기 허용
- Dirty Read: 트랜잭션 A가 수정중인 데이터를 트랜잭션 B가 읽을 수 있고, rollback이 된다면 트랜잭션 B가 읽은 데이터는 잘못된 데이터(데이터 정합성을 어김
READ_COMMITED
(level1) : 커밋된 데이터에 대해 읽기 허용REPEATABLE_READ
(level2): 동일 필드에 대해 다중 접근 시 모두 동일한 결과 보장shared lock
이 발생
- Non-repeatable Read: 트랜잭션 A가 조회중인 데이터를 트랜잭션 B가 수정하고 커밋하면 트랜잭션 A가 재조회시에 해당 데이터가 수정되어 나타남. 즉, 반복해서 같은 데이터가 나타나지 않는 다는 것
SERIALIZABLE
(level3): 가장 높은 격리, 성능 저하의 우려 존재shared lock
발생MVCC란, 다중 사용자 DB성능을 위한 기술로 데이터 조회시 LOCK을 사용하지 않고 데이터의 버전을 관리하여 일관성 및 동시성을 높이는 기술
- Phantom Read: 트랜잭션 A가 조회한 데이터에 트랜잭션 B가 데이터를 추가하고 커밋한 뒤 트랜잭션 A가 재조회하면 데이터가 추가되어 나타남. 즉, 반복 조회시 결과 집합이 달라짐
참조