
정답
undo 작업이 필요한 트랜잭션은 T₁, T₃이며, 회복 후 데이터 항목 B의 값은 2100이다.
출제 의도
이 문제는 검사점 기반 회복 기법에서 시스템 실패 이후 어떤 트랜잭션에 대해 undo 또는 redo가 필요한지를 판단하고, 즉시 갱신 기법에서 로그를 이용해 데이터 항목의 최종 값을 복원하는 능력을 평가한다.
풀이 과정
DBMS는 즉시 갱신 기법을 사용하므로, 커밋되지 않은 트랜잭션의 변경 내용도 디스크에 반영될 수 있다. 따라서 시스템 실패 후에는 커밋되지 않은 트랜잭션에 대해 undo 작업이 필요하다.
마지막 검사점은 순번 13번에서 발생하였다. 이 검사점 이후에 시작되었거나, 검사점 이전에 시작했지만 커밋되지 않은 트랜잭션을 대상으로 회복을 판단한다.
검사점 이후의 트랜잭션 상태를 정리하면 다음과 같다.
T₀는 순번 9에서 commit 되었으므로 회복 대상이 아니다.
T₂는 순번 12에서 abort 되었으므로 이미 취소된 트랜잭션이다.
T₁은 검사점 이전에 시작되었고, 검사점 이후에도 작업(순번 15)을 수행했으나 commit 로그가 존재하지 않는다.
T₃은 검사점 이후 순번 14에서 start 되었고, commit 로그 없이 시스템 실패가 발생하였다.
따라서 undo 작업이 필요한 트랜잭션은 T₁과 T₃이다.
이제 데이터 항목 B의 값을 판단한다. B에 대한 변경 로그는 다음과 같다.
$$
$$
이 두 변경은 모두 T₀에 의해 수행되었고, T₀는 순번 9에서 commit 되었다. 따라서 redo 대상이며, undo 되지 않는다.
이후 B에 대한 추가 변경 로그는 존재하지 않는다.
따라서 회복이 완료된 후 데이터 항목 B의 최종 값은 2100이다.