11. Recovery

ushin20
|2023. 5. 2. 18:35

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을 재개한다.

Deferred Update의 recovery 예시이기도 하다.

Redo transaction에 대해서는 report를 발생하지 않는다. 오직 commit되거나 abort되는 경우에만 report를 발생한다.

Immediate update의 recovery 예시이기도 하다.

 

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는 물리적으로 분리된 공간에 백업해둔다.