다음은 4개의 트랜잭션 T1, T2, T3, T4에 대하여 시스템 고장… | [7급 국가직 데이터베이스론] 21년 1회차 기출문제 상세 페이지
1[7급 국가직 데이터베이스론] 21년 1회차
다음은 4개의 트랜잭션 T1, T2, T3, T4에 대하여 시스템 고장(crash) 시점에 특정 스케줄에 대응하는 로그를 나타낸 것이다. 이 시스템은 로그를 이용한 회복기법으로 검사점(checkpoint)을 가진 즉시갱신규약(immediate update protocol)을 사용한다고 가정한다. 시스템 고장으로부터 회복(recovery)하는 과정에서 undo와 redo 연산들을 수행하게 된다. 회복 후 데이터 항목 A, B, C, D 값들을 바르게 연결한 것은? (단, 로그 레코드 구조는 <트랜잭션, 데이터 항목, 현재 값, 변경 값>이다)
| 로그 번호 | 로그 레코드 |
|---|---|
| 1 | <T1 start> |
| 2 | <T1, D, 20, 25> |
| 3 | <T1 commit> |
| 4 | <checkpoint {}> |
| 5 | <T2 start> |
| 6 | <T2, B, 12, 18> |
| 7 | <T4 start> |
| 8 | <T4, D, 25, 15> |
| 9 | <T3 start> |
| 10 | <T3, C, 30, 40> |
| 11 | <T4, A, 30, 20> |
| 12 | <T4 commit> |
| 13 | <T2, D, 15, 25> |
| 시스템 고장 |
1
30 12 30 20
2
20 18 40 25
3
30 18 40 15
4
20 12 30 15
해설
회복 후 값은 A=20, B=12, C=30, D=15이다.
검사점 이전에 완료된 T1은 처리하지 않고, 검사점 이후 commit 기록이 있는 T4는 redo, commit 기록이 없는 T2·T3는 undo한다.
- T4 redo: D를 15로, A를 20으로 다시 반영한다.
- T2 undo(역순): 로그 13으로 D를 15로, 로그 6으로 B를 12로 되돌린다.
- T3 undo: 로그 10으로 C를 30으로 되돌린다.
따라서 B·C는 변경 전 값으로 돌아가고, A·D는 T4가 기록한 값이 남는다.
오류나 개정된 내용이 보이면 알려주세요