[정의] REDO중 역사 반복(Repeating history) 붕괴가 발생했을 때의 데이터베이스 상태를 복구하기 위해, 붕괴 발생이전에 수행했던 모든 연산을 다시 한번 수행하는 알고리즘
[특징]
- UNDO : 붕괴가 발생했을 때 완료되지 않은 상태였던 진행 트랜잭션은 UNDO 됨
- UNDO 중 로깅하여 도중 실패 시 반복 하지 않음: UNDO를 할 때에도 로깅을 함으로써
회복을 수행하는 도중에 실패하여 회복을 다시 시작할 때에 이미 완료된 UNDO 연산은 반복하지 않음
- WAL(Write-Ahead Logging)방식을 이용 : 데이터베이스 시스템에서 ACID의 특성 가운데 원자성과 내구성을 제공하는 기술의 한 계열이다. WAL을 사용하는 시스템에서 모든 수정은 적용 이전에 로그에 기록된다.
[회복 알고리즘의 3단계]
1단계) 분석단계 : 붕괴가 발생한 시점에 버퍼에 있는 수정된 페이지와 진행 트랜잭션을 파악,
REDO가 시작되어야 하는 로그의 위치를 결정
2단계) REDO단계 : 분석 단계에서 결정한 REDO 시작 위치의 로그로부터 로그가 끝날 때 까지 REDO를 수행,
REDO 된 로그 레코드의 리스틀 관리하여 불 필요한 REDO 연산이 수행되지 않도록 함
3단계) UNDO단계 : 로그를 역순으로 읽으면서 진행 트랜잭션의 연산을 역순으로 UNDO 함
[필요정보]
- 로그(LOG) : 페이지에 대한 갱신(write), 트랜잭션 완료(commit), 트랜잭션 철회(abort), 갱신에 대한 UNDO, 트랜잭션 종료(end) 시 기록, 각 로그 레코드마다 로그 순차번호LSN 할당. (LSN: 디스크에 저장된 로그 레코드의 주소로서 단조 증가 –Log Sequence Number)
- 트랜잭션 테이블 : 진행 트랜잭션에 대한 정보(트랜잭션 식별자, 트랜잭션 상태, 해당 트랜잭션의 가장 최근 로그레코드의 LSN 관리)
- 오손 페이지 테이블(dirty page table) : 버퍼에 있는 오손 페이지에 대한 정보(페이지 식별자, 해당 페이지에 대한 가장 최근 로그 레코드 LSN 관리)
[ARIES에서의 검사점 기록]
1.로그에 begin_checkpoint 레코드를 기록하기
2.로그에 end_checkpoint 레코드를 기록하기
트랜잭션 테이블과 오손 페이지 테이블의 내용도 함께 저장한다.
3.특수 화일에 begin_checkpoint 레코드의 LSN을 기록하기
[ARIES에서 회복의 예]
'ITPE > DB' 카테고리의 다른 글
함수적 종속성 (0) | 2021.03.06 |
---|---|
데이터 모델링 (0) | 2021.03.06 |
MVCC (MultiVersion concurrency control) (0) | 2021.03.06 |
Timestamp Ordering (0) | 2021.03.06 |
낙관적 검증(Validation) (0) | 2021.03.06 |