http://www.sqler.com/336433

Isolation Level 중 Snapshot 설명입니다.

 

큰 이미지 파일은 첨부파일을 보시면 됩니다.

 

1PagePPT_Snapshot_윤선식_20110112_small.jpg

 

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은 다른 트랜잭션의 종료유무와 상관없이 해당 트랜잭션에서는 동일한 값이 유지됨을 알 수 있습니다.

 

이상입니다.

+ Recent posts