제 6장 트랜잭션 트랙잭션 동시성 제어 복구.

Slides:



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

일정 관리 다이어리 제작 JSP Programming with a Workbook. 학습 목표  사용자의 일정을 관리할 수 있는 다이어리에 대하여 알아보자. JSP Programming with a Workbook2.
컴퓨터와 인터넷.
제 19장 트랜잭션 처리를 위한 개념 경북대학교 컴퓨터과학과 박 영철.
9장. 트랜잭션 트랜잭션(transaction) 항공기 예약, 은행, 신용 카드 처리, 대형 할인점 등에서는 대규모
대림대학교 2017년도 1학기 강의 왕보현 순서도와 스크래치 5주차 대림대학교 2017년도 1학기 강의 왕보현
MCMS3000 네트워크 설정방법 [반도 HFCNMS 시스템 Set-up] 반도전자통신
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
연결리스트(linked list).
Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe
12장 데이터 읽기 일관성과 락.
운영체제 4장 요약정리(CPU 스케줄링) 2A 박훈.
목차 백업과 복원.
Windows Server 장. 사고를 대비한 데이터 백업.
5장 Mysql 데이터베이스 한빛미디어(주).
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe
19장. 트랜잭션과 락(LOCK) 트랜잭션이란? MySQL의 트랜잭션 락(LOCK) 쉽게 배우는 MySQL 5.x
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
3. 데이타베이스 관리시스템.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
Sungkyunkwan University OS Project Dongkun Shin
제 19 장 (Oracle) 오라클에서 동시성 제어 (MVCC)
5장 Mysql 데이터베이스 한빛미디어(주).
03. 병행 프로세스 (Parallel Process)
10장. 예외처리.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
DBMS 기능 DBMS 구성 요소 물리적 저장 구조
셍산관리시스템 작업일보 등록 ☞ ☞ 작업일보등록 - 실행화면 C B A 사용설명
자바 5.0 프로그래밍.
프로그래밍 개요
제 1장 데이타와 데이타베이스 데이타 데이타베이스 정보 & 데이타.
‘2012년 정보화 사업 교육 버그추적시스템(BTS) 사용 절차 2012, 02.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
7가지 방법 PowerPoint에서 공동 작업하는 다른 사용자와 함께 편집 작업 중인 사용자 보기
메모리 관리 & 동적 할당.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
뇌를 자극하는 Windows Server 2012 R2
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
논리회로 설계 및 실험 5주차.
9장. 트랜잭션 트랜잭션(transaction) 항공기 예약, 은행, 신용 카드 처리, 대형 할인점 등에서는 대규모
Root passwd 분실, bootblk 복구
Chapter 03. 관계 데이터베이스 설계.
8장. spss statistics 20의 데이터 변환
제 19 장 데이터베이스에서 동시성 제어를 위한 프로토콜에 대한 개요
Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe
1. 트랜잭션 (1) 트랜잭션 1) 트랜잭션의 정의 ① A collection of operations that performs a single logical function in a database application. (데이터베이스 응용프로그램에서 하나의 논리적 기능을.
( Windows Service Application Debugging )
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
알고리즘 알고리즘이란 무엇인가?.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
AT MEGA 128 기초와 응용 I 기본적인 구조.
제 18 장 (Oracle) 오라클에서 트랜잭션 지원
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
논리회로 설계 및 실험 4주차.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
(에듀파인 학교회계 초년도 사용 시 임시 사용)
(Adjustment to New Pressures) (New Self-Expectations)
TVM ver 최종보고서
제 4 장 Record.
10주 MariaDB에서 트랜잭션 지원 및 동시성 제어 기능
 6장. SQL 쿼리.
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
6 객체.
2. 프로세스 B 안우진 - 운영체제 -.
BoardGame 보드게임 따라가기.
Presentation transcript:

제 6장 트랜잭션 트랙잭션 동시성 제어 복구

트랜잭션의 정의 하나의 논리적인 작업 단위 하나의 작업을 수행하기 위해 필요한 세부적인 연산들의 집합 하나의 트랜잭션 정의 예 Copyright  2002 by S.-g. Lee and J.-y. Chang

트랙잭션의 예 은행 학교 항공사 회사 A계좌에서 만원을 인출하라. A계좌에서 B계좌로 2만원을 이체하라. 97300-375 학번이 데이타베이스의 개념 과목을 수강 신청한다. 항공사 서울-LA간 #453편의 좌석이 남아 있는지 확인하라 #453편의 두 좌석을 예약하라. 회사 전 직원의 임금을 6% 인상하라. Copyright  2002 by S.-g. Lee and J.-y. Chang

트랜잭션의 필요성 다음과 같은 상황이 발생하지 못하도록 방지 잔액: 100원 - 100원 - 100원 = 0원 잔액 100원으로 200원을 인출했다 !!! Copyright  2002 by S.-g. Lee and J.-y. Chang

트랜잭션의 필요성 트랜잭션의 정의 정의된 트랜잭션의 실행 및 잘못된 상황 방지 전적으로 프로그래머의 권한이자 의무 DBMS의 책임 Copyright  2002 by S.-g. Lee and J.-y. Chang

트랜잭션의 특성 ACID 성질 원자성(atomicity) 일관성(consistency) 고립성(isolation) 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아있어야 한다 (all-or-nothing). 일관성(consistency) 트랜잭션은 바른 데이타에서 잘못된 데이타를 만들어 내지 않는다. 고립성(isolation) 트랜잭션이 실행하는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다. 지속성(durability) 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이타베이스의 내용은 영구적으로 저장된다. Copyright  2002 by S.-g. Lee and J.-y. Chang

원자성 예) A에서 B로 50을 계좌 이체 Begin transaction read(A,a) a = a-50 장애가 일어나면 복귀하던지 실행완료 상태가 되어야 함 Begin transaction read(A,a) a = a-50 write(A,a) read(B,b) b = b+50 write(B,b) End Transaction 장애 복귀 완료 Copyright  2002 by S.-g. Lee and J.-y. Chang

일관성 예) A에서 B로 50을 계좌 이체 Begin transaction read(A,a) a = a-50 write(A,a) End Transaction read(B,b) b = b+50 write(B,b) 이 상태는 첫째 트랜잭션 이 성공적으로 수행되었 으나 A와 B계좌의 합이 처음과 다름(일관성위배) Copyright  2002 by S.-g. Lee and J.-y. Chang

고립성 계좌 이체 도중 두 계좌의 합을 구하는 트랜잭션이 실행된다면? 이 상태에서 A와 B의 합을 구하는 다른 트랜잭션이 실행 Begin transaction read(A,a) a = a-50 write(A,a) read(B,b) b = b+50 write(B,b) End Transaction 이 상태에서 A와 B의 합을 구하는 다른 트랜잭션이 실행 실제와 다른 결과가 도출됨 완료가 안된 다른 트랜잭션에 의해 결과에 영향을 받음 Copyright  2002 by S.-g. Lee and J.-y. Chang

지속성 예) A계좌에서 100원을 인출. Begin transaction read (A,a) a = a-100 write(A,a) End Transaction *buffer flush* 트랜잭션은 완료되었지만 디스크에 반영되지 않았다. 트랜잭션이 완료가 되었으면 디스크에 곧바로 반영되거나 그렇지 않다 하더라도 추후에 그 결과를 복구할 수 있어야 함 장애 Copyright  2002 by S.-g. Lee and J.-y. Chang

트랜잭션의 상태 동작 : 트랜잭션이 시작되고 연산들이 정상적으로 실행중인 상태 부분완료 : 트랜잭션에 정의된 모든 연산의 실행이 끝난 상태 완료 : 트랜잭션이 성공적으로 종료된 상태 실패 : 트랜잭션이 완료되지 못하고 더 이상 실행되지 못하는 상태 중단 : 트랜잭션이 실패 한 후 실행되기 이전으로 복귀된 상태 부분완료 동작 실패 중단 완료 종료 복귀 (Rollback) Copyright  2002 by S.-g. Lee and J.-y. Chang

동시성 제어 다중 프로그래밍 여러 명의 사용자(트랜잭션)이 동시에 CPU를 공유 은행 업무 시스템 항공기 예약 시스템 하나의 트랜잭션이 끝나기 전에 다른 트랜잭션이 실행 가능 동시에 실행되는 트랜잭션들 간에 간섭 발생 가능성 실행 순서의 제어가 필요  동시성 제어가 필요함 Copyright  2002 by S.-g. Lee and J.-y. Chang

트랜잭션을 실행할 때 데이타베이스에 요구하는 대표적 연산 정의 read(x) 이름이 x인 데이타베이스 항목을 트랜잭션의 지역변수 x로 읽어 들인다 write(x) 지역변수 x에 저장된 값을 데이타베이스 항목 x에 저장한다. 디스크에 즉시 반영되지 않을 수 있음  버퍼(buffer)의 사용 Copyright  2002 by S.-g. Lee and J.-y. Chang

동시에 실행되는 두 트랜잭션의 예 Copyright  2002 by S.-g. Lee and J.-y. Chang

동시성 제어가 필요한 이유 갱신 분실 T1에 의해서 변경된 x값이 사라졌다 Copyright  2002 by S.-g. Lee and J.-y. Chang

동시성 제어가 필요한 이유 임시 갱신 T1의 복귀로 인해 T2가 읽은 x값은 효력을 잃었다. Copyright  2002 by S.-g. Lee and J.-y. Chang

동시성 제어가 필요한 이유 불일치 분석 x와 y는 같은 값을 가져야 한다는 데이타베이스의 일관성을 잃어버렸다. Copyright  2002 by S.-g. Lee and J.-y. Chang

동시성 제어가 필요한 이유 위의 문제들이 발생한 이유 다중 프로그래밍 환경에서 트랜잭션들 간에 끼어들기 방식으로 실행되기 때문 끼어들기 방식은 전적으로 운영체제의 권한 사용자는 어떠한 순서로 실행되는지 사전에 알 수 없음 가장 간단한 해결책 트랜잭션들을 순차적으로 실행  직렬 스케줄 Copyright  2002 by S.-g. Lee and J.-y. Chang

스케쥴(schedule) 스케쥴 직렬 스케쥴(serial schedule) 트랜잭션의 각 연산들이 실행되는 순서 직렬 스케쥴(serial schedule) 각 트랜잭션들의 명령들이 끼어들기 방식으로 실행되지 않고 연속적으로 실행되는 스케쥴 다중 프로그래밍의 장점을 포기 병행 수행을 보장하면서 직렬 스케줄과 동일한 결과를 얻는 방법이 필요 직렬 가능한 스케쥴(serializable schedule) 직렬 스케줄이 아니지만 직렬 스케줄과 실행 결과가 동일한 스케줄 Copyright  2002 by S.-g. Lee and J.-y. Chang

스케쥴(schedule) 직렬 스케줄의 예 Copyright  2002 by S.-g. Lee and J.-y. Chang

스케쥴(schedule) 직렬 가능한 스케줄의 판단방법 트랜잭션 T1, T2의 연산 C1과 C2가 연속적으로 수행될때 IF C1과 C2가 서로 다른 데이터 항복에 대한 연산이면 순서를 바꾸어도 연산결과가 불변함 IF C1과 C2가 서로 같은 데이터 항복에 대한 연산이면 C1과 C2가 모두 Read연산일 경우에만 순서를 바꿀 수 있음 둘 중 하나라도 Write연산이 포함되면 write이후의 Read연산에 영향이 미침 주어진 스케줄에 대해서 이러한 연산의 순서 바꾸기로 직렬 스케줄로 변환이 가능하면 직렬 가능한 스케줄이 됨 Copyright  2002 by S.-g. Lee and J.-y. Chang

스케쥴(schedule) … Copyright  2002 by S.-g. Lee and J.-y. Chang

스케쥴(schedule) 직렬 가능한 스케줄이 만들어지도록 실행순서를 제어해야함 잠금(locking) 트랜잭션의 순서를 강제로 제어 대부분의 DBMS에서 사용 타임스탬프(timestamp) 트랜젝션의 병행 실행을 최대한 보장 직렬 가능성에 위배될 가능성이 있으면 트랜잭션 취소 거의 사용 안 함 이책에서는 다루지 않음 Copyright  2002 by S.-g. Lee and J.-y. Chang

잠금 한 트랜잭션이 데이타를 읽는 동안 다른 트랜잭션이 그 데이타를 고치지 못하도록 하는 것 잠금이 설정된 데이터는 잠금을 설정한 트랜잭션 외에는 접금이 불가능하고 이 트랜잭셔만이 잠금을 해제할 수 있음 잠금 방법 트랜잭션 T1이 데이터 항목 X에 접금하려면 lock(X) 연산으로 잠금 설정 트랜잭션 T2가 lock(X)를 실행하면 T1이 잠금을 해제할 때까지 대기 T1이 unlock(x) 연산으로 잠금을 해제해야만 T2가 잠금을 설정하고 실행 계속 Copyright  2002 by S.-g. Lee and J.-y. Chang

잠금의 종류 두 트랜잭션이 동시에 read(x)를 수행한다면 잘못된 결과가 발생할 가능성이 없음 동시에 실행 가능 두 트랜잭션 중 하나라도 write(x)를 수행한다면 잘못된 결과가 발생할 가능성 있음 동시에 실행 불가능 read, write에 따라 잠금의 종류가 달라짐 Copyright  2002 by S.-g. Lee and J.-y. Chang

Read 연산을 할 때에는 Write 연산을 할 때에는 S-lock간에는 동시 잠금이 허용 동시잠금 가능 여부 공유잠금 (shared lock: S-lock) Write 연산을 할 때에는 배타잠금 (exclusive lock: X-lock) S-lock간에는 동시 잠금이 허용 나머지 경우에는 동시 잠금이 허용되지 않음 동시잠금 가능 여부 Copyright  2002 by S.-g. Lee and J.-y. Chang

잠금 규칙 트랜잭션은 데이타 항목 x에 대해서 read(x) 연산을 실행하기 전에 S-lock(x)나 X-lock(x)를 실행해야 한다. 트랜잭션은 데이타 항목 x에 대해서 write(x) 연산을 실행하기 전에 X-lock(x)를 실행해야 한다. 트랜잭션은 데이타 항목 x에 대해서 read(x)나 write(x) 연산의 실행이 끝나면 unlock(x)를 실행해야 한다. 트랜잭션은 데이타 항목 x에 대해서 S-lock(x)나 X-lock(x)를 실행한 경우에만 unlock(x)를 실행할 수 있다. Copyright  2002 by S.-g. Lee and J.-y. Chang

잠금을 설정한 트랜잭션의 예 Copyright  2002 by S.-g. Lee and J.-y. Chang

잠금과 직렬 가능한 스케줄 잠금을 설정한 트랜잭션의 예 Copyright  2002 by S.-g. Lee and J.-y. Chang

가능한 트랜잭션 실행 예1 (직렬 가능하지 않은 스케줄) 잠금 설정만으로 직렬 가능한 스케줄이 보장되지 않음 추가적인 제약이 필요함 Copyright  2002 by S.-g. Lee and J.-y. Chang

가능한 트랜잭션 실행 예2 (직렬 가능하지 않은 스케줄) Copyright  2002 by S.-g. Lee and J.-y. Chang

Unlock을 트랜잭션의 마지막에 실행하면? Copyright  2002 by S.-g. Lee and J.-y. Chang

가능한 트랜잭션 실행 예 Copyright  2002 by S.-g. Lee and J.-y. Chang

2단계 잠금 규약(2-Phase Locking Protocol: 2PL) 직렬 가능한 스케쥴을 보장하는 규약이며 두 단계로 구성된다. 확장 단계(growing phase) 트랜잭션을 잠금을 설정할 수 있다. lock-S를 얻을 수 있다. lock-X를 얻을 수 있다. lock-S 를 lock-X로 바꿀 수 있다. 트랜잭션은 잠금을 해제할 수 없다.. 축소단계(shrinking phase 트랜잭션은 잠금을 해제할 수 있다. lock-S를 해제할 수 있다. lock-X를 해제할 수 있다. lock-X를 lock-S로 바꿀 수 있다. 잠금을 설정하지 못한다. Copyright  2002 by S.-g. Lee and J.-y. Chang

2단계 잠금 규약(2-Phase Locking Protocol: 2PL) Copyright  2002 by S.-g. Lee and J.-y. Chang

2단계 잠금 규약을 준수한 트랜잭션의 실행 예 T1, T2 모두 2PL을 준수 T1 실행 후에 T2을 실행 하는 직렬 스케줄과 동일 한 결과를 도출함 직렬 가능한 스케줄이 됨 Copyright  2002 by S.-g. Lee and J.-y. Chang

2PL의 장단점 2PL은 직렬가능한 스케줄을 보장 필요충분조건은 아님 (역은 성립하지 않음) Copyright  2002 by S.-g. Lee and J.-y. Chang

2PL의 장단점 병행성을 최대한 보장하는 방법은 아님 알고리즘적으로 단순하여 많이 사용됨 교착 상태는 해결하지 못함 최적의 방법은 사실상 불가능 알고리즘적으로 단순하여 많이 사용됨 적은 노력으로 동시성 제어 가장 많이 사용되는 규약 교착 상태는 해결하지 못함 이를 위한 여러 가지 추가적 제약 방법들이 있음 예) 그림 6-16 Copyright  2002 by S.-g. Lee and J.-y. Chang

잠금 단위 Lock(X) 단위가 크면? 단위가 작으면 예) 단위가 튜플이면.. 예) 단위가 릴레이션이면.. 해결책 튜플? 디스크 블록? 릴레이션? 데이타베이스? 단위가 크면? 동시성 수준이 낮아짐 제어가 간단함 단위가 작으면 동시성 수준이 높아짐 관리가 복잡 예) 단위가 튜플이면.. 하나의 릴레이션에 대해 여러 트랜잭션이 실행 가능 Lock을 튜플 별로 관리하므로 복잡함 예) 단위가 릴레이션이면.. 서로 다른 튜플에 대한 연산이라도 두 트랜잭션이 동시에 실행 불가능 릴레이션에 대해 하나의 lock연산만이 필요하므로 단순 해결책 상황에 따라 여러 단계로 lock의 단위 정하고 필요에 따라 수준을 결정 Copyright  2002 by S.-g. Lee and J.-y. Chang

복구(Recovery) 장애(failure)가 발생하였을 때 장애 이전의 일관된 상태로 복원하는 과정 트랜잭션 실행 도중 장애가 발생하면 트랜잭션 이전 상태나 이후 상태로 복구하여야 원자성이 보장됨 장애의 종류 트랜잭션 장애 트랜잭션 내의 논리적 오류나 잘못된 입력 데이타, 또는 시스템내의 자원부족 등으로 인해 트랜잭션이 중단 시스템 장애 정전이나 하드웨어의 결함으로 인해 작동이 중단되는 경우 주기억장치와 같은 휘발성 저장장치의 내용이 분실 또는 손상 로그를 이용해 복구 미디어 장애 디스크와 같은 비휘발성 저장장치의 일부 또는 전체가 손상된 상태 백업, 미러링 , RAID 등을 이용해 복구 Copyright  2002 by S.-g. Lee and J.-y. Chang

복구(Recovery) 복구의 기본 원리 데이터의 중복(redundancy) Back-up file 복제(mirroring) 로그(log) 복제(mirroring) Copyright  2002 by S.-g. Lee and J.-y. Chang

데이터 저장 방식 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그 데이타베이스 변경에 대한 기록 모든 갱신에 대한 history을 기록 이것을 이용하여 트랜잭션 시작 이전상태로 복구하거나 완료된 트랜잭션의 갱신기록을 알 수 있음 로그에 기록되는 내용 트랜잭션의 시작 : <T start> T는 각 트랜잭션에 부여되는 식별자 트랜잭션의 완료 : <T commit> 트랜잭션의 중단 : <T end> 각 데이터 항목에 대한 갱신 : <T x v1 v2> X는 데이터 항목 V1은 갱신 이전 값 V2는 갱신 이후값 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그 그림 6-18의 트랜잭션이 실행되면 기록되는 로그의 예 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그 로그 우선기록 규약(write-ahead logging protocol) 트랜잭션이 갱신한 데이타 항목을 데이타베이스에 기록하기 전에 로그 레코드에 우선 기록되어야 함 트랜잭션이 실행 도중 실패했을 때 이미 기록된 변경내용을 취소 시키려면 로그 레코드에 그 기록이 남아있어야 함 이미 완료된 트랜잭션에 대해서 데이타베이스의 갱신 내용을 디스크에 반영할 때도 필요 데이타베이스의 갱신 기록이 반영이 되지 않고 주기억장치의 버퍼에만 있을때 장애가 발생한다면 복구 가능 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그를 이용한 복구 기법 복구를 위한 기본적 연산 복구 방법 UNDO REDO 갱신된 값을 그 이전의 값으로 되돌려 REDO 쓰기 연산을 실행하였지만 실제로 디스크로 반영이 안되었을 경우 이를 재실행 복구 방법 지연 갱신(deferred database modification)을 기반으로 한 복구 기법 즉시 갱신(immediate database modification) 을 기반으로 한 복구 기법 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그를 이용한 복구 기법 지연 갱신을 이용한 복구 기법 트랜잭션의 수행이 성공적으로 끝날 때까지 갱신 내용을 디스크에 저장하지 않고 지연 트랜잭션이 실행되는 동안에는 갱신된 내용이 주기억장치의 버퍼와 로그에만 기록 트랜잭션이 완료될 때까지는 버퍼의 내용이 디스크로 저장되지 못한 트랜잭션의 실행 과정 ①   트랜잭션 T가 시작되면 <T start>가 로그에 기록 ②  T가 데이타 항목 x에 대해 쓰기 연산을 수행하면 로그에 그 내용이 기록되고 버퍼에 있는 x에 그 내용이 반영 ③  최종적으로 T가 모든 연산에 대한 실행을 마치면 T는 부분 완료 상태가 되고 로그 레코드 <T commit>가 로그에 기록 ④   <Ti commit>가 로그에 기록되면 T는 완료 상태가 되어 종료 ⑤   버퍼에 저장된 x는 이후 적당한 시기에 디스크에 반영 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그를 이용한 복구 기법 지연 갱신을 이용한 복구 기법 트랜잭션이 완료되었다는 것은 로그에 <T commit>이 기록되었다는 것을 의미 UNDO연산이 불필요 로그 레코드에 저장될 갱신 기록에서 이전 값은 저장할 필요가 없고 갱신 이후 값만을 저장 복구 과정(NO-UNDO/REDO 알고리즘 ) ①  로그 화일의 처음부터 기록을 순차적으로 검색 ② 로그에 저장된 각 트랜잭션의 로그 레코드에 대해서 <T commit>이 저장되었으면 REDO연산을 수행 ③ <T commit>이 없는 나머지 트랜잭션에 대한 로그 레코드들은 무시 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그를 이용한 복구 기법 지연 갱신을 이용한 복구 기법 초기값 X = 100 Y = 200 장애 복구 과정 T1에 대해서 REDO T2는 무시 최종적으로 x=20, y = 200 장애 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그를 이용한 복구 기법 즉시갱신을 이용한 복구 기법 트랜잭션 실행중에 변경된 데이타를 저장하는 것을 허용하나 단, 로그가 디스크에 쓰여지기 전에 데이타를 저장하는 것은 허용하지 않는다. 트랜잭션의 완료되었다는 것은 로그에 <T commit>이 기록되었다는 것으로 판단 Redo와 더불어 완료되지 못한 트랜잭션에 대해서는 원래의 값으로 돌려놓는 UNDO연산이 필요 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그를 이용한 복구 기법 즉시갱신을 이용한 복구 기법 복구 과정(UNDO/REDO알고리즘) ① 로그 화일이 기록된 마지막부터 반대 방향으로 순차적으로 검색 ② 로그에 저장된 각 트랜잭션의 로그 레코드에 대해서 <T start>가 있으나 <T commit>이 없으면 이 트랜잭션의 갱신 기록에 대해서 UNDO연산을 수행 ③  로그 화일의 처음부터 순차적으로 검색 ④ 로그에 저장된 각 트랜잭션의 로그 레코드에 대해서 <T commit>이 저장되었으면 이 트랜잭션의 갱신 기록에 대해서 REDO연산을 수행 Copyright  2002 by S.-g. Lee and J.-y. Chang

로그를 이용한 복구 기법 즉시갱신을 이용한 복구 기법 로그 레코드의 예 장애 시점 이전에 이 내용들이 모두 디스크에 반영이 되었다면 시스템의 재가동되었을 때 디스크의 x와 y에는 각각 0과 200이 저장 못한 T2에 대해서 UNDO를 실행하여 x의 값을 20으로 복구 T1에 대해서 REDO를 실행하여 x의 값을 다시 20으로 저장 Copyright  2002 by S.-g. Lee and J.-y. Chang

검사점 주기적으로 검사점을 둔 후 장애가 발생하면 검사점 이후의 로그만 검색한다. 로그와 디스크으 내용을 일치하는 과정 검사점을 두기 위한 작업(즉시 갱신의 경우) 1. 버퍼에 있는 모든 내용을 디스크에 저장한다. 2. 디스크의 로그에 <Checkpoint>를 기록한다. 검사점 이후에 실행과정에서 장애가 발생하면 그 이후에 완료된 트랜잭션이나 장애 시점까지 아직 완료되지 않은 트랜잭션에 대해서만 UNDO와 REDO연산을 실행 Copyright  2002 by S.-g. Lee and J.-y. Chang

검사점 복구 과정 -<Checkpoint> 위치 검색 -<Checkpoint>이전에 완료된 트랜잭션은 무시 -T1 : 무시 -T2 : REDO -T3 : REDO -T4 : UNDO -최종: x = 20 y = 30 z = 30 Copyright  2002 by S.-g. Lee and J.-y. Chang

참고자료 - 잠금의 구현 DBMS 구성요소에서 트랜잭션 관리기내에 잠금 관리기(Lock Manager)가 별도로 존재 다른 프로세스와 독립적으로 운용 잠금 관리기는 잠금 테이블(Lock Table)이란 자료구조를 유지하고 잠금 설정과 요청, 대기에 관련된 정보를 유지함 잠금 테이블은 일반적으로 주기억 장치에 데이터 항목에 대한 해쉬 테이블로 관리됨 Copyright  2002 by S.-g. Lee and J.-y. Chang

참고자료 - 잠금의 구현 해쉬 테이블 데이터 항목 대기 T23을 동시설정 (T1, T8: S-lock T2: X-lock) I912에 대한 잠금 설정 데이터 항목 대기 Copyright  2002 by S.-g. Lee and J.-y. Chang