장애 회복은 트랜잭션의 특성과 관계가 있다.
crash 지점에서 장애가 발생했다면, commit이 완료된 t1, t2, t3는 db에 저장되어 있어야 하고 t4, t5는 commit 전에 장애가 났으므로 장애 복구 이후에도 operation이 반영되어 있으면 안된다.
UNDO
과거 값을 갖고 있는 로그를 기반으로 지금까지 실행되었던 모든 변경 연산을 취소하는 방법으로 데이터베이스를 복구할 수 있다.
트랜잭션의 commit이나 abort가 없는 경우 정상적으로 종료되지 않은 트랜잭션이기 때문에, 로그를 역순으로 조회하면서 이런 트랜잭션들의 로그에 기록된 과거 값으로 db를 전부 되돌리는 방법이다.
REDO
로그에서 commit은 되었으나 end가 없는 경우, 즉 트랜잭션은 완료되었으나 디스크에 정상적으로 반영되었다고 볼 수 없는 경우에는 연산을 다시 replay해 디스크까지 값을 정상적으로 반영될 수 있도록 한다.
Checkpoint
checkpoint를 만드는 동안 다른 연산을 허용하기 위해 checkpoint를 생성하는 동안 update는 허용하는 checkpoint 기술
https://bit.ly/3FVdhDa
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.