CS 기초/DB
[DB] CH16. 리커버리 시스템(Recovery system)
땅어
2020. 11. 7. 11:35
728x90
300x250
Recovery system이란?
트랜잭션 failure나 system crash 또는 disk failure 같은 것들이 실행 도중 일어났을 때 데이터 무결성을 보장하기 위한 일종의 복구 체계
Log-Based Recovery
Log record 분석에 기반한 recovery mechanism.
Immediate DB Modification
트랜잭션이 commit되기 전에 buffer나 disk로의 update를 허용하는 것
Recovery from failure
- Undo
- <T1,X,V1,V2> : write old value V1 to X -> going backwards
- log에 <commit>이나 <abort>가 없는 경우
- Redo
- <T1,X,V1,V2> : write new value V2 to X -> going forward
- log에 <commit>이나 <abort>가 있는 경우
Checkpoint를 쓰는 이유는?
만약 checkpoint를 안 쓰고 전체에 대해 redo/undo를 한다고 가정하면 아래와 같은 문제가 있다.
- 시스템이 작동한지 오랜 시간이 지났다면 전체 로그 기록을 처리하는 것은 time-consuming
- 이미 DB(Stable storage)에 output된 트랜잭션에 대해 불필요한 redo를
Log record buffering이란?
log record가 stable storage에 가기 전에 main memory에 저장되는 것(buffered)
WAL(Write-Ahead Loggin)이란?
main memory의 block이 DB(stable storage)로 output되기 전에 해당 block의 데이터와 관계된 log record가 모두 stable storage로 output되어 있어야 함(Before writing data, log record is output first)
728x90
300x250