Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe

Slides:



Advertisements
Similar presentations
DB 후루룩 & ONE EYED JACK Collaboration_ ★. 다중 사용자 환경에서 둘 이상의 트랜잭션이 동시에 접속하여 해당 연산을 수행할 때, 문제 점이 전혀 발생하지 않도록 트랜잭션의 수행 을 적절히 제어해 주는 것을 말함. DBMS 예금 입출금 예금.
Advertisements

CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
오라클 백업과 복구.
UNIX 운영 체제의 설계 - Chapter 4. 파일의 내부 표현
제 19장 트랜잭션 처리를 위한 개념 경북대학교 컴퓨터과학과 박 영철.
9장. 트랜잭션 트랜잭션(transaction) 항공기 예약, 은행, 신용 카드 처리, 대형 할인점 등에서는 대규모
연결리스트(linked list).
제 9 장 구조체와 공용체.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
12장 데이터 읽기 일관성과 락.
뇌를 자극하는 Windows Server 2012 R2
운영체제 4장 요약정리(CPU 스케줄링) 2A 박훈.
Windows Server 장. 사고를 대비한 데이터 백업.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
5장 Mysql 데이터베이스 한빛미디어(주).
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe
SAP GUI 설치 가이드 프로세스 혁신 TFT.
Root Filesystem Porting
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Root Filesystem Porting
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
제 6장 트랜잭션 트랙잭션 동시성 제어 복구.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
5장 Mysql 데이터베이스 한빛미디어(주).
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
‘2012년 정보화 사업 교육 버그추적시스템(BTS) 사용 절차 2012, 02.
7가지 방법 PowerPoint에서 공동 작업하는 다른 사용자와 함께 편집 작업 중인 사용자 보기
메모리 관리 & 동적 할당.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
뇌를 자극하는 Windows Server 2012 R2
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
USN(Ubiquitous Sensor Network)
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
9장. 트랜잭션 트랜잭션(transaction) 항공기 예약, 은행, 신용 카드 처리, 대형 할인점 등에서는 대규모
2장. 변수와 타입.
Sell Plus -> GSM 상품 등록 기능 판매자 매뉴얼 (Sell Plus)
제 19 장 데이터베이스에서 동시성 제어를 위한 프로토콜에 대한 개요
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe
데이터 베이스 DB2 관계형 데이터 모델 권준영.
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
( Windows Service Application Debugging )
뇌를 자극하는 Solaris bible.
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
논리회로 설계 및 실험 4주차.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
Homework #3 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
System Security Operating System.
9 브라우저 객체 모델.
제 4 장 Record.
TrustNet 전자 협조전 사용설명서 목 차 작성,수정,삭제 결재함 처리현황 발송대장,접수대장
10주 MariaDB에서 트랜잭션 지원 및 동시성 제어 기능
 6장. SQL 쿼리.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
C++ Espresso 제15장 STL 알고리즘.
6 객체.
ARP.
Presentation transcript:

Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe 제 20 장 데이타베이스 회복 프로토콜의 개요 Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe © 2005 황규영 홍의경 음두헌 박영철 김진호 조완섭

Fundamentals of Database Systems 목 차 20.1 회복 개념 20.2 지연갱신을 기반으로 한 회복 기법 20.3 즉시갱신을 기반으로 한 회복 기법 20.4 그림자 페이지 기법 20.5 ARIES 회복 알고리즘 20.6 다중 데이타베이스에서의 회복 20.7 데이타베이스 백업과 재해적 실패로부터의 회복 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.1 회복 개념 20.1.1 회복 개요 및 회복 알고리즘의 분류 20.1.2 디스크 블록의 캐슁 20.1.3 로그 우선 출력, Steal/No-Steal, Force/No-Force 20.1.4 시스템 로그에서 검사점과 퍼지 검사점 기록 20.1.5 트랜잭션 복귀 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.1.1 회복 개요 및 회복 알고리즘의 분류 회복이란 ? 데이타베이스를 최근의 (가장 가까운 과거의) 일관된 상태로 복원하는 것 이렇게 하기 위해서 시스템은 트랜잭션이 실행되는 동안 데이타 항목의 변경에 대한 정보를 계속 유지하고 있어야 함 회복을 위한 전형적인 전략 재해적 실패에 대한 회복 데이타베이스 백업 (제 20.7 절 참조) 비재해적 실패에 대한 회복 지연갱신 기법 (제 20.2 절 참조) 지연갱신: 트랜잭션이 성공적으로 완료 시점에 이를 때까지 데이타베이스의 실제 갱신 연산을 연기한다. 즉시갱신 기법 (제 20.3 절 참조) 즉시갱신: 트랜잭션이 갱신 명령을 내리는 순간 데이타베이스를 갱신한다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.1.2 디스크 블록의 캐슁 디스크 페이지(블록) 캐슁 회복 처리는 주기억장치에 디스크 페이지들을 버퍼링하고 캐슁하는 것과 밀접한 관련이 있음 DBMS 캐쉬와 캐쉬 디렉토리 DBMS 캐쉬 데이타베이스 항목들을 주기억장치에 유지시키기 한 주기억장치 버퍼들의 집합 이 캐쉬는 운영체제가 아니라 DBMS가 관리함 캐쉬 디렉토리 데이타베이스 항목들이 버퍼 안에 있는지를 관리하기 위해 사용하는 <항목 이름, dirty-bit, 버퍼 위치> 엔트리들로 구성된 표 DBMS가 데이타베이스 항목에 대한 동작을 요청하면 이미 캐쉬 안에 그 항목이 있는지 확인하기 위하여 캐쉬 디렉토리를 검사함 만약 그 항목이 캐쉬 안에 있으면 디스크 페이지를 가져올 필요가 없으며, 없으면 해당 디스크 페이지를 캐쉬 안으로 복사함 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.1.2 디스크 블록의 캐슁 버퍼 플러쉬 새로운 항목의 수용을 위한 공간을 마련하기 위하여 캐쉬 버퍼 중 일부를 플러쉬할 필요가 있음 버퍼를 플러쉬할 때 오손 비트가 세트된 버퍼만 디스크에 기록함 플러쉬 할 버퍼의 선택: 페이지 교체 전략(예: LRU, FIFO) 을 사용함 수정된 데이타 항목의 플러쉬 전략 즉시갱신 (in-place update) 갱신 이후값(after image)을 갱신 이전값(before image)이 위치한 곳에 덮어쓴다. 회복을 위하여 반드시 로그가 필요하다. 로그 우선 출력 기법(Write Ahead Logging: WAL)을 사용한다. 그림자 갱신(shadowing) 갱신 후의 값을 디스크의 다른 위치에 기록한다. 디스크에 어떤 데이타 항목에 대한 여러개의 사본이 존재할 수 있다. Ch20 Fundamentals of Database Systems

20.1.3 로그 우선 출력, Steal/No-Steal, Force/No-Force 로그 우선 출력 기법 디스크 상의 항목의 이전값을 이후값으로 덮어쓰기 전에 데이타 항목의 이전 값을 포함하는 로그 엔트리가 디스크로 강제 출력되는 것을 보장하는 방식 트랜잭션을 위한 모든 REDO 유형과 UNDO 유형 로그 기록들이 디스크로 강제 출력된 후에야 트랜잭션이 완료될 수 있음 캐쉬에 있는 database의 페이지가 언제 디스크에 기록될 것인가? Steal/No-Steal 방식 Steal 방식: 트랜잭션이 완료하기 전에 그 트랜잭션에 갱신된 캐쉬 페이지를 디스크에 기록할 수 있다. No-Steal 방식: 트랜잭션이 완료될 때까지 그 트랜잭션에 의해 갱신된 캐쉬 페이지를 디스크에 기록할 수 없다. Force/No-Force 방식 Force 방식: 트랜잭션이 완료할 때에 그 트랜잭션에 의해 갱신된 캐쉬 페이지를 즉시 디스크에 기록하는 방식을 Force 방식, 그렇지 않은 방식을 No-Force 방식이라고 함 전형적인 데이타베이스 시스템들은 steal/no-force 방식을 사용함 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.1.4 시스템 로그에서 검사점과 퍼지 검사점 기록 검사점 주기적으로 모든 DBMS 버퍼에 있는 갱신된 데이타를 디스크에 기록하는 작업 검사점을 기록하기 전에 완료된 모든 트랜잭션의 갱신은 검사점 시점에서 모두 디스크에 반영되므로 그 이후 시스템 붕괴가 발생하더라도 REDO될 필요가 없음 따라서 검사점은 REDO해야 할 트랜잭션의 수를 줄여줌 검사점 기록 작업 1. 트랜잭션의 수행을 일시 정지 시킨다. 2. 갱신된 모든 버퍼를 강제로 디스크에 기록한다. 3. [검사점] 레코드를 로그에 기록하고, 그 로그를 강제로 디스크에 기록한다. 4. 트랜잭션의 수행을 계속시킨다. 퍼지 검사점 트랜잭션의 지연수행을 해결하기 위하여 모든 버퍼가 디스크에 기록되기를 기다리지 않고 [검사점] 레코드를 로그에 기록한 후 트랜잭션의 수행을 재개하는 방식 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.1.5 트랜잭션 복귀 트랜잭션이 어떤 이유로 복귀되면 그 트랜잭션에 의해 변경된 모든 데이타 항목 값은 그 이전 값으로 되돌려져야 함 연쇄 복귀(Cascading rollback) 어떤 트랜잭션이 복귀됨에 따라 그 트랜잭션이 변경한 데이타 항목 값을 읽은 다른 트랜잭션들을 연쇄적으로 복귀해야 하는 현상 연쇄 복귀는 회복 프로토콜이 회복가능 스케줄을 보장하지만 엄격한 스케줄, 즉 비연쇄 스케줄을 보장하지 않을 때 발생할 수 있음 연쇄 복귀는 시간이 많이 걸리므로 대부분의 회복 메카니즘은 연쇄 복귀가 필요치 않도록 설계함 연쇄 복귀를 허용하는 회복 기법의 경우 트랜잭션의 연쇄 복귀를 결정하기 위해 read_item 연산들이 시스템 로그에 기록되어야 함 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems read_item(A) read_item(D) write_item(D) read_item(B) write_item(B) read_item(C) write_item(A) T1 T2 T3 초기값: A = 30, B = 15, C = 40, D = 20 (a) [그림 20.1] 연쇄 복귀 (a) 세 트랜잭션들의 읽기/쓰기 연산 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems A B C D [start-transaction, T3] 30 15 40 20 [read_item, T3, C] * [write_item, T3, B, 15, 12] 12 [start-transaction, T2] [read_item, T2, B] ** [write_item, T2, B, 12, 18] 18 [start-transaction, T1] [read_item, T1, A] [read_item, T1, D] [write_item, T1, D, 20, 25] 25 [read_item, T2, D] ** [write_item, T2, D, 25,26] 26 [read_item, T3, A] 시스템 붕괴(system crash) * T3는 완료점에 이르지 못했기 때문에 복귀된다. ** T2는 T3에 의해 변경된 값 B를 읽었기 때문에 복귀된다. (b) 붕괴시의 시스템 로그 [그림 20.1] 연쇄 복귀 (cont.) Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 시간 시스템 붕괴 BEGIN READ(C) WRITE(B) READ(A) READ(B) READ(D) WRITE(D) T3 T2 T1 (c) [그림 20.1] 연쇄 복귀 (cont.) (c) 붕괴 전의 연산들 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.2 지연갱신을 기반으로 한 회복 기법 지연갱신 기법 트랜잭션이 성공적으로 완료 시점에 이를 때까지 데이타베이스에 대한 실제 갱신 연산을 연기하는 방식 트랜잭션이 실행되는 동안, 갱신되는 내용은 단지 로그와 캐쉬 버퍼에만 기록됨 각 트랜잭션이 짧고 적은 수의 항목을 갱신하는 경우에만 사용 가능함 No-Steal 방식 NO-UNDO/REDO 알고리즘 지연갱신 프로토콜 1. 트랜잭션은 완료점에 이르기 전까지는 데이타베이스를 변경시킬 수 없다. 트랜잭션은 트랜잭션의 모든 갱신 연산들이 로그에 기록되고 로그에서 디스크로 강제 출력되기 전까지는 완료점에 이를 수 없다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.2.1 단일 사용자 환경에서 지연 갱신을 사용한 회복 RDU_S(Recovery using Deferred Update in a Single-user environment) 두개의 트랜잭션 리스트를 사용한다. 검사점 이후에 완료된 트랜잭션 리스트 T 진행 중인 트랜잭션 리스트: 단일 사용자 환경이므로 최대 1개 T의 모든 write_item연산들에 대하여 로그에 기록된 순서대로 REDO한 후 진행 중인 트랜잭션을 다시 시작한다. REDO(WRITE_OP) WRITE_OP에 대응되는 로그 엔트리 [write_item, T, X, new_value]를 검사하고, 데이타베이스의 X 값을 new_value로 설정한다. REDO 연산의 멱득성(idempotence) REDO연산을 반복 수행해도 단 한번 수행하는 것과 동일하다는 성질 회복 처리 전체의 멱득성 회복 도중에 붕괴되어 회복한 결과는 회복 도중에 붕괴된 적이 없는 회복의 결과와 같아야 한다 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems [start-transaction, T1] [write_item,T1,D,20] [commit,T1] [start-transaction,T2] [write_item,T2,B,10] [write_item,T2,D,25] 시스템 붕괴 T1의 [write-item, ...] 연산들은 REDO된다. T2의 로그 엔트리들은 회복처리가 무시한다. T1 read_item(A) read_item(D) write_item(D) T2 read_item(B) write_item(B) (a) (b) [그림 20.2] 단일 사용자 환경에서 지연갱신을 사용한 복귀 (a) 두 트랜잭션들의 읽기와 쓰기 연산들 (b) 붕괴 시의 시스템 로그 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.2.2 다수 사용자 시스템에서 동시에 수행되는 환경에서의 지연갱신 동시성 제어 방법에 대한 가정 2단계 로킹을 사용하여 동시성을 제어한다. 트랜잭션 수행이 시작되기 전에 트랜잭션에서 필요한 모든 항목들에 대한 로크를 미리 획득하여 교착 상태를 방지한다. RDU_M(Recovery using Deferred Update in a Multiuser environment) 두개의 트랜잭션 리스트 사용한다. 검사점 이후에 완료된 트랜잭션 리스트 T 진행 중인 트랜잭션 리스트 T’ T의 모든 write_item 연산들에 대하여 로그에 기록된 순서대로 REDO한 후 T’은 처음부터 다시 실행되어야 한다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.2.2 다수 사용자 시스템에서 동시에 수행되는 환경에서의 지연갱신(cont.) RDU_M 알고리즘의 개선 로그의 끝(시스템이 붕괴된 시점)에서부터 시작하여 어떤 항목이 REDO될 때마다 그 항목을 REDO된 항목들의 리스트에 추가한다. REDO 된 항목들의 리스트에 있는 항목은 최근 값이 이미 회복되었으므로 REDO를 적용하지 않는다. Ch20 Fundamentals of Database Systems

[그림 20.3] 동시에 실행되는 트랜잭션들의 한 스케쥴 검사점 (checkpoint) 시스템 붕괴 (system crash) t1 t2 T1 T2 T3 T4 T5 시간 [그림 20.3] 동시에 실행되는 트랜잭션들의 한 스케쥴 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems [start_transaction, T1] [write_item, T1, D, 20] [commit, T1] [checkpoint] [start_transaction, T4] [write_item, T4, B, 15] [write_item, T4, A, 20] [commit, T4] [start_transaction, T2] [write_item, T2, B, 12] [start_transaction, T3] [write_item, T3, A, 30] [write_item, T2, D, 25] read_item(A) read_item(D) write_item(D) T1 read_item(B) write_item(B) T2 write_item(A) read_item(C) write_item(C) T3 T4 (a) (b) 시스템 붕괴 T2와 T3 은 완료점에 이르지 못했기 때문에 무시한다. T4 는 마지막 검사점 이후에 완료되었기 때문에 REDO한다. [그림 20.4] 동시에 수행되는 트랜잭션들에 지연갱신을 사용한 회복 (a) 네 트랜잭션의 읽기와 쓰기 연산들 (b) 붕괴 시의 시스템 로그 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.2.3 데이타베이스에 영향을 끼치지 않는 트랜잭션 연산 데이타베이스에 영향을 끼치지 않는 연산들의 처리 예) 데이타베이스에서 검색한 정보로부터 메시지나 보고서를 만들어 인쇄하는 작업 트랜잭션이 완료 시점에 이른 후에 일괄작업으로 수행한다. 트랜잭션이 실패하면 이 일괄작업은 취소된다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.3 즉시갱신을 기반으로 한 회복 기법 즉시갱신 기법 트랜잭션이 갱신 명령을 내리는 순간 데이타베이스 갱신함 실패하는 시점에서 실행 중이던 트랜잭션에 대하여 UNDO 연산이 필요함 WAL 방식을 이용함 종류 UNDO/NO-REDO : 트랜잭션이 완료되기 전에 그 트랜잭션의 모든 갱신이 디스크에 반영되는 경우 UNDO/REDO : 모든 갱신이 디스크에 반영되기 전에 트랜잭션이 완료할 수 있는 경우 이 절의 내용 20.3.1 단일 사용자 환경에서 즉시갱신에 기반을 둔 UNDO/REDO 회복 기법 20.3.2 동시에 수행되는 환경에서 즉시갱신의 UNDO/REDO Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.3.1 단일 사용자 환경에서 즉시갱신에 기반을 둔 UNDO/REDO 회복 기법 RIU_S(Recovery using Immediate Update in a Single-user environment) 두개의 트랜잭션 리스트 사용한다. 검사점 이후에 완료된 트랜잭션 리스트 T 진행 중인 트랜잭션 리스트: 단일 사용자 환경이므로 최대 1개 진행 중인 트랜잭션의 모든 write_item 연산들을 UNDO한다. T의 모든 write_item연산들에 대하여 로그 기록 순서대로 REDO 한다. UNDO(WRITE_OP) WRITE_OP에 대응되는 로그 엔트리 [write_item, T, X, new_value]를 검사하고, 데이타베이스의 X 값을 old_value로 설정한다. 다수의 write_item 연산을 UNDO할 때에는 로그에 기록된 순서의 역순으로 UNDO 한다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.3.2 동시에 수행되는 환경에서 즉시갱신의 UNDO/REDO 동시성 제어 방법에 대한 가정 동시성 제어 프로토콜이 엄격한 2단계 로킹 프로토콜처럼 엄격한 스케줄을 만들고 교착 상태가 발생할 수 있는 시스템을 가정한다. RIU_M(Recovery using Immediate Update in a Multiuser environment) 두개의 트랜잭션 리스트 사용한다. 검사점 이후에 완료된 트랜잭션 리스트 T 진행 중인 트랜잭션 리스트: T’ T’의 모든 write_item 연산들을 로그에 기록된 연순으로 UNDO한다. T의 모든 write_item연산들에 대하여 로그에 기록된 순서대로 REDO 한다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.4 그림자 페이지 기법 가정 데이타베이스: 여러개(N)의 고정된 크기의 디스크 페이지들로 구성된다. 디렉토리: i (1 < i < N)번째 엔트리는 i번째 데이타베이스 페이지를 가리킨다. 데이타베이스에 대한 모든 읽기, 쓰기 연산은 디렉토리를 통하여 이루어진다. 트랜잭션 수행 방법 1. 트랜잭션이 시작할 때: 현재 디렉토리를 그림자 디렉토리로 복사한다. 2. write_item연산을 수행할 때: 수정된 데이타베이스 페이지의 새 사본을 생성하고, 현재 디렉토리 엔트리가 새 사본을 가리키도록 수정한다. 3. 트랜잭션을 완료할 때: 그림자 디렉토리를 폐기하고 그 그림자 디렉토리가 참조하는 이전 페이지들을 반환한다. 트랜잭션 복귀 방법 1. 수정된 데이타베이스 페이지를 반환하고, 현재의 디렉토리를 폐기한다. 2. 그림자 디렉토리를 현재 디렉토리로 설정한다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.4 그림자 페이지 기법 특징 단일 사용자 환경에서 로그가 불필요하다. 다사용자 환경에서는 동시성 제어 기법에 로그가 필요한 경우 회복 기법에서도 로그가 필요할 수 있다. 예: System R은 검사점, 로깅과 함께 그림자 페이징을 이용 NO-UNDO/NO-REDO 기법 장점 트랜잭션 실행 결과의 UNDO가 간단하다. 단점 갱신된 데이타베이스 페이지들의 디스크 상의 위치가 변하기 때문에 클러스터링이 어렵다. 디렉토리가 큰 경우 오버헤드가 심각하다. 트랜잭션 완료시 쓰레기를 수거해야 하는 문제가 있다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 페이지 5 (이전 페이지 페이지 1 페이지 4 페이지 2 (이전 페이지) 페이지 3 페이지 6 (새 페이지) 1 2 3 4 5 6 현재 디렉토리 (갱신한 후) 데이타베이스 디스크 블록(페이지)들 그림자 디렉토리 (갱신되지 않음) [그림 20.5] 그림자 페이지 기법 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.5 ARIES 회복 알고리즘 기본 개념 WAL 사용 REDO 중 역사 반복(repeating history): 붕괴가 발생했을 때의 데이타베이스 상태를 복구하기 위하여 붕괴 발생 이전에 수행했던 모든 연산을 다시 한번 수행한다. 붕괴가 발생했을 때 완료되지 않은 상태였던 트랜잭션(진행 트랜잭션)은 UNDO된다. UNDO 중 로깅: UNDO를 할 때에도 로깅을 함으로써 회복을 수행하는 도중에 실패하여 회복을 다시 시작할 때에 이미 완료된 UNDO 연산은 반복하지 않는다. 주요 3단계 분석 단계 REDO 단계 UNDO 단계 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.5 ARIES 회복 알고리즘(cont.) 분석 단계 붕괴가 발생한 시점에 버퍼에 있는 수정된 페이지와 진행 트랜잭션을 파악한다. REDO가 시작되어야 하는 로그의 위치를 결정한다. REDO 단계 분석 단계에서 결정한 REDO 시작 위치의 로그로부터 로그가 끝날 때까지 REDO를 수행한다. REDO 된 로그 레코드의 리스트를 관리하여 불 필요한 REDO연산이 수행되지 않도록 한다. UNDO 단계 로그를 역순으로 읽으면서 진행 트랜잭션의 연산을 역순으로 UNDO한다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.5 ARIES 회복 알고리즘(cont.) 회복을 위해 필요한 정보 로그 페이지에 대한 갱신(write), 트랜잭션 완료(commit), 트랜잭션 철회(abort), 갱신에 대한 UNDO, 트랜잭션 종료(end) 시 기록된다. 각 로그레코드마다 로그 순차번호(LSN)가 할당된다. LSN(Log Sequence Number): 디스크에 저장된 로그 레코드의 주소로서 단조 증가한다. 트랜잭션 테이블 진행 트랜잭션에 대한 정보(트랜잭션 식별자, 트랜잭션 상태, 해당 트랜잭션의 가장 최근 로그레코드의 LSN)가 관리된다. 오손 페이지 테이블 버퍼에 있는 오손 페이지에 대한 정보(페이지 식별자, 해당 페이지에 대한 가장 최근 로그 레코드의 LSN)가 관리된다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.5 ARIES 회복 알고리즘(cont.) ARIES에서의 검사점 기록 로그에 begin_checkpoint 레코드를 기록하기 로그에 end_checkpoint 레코드를 기록하기 트랜잭션 테이블과 오손 페이지 테이블의 내용도 함께 저장한다. 특수 화일에 begin_checkpoint 레코드의 LSN을 기록하기 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems LSN LAST_LSN TRAN_ID TYPE PAGE_ID OTHER INFORMATION 1 0 T1 update C ...... 2 0 T2 update B ...... 3 1 T1 commit ...... 4 begin checkpoint 5 end checkpoint 6 0 T3 update A ...... 7 2 T2 update C ...... 8 7 T2 commit ...... (a) [그림 20.6] ARIES에서 회복의 예 (a) 붕괴시의 로그 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems TRANSACTION TABLE DIRTY PAGE TABLE TRAN_ID LAST LSN STATUS PAGE_ID LSN T1 3 commit C 1 T2 2 in progress B 2 (b) T2 8 commit B 2 T3 6 in progress A 6 (c) [그림 20.6] ARIES에서 회복의 예 (b) 검사점을 기록할 때의 트랜잭션 테이블과 오손 페이지 테이블 (c) 분석단계가 끝난 후의 트랜잭션 테이블과 오손 페이지 테이블 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.6 다중 데이타베이스에서의 회복 다중 데이타베이스 트랜잭션 여러개의 데이타베이스를 액세스하는 트랜잭션으로 이 때 각각의 DBMS들은 서로 다른 회복 기법과 트랜잭션 관리자를 사용할 수 있다. 원자성을 유지하기 위하여 2 단계 완료 프로토콜을 사용한다. 모든 참여 데이타베이스가 트랜잭션을 완료하도록 하거나 또는 어느 하나도 완료하지 않도록 한다. 어떤 참여 데이타베이스에 고장이 발생하더라도 트랜잭션이 완료된 상태 또는 철회된 상태로의 회복은 항상 가능하다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.6 다중 데이타베이스에서의 회복 2단계 완료 프로토콜(two-phase commit protocol) 1단계 2단계: 모든 참여 데이타베이스가 “완료 준비”되었으면 조정자는 “완료” 신호를 보낸다. 하나 이상의 참여 데이타베이스가 “완료 불가” 신호를 보내면 조정자는 “철회” 신호를 보낸다. 조정자 참여 데이타베이스 완료 준비 또는 완료 불가 완료 예정 완료 또는 철회 Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 20.7 데이타베이스 백업과 재해로부터의 회복 백업 전체 데이타베이스와 로그를 정기적으로 값싼 기억장치에 복사한다. 시스템 로그는 자주 백업한다. 데이타베이스보다 크기가 작으므로 자주 백업하는 것이 가능하다. 마지막 데이타베이스 백업 이후에 완료된 트랜잭션의 결과를 회복할 때 시스템 로그가 사용된다. 데이타베이스 백업 후에는 시스템 로그를 새로 시작한다. 디스크 실패로부터의 회복 방법 1. 최근 데이타베이스 백업 사본으로 데이타베이스를 디스크에 재구성 한다. 2. 시스템 로그의 백업 사본에 기록된 완료된 모든 트랜잭션의 연산들의 효과를 재구성된 데이타베이스에 반영한다. Ch20 Fundamentals of Database Systems

Fundamentals of Database Systems 요 약 회복의 개념 소개 로그우선 출력과 검사점 회복 기법들 지연갱신을 기반으로 한 회복 기법 즉시갱신을 기반으로 한 회복 기법 그림자 페이지 기법 상용 기법 ARIES 회복 알고리즘 다중 데이타베이스에서의 회복 재해로부터의 회복 데이타베이스 백업을 기반으로 함 Ch20 Fundamentals of Database Systems