Bài giảng Thiết kế và quản trị cơ sở dữ liệu - Crash recovery - Vũ Tuyết Trinh

Crash Recovery  
Vu Tuyet Trinh  
trinhvt@it-hut.edu.vn  
Department of Information Systems, Faculty of Information Technology  
Hanoi University of Technology  
Transaction  
collection of action that preserve consistency  
Consistent DB  
T
Consistent DB’  
with assumption  
IF  
T starts with consistent state +  
T executes in isolation  
THEN  
T leaves consistent state  
1
How can constraints be violated?  
Transaction bug  
DBMS bug  
Hardware failure  
e.g., disk crash  
Data sharing  
e.g.,  
T1 and T2 in parallel  
Failures  
Events  
Desired  
Undesired  
Expected  
Unexpected  
processor  
CPU  
M
memory  
disk  
D
2
Recovery  
Maintaining the consistency of DB by ROLLBACK to the  
last consistency state.  
Ensuring 2 properties  
Atomic  
Durability  
Using LOG  
Transaction Log  
A sequence of log record keeping trace of  
actions executed by DBMS  
<start T>  
Log the beginning of the transaction execution  
<commit T>  
transaction is already finished  
<abort T>  
Transaction is calcel  
<T, X, v, w>  
Transaction makes an update actio, before update X=v, after  
update x = w  
3
Transaction Log  
Handled in main memory and put to external  
memory (disk) when possible  
A = 8 16  
B = 8 16  
Data  
Log  
Actions  
Log  
Disk  
Memory  
Checkpoint  
Definition:  
moment where intermediate results and a log record are saved  
to disk.  
being initiated at specified intervals  
Objective  
minimize the amount of time and effort wasted when restart  
the process can be restarted from the latest checkpoint rather  
than from the beginning.  
Log record  
<checkpoint> or <ckpt>  
4
Undo-logging  
Step  
Action  
t
Mem A Mem B Disk A Disk B Mem Log  
1
2
<start T>  
Read(A,t)  
t:=t*2  
8
16  
16  
8
8
8
8
8
8
8
8
8
8
8
3
Write(A,t)  
Read(B,t)  
t:=t*2  
16  
16  
4
<T, A, 8>  
<T, B, 8>  
8
8
5
6
16  
16  
16  
16  
8
8
8
8
7
Write(B,t)  
Flush log  
Output(A)  
Output(B)  
16  
8
9
16  
16  
16  
16  
16  
16  
16  
16  
8
10  
11  
12  
16  
<commit T>  
Flush log  
Undo-Logging Rules  
(1) For every action generate undo log record (containing  
old value)  
(2) Before X is modified on disk, log records pertaining to X  
must be on disk (write ahead logging: WAL)  
(3) Before commit is flushed to log, all writes of transaction  
must be reflected on disk  
5
Undo Logging Recovery Rules  
Let S is set of unfinished transactions  
<start Ti> in log  
<commit Ti> or <abort Ti> is not in log  
For each <Ti, X, v> in log  
If Ti S  
then  
- Write(X, v)  
- Output(X)  
For each Ti S  
Write <abort Ti> to log  
Undo-Logging & Checkpoint  
<start T1>  
<start T1>  
<T1, A, 5>  
<T1, A, 5>  
<start T2>  
<start T2>  
<T2, B, 10>  
<start ckpt (T1,T2)>  
<T2, B, 10>  
<T2, C, 15>  
<T2, D, 20>  
<commit T1>  
<commit T2>  
<checkpoint>  
<start T3>  
<T2, C, 15>  
<start T3>  
<T1, D, 20>  
<commit T1>  
<T3, E, 25>  
<commit T2>  
<end ckpt>  
<T3, F, 30>  
<T3, E, 25>  
<T3, F, 30>  
scan  
scan  
6
Redo-logging  
Step Action  
t
Mem A Mem B Disk A Disk B Mem Log  
1
<start T>  
2
3
4
5
6
7
8
9
Read(A,t)  
8
16  
16  
8
8
8
8
8
8
8
8
8
8
8
t:=t*2  
Write(A,t)  
Read(B,t)  
t:=t*2  
16  
16  
<T, A, 16>  
8
8
16  
16  
16  
16  
8
8
8
8
Write(B,t)  
16  
<T, B, 16>  
<commit T>  
Flush log  
10 Output(A) 16  
11  
Output(B) 16  
16  
16  
16  
16  
16  
16  
8
16  
<T, end>  
Redo-logging Rules  
(1) For every action, generate redo log record (containing  
new value)  
(2) Before X is modified on disk (DB),all log records for  
transaction that modified X (including commit) must be  
on disk  
(3) Flush log at commit  
(4) Write END record after DB updates flushed to disk  
7
Redo-logging Recovery Rules  
Let S = set of transactions with  
<Ti, commit> in log  
no <Ti, end> in log  
For each <Ti, X, v> in log, in forward order (earliest   
latest)  
If Ti S then write(X, v)  
output(X)  
For each Ti S  
write <Ti, end>  
Redo Logging & Checkpoint  
<start T1>  
<start T1>  
<T1, A, 5>  
<T1, A, 5>  
<start T2>  
<start T2>  
<commit T1>  
<commit T1>  
<T2, B, 10>  
<T2, B, 10>  
<start ckpt (T2)>  
<start ckpt (T2)>  
<T2, C, 15>  
<start T3>  
<T3, D, 20>  
scan  
<T2, C, 15>  
<start T3>  
<T3, D, 20>  
<end ckpt>  
<commit T2>  
<commit T3>  
scan  
8
Discussion  
Undo Logging  
need to write to disk as soon transaction finishes  
Access disk  
Redo Logging  
need to keep all modified blocks in memory until commit  
Use memory  
Undo/Redo Loggin  
Step Action  
t
Mem A Mem B Disk A Disk B  
Mem Log  
<start T>  
1
2
3
Read(A,t)  
8
16  
16  
8
8
8
8
8
8
8
8
8
8
8
t:=t*2  
Write(A,t)  
Read(B,t)  
t:=t*2  
16  
16  
4
<T, A, 8, 16>  
<T, B, 8, 16>  
<commit T>  
8
8
5
6
16  
16  
16  
16  
8
8
8
8
7
Write(B,t)  
Flush log  
Output(A)  
16  
8
9
16  
16  
16  
16  
16  
16  
16  
16  
8
10  
11  
Output(B)  
16  
9
Undo/Redo Logging Rules  
Page X can be flushed before or after T commit  
Log record flushed before corresponding  
updated page (WAL)  
Flush at commit (log only)  
Undo/Redo Logging & Checkpoint  
<start T1>  
<T1, A, 4, 5>  
<start T2>  
<commit T1>  
<start T1>  
<T1, A, 4, 5>  
<start T2>  
<start T3>  
<commit T1>  
<T2, B, 9, 10>  
<T3, E, 6, 7>  
<start ckpt (T2, T3)>  
<T2, C, 14, 15>  
<T3, D, 19, 20>  
<end ckpt>  
<T2, B, 9, 10>  
<start ckpt (T2)>  
<T2, C, 14, 15>  
<start T3>  
<T3, D, 19, 20>  
<end ckpt>  
<commit T2>  
<commit T2>  
scan  
scan  
10  
Undo/Redo Logging Recovery Rules  
Backwards pass (end of log latest valid checkpoint  
start)  
Constructing set S of committed transactions  
undo actions of transactions not in S  
undo pending transactions  
follow undo chains for transactions in (checkpoint active  
list) – S  
Forward pass (latest checkpoint start end of log)  
redo actions of S transactions  
11  
pdf 11 trang Thùy Anh 17140 Free
Bạn đang xem tài liệu "Bài giảng Thiết kế và quản trị cơ sở dữ liệu - Crash recovery - Vũ Tuyết Trinh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_thiet_ke_va_quan_tri_co_so_du_lieu_crash_recovery.pdf