transactions and failure recovery · 2020. 12. 27. · undo/redo recovery algorithm backward pass...
TRANSCRIPT
![Page 1: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/1.jpg)
Transactions and Failure Recovery
Instructor: Matei Zahariacs245.stanford.edu
![Page 2: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/2.jpg)
Outline
Recap from last time
Undo/redo logging
External actions
Media failures
CS 245 2
![Page 3: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/3.jpg)
Outline
Recap from last time
Undo/redo logging
External actions
Media failures
CS 245 3
![Page 4: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/4.jpg)
Defining Correctness
Constraint: Boolean predicate about DB state (both logical & physical data structures)
Consistent DB: satisfies all constraints
CS 245 4
![Page 5: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/5.jpg)
Transaction: Collection of Actions that Preserve Consistency
Consistent DB Consistent DB’T
CS 245 5
![Page 6: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/6.jpg)
Our Failure Model
processor
memory disk
CPU
M D
Fail-stop failures of CPU & memory, but disk survives
CS 245 6
![Page 7: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/7.jpg)
T1: Read (A,t); t ¬ t´2 A=BWrite (A,t);Read (B,t); t ¬ t´2Write (B,t);Output (A);Output (B);
A:8B:8
A:8B:8
memory disk log
Undo Logging (Immediate modification)
CS 245 8
![Page 8: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/8.jpg)
T1: Read (A,t); t ¬ t´2 A=BWrite (A,t);Read (B,t); t ¬ t´2Write (B,t);Output (A);Output (B);
A:8B:8
A:8B:8
memory disk log
Undo Logging (Immediate modification)
1616
<T1, start><T1, A, 8>
CS 245 9
![Page 9: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/9.jpg)
T1: Read (A,t); t ¬ t´2 A=BWrite (A,t);Read (B,t); t ¬ t´2Write (B,t);Output (A);Output (B);
A:8B:8
A:8B:8
memory disk log
Undo Logging (Immediate modification)
1616
<T1, start><T1, A, 8>
16 <T1, B, 8>
CS 245 10
![Page 10: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/10.jpg)
T1: Read (A,t); t ¬ t´2 A=BWrite (A,t);Read (B,t); t ¬ t´2Write (B,t);Output (A);Output (B);
A:8B:8
A:8B:8
memory disk log
Undo Logging (Immediate modification)
1616
<T1, start><T1, A, 8>
16 <T1, B, 8>16
CS 245 11
![Page 11: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/11.jpg)
T1: Read (A,t); t ¬ t´2 A=BWrite (A,t);Read (B,t); t ¬ t´2Write (B,t);Output (A);Output (B);
A:8B:8
A:8B:8
memory disk log
Undo Logging (Immediate modification)
1616
<T1, start><T1, A, 8>
<T1, commit>16 <T1, B, 8>16
CS 245 12
![Page 12: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/12.jpg)
Redo Logging (deferred modification)
T1: Read(A,t); t ← t´2; write (A,t);Read(B,t); t ← t´2; write (B,t);Output(A); Output(B)
A: 8B: 8
A: 8B: 8
memory DB
LOG
CS 245 14
![Page 13: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/13.jpg)
Redo Logging (deferred modification)
T1: Read(A,t); t ← t´2; write (A,t);Read(B,t); t ← t´2; write (B,t);Output(A); Output(B)
A: 8B: 8
A: 8B: 8
memory DB
LOG
1616
<T1, start><T1, A, 16><T1, B, 16>
<T1, commit>
CS 245 15
![Page 14: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/14.jpg)
Redo Logging (deferred modification)
T1: Read(A,t); t ← t´2; write (A,t);Read(B,t); t ← t´2; write (B,t);Output(A); Output(B)
A: 8B: 8
A: 8B: 8
memory DB
LOG
1616
<T1, start><T1, A, 16><T1, B, 16>
<T1, commit>
output1616
CS 245 16
![Page 15: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/15.jpg)
Redo Logging (deferred modification)
T1: Read(A,t); t ← t´2; write (A,t);Read(B,t); t ← t´2; write (B,t);Output(A); Output(B)
A: 8B: 8
A: 8B: 8
memory DB
LOG
1616
<T1, start><T1, A, 16><T1, B, 16>
<T1, commit><T1, end>
output1616
CS 245 17
![Page 16: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/16.jpg)
Combining <Ti, end> Records
Want to delay DB flushes for hot objects
Say X is branch balance:T1: ... update X...T2: ... update X...T3: ... update X...T4: ... update X...
Actions:write Xoutput Xwrite Xoutput Xwrite Xoutput Xwrite Xoutput X
CS 245 18
![Page 17: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/17.jpg)
Combining <Ti, end> Records
Want to delay DB flushes for hot objects
Say X is branch balance:T1: ... update X...T2: ... update X...T3: ... update X...T4: ... update X...
Actions:write Xoutput Xwrite Xoutput Xwrite Xoutput Xwrite Xoutput X
combined <end> record (checkpoint)CS 245 19
![Page 18: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/18.jpg)
Redo Logging:What To Do at Recovery?
Redo log (disk):
<T1,
A,16
>
<T1,
com
mit>
<che
ckpo
int>
<T2,
B,17
>
<T2,
com
mit>
<T3,
C,2
1>
Crash... ... ... ... ... ...
CS 245 20
![Page 19: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/19.jpg)
Redo Logging:What To Do at Recovery?
Redo log (disk):
<T1,
A,16
>
<T1,
com
mit>
<che
ckpo
int>
<T2,
B,17
>
<T2,
com
mit>
<T3,
C,2
1>
Crash... ... ... ... ... ...
CS 245 21
T2 committed, soREDO all its updates
![Page 20: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/20.jpg)
Redo Logging:What To Do at Recovery?
Redo log (disk):
<T1,
A,16
>
<T1,
com
mit>
<che
ckpo
int>
<T2,
B,17
>
<T2,
com
mit>
<T3,
C,2
1>
Crash... ... ... ... ... ...
CS 245 22
T3 didn’t commit,so ignore it
T2 committed, soREDO all its updates
![Page 21: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/21.jpg)
Problems with Ideas So Far
Undo logging: need to wait for lots of I/O to commit; can’t easily have backup copies of DB
Redo logging: need to keep all modified blocks in memory until commit
CS 245 23
![Page 22: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/22.jpg)
Solution: Undo/Redo Logging!
Update = <Ti, X, new X val, old X val>
(X is the object updated)
CS 245 24
![Page 23: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/23.jpg)
Undo/Redo Logging Rules
Object X can be flushed before or after Ticommits
Log record (with undo/redo info) must be flushed before corresponding data (WAL)
Flush only commit record at Ti commit
CS 245 25
![Page 24: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/24.jpg)
Undo/Redo Logging:What to Do at Recovery?Undo/redo log (disk):
<che
ckpo
int>
<T1,
A, 1
0, 1
5>
<T1,
B, 2
0, 2
3>
<T1,
com
mit>
<T2,
C, 3
0, 3
8>
<T2,
D, 4
0, 4
1>
Crash... ... ... ... ... ...
CS 245 26
![Page 25: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/25.jpg)
Undo/Redo Logging:What to Do at Recovery?Undo/redo log (disk):
<che
ckpo
int>
<T1,
A, 1
0, 1
5>
<T1,
B, 2
0, 2
3>
<T1,
com
mit>
<T2,
C, 3
0, 3
8>
<T2,
D, 4
0, 4
1>
Crash... ... ... ... ... ...
T1 committed, soREDO all its updates
CS 245 27
![Page 26: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/26.jpg)
Undo/Redo Logging:What to Do at Recovery?Undo/redo log (disk):
<che
ckpo
int>
<T1,
A, 1
0, 1
5>
<T1,
B, 2
0, 2
3>
<T1,
com
mit>
<T2,
C, 3
0, 3
8>
<T2,
D, 4
0, 4
1>
Crash... ... ... ... ... ...
T1 committed, soREDO all its updates
T2 didn’t commit, soUNDO all its updates
CS 245 28
![Page 27: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/27.jpg)
Non-Quiescent Checkpoints
LOG
for dirty memoryundo pages flushed
Start-ckptactive txs:T1,T2,...
endckpt
.........
...
CS 245 29
![Page 28: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/28.jpg)
Non-Quiescent Checkpointsmemory
checkpoint process:
for i := 1 to M doOutput(buffer i)
[transactions run concurrently]
CS 245 30
![Page 29: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/29.jpg)
Example 1: How to Recover?
no T1 commitLOG
T1,-a ... Ckpt
T1 ... Ckptend ... T1,-
b...
CS 245 31
![Page 30: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/30.jpg)
Example 1: How to Recover?
no T1 commitLOG
T1,-a ... Ckpt
T1 ... Ckptend ... T1,-
b...
Undo T1 (undo a,b)
CS 245 32
![Page 31: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/31.jpg)
Example 2: How to Recover?
LOG
... T1a ... ... T1
b ... ... T1c ... T1
cmt ...ckpt-end
ckpt-sT1
CS 245 33
![Page 32: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/32.jpg)
LOG
... T1a ... ... T1
b ... ... T1c ... T1
cmt ...ckpt-end
ckpt-sT1
Redo T1 (redo b,c)
Example 2: How to Recover?
CS 245 34
![Page 33: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/33.jpg)
What if a Checkpoint Did Not Complete?
... ckptstart ... ... T1
b ... ... T1c ...ckpt-
startckptend
LOG
start of lastcomplete
checkpoint
ckpt-start
Start recovery from last complete checkpoint
CS 245 35
![Page 34: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/34.jpg)
Undo/Redo Recovery AlgorithmBackward pass (end of log → latest valid checkpoint start)» construct set S of committed transactions» undo actions of transactions not in S
Undo pending transactions» follow undo chains for transactions in
(checkpoint’s active list) - S
Forward pass (latest checkpoint start → end of log)» redo actions of all transactions in S
backward pass
forward passstart
check-point
CS 245 36
![Page 35: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/35.jpg)
Outline
Recap from last time
Undo/redo logging
External actions
Media failures
CS 245 37
![Page 36: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/36.jpg)
External Actions
E.g., dispense cash at ATM
Ti = a1 a2 …... aj …... an
💵
CS 245 38
![Page 37: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/37.jpg)
Solution
(1) Execute real-world actions after commit
(2) Try to make idempotent
CS 245 39
![Page 38: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/38.jpg)
Solution
(1) Execute real-world actions after commit
(2) Try to make idempotentATM
Give $$(amt, Tid, time)
$give(amt)
lastTid:time:
CS 245 40
![Page 39: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/39.jpg)
How Would You Handle These Other External Actions?Charge a customer’s credit card
Cancel someone’s hotel room
Send data into a streaming system
CS 245 41
![Page 40: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/40.jpg)
Outline
Recap from last time
Undo/redo logging
External actions
Media failures
CS 245 42
![Page 41: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/41.jpg)
Media Failure(Loss of Nonvolatile Storage)
A: 16
CS 245 43
![Page 42: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/42.jpg)
A: 16
Solution: Make copies of data!
Media Failure(Loss of Nonvolatile Storage)
CS 245 44
![Page 43: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/43.jpg)
Example 1: 3-Way Redundancy
Keep 3 copies on separate disks
Output(X) → three outputs
Input(X) → three inputs + vote
X1 X2 X3
CS 245 45
![Page 44: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/44.jpg)
Example 2: Redundant Writes, Single ReadsKeep N copies on separate disks
Output(X) → N outputs
Input(X) → Input one copy- if ok, done; else try another one
Assumes bad data can be detected!
CS 245 46
![Page 45: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/45.jpg)
Example 3: DB Dump + Log
backupdatabase
activedatabase
log
If active database is lost,– restore active database from backup– bring up-to-date using redo entries in log
CS 245 47
![Page 46: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/46.jpg)
Backup Database
Just like a checkpoint, except that we write the full database
database
create backup database:
for i := 1 to DB_Size do[read DB block i; write to backup]
[transactions run concurrently]
CS 245 48
![Page 47: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/47.jpg)
Backup Database
Just like a checkpoint, except that we write the full database
database
create backup database:
for i := 1 to DB_Size do[read DB block i; write to backup]
[transactions run concurrently]
Restore from backup DB and log:Similar to recovery from checkpoint and logCS 245 49
![Page 48: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/48.jpg)
When Can Logs Be Discarded?
check-point
DBdump
lastneededundo
not needed formedia recovery redo
not needed for undoafter system failure
not needed forredo after system failure
log
time
lastneededundo
not needed formedia recovery
CS 245 50
![Page 49: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/49.jpg)
Summary
Consistency of data: maintain constraints
One source of problems: failures» Logging» Redundancy
Another source of problems: data sharing» We’ll cover this next!
CS 245 51
![Page 51: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/51.jpg)
The Problem
T1 T2 … Tn
DB(consistencyconstraints)
Different transactions may need to access data items at the same time, violating constraints
CS 245 53
![Page 52: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/52.jpg)
Example
Constraint: all interns have equal salaries
T1: add $1000 to each intern’s salary
T2: double each intern’s salary
Salaries: 2000 2000 2000 2000 20003000 3000 400040003000
600060006000 5000 5000 😱CS 245 54
![Page 53: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/53.jpg)
The Problem
Even if each transaction maintains constraints by itself, interleaving their actions does not
Could try to run just one transaction at a time (serial schedule), but this has problems» Too slow! Especially with external clients & IO
CS 245 55
![Page 54: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/54.jpg)
High-Level Approach
Define isolation levels: sets of guarantees about what transactions may experience
Strongest level: serializability (result is same as some serial schedule)
Many others possible: snapshot isolation, read committed, read uncommitted, …
CS 245 56
![Page 55: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/55.jpg)
Fundamental Tradeoff
Weaker isolationlevel
Stronger isolation level
Easier to reason about (can’t see others’ changes)
See others’ changes,but more concurrency
CS 245 57
![Page 56: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/56.jpg)
Interesting Fact
SQL standard defines serializability as “same as a serial schedule”, but then also lists 3 types of “anomalies” to define levels:
Isolation Level Dirty Reads Unrepeatable Reads
Phantom Reads
Read uncommitted Y Y Y
Read committed N Y Y
Repeatable read N N Y
Serializable N N N
CS 245 58
![Page 57: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/57.jpg)
Interesting Fact
There are isolation levels other than serializability that meet the last definition!» I.e. don’t exhibit those 3 anomalies
Virtually no commercial DBs do serializability by default, and some can’t do it at all
Time to call the lawyers?
CS 245 59
![Page 58: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/58.jpg)
In This Course
We’ll first discuss how to offer serializability» Many ideas apply to other isolation levels
We’ll see other isolation levels after
CS 245 60
![Page 59: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/59.jpg)
OutlineWhat makes a schedule serializable?
Conflict serializability
Precedence graphs
Enforcing serializability via 2-phase locking» Shared and exclusive locks» Lock tables and multi-level locking
Optimistic concurrency with validationCS 245 61
![Page 60: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/60.jpg)
OutlineWhat makes a schedule serializable?
Conflict serializability
Precedence graphs
Enforcing serializability via 2-phase locking» Shared and exclusive locks» Lock tables and multi-level locking
Optimistic concurrency with validationCS 245 62
![Page 61: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/61.jpg)
Example
T1: Read(A) T2: Read(A)A ¬ A+100 A ¬ A´2Write(A) Write(A)Read(B) Read(B)B ¬ B+100 B ¬ B´2Write(B) Write(B)
Constraint: A=B
CS 245 63
![Page 62: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/62.jpg)
Schedule AT1 T2
Read(A); A ¬ A+100Write(A);Read(B); B ¬ B+100;Write(B);
Read(A); A ¬ A´2;Write(A);Read(B); B ¬ B´2;Write(B);
CS 245 64
![Page 63: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/63.jpg)
Schedule AA B25 25
125
125
250
250250 250
T1 T2
Read(A); A ¬ A+100Write(A);Read(B); B ¬ B+100;Write(B);
Read(A); A ¬ A´2;Write(A);Read(B); B ¬ B´2;Write(B);
CS 245 65
![Page 64: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/64.jpg)
Schedule BT1 T2
Read(A); A ¬ A´2;Write(A);Read(B); B ¬ B´2;Write(B);
Read(A); A ¬ A+100Write(A);Read(B); B ¬ B+100;Write(B);
CS 245 66
![Page 65: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/65.jpg)
Schedule BT1 T2
Read(A); A ¬ A´2;Write(A);Read(B); B ¬ B´2;Write(B);
Read(A); A ¬ A+100Write(A);Read(B); B ¬ B+100;Write(B);
A B25 25
50
50
150
150150 150
CS 245 67
![Page 66: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/66.jpg)
Schedule CT1 T2
Read(A); A ¬ A+100Write(A);
Read(A); A ¬ A´2;Write(A);
Read(B); B ¬ B+100;Write(B);
Read(B); B ¬ B´2;Write(B);
CS 245 68
![Page 67: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/67.jpg)
Schedule CT1 T2Read(A); A ¬ A+100Write(A);
Read(A); A ¬ A´2;Write(A);
Read(B); B ¬ B+100;Write(B);
Read(B); B ¬ B´2;Write(B);
A B25 25
125
250
125
250250 250
CS 245 69
![Page 68: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/68.jpg)
Schedule DT1 T2Read(A); A ¬ A+100Write(A);
Read(A); A ¬ A´2;Write(A);Read(B); B ¬ B´2;Write(B);
Read(B); B ¬ B+100;Write(B);
CS 245 70
![Page 69: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/69.jpg)
Schedule DT1 T2Read(A); A ¬ A+100Write(A);
Read(A); A ¬ A´2;Write(A);Read(B); B ¬ B´2;Write(B);
Read(B); B ¬ B+100;Write(B);
A B25 25
125
250
50
150250 150
CS 245 71
![Page 70: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/70.jpg)
Schedule ET1 T2Read(A); A ¬ A+100Write(A);
Read(A); A ¬ A+50;Write(A);Read(B); B ¬ B+50;Write(B);
Read(B); B ¬ B+100;Write(B);
Same as Schedule Dbut with new T2’
CS 245 72
![Page 71: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/71.jpg)
Schedule ET1 T2’Read(A); A ¬ A+100Write(A);
Read(A); A ¬ A+50;Write(A);Read(B); B ¬ B+50;Write(B);
Read(B); B ¬ B+100;Write(B);
A B25 25
125
175
75
175175 175
Same as Schedule Dbut with new T2’
CS 245 73
![Page 72: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/72.jpg)
Want schedules that are “good”, regardless of» initial state and» transaction semantics
Only look at order of read & write operations
Example:
SC = r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)
Our Goal
We don’t know the logicin external client apps!
CS 245 74
![Page 73: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/73.jpg)
SC’ = r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)
T1 T2
Example:
SC = r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)
CS 245 75
![Page 74: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/74.jpg)
However, for SD:
SD = r1(A)w1(A)r2(A)w2(A)r2(B)w2(B)r1(B)w1(B)
Another way to view this:» r1(B) after w2(B) means T1 should be after T2 in an
equivalent serial schedule (T2 ® T1)» r2(A) after w1(A) means T2 should be after T1 in an
equivalent serial schedule (T1 ® T2)» Can’t have both of these!
CS 245 76
![Page 75: Transactions and Failure Recovery · 2020. 12. 27. · Undo/Redo Recovery Algorithm Backward pass (end of log → latest valid checkpoint start) »construct set S of committed transactions](https://reader036.vdocuments.mx/reader036/viewer/2022071608/61463cda8f9ff812542022c9/html5/thumbnails/75.jpg)
OutlineWhat makes a schedule serializable?
Conflict serializability
Precedence graphs
Enforcing serializability via 2-phase locking» Shared and exclusive locks» Lock tables and multi-level locking
Optimistic concurrency with validationCS 245 77