데이터베이스

동시성제어_검사시점, 체크포인트(checkpoint) 회복 기법, 검사시점, UNDO, REDO

스윙스윙 2021. 8. 25. 15:21

▣ 동시성제어_검사시점, 체크포인트(checkpoint) 회복 기법, 검사시점, UNDO, REDO

 - 트랜잭션 수행 도중 변경된 데이터를 로그파일에 기록하고, 일정 기간 단위로 로그와 버퍼를

  디스크에 반영하고 로그파일에 검사시점(checkpoint)을 표시 

 - 로그기반 회복 기법의 단점을 보완하고 최적화

 - 일정시간 간격으로

    1) Log Buffer를 로그파일에 저장

    2) DB Buffer 블록을 디스크에 저장

    3) 체크포인트 시점 기록

 

  - 검사시점 회복시 수행 알고리즘

 UNDO list / REDO list 생성, 최종 Checkpoint 당시 모든 트랜잭션 UNDO list에 삽입

 로그 순차 검색 <T1, Start>이면 UNDO list로, <T1, Commit>이면 UNDO list삭제, REDO list로

 UNDO list 역순으로, UNDO연산 수행 후 REDO list기록 순서대로 REDO연산 수행

    1) 체크포인트 이전 트랜잭션 : 회복작업에서 제외

    2) 체크포인트 이후 트랜잭션 : 

        Undo 수행으로 회복 : 후진회복법(Backward Recovery), 로그역방향 -> 취소

        Redo 수행으로 회복 : 전진회복법(Forward Recovery), 로그 순방향 -> 재실행

 


2011년 75번

정답 : 2번

T1 검사시점 이전에 종료되었으므로 Redo대상에서 제외

T2, T3 : 장애 발생 시점 이전에 트랜잭션을 완료하였고, 다음 검사 시점이 수행되지 않았으므로 Redo 대상

T4, T5 : 장애 발생 시점 이전에 트랜잭션이 완료되지 않았으므로 Redo 대상 아니며, T4는 검사 시점 이전에 수행을 시작하였으므로 Undo 대상

 


2012년 58번

정답 : 3번

시스템이 다운 되기 전에 성공적으로 수행을 완료한 트랜잭션은 T1, T2이며,

다운 시점에 진행중인 트랜잭션은 T3, T4임

따라서, T1, T2는 연산 후의 값이 최종 값이고, T3, T4는 연산 전의 값이 최종 값임

T1 : A, 50, 150 -> A = 150

      B, 100, 200 -> B = 200

T2 : C, 350, 200 -> C = 200

T3 : D, 100, 400 -> D = 100

T4 : C, 200, 250 -> C = 200

 

∴ A = 150, B = 200, C = 200, D = 100으로 3번이 정답임

 


2013년 65번

정답 : 2번

체크포인트 이전에 완료된 트랜잭션 T1은 이미 시스템에 반영 -> Redo제외

장애 시점에 완료되지 못한 트랜잭션 T3, T5는 Rollback 됨 -> Undo 대상

체크포인트 C1과 C2사이에 완료되어 시스템에 반영할 대상이 있는 트랜잭션 T2, T4가 Redo 대상임

 

 


2015년 66번

정답 : 4번

D는 30임

* 앞의 트랙잭션 번호 잘 확인

<T4, A, 20, 21> -> A는 21임

 

<T1, D, 20, 30

<T2, C, 12, 13>

<T4, B, 15, 16>

<T3, D, 30, 31>

<T4, A, 20, 21>

 

 


2015년 72번

정답 : 1번, 4번

Undo 수행으로 회복 : 후진회복법(Backward Recovery), 로그역방향

Undo 수행은 All or Nothing 으로 전체 실행

 


2021년 71번

정답 : 2번

검사시점 기법의 회복 연산 중 UNDO 연산은 트랜잭션의 처음부터 끝까지 로그에 기록된 순서의 역순으로 수행하며, REDO 연산은 트랜잭션의 Checkpoint이후부터 끝까지 로그에 기뢱된 순서대로 수행

 

T2는 성공적으로 완료되었으므로 트랜잭션의 Checkpoint 이후부터 끝까지 Redo연산을 수행해야 함.

보기2번은 틀렸음