recovery - brown university · log-based recovery fi fi. log examples transaction t1 log read(a)...

18
Recovery

Upload: others

Post on 16-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Recovery

Page 2: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

○○

○○

○○

Why Recovery?

Page 3: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Recovery algorithms

Page 4: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Log-based Recovery

fi fi

Page 5: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Log ExamplesTransaction T1 Log

Read(A)A = A - 50Write(A)Read(B)B = B + 50Write(B)

<T1, start><T1, A, 1000, 950><T1, B, 2000, 2050><T1, commit>

Page 6: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Deferred Database Modification

●●

Page 7: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Immediate Database Modification

●●●●

Page 8: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Immediate Database Modification

fi

Page 9: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Practice<T0, start> <T0, A, 1000, 950> <T0, B, 2000, 2050>

<T0, start> <T0, A, 1000, 950> <T0, B, 2000, 2050> <T0, commit> <T1, start> <T1, C, 700, 600>

<T0, start> <T0, A, 1000, 950> <T0, B, 2000, 2050> <T0, commit> <T1, start> <T1, C, 700, 600> <T1, commit>

Page 10: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Practice<T0, start> <T0, A, 1000, 950> <T0, B, 2000, 2050>

<T0, start> <T0, A, 1000, 950> <T0, B, 2000, 2050> <T0, commit> <T1, start> <T1, C, 700, 600>

<T0, start> <T0, A, 1000, 950> <T0, B, 2000, 2050> <T0, commit> <T1, start> <T1, C, 700, 600> <T1, commit>

Page 11: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Checkpoint●●

(already committed)

Page 12: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Recovery With Concurrent Transactions

fi

Page 13: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

Recovery With Concurrent Transactions

Page 14: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

PracticeLOG:<T0 start> <T0, A, 0, 10> <T0 commit> <T1 start> <T1, B, 0, 10> <T2 start> <T2, C, 0, 10> <T2, C, 10, 20> <checkpoint {T1, T2}> <T3 start> <T3, A, 10, 20> <T3, D, 0, 10> <T3 commit>

Page 15: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

PracticeLOG:<T0 start> <T0, A, 0, 10> <T0 commit> <T1 start> <T1, B, 0, 10> <T2 start> <T2, C, 0, 10> <T2, C, 10, 20> <checkpoint {T1, T2}> <T3 start> <T3, A, 10, 20> <T3, D, 0, 10> <T3 commit>

Undo-list: T1, T2Redo-list: T3

Page 16: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

PracticeLOG:<T0 start> <T0, A, 0, 10> <T0 commit> <T1 start> <T1, B, 0, 10> <T2 start> <T2, C, 0, 10> <T2, C, 10, 20> <checkpoint {T1, T2}> <T3 start> <T3, A, 10, 20> <T3, D, 0, 10> <T3 commit>

Undo-list: T1, T2Redo-list: T3

Undo:Set C to 10Set C to 0Set B to 0

Page 17: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

PracticeLOG:<T0 start> <T0, A, 0, 10> <T0 commit> <T1 start> <T1, B, 0, 10> <T2 start> <T2, C, 0, 10> <T2, C, 10, 20> <checkpoint {T1, T2}> <T3 start> <T3, A, 10, 20> <T3, D, 0, 10> <T3 commit>

Undo-list: T1, T2Redo-list: T3

Undo:Set C to 10Set C to 0Set B to 0

Redo:Set A to 20Set D to 10

Page 18: Recovery - Brown University · Log-based Recovery fi fi. Log Examples Transaction T1 Log Read(A) A = A - 50 Write(A) Read(B) B = B + 50 Write(B)

PracticeLOG:<T0 start> <T0, A, 0, 10> <T0 commit> <T1 start> <T1, B, 0, 10> <T2 start> <T2, C, 0, 10> <T2, C, 10, 20> <checkpoint {T1, T2}> <T3 start> <T3, A, 10, 20> <T3, D, 0, 10> <T3 commit>

Undo-list: T1, T2Redo-list: T3

Undo:Set C to 10Set C to 0Set B to 0

Redo:Set A to 20Set D to 10

After recovery:A: 20, B: 0, C:0, D: 10