ARIES 회복 기법: Difference between revisions

From IT Wiki
No edit summary
No edit summary
 
(5 intermediate revisions by one other user not shown)
Line 5: Line 5:


== 특징 ==
== 특징 ==
* [[로그 선행 기입|로그 선행 기입(WAN)]]
{| class="wikitable"
* Redo 중 Repeating history
|-
* Undo 중 Logging changes
! 구분 !! 설명
|-
| WAL/LSN || 모든 변경사항을 선행 로그로 기록
|-
| No-Force || 트랜잭션이 커밋 되어도 변경사항을 즉시 디스크에 기록하지 않음
|-
| Steal || 트랜잭션이 커밋되지 않아도 변경사항을 디스크에 기록 가능
|}
* WAL/LSN을 기반으로 [[데이터베이스 Force와 Steal|No-Force/Steal]] 정책 하에 효율적인 복구 수행


== 기본 개념 ==
== 핵심 개념 ==
* [[데이터베이스 Force와 Steal|No-Force]], [[데이터베이스 Force와 Steal|Steal]]
* '''REDO 중 Repeating history''': 붕괴가 발생했을 때의 데이터베이스 상태를 복구하기 위하여 붕괴 발생 이전에 수행했던 모든 연산을 다시 한번 수행
* '''REDO 중 Repeating history''': 붕괴가 발생했을 때의 데이터베이스 상태를 복구하기 위하여 붕괴 발생 이전에 수행했던 모든 연산을 다시 한번 수행. 붕괴가 발생했을 때 완료되지 않은 상태였던 (진행 트랜잭션)은 UNDO
* '''UNDO 중 Logging changes''': UNDO를 할 때에도 로깅을 함으로써 회복을 수행하는 도중에 실패하여 회복을 다시 시작할 때에 이미 완료된 UNDO 연산은 반복하지 않음
* '''UNDO 중 Logging''': UNDO를 할 때에도 로깅을 함으로써 회복을 수행하는 도중에 실패하여 회복을 다시 시작할 때에 이미 완료된 UNDO 연산은 반복하지 않음


== 수행 3단계 ==
== 수행 3단계 ==
Line 19: Line 26:
! 단계 !! 동작
! 단계 !! 동작
|-
|-
| Analysis  || 붕괴가 발생한 시점에 버퍼에 있는 수정된 페이지와 진행 트랜잭션을 파악, REDO가 시작되어야 하는 로그 위치 결정
| Analysis  || REDO가 시작되어야 하는 로그 위치 결정
|-
|-
| REDO || 분석 단계에서 결정한 REDO 시작 위치의 로그로부터 로그가 끝날 때 까지 REDO를 수행, REDO 된 로그 레코드의 리스트를 관리하여 불 필요한 REDO 연산 방지
| REDO || 분석 단계에서 결정한 REDO 시작 위치의 로그부터 REDO를 수행
|-
|-
| UNDO || 로그를 역순으로 읽으며 진행 트랜잭션의 연산을 역순으로 UNDO
| UNDO || 로그를 역순으로 읽으며 미완료 트랜잭션을 UNDO
|}
|}


Line 45: Line 52:
* 장애 시 이전의 데이터베이스 수행 기록을 모두 추적하여 REDO
* 장애 시 이전의 데이터베이스 수행 기록을 모두 추적하여 REDO
|-
|-
| UNDO Logging
| Logging Changes
||  
||  
* LSN을 이용하여 UNDO 완료된 트랙잭션 반복 수행 회피
* UNDO 완료된 트랙잭션을 기록하여 UNDO 반복 수행 회피
|}
|}

Latest revision as of 17:13, 12 December 2019

Algorithms for Recovery and Isolation Exploiting Semantics; ARIES Recovery Algorithm; ARIES Recovery method
  • IBM 펠로 C. Mohan이 발명한 데이터베이스 복구 알고리즘
  • IBM DB2, 마이크로소프트 SQL 서버, 그리고 수많은 상용 DBMS에서 사용

특징[edit | edit source]

구분 설명
WAL/LSN 모든 변경사항을 선행 로그로 기록
No-Force 트랜잭션이 커밋 되어도 변경사항을 즉시 디스크에 기록하지 않음
Steal 트랜잭션이 커밋되지 않아도 변경사항을 디스크에 기록 가능
  • WAL/LSN을 기반으로 No-Force/Steal 정책 하에 효율적인 복구 수행

핵심 개념[edit | edit source]

  • REDO 중 Repeating history: 붕괴가 발생했을 때의 데이터베이스 상태를 복구하기 위하여 붕괴 발생 이전에 수행했던 모든 연산을 다시 한번 수행
  • UNDO 중 Logging changes: UNDO를 할 때에도 로깅을 함으로써 회복을 수행하는 도중에 실패하여 회복을 다시 시작할 때에 이미 완료된 UNDO 연산은 반복하지 않음

수행 3단계[edit | edit source]

단계 동작
Analysis REDO가 시작되어야 하는 로그 위치 결정
REDO 분석 단계에서 결정한 REDO 시작 위치의 로그부터 REDO를 수행
UNDO 로그를 역순으로 읽으며 미완료 트랜잭션을 UNDO

구성 요소[edit | edit source]

구성 요소 설명
WAL
  • Write Ahead Logging
  • DB 변경 사항에 대한 전체 로깅
LSN
  • Log Sequence Number
  • 모든 로그에 대한 고유 순서 번호
Repeating History
  • 장애 시 이전의 데이터베이스 수행 기록을 모두 추적하여 REDO
Logging Changes
  • UNDO 완료된 트랙잭션을 기록하여 UNDO 반복 수행 회피