Submit Search
Upload
[개념정리] DB: Recovery
•
0 likes
•
2,298 views
Kwangsik Lee
Follow
DB의 Recovery에 대한 개념 정리
Read less
Read more
Technology
Report
Share
Report
Share
1 of 38
Download now
Download to read offline
Recommended
Lighting talk 2 12
Lighting talk 2 12
Kahee Yu
OracleHistory2
OracleHistory2
Kyung Sang Jang
OracleHistory1
OracleHistory1
Kyung Sang Jang
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
NAVER D2
Pgday bdr gt1000
Pgday bdr gt1000
정대 천
Pgday bdr 천정대
Pgday bdr 천정대
PgDay.Seoul
Chapter5 embedded storage
Chapter5 embedded storage
Hyun Wong Choi
Chapter5 embedded storage
Chapter5 embedded storage
Hyun Wong Choi
Recommended
Lighting talk 2 12
Lighting talk 2 12
Kahee Yu
OracleHistory2
OracleHistory2
Kyung Sang Jang
OracleHistory1
OracleHistory1
Kyung Sang Jang
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
NAVER D2
Pgday bdr gt1000
Pgday bdr gt1000
정대 천
Pgday bdr 천정대
Pgday bdr 천정대
PgDay.Seoul
Chapter5 embedded storage
Chapter5 embedded storage
Hyun Wong Choi
Chapter5 embedded storage
Chapter5 embedded storage
Hyun Wong Choi
steeleye Replication
steeleye Replication
시온시큐리티
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
Seok-joon Yun
110922 oracle ap
110922 oracle ap
Cana Ko
산동네 게임 DBA 이야기
산동네 게임 DBA 이야기
병기 홍
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
cranbe95
Oracle History #7
Oracle History #7
Kyung Sang Jang
DBMS 아키텍처
DBMS 아키텍처
HaksunLEE6
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
Seok-joon Yun
(120128) #fitalk sql server anti-forensics
(120128) #fitalk sql server anti-forensics
INSIGHT FORENSIC
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기
NHN FORWARD
운영체제 Chapter1
운영체제 Chapter1
YoungGun Na
Memtracer
Memtracer
swkim79
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
Ubuntu Korea Community
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIO
I Goo Lee
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
PgDay.Seoul
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
YoungSu Son
MLAAS(Machine Learning As A Service) 기술관점 분석
MLAAS(Machine Learning As A Service) 기술관점 분석
Kwangsik Lee
Azure ML Studio를 분석해보자.
Azure ML Studio를 분석해보자.
Kwangsik Lee
Amazon Personalize를 분석해보자.
Amazon Personalize를 분석해보자.
Kwangsik Lee
Supervisord 사용법을 간단히 알아보자!
Supervisord 사용법을 간단히 알아보자!
Kwangsik Lee
[개념정리] DB: Concurrency Control
[개념정리] DB: Concurrency Control
Kwangsik Lee
[개념정리] DB: Indexing과 Hashing
[개념정리] DB: Indexing과 Hashing
Kwangsik Lee
More Related Content
Similar to [개념정리] DB: Recovery
steeleye Replication
steeleye Replication
시온시큐리티
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
Seok-joon Yun
110922 oracle ap
110922 oracle ap
Cana Ko
산동네 게임 DBA 이야기
산동네 게임 DBA 이야기
병기 홍
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
cranbe95
Oracle History #7
Oracle History #7
Kyung Sang Jang
DBMS 아키텍처
DBMS 아키텍처
HaksunLEE6
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
Seok-joon Yun
(120128) #fitalk sql server anti-forensics
(120128) #fitalk sql server anti-forensics
INSIGHT FORENSIC
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기
NHN FORWARD
운영체제 Chapter1
운영체제 Chapter1
YoungGun Na
Memtracer
Memtracer
swkim79
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
Ubuntu Korea Community
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIO
I Goo Lee
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
PgDay.Seoul
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
YoungSu Son
Similar to [개념정리] DB: Recovery
(16)
steeleye Replication
steeleye Replication
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
110922 oracle ap
110922 oracle ap
산동네 게임 DBA 이야기
산동네 게임 DBA 이야기
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Oracle History #7
Oracle History #7
DBMS 아키텍처
DBMS 아키텍처
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
(120128) #fitalk sql server anti-forensics
(120128) #fitalk sql server anti-forensics
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기
운영체제 Chapter1
운영체제 Chapter1
Memtracer
Memtracer
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIO
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
More from Kwangsik Lee
MLAAS(Machine Learning As A Service) 기술관점 분석
MLAAS(Machine Learning As A Service) 기술관점 분석
Kwangsik Lee
Azure ML Studio를 분석해보자.
Azure ML Studio를 분석해보자.
Kwangsik Lee
Amazon Personalize를 분석해보자.
Amazon Personalize를 분석해보자.
Kwangsik Lee
Supervisord 사용법을 간단히 알아보자!
Supervisord 사용법을 간단히 알아보자!
Kwangsik Lee
[개념정리] DB: Concurrency Control
[개념정리] DB: Concurrency Control
Kwangsik Lee
[개념정리] DB: Indexing과 Hashing
[개념정리] DB: Indexing과 Hashing
Kwangsik Lee
Visual AI(시각 인공지능) Lecture 5 : Backpropagation
Visual AI(시각 인공지능) Lecture 5 : Backpropagation
Kwangsik Lee
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
Kwangsik Lee
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Kwangsik Lee
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
Kwangsik Lee
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
Kwangsik Lee
Coursera Machine Learning으로 기계학습 배우기 : week5
Coursera Machine Learning으로 기계학습 배우기 : week5
Kwangsik Lee
Coursera Machine Learning으로 기계학습 배우기 : week4
Coursera Machine Learning으로 기계학습 배우기 : week4
Kwangsik Lee
Coursera Machine Learning으로 기계학습 배우기 : week3
Coursera Machine Learning으로 기계학습 배우기 : week3
Kwangsik Lee
Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2
Kwangsik Lee
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
Kwangsik Lee
Coursera Machine Learning으로 기계학습 배우기 : week1
Coursera Machine Learning으로 기계학습 배우기 : week1
Kwangsik Lee
CycleGAN이 무엇인지 알아보자
CycleGAN이 무엇인지 알아보자
Kwangsik Lee
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기
Kwangsik Lee
More from Kwangsik Lee
(19)
MLAAS(Machine Learning As A Service) 기술관점 분석
MLAAS(Machine Learning As A Service) 기술관점 분석
Azure ML Studio를 분석해보자.
Azure ML Studio를 분석해보자.
Amazon Personalize를 분석해보자.
Amazon Personalize를 분석해보자.
Supervisord 사용법을 간단히 알아보자!
Supervisord 사용법을 간단히 알아보자!
[개념정리] DB: Concurrency Control
[개념정리] DB: Concurrency Control
[개념정리] DB: Indexing과 Hashing
[개념정리] DB: Indexing과 Hashing
Visual AI(시각 인공지능) Lecture 5 : Backpropagation
Visual AI(시각 인공지능) Lecture 5 : Backpropagation
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
Week4Visual AI(시각 인공지능) Lecture 4 : Multiple Layer Perceptron (MLP)
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 3 : Optimization by Gradient Descent
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
Visual AI(시각 인공지능) Lecture 2 : Neural Networks and Preceptron
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
Visual AI(시각 인공지능) Lecture 1 : 최신 Trend 소개
Coursera Machine Learning으로 기계학습 배우기 : week5
Coursera Machine Learning으로 기계학습 배우기 : week5
Coursera Machine Learning으로 기계학습 배우기 : week4
Coursera Machine Learning으로 기계학습 배우기 : week4
Coursera Machine Learning으로 기계학습 배우기 : week3
Coursera Machine Learning으로 기계학습 배우기 : week3
Coursera Machine Learning으로 기계학습 배우기 : week2
Coursera Machine Learning으로 기계학습 배우기 : week2
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
[논문분석] Segmentation based lyrics-audio alignment using dynamic programming
Coursera Machine Learning으로 기계학습 배우기 : week1
Coursera Machine Learning으로 기계학습 배우기 : week1
CycleGAN이 무엇인지 알아보자
CycleGAN이 무엇인지 알아보자
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기
[개념정리] DB: Recovery
1.
DB:Recovery개념정리 1
2.
Outline FailureClassification RecoveryandAtomicity Log‑BasedRecovery ShadowPaging RecoverywithConcurrentTransactions BufferManagement 2
3.
FailureClassification 트랜젝션실패 논리적오류 시스템오류(데드락등) 시스템장애 디스크실패 3
4.
Transaction이실행되다가failure발생 undo(취소) 데이터베이스변경이memory에서만반영되고,DB에는반영되지않음.‑ >failure발생시output이없다. 다시실행해야함.Redo 4
5.
RecoveryAlgorithms Recovery알고리즘은DBConsistency,transactionatomicity, durability를보장함 Failure발생‑‑>log‑record를이용해서DB를이전상태로복구하는작 업이필요 5
6.
DataAccess(1/2) 물리적블럭은디스크에존재 버퍼는메모리에존재 디스크와메모리사이의블럭이동은input(B)나output(B)에의해발생 각트랜젝션Ti는work‑area가존재 (단순화하기위해모든데이터가같은블럭에있다고가정) 6
7.
DataAccess(2/2) read(X)와write(X)사이에블럭을버퍼로옮김 트랜젝션 최초로X에접근할때read(X)수행 추가적인엑세스는로컬카피를사용 마지막엑세스이후write(X) output(Bx)는write(X)를즉시수행할필요가없음 7
8.
ExampleofDataAccess 8
9.
RecoveryandAtomicity(1/2) 트랜젝션이커밋되는것을확정지지않은상태에서다른수정을하는것은 DB의inconsitent상태를초래함 트랜젝션Ti가A로부터B에게50$를송금하는것이라면DB의목표는All orNothing을만드는것 operation수행실패가A에서돈을빼고B에돈을넣는것을완료하게전 에일어날수있음 9
10.
RecoveryandAtomicity(2/2) atomic실패를보장하기위해db에수정을가하기전에안전한스토리지 에정보를기술해두어야함 2가지접근방법 Log‑basedRecovery Shadow‑paging 트랜젝션은직렬로실행되는것을가정함 10
11.
Log‑BasedRecovery(1/2) 모든수정이력을로깅함 트랜젝션Ti가시작될때아래와같이기록 <Tistart> Ti가**write(X)**를실행하기전에아래로그를기록 <Ti,X,V1,V2> 11
12.
Log‑BasedRecovery(2/2) Ti가마지막statement를끝냈을때아래를기록 <Ticommit> 로그기록은direct로안정된스토리지에기록됨을가정 2가지로그기록법(기록시점에따라) deferred immediate 12
13.
DeferredDatabaseModification(1/4) DeferredModification은아래와같은전략을취함 모든DB수정연산은은스토리지에즉시로그로기록 실제DB에는값의반영은연기했다가부분적으로커밋될때에기록 트랜젝션시작은아래를기록 <Tistart> 13
14.
DeferredDatabaseModification(2/4) Ti가부분적으로커밋될때<Ticommit>은로그에기록됨 마지막으로로그레코드는이전의deferred를기록하기위해쓰여짐 장애로부터복구시트랜젝션은<Tistart>부터<Ticommit>까지로그 를redo redoTi모든이전값을새로운값으로옮기는작업을포함함 14
15.
DeferredDatabaseModification(3/4) 장애는아래상황이일어날수도있음 트랜젝션이original업데이트되는동안 recovery액션이수행되는동안 15
16.
DeferredDatabaseModification(4/4) 안전한스토리지에있는로그는장애시아래의케이스로쓰여짐 a.redo액션이필요없음 b.Redo(T0)는이존재하므로필요함 c.Redo(T0),Redo(T1)필요 16
17.
ImmediateDatabaseModification(1/4) immediateModification은모든DB의수정을트랜젝션이수행된는동안 에도반영함 DB기록전에업데이트로그가기록되어야함 업데이트된버퍼블록의출력이트랜젝션커밋이전이나이후에일어날수 있음 쓰여진블록의순서가기록된순서와다를수있음 17
18.
ImmediateDatabaseModification(2/4) 18
19.
ImmediateDatabaseModification(3/4) 복구프로세스는2가지연산이있음 Undo:Ti의old값으로backward로업데이트 Redo:Ti의new값으로forward로업데이트 두연산모두idempotent함 즉,만약연산이여러번실행되더라도결과가같음 19
20.
ImmediateDatabaseModification(4/4) 실패이후복구시 <Tistart>이후<Ticommit>이없으면undo <Tistart>이후<Ticommit>이있으면redo undo연산이먼저실행되고redo가실행됨 20
21.
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
22.
Checkpoints(1/2) 기존복구프로세스의문제점 모든전체로그를검색하는것은시간이많이걸림 대부분의redo해야하는트랜젝션은이미DB에기록되어있음 오버헤드를줄이기위해시스템은주기적으로checkpoint를수행함 모든로그를안전한스토리지로기록 모든수정된버퍼블록을디스크에기록 안전한스토리지로<checkpoint>를기록 22
23.
Checkpoints(2/2) 복구프로세스때최근체크포인트전후의트랜젝션만고려함 제일마지막로그에서위로checkpoint레코드를찾음 이부분에서조금더위로<Tistart>를찾음 <Tistart>보다위로그는고려할필요없음 <Tistart>시점이후로<Ticommit>이되지않은로그는undo(Ti) 로그를앞으로forward하면서<Ticommit>된로그를redo(Ti) 23
24.
ExampleofCheckpoints T1은무시 T2와T3는redone T4는undo 24
25.
PageAndPageTable 데이터베이스는고정된길이의블럭으로나뉘어지는데이를페이지라고 부름 페이지는디스크에순서없이저장됨 페이지테이블은주어진i에따라i번째페이지로찾아짐 25
26.
SamplePageTable 26
27.
ShadowPaging(1/6) shadowpaging은log기반복구의대안으로트랜젝션이직렬로실행만 된다면유용함 페이지테이블을현재와shadow테이블로관리하는기법 트렌젝션이시작할때두페이지는똑같음 shadowtable은트랙젝션이수행되는동안shadow를변하지않음 반면에현재페이지는변경가능 모든입력과출력연산은현재의페이지테이블을사용함 트랜젝션커밋이완료되면shadow페이지를다시현재페이지와같게만 듬 27
28.
ShadowPaging(2/6) Tj가wirte(X)를수행하고X가i번째페이지라고가정해보자. 시스템은아래와같이쓰기연산을수행 i번째페이지가아직메모리에없으면input(X)를수행 28
29.
ShadowPaging(3/6) 트랜젝션이시작되면서현재페이지에수정이필요하면아래의작업수행 안쓰는페이지를디스크에서찾음 i번째페이지의내용을복사하여위의페이지로복사 현재의페이지테이블의포인터를위의안쓰는페이지로이동 29
30.
ShadowPaging(4/6) 유튜브참고 30
31.
31
32.
ShadowPaging(5/6) 트랜젝션을커밋하기위해 페이지의모든수정을메모리에서디스크로flush 현재의페이지테이블을디스크에기록 현재의페이지테이블을shadowpage테이블로만듦 shadow페이지테이블의포인터가쓰여지는순간트랜젝션이커밋됨 장애이후recovery가필요하지않음 새로운트랜젝션은shadow페이지테이블로바로시작가능하기때문 shadow페이지테이블이가리키지않은페이지는garbage임 32
33.
ShadowPaging(6/6) log기반스키마에비해shadow페이지의장점 로그를기록하는오버헤드가없음 복구가쉬움 단점 전체페이지테이블복사는비용이비쌈 커밋오버헤드가큼 데이터가파편화될수있음 모든트랜젝션이완료된후기존의페이지는GC되어야함 동시트랜젝션을허용하기힘듦 33
34.
RecoveryWithConcurrentTransactions(1/3) 로그기반복구스키마를동시트랜젝션지원을위해수정해보자. 로깅을최대한빠르게기록한다. checkpoint테크닉과액션은변경이필요함 34
35.
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
36.
RecoveryWithConcurrentTransactions(3/3) 이시점에서undo‑list는완료되지않은트랜젝션들이고 redo‑list는다시실행되어야하는트랜젝션들이다. undo‑list를먼저수행하고redo‑lisst를수행하는것이중요함 36
37.
LogRecordBuffering(1/2) 로그레코드버퍼링:로그레코드는바로바로디스크에쓰여지는것대신 에메인메모리에버퍼됨 로그레코드는버퍼가꽉차거나logforce연산이수행될때디스크 에flush됨 LogForce는로그레코드에기록된모든트랜젝션을commit하기위해 디스크에flush됨 몇몇로그레코드들은하나의연산에한번에디스크에기록됨(I/O를줄이 기위해) 37
38.
LogRecordBuffering(2/2) 로그레코드가버퍼링되면아래의룰을지켜야함 로그레코드는생성된이후안전한스토리지로출력되어야함 트랜젝션Ti가commit상태로가기위해서는로그가먼저스토리지 에기록되어야함 메모리의데이터블록DB로쓰여지기전에모든로그레코드는스토 리지로기록되어야함 ‑>이룰은WriteAheadLog즉WAL로그라부름 38
Download now