Reference
🙇🏻♂️ 스스로 다시 보려고 기록하는 내용입니다
-한국방송통신대학교
회복의 역할

시스템 실패의 유형
- 트랜잭션 실패
- 논리적: 잘못된 데이터 입력, 부재, 버퍼 오버플로, 자원 초과이용
- 시스템적: 운용 시스템의 교착상태
- 시스템 장애
- 시스템의 하드웨어 고장, 소프트웨어의 오류
- 주기억장치와 같은 휘발성 저장장치의 내용 손실
- 디스크 실패
- 비휘발성 디스크 저장장치의 손상 및 고장으로 인한 데이터 손실
회복데이터의 구성

데이터 저장 구조
-
데이터는 디스크와 같은 비휘발성 저장장치에 저장되며, 전체 데이터의 일부만 주기억장치에 상주
-
데이터베이스는 데이터를 블럭(block) 단위로 전송하고 블럭 단위로 기억장소를 분할
-
트랜잭션은 디스크로부터 주기억장치로 데이터를 가져오며, 변경된 데이터는 다시 디스크에 반영
- 가져오기, 내보내기 연산은 블럭 단위로 실행
- 물리적 블록: 디스크 상의 블럭
- 버퍼 블록: 주기억장치에 임시적으로 상주하는 블럭
데이터베이스 연산

x 있으면 바로 보여주고, 없으면 input 해서 보여줌
로그 기반 회복
로그기반 회복의 개념

데이터 항목 변경과정
1. WAL (Write Ahead Log)
- 트랜잭션은 데이터베이스 수정 전, 로그 레코드를 생성하여 기록
2. 데이터 항목 변경 과정
- 트랜잭션이 메인 메모리의 개인 영역에서 여러 연산을 수행
- 트랜잭션이 데이터 항목이 존재하는 메인 메모리에 위치한 버퍼 블럭의 데이터를 변경
- Output 명령을 실행하여 버퍼 블럭을 디스크에 기록
Redo와 Undo 연산

데이터베이스 변경과 커밋

회복의 유형
-
회복은 트랜잭션에 의해 요청된 갱신 작업이 디스크에 반영되는 시점에 따라 구분
-
지연 갱신 회복(deferred update restore)
- 부분 커밋까지 디스크 반영을 지연시키고 로그에만 기록
- 실패시, 별도의 회복 작업 필요없이 로그만 수정
- 즉시 갱신 회복 (immediate update restore)
- 갱신 요청을 곧바로 디스크에 반영
- 실패시, 디스크에 반영된 갱신 내용을 로그 바탕으로 회복
은행시스템의 트랜잭션의 예

시스템 장애 발생 상황

즉시 갱신이냐, 지원갱신이냐에 따라 회복방법 다름
체크포인트

체크포인트 기법

체크포인트를 이용한 회복

회복 알고리즘
트랜잭션의 롤백 알고리즘


-> 역방향으로 올라와 start가 나오면 되돌리기(롤백) 멈춤
시스템 장애 후 회복 알고리즘

언두할거 먼저 찾음
로그레코드에 start abort가 있으면 리스트에서 삭제
