Isolation Level 중 Snapshot 설명입니다.
큰 이미지 파일은 첨부파일을 보시면 됩니다.
1. Session 1.
- DB 옵션에서 SNAPSHOT 격리수준을 사용가능하도록 변경합니다.
2. Session 1.
- 테이블을 생성합니다.
3. Session 1.
- 임의의 데이터를 넣습니다. SEQ 10만 보시면 됩니다.
4. Session 1.
- 트랜잭션을 시작하면서 10의 "가"를 "ABC"로 변경합니다.
5. Session 1.
- SELECT 해 보면 "ABC"로 나옵니다.
6. Session 2.
- 격리수준을 SNAPSHOT으로 설정합니다.
7. Session 2.
- 트랜잭션을 시작하고, SEQ 10을 SELECT 해 보면 이전 값인 "가"가 표시됩니다.
8. Session 1.
- Session 1의 Update한 내역을 Commit합니다.
9. Session 1.
- Session 1에서 "10"의 값을 가져오면 당연히 변경된 "ABC"로 가져옵니다.
10. Session 2.
- Session 2에서 "10"의 값을 SELECT 하면 여전히 이전 값인 "가"입니다.
11. Session 2.
- Commit합니다. 이렇게 되면 Session2의 트랜잭션도 종료됩니다.
12. Session 2.
- 이제 "10"을 SELECT하면 변경된 값인 "ABC"로 가져옵니다.
즉, SNAPSHOT은 다른 트랜잭션의 종료유무와 상관없이 해당 트랜잭션에서는 동일한 값이 유지됨을 알 수 있습니다.
이상입니다.