데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다.
어떤 트랜잭션의 변경내용이 COMMIT이나 ROLLBACK과 상관없이 다른 트랜잭션에서 보여진다.
이에 생기는 문제
1. A 트랜잭션에서 10번 사원의 나이를 27살에서 28살로 바꿈
2. 아직 커밋하지 않음
3. B 트랜잭션에서 10번 사원의 나이를 조회함
4. 28살이 조회됨
이를 Dirty Read
라고 한다
5. A 트랜잭션에서 문제가 발생해 ROLLBACK함
6. B 트랜잭션은 10번 사원이 여전히 28살이라고 생각하고 로직을 수행함
어떤 트랜잭션의 변경 내용이 COMMIT 되어야만 다른 트랜잭션에서 조회할 수 있다.
이에 생기는 문제
1. B 트랜잭션에서 10번 사원의 나이를 조회
2. 27살이 조회됨
3. A 트랜잭션에서 10번 사원의 나이를 27살에서 28살로 바꾸고 커밋
4. B 트랜잭션에서 10번 사원의 나이를 다시 조회(변경되지 않은 이름이 조회됨)
5. 28살이 조회됨
이를 NON-REPETABLE READ
라고 한다.
트랜잭션이 시작되기 전에 커밋된 내용에 대해서만 조회할 수 있다.
이에 생기는 문제
1. A 트랜잭션이 name = J를 조회합니다.
2. B 트랜잭션이 name = J를 조회 후, name = K로 변경하고, commit합니다.
3. A 트랜잭션이 name = L로 변경합니다.
이때 이미 name = J의 data는 Undo영역으로 들어가고, 결과적으로 검색이 안됩니다.
이를 Update 부정합
이라고 한다.
NON-REPETABLE READ
처럼 읽었던 데이터의 값이 변경된게 아닌,Pathom Read
라고 한다.가장 엄격한 수준으로, 공유잠금을 설정해 동시처리를 막습니다.
이에 생기는 문제