회복 시스템이란
Failure classification
-
트랜잭션 failure
- Logical error: 프로그램 오류로, overflow, bad input 등등
- System error: deadlock
-
System crash
- DBMS나 OS의 실행 중지
- volatile memory의 내용 파쇄
-
Media failure
- Non-volatile memory의 내용 파손 (e.g. HDD 파손)
Storage 구조
Storage Types | Description | Examples |
---|---|---|
Volatile storage | power outage or system crash 발생시 데이터가 파손됨 | Main memory, Cache memory |
Nonvolatile storage | system crash에도 데이터 보존 | Hard disk, Magnetic tape |
Stable storage | 어느 형태의 failure에도 데이터 보존 | software적 replication으로 구현 |
Recovery & Atomicity
Buffer policy
STEAL
STEAL
은 트랜잭션에 의해 수행 중인 변경 사항이 디스크에 기록 가능함¬ STEAL
은 트랜잭션에 의해 수행 중인 변경 사항이 디스크에 기록되면 안됨
FORCE
FORCE
는 완료한 트랜잭션의 결과를 디스크에 반드시 기록하도록 함¬ FORCE
는 완료한 트랜잭션의 결과를 디스크에 반드시 기록할 필요 없음
Recovery operations
UNDO
: 실행 중인 트랜잭션의 결과를 디스크에서 삭제REDO
: 이전에 완료한 트랜잭션을 재실행
Log-based Recovery
Update log record
- Transaction이 update 연산을 실행할 때마다 생성
- Transaction 식별자, Data 식별자
- Old value, new value (로그 방식에 따라 선택적)
지연 갱신
- commit시 쓰기 (deferred)
¬ FORCE
UNDO
불필요 -> old value 기록 필요 X
즉시 갱신
- 즉시 쓰기(commit 전), (immediate)
FORCE
UNDO
,REDO
모두 필요
Checkpoints
-
어느 로그 레코드부터 조사할 것인지?
-
checkpoint 동안 일반 트랜잭션은 실행 중단됨
-
checkpoint 시점과 commit 시점에 따른 수행 동작 예시
ARIES
- Fine-Granularity locking 지원 (레코드 레벨의 lock)
- Partial rollback 지원
- Write Ahead Logging 이용 (로그를 먼저, 다음 write)
기본 개념
- Log Sequence Number (LSN) 이용
- Index에 대한 logical undo 지원, old, new 모두 쓰지 않고 operation만 저장
- Flexible buffer management:
STEAL
&¬ FORCE
- Fuzzy checkpoint 지원
- 트랜잭션 중간에 checkpoint 가능
Media Recovery
- 주기적인 백업(dump)이 필요