1. Main goal of recovery
Failure가 발생하기 가장 최근의 DB를 저장
정보는 log에 저장되어 있음
백업된 DB의 copy를 다른 시스템에 저장함
2. Deferred vs Immediate update
Deferred(지연갱신) | Immediate(즉시갱신) |
지연 갱신은 물리적 반영이 바로 되지 않음 UNDO 필요 없음 REDO 필요함 |
물리적으로 바로 반영됨 UNDO만 필요 (steal/force) UNDO, REDO 필요 (steal/no-force) |
*steal(즉시), force(전체), no-force(일부)
3. UNDO and REDO operations
Undo와 Redo는 equivalent하게 진행한다.
4. Caching
Disk block의 buffer로 사용한다.
새로운 item을 위한 공간을 만들어주기 위해 flushed된다.
기존의 data는 disk에 반영된다.
Pin-unpin bit를 통해서 완료되었는지(디스크로 갈 수 있는지, flush가 가능한지)를 판단한다.
수정된 케시는 Dirty bit(1)로 표현한다.
5. In-place updating vs Shadowing
In-place는 같은 disk 장소에 overwrite하는 방법이다.
Shadowing은 다른 disk 장소에 업데이트하는 방법이다. 여러 버전의 값을 기록하기 위해 사용한다. 현재는 잘 사용되지 않는다.
6. Before and After images of data items
Before-image(old value)와 After-image(new value)를 저장하는 방식을 주로 사용한다.
7. Recovery Concepts
Steal | No-steal | Force | No-force |
즉시 갱신 | 특정 시점 갱신 | 전체 갱신 | 일부 갱신 |
보통은 steal/no-force 전략을 사용한다. 작은 Buffer가 필요하며, I/O update를 줄일 수 있기 때문이다.
8. Cascading Rollback
T가 rollback되면, T에 의해 write된 값을 읽는 모든 transaction도 rollback되야 한다.
9. Checkpoint
모든 transaction의 실행을 미루고 Force-write all main memory buffer한다.
즉, log를 적고 디스크에 반영시키는 작업이다.
마무리되면 transaction을 재개한다.
Redo transaction에 대해서는 report를 발생하지 않는다. 오직 commit되거나 abort되는 경우에만 report를 발생한다.
10. Shadow paging
현재는 잘 사용하지 않는 방법으로 이전 버전과 현재 버전을 디스크에 저장하는 방식이다.
11. ARIES recovery algorithm
Write에 대하여 steal/no-force 전략을 사용한다.
Write-ahead logging
Redo = history 다시 시도
Undo = change log에 저장
12. Recovery in Multi-DB systems
Two-phase protocol을 사용한다.
- Phase1: prepare for commit message
- Phase2: Issue commit signal
Phase1에서는 commit할 수 있는지 여부를 파악한다.
Failure에 대한 recovery는 다음과 같다.
- Phase1: rollback
- Phase2: 성공한 transaction recover, commit
DB는 물리적으로 분리된 공간에 백업해둔다.