오뚝이개발자

[DB] CH16. 리커버리 시스템(Recovery system) 본문

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
Comments