SlideShare a Scribd company logo
DB:Recovery개념정리
1
Outline
FailureClassification
RecoveryandAtomicity
Log‑BasedRecovery
ShadowPaging
RecoverywithConcurrentTransactions
BufferManagement
2
FailureClassification
트랜젝션실패
논리적오류
시스템오류(데드락등)
시스템장애
디스크실패
3
Transaction이실행되다가failure발생
undo(취소)
데이터베이스변경이memory에서만반영되고,DB에는반영되지않음.‑
>failure발생시output이없다.
다시실행해야함.Redo
4
RecoveryAlgorithms
Recovery알고리즘은DBConsistency,transactionatomicity,
durability를보장함
Failure발생‑‑>log‑record를이용해서DB를이전상태로복구하는작
업이필요
5
DataAccess(1/2)
물리적블럭은디스크에존재
버퍼는메모리에존재
디스크와메모리사이의블럭이동은input(B)나output(B)에의해발생
각트랜젝션Ti는work‑area가존재
(단순화하기위해모든데이터가같은블럭에있다고가정)
6
DataAccess(2/2)
read(X)와write(X)사이에블럭을버퍼로옮김
트랜젝션
최초로X에접근할때read(X)수행
추가적인엑세스는로컬카피를사용
마지막엑세스이후write(X)
output(Bx)는write(X)를즉시수행할필요가없음
7
ExampleofDataAccess
8
RecoveryandAtomicity(1/2)
트랜젝션이커밋되는것을확정지지않은상태에서다른수정을하는것은
DB의inconsitent상태를초래함
트랜젝션Ti가A로부터B에게50$를송금하는것이라면DB의목표는All
orNothing을만드는것
operation수행실패가A에서돈을빼고B에돈을넣는것을완료하게전
에일어날수있음
9
RecoveryandAtomicity(2/2)
atomic실패를보장하기위해db에수정을가하기전에안전한스토리지
에정보를기술해두어야함
2가지접근방법
Log‑basedRecovery
Shadow‑paging
트랜젝션은직렬로실행되는것을가정함
10
Log‑BasedRecovery(1/2)
모든수정이력을로깅함
트랜젝션Ti가시작될때아래와같이기록
<Tistart>
Ti가**write(X)**를실행하기전에아래로그를기록
<Ti,X,V1,V2>
11
Log‑BasedRecovery(2/2)
Ti가마지막statement를끝냈을때아래를기록
<Ticommit>
로그기록은direct로안정된스토리지에기록됨을가정
2가지로그기록법(기록시점에따라)
deferred
immediate
12
DeferredDatabaseModification(1/4)
DeferredModification은아래와같은전략을취함
모든DB수정연산은은스토리지에즉시로그로기록
실제DB에는값의반영은연기했다가부분적으로커밋될때에기록
트랜젝션시작은아래를기록
<Tistart>
13
DeferredDatabaseModification(2/4)
Ti가부분적으로커밋될때<Ticommit>은로그에기록됨
마지막으로로그레코드는이전의deferred를기록하기위해쓰여짐
장애로부터복구시트랜젝션은<Tistart>부터<Ticommit>까지로그
를redo
redoTi모든이전값을새로운값으로옮기는작업을포함함
14
DeferredDatabaseModification(3/4)
장애는아래상황이일어날수도있음
트랜젝션이original업데이트되는동안
recovery액션이수행되는동안
15
DeferredDatabaseModification(4/4)
안전한스토리지에있는로그는장애시아래의케이스로쓰여짐
a.redo액션이필요없음
b.Redo(T0)는이존재하므로필요함
c.Redo(T0),Redo(T1)필요
16
ImmediateDatabaseModification(1/4)
immediateModification은모든DB의수정을트랜젝션이수행된는동안
에도반영함
DB기록전에업데이트로그가기록되어야함
업데이트된버퍼블록의출력이트랜젝션커밋이전이나이후에일어날수
있음
쓰여진블록의순서가기록된순서와다를수있음
17
ImmediateDatabaseModification(2/4)
18
ImmediateDatabaseModification(3/4)
복구프로세스는2가지연산이있음
Undo:Ti의old값으로backward로업데이트
Redo:Ti의new값으로forward로업데이트
두연산모두idempotent함
즉,만약연산이여러번실행되더라도결과가같음
19
ImmediateDatabaseModification(4/4)
실패이후복구시
<Tistart>이후<Ticommit>이없으면undo
<Tistart>이후<Ticommit>이있으면redo
undo연산이먼저실행되고redo가실행됨
20
ImmediateDatabaseModificationRecoveryExample
recovery를아래3가지케이스로진행
a.Undo(T0):A가1000,B가2000으로restore
b.Undo(T1):C가700으로restore
Redo(T0):A950,B2050으로변경
c.Redo(T0):A950,b2050,C600으로변경
21
Checkpoints(1/2)
기존복구프로세스의문제점
모든전체로그를검색하는것은시간이많이걸림
대부분의redo해야하는트랜젝션은이미DB에기록되어있음
오버헤드를줄이기위해시스템은주기적으로checkpoint를수행함
모든로그를안전한스토리지로기록
모든수정된버퍼블록을디스크에기록
안전한스토리지로<checkpoint>를기록
22
Checkpoints(2/2)
복구프로세스때최근체크포인트전후의트랜젝션만고려함
제일마지막로그에서위로checkpoint레코드를찾음
이부분에서조금더위로<Tistart>를찾음
<Tistart>보다위로그는고려할필요없음
<Tistart>시점이후로<Ticommit>이되지않은로그는undo(Ti)
로그를앞으로forward하면서<Ticommit>된로그를redo(Ti)
23
ExampleofCheckpoints
T1은무시
T2와T3는redone
T4는undo
24
PageAndPageTable
데이터베이스는고정된길이의블럭으로나뉘어지는데이를페이지라고
부름
페이지는디스크에순서없이저장됨
페이지테이블은주어진i에따라i번째페이지로찾아짐
25
SamplePageTable
26
ShadowPaging(1/6)
shadowpaging은log기반복구의대안으로트랜젝션이직렬로실행만
된다면유용함
페이지테이블을현재와shadow테이블로관리하는기법
트렌젝션이시작할때두페이지는똑같음
shadowtable은트랙젝션이수행되는동안shadow를변하지않음
반면에현재페이지는변경가능
모든입력과출력연산은현재의페이지테이블을사용함
트랜젝션커밋이완료되면shadow페이지를다시현재페이지와같게만
듬
27
ShadowPaging(2/6)
Tj가wirte(X)를수행하고X가i번째페이지라고가정해보자.
시스템은아래와같이쓰기연산을수행
i번째페이지가아직메모리에없으면input(X)를수행
28
ShadowPaging(3/6)
트랜젝션이시작되면서현재페이지에수정이필요하면아래의작업수행
안쓰는페이지를디스크에서찾음
i번째페이지의내용을복사하여위의페이지로복사
현재의페이지테이블의포인터를위의안쓰는페이지로이동
29
ShadowPaging(4/6)
유튜브참고
30
31
ShadowPaging(5/6)
트랜젝션을커밋하기위해
페이지의모든수정을메모리에서디스크로flush
현재의페이지테이블을디스크에기록
현재의페이지테이블을shadowpage테이블로만듦
shadow페이지테이블의포인터가쓰여지는순간트랜젝션이커밋됨
장애이후recovery가필요하지않음
새로운트랜젝션은shadow페이지테이블로바로시작가능하기때문
shadow페이지테이블이가리키지않은페이지는garbage임
32
ShadowPaging(6/6)
log기반스키마에비해shadow페이지의장점
로그를기록하는오버헤드가없음
복구가쉬움
단점
전체페이지테이블복사는비용이비쌈
커밋오버헤드가큼
데이터가파편화될수있음
모든트랜젝션이완료된후기존의페이지는GC되어야함
동시트랜젝션을허용하기힘듦
33
RecoveryWithConcurrentTransactions(1/3)
로그기반복구스키마를동시트랜젝션지원을위해수정해보자.
로깅을최대한빠르게기록한다.
checkpoint테크닉과액션은변경이필요함
34
RecoveryWithConcurrentTransactions(2/3)
체크포인트가이전에수행되었는데이부분을아래와같이변경해보자.
<checkpointL>,L은List라는뜻.
시스템이복구될때아래의것들을수행해야함
undo‑list와redo‑list를초기화
로그를끝에서부터**<checkpointL>**이나타날때까지
backward로스캔
<Ticommit>이발견되면redo‑list에넣음
<Tistart>가발견되고redo‑list에없으면undo‑list에넣음
L안에들어간모든Ti중에서redo‑list에없는녀석은undo‑list에
넣음
35
RecoveryWithConcurrentTransactions(3/3)
이시점에서undo‑list는완료되지않은트랜젝션들이고
redo‑list는다시실행되어야하는트랜젝션들이다.
undo‑list를먼저수행하고redo‑lisst를수행하는것이중요함
36
LogRecordBuffering(1/2)
로그레코드버퍼링:로그레코드는바로바로디스크에쓰여지는것대신
에메인메모리에버퍼됨
로그레코드는버퍼가꽉차거나logforce연산이수행될때디스크
에flush됨
LogForce는로그레코드에기록된모든트랜젝션을commit하기위해
디스크에flush됨
몇몇로그레코드들은하나의연산에한번에디스크에기록됨(I/O를줄이
기위해)
37
LogRecordBuffering(2/2)
로그레코드가버퍼링되면아래의룰을지켜야함
로그레코드는생성된이후안전한스토리지로출력되어야함
트랜젝션Ti가commit상태로가기위해서는로그가먼저스토리지
에기록되어야함
메모리의데이터블록DB로쓰여지기전에모든로그레코드는스토
리지로기록되어야함
‑>이룰은WriteAheadLog즉WAL로그라부름
38

More Related Content

PDF
Lighting talk 2 12
DOC
OracleHistory2
DOC
OracleHistory1
PDF
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
PPTX
Pgday bdr gt1000
PDF
Pgday bdr 천정대
PPTX
Chapter5 embedded storage
PPTX
Chapter5 embedded storage
Lighting talk 2 12
OracleHistory2
OracleHistory1
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
Pgday bdr gt1000
Pgday bdr 천정대
Chapter5 embedded storage
Chapter5 embedded storage

Similar to [개념정리] DB: Recovery (16)

PDF
steeleye Replication
PDF
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
PDF
110922 oracle ap
PPTX
산동네 게임 DBA 이야기
PPT
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
DOC
Oracle History #7
PPTX
DBMS 아키텍처
PDF
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
PDF
(120128) #fitalk sql server anti-forensics
PDF
[2018] MySQL 이중화 진화기
PPTX
운영체제 Chapter1
PPTX
Memtracer
PDF
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
PDF
MySQL Deep dive with FusionIO
PDF
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
PDF
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
steeleye Replication
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
110922 oracle ap
산동네 게임 DBA 이야기
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Oracle History #7
DBMS 아키텍처
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
(120128) #fitalk sql server anti-forensics
[2018] MySQL 이중화 진화기
운영체제 Chapter1
Memtracer
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
MySQL Deep dive with FusionIO
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
Ad

More from Kwangsik Lee (20)

PPTX
D1T4S2_클라우드를 넘어, 보험사의 미래를 그리다_241104_블로그포스팅용....
PDF
MLAAS(Machine Learning As A Service) 기술관점 분석
PDF
Azure ML Studio를 분석해보자.
PDF
Amazon Personalize를 분석해보자.
PDF
Supervisord 사용법을 간단히 알아보자!
PDF
[개념정리] DB: Concurrency Control
PDF
[개념정리] DB: Indexing과 Hashing
PDF
Visual AI(시각 인공지능) Lecture 5 : Backpropagation
PDF
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
PDF
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
PDF
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
PDF
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
PDF
Coursera Machine Learning으로 기계학습 배우기 : week5
PDF
Coursera Machine Learning으로 기계학습 배우기 : week4
PDF
Coursera Machine Learning으로 기계학습 배우기 : week3
PDF
Coursera Machine Learning으로 기계학습 배우기 : week2
PDF
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
PDF
Coursera Machine Learning으로 기계학습 배우기 : week1
PDF
CycleGAN이 무엇인지 알아보자
PPTX
알아두면 쓸데있는 신비한 딥러닝 이야기
D1T4S2_클라우드를 넘어, 보험사의 미래를 그리다_241104_블로그포스팅용....
MLAAS(Machine Learning As A Service) 기술관점 분석
Azure ML Studio를 분석해보자.
Amazon Personalize를 분석해보자.
Supervisord 사용법을 간단히 알아보자!
[개념정리] DB: Concurrency Control
[개념정리] DB: Indexing과 Hashing
Visual AI(시각 인공지능) Lecture 5 : Backpropagation
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
Coursera Machine Learning으로 기계학습 배우기 : week5
Coursera Machine Learning으로 기계학습 배우기 : week4
Coursera Machine Learning으로 기계학습 배우기 : week3
Coursera Machine Learning으로 기계학습 배우기 : week2
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
Coursera Machine Learning으로 기계학습 배우기 : week1
CycleGAN이 무엇인지 알아보자
알아두면 쓸데있는 신비한 딥러닝 이야기
Ad

[개념정리] DB: Recovery