데이터베이스
Cache Recovery(회복)
- Recovery는 다음의 트랜잭션 특징과 관계가 있다.
▶️ Atomicity
트랜잭션의 Operation들이 실행 중에 장애 발생하면 실행된 operation들은 roll back 필요
▶️ Durability
장애 후에도 commit된 트랜잭션의 데이터는 영원히 저장
Logging & Recovery
- recovery algorithm은 장애 후 데이터베이스의 atomicity와 durability를 제공하는 기술
- Log : 데이터베이스의 변경 내용을 저장하고 있는 파일
Aries Recovery Algorithm
- Aries=Algorithms for recovery and Isolation Exploiting Semantics
▶️ Write-Ahead Log(WAL)
디스크에 변경된 내용을 적기 전에 반드시 로그가 안전한 storage에 저장되야 한다.
변경된 내용을 디스크에 log record를 먼저 기록해야 한다. - Atomicity 보장
Commit전에 모든 log recorde들이 저장되어야 한다. - Durability 보장
▶️ UNDO log
Crash 후에 commit되지 않은 사항들을 UNDO(원복)할 때 사용
▶️ REDO log
Crash 후에 commit된 변경 사항들을 REDO(replay)할 때 사용
UNDO logging
- 모든 액션은 undo log record 생성(old값을 포함)
- Disk 업데이트 하기 전에 log record를 disk에 적는다(WAL)
- commit로그가 flush되기 전 트랜잭션의 모든 체인지는 Disk에 반영
REDO logging
- 모든 액션은 redo log record 생성(new 값을 포함)
- Disk업데이트 하기전에 redo record를 Disk에 적는다(WAL)
- 모든 log record를 commit할 때 flush 한다.
- 체인지가 disk에 반영된 후에 END log record를 write
Checkpoint(스냅샷)
- DBMS는 주기적으로 체크포인트를 생성하여 충돌 시 복구에 걸리는 시간을 최소화(여기까지는 REDO가 다 됐다) ▶️ Checkpoint log 작성
- Fuzzy checkpoint
▶️ checkpoint 하는 긴 시간동안 다른 operation을 block 하는 걸 막기 위해 checkpoint하는 동안 update는 허용하는 checkpoint 기술

https://bit.ly/3FVdhDa
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.