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

Post on 16-Jul-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Recovery

○○

○○

○○

Why Recovery?

Recovery algorithms

Log-based Recovery

fi fi

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>

Deferred Database Modification

●●

Immediate Database Modification

●●●●

Immediate Database Modification

fi

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>

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>

Checkpoint●●

(already committed)

Recovery With Concurrent Transactions

fi

Recovery With Concurrent Transactions

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>

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

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

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

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

top related