Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 15 – ARIES Recovery

Similar presentations


Presentation on theme: "Lecture 15 – ARIES Recovery"— Presentation transcript:

1 Lecture 15 – ARIES Recovery
11/1/2017

2 Log Based Recovery Recall: database state is memory + disk pages
Add a log managed via write ahead logging Write what we plan to do, before we do it, so that: We can UNDO dirty data written by uncommitted/aborting transactions We can REDO committed actions not flushed to disk at commit time Q: do you always need to write UNDO/REDO state?

3 ARIES Example 1 2 3 LSN Type Tid PrevLSN Data 1 SOT 2 UP 1 A 3 UP 1 2
WA,B CP WC WD WB WA WE CRASH Flush LSN Type Tid PrevLSN Data 1 SOT 2 UP 1 A 3 UP 1 2 B 4 CP 5 SOT 3 6 UP 1 3 C 7 SOT 2 8 UP 2 7 D 9 EOT 1 6 10 UP 3 5 B 11 UP 2 8 A 12 EOT 2 11 13 UP 3 10 E

4 ARIES Data Structures xactionTable dirtyPgTable Checkpoint Disk 1 2 3
lastLSN TID 2 1 lastLSN TID 13 3 lastLSN TID 3 1 5 lastLSN TID 3 1 lastLSN TID 1 pgNo recLSN D 8 pgNo recLSN D 8 B 10 pgNo recLSN D 8 B 10 A 11 pgNo recLSN D 8 B 10 A 11 E 13 pgNo recLSN pgNo recLSN A 2 B 3 C 6 pgNo recLSN pgNo recLSN A 2 B 3 xactionTable dirtyPgTable xactionTable 3 - 1 dirtyPgTable A - 2, B - 3 Disk Page pageLSN A ? B C D E Page pageLSN A 2 B 3 C 6 D ? E 1 2 3 WA,B CP WC WD WB WA WE CRASH Flush

5 Crash Recovery 3 Phases Analysis Redo Undo Rebuild data structures
Determine winners & losers Redo “Repeat history” Why? Undo Undo Losers

6 Analysis LSN Type Tid PrevLSN Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9
EOT 10 11 12 13 E

7 Analysis Disk xactionTable dirtyPgTable LSN Type Tid PrevLSN Data 5
SOT 3 6 UP 1 C 7 2 8 D 9 EOT 10 B 11 A 12 13 E Disk xactionTable dirtyPgTable Page pageLSN A 2 B 3 C 6 D ? E lastLSN TID 3 1 pgNo recLSN A 2 B 3

8 Analysis Disk xactionTable dirtyPgTable LSN Type Tid PrevLSN Data 5
SOT 3 6 UP 1 C 7 2 8 D 9 EOT 10 B 11 A 12 13 E Disk xactionTable dirtyPgTable Page pageLSN A 2 B 3 C 6 D ? E lastLSN TID 3 1 5 pgNo recLSN A 2 B 3

9 Analysis Disk xactionTable dirtyPgTable LSN Type Tid PrevLSN Data 5
SOT 3 6 UP 1 C 7 2 8 D 9 EOT 10 B 11 A 12 13 E Disk xactionTable dirtyPgTable Page pageLSN A 2 B 3 C 6 D ? E lastLSN TID 3 1 5 pgNo recLSN A 2 B 3 C 6

10 Analysis Disk xactionTable dirtyPgTable LSN Type Tid PrevLSN Data 5
SOT 3 6 UP 1 C 7 2 8 D 9 EOT 10 B 11 A 12 13 E Disk xactionTable dirtyPgTable Page pageLSN A 2 B 3 C 6 D ? E lastLSN TID 3 1 5 7 2 pgNo recLSN A 2 B 3 C 6

11 Analysis Disk xactionTable dirtyPgTable LSN Type Tid PrevLSN Data 5
SOT 3 6 UP 1 C 7 2 8 D 9 EOT 10 B 11 A 12 13 E Disk xactionTable dirtyPgTable Page pageLSN A 2 B 3 C 6 D ? E lastLSN TID 3 1 5 8 2 pgNo recLSN A 2 B 3 C 6 D 8

12 Analysis Losers dirtyPgTable Disk xactionTable LSN Type Tid PrevLSN
Data 5 SOT 3 6 UP 1 C 7 2 8 D 9 EOT 10 B 11 A 12 13 E Dirty page table doesn’t reflect true state on disk. Conservative: at least all previous LSNs are on disk dirtyPgTable Disk xactionTable pgNo recLSN A 2 B 3 C 6 D 8 E 13 Page pageLSN A 2 B 3 C 6 D ? E lastLSN TID 13 3 Losers

13 Redo Where to begin? What to REDO dirtyPgTable Checkpoint?
Min(recLSN)! What to REDO Everything? Slow Problematic if using operational (escrow) logging Redo an update UNLESS: Page is not in dirtyPgTable Page flushed prior to checkpoint, didn’t redirty LSN < recLSN Page flushed & redirtied prior to checkpoint LSN <= pageLSN Page flushed after checkpoint pgNo recLSN A 2 B 3 C 6 D 8 E 13 Disk Page pageLSN A 2 B 3 C 6 D ? E

14 Redo Example Redo UNLESS Page is not in dirtyPgTable LSN < recLSN
pgNo recLSN B 3 C 6 D 8 E 13 pgNo recLSN A 2 B 3 C 6 D 8 E 13 Redo UNLESS Page is not in dirtyPgTable LSN < recLSN LSN <= pageLSN Disk LSN Type Tid PrevLSN Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E Page pageLSN A 2 B 3 C 6 D ? E

15 Redo Example Redo UNLESS Page is not in dirtyPgTable LSN < recLSN
pgNo recLSN C 6 D 8 E 13 pgNo recLSN B 3 C 6 D 8 E 13 Redo UNLESS Page is not in dirtyPgTable LSN < recLSN LSN <= pageLSN Disk LSN Type Tid PrevLSN Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E Page pageLSN A 2 B 3 C 6 D ? E

16 Redo Example Redo UNLESS Page is not in dirtyPgTable LSN < recLSN
pgNo recLSN D 8 E 13 pgNo recLSN C 6 D 8 E 13 Redo UNLESS Page is not in dirtyPgTable LSN < recLSN LSN <= pageLSN Disk LSN Type Tid PrevLSN Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E Page pageLSN A 2 B 3 C 6 D ? E

17 Redo Example Redo UNLESS Page is not in dirtyPgTable LSN < recLSN
pgNo recLSN D 8 E 13 Redo UNLESS Page is not in dirtyPgTable LSN < recLSN LSN <= pageLSN Disk LSN Type Tid PrevLSN Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E Page pageLSN A 2 B 3 C 6 D ? E

18 Redo Example Redo UNLESS Page is not in dirtyPgTable LSN < recLSN
pgNo recLSN B 10 D 8 E 13 pgNo recLSN D 8 E 13 Redo UNLESS Page is not in dirtyPgTable LSN < recLSN LSN <= pageLSN Disk LSN Type Tid PrevLSN Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E Page pageLSN A 2 B 3 C 6 D ? E

19 Redo Example Redo UNLESS Page is not in dirtyPgTable LSN < recLSN
pgNo recLSN A 11 B 10 D 8 E 13 pgNo recLSN B 10 D 8 E 13 Redo UNLESS Page is not in dirtyPgTable LSN < recLSN LSN <= pageLSN Disk LSN Type Tid PrevLSN Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E Page pageLSN A 2 B 3 C 6 D ? E

20 Redo Example State identical to pre-crash state Redo UNLESS
DirtyPgTable pgNo recLSN A 11 B 10 D 8 E 13 Redo UNLESS Page is not in dirtyPgTable LSN < recLSN LSN <= pageLSN Disk LSN Type Tid PrevLSN Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E Page pageLSN A 2 B 3 C 6 D ? E State identical to pre-crash state

21 Undo Walk backwards, following prevLSNs to UNDO losers LSN Type Tid
Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E xactionTable lastLSN TID 13 3

22 Undo Walk backwards, following prevLSNs to UNDO losers LSN Type Tid
Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E xactionTable lastLSN TID 13 3

23 Undo Walk backwards, following prevLSNs to UNDO losers
Type Tid PrevLSN Data 1 SOT 2 UP A 3 B 4 CP 5 6 C 7 8 D 9 EOT 10 11 12 13 E xactionTable lastLSN TID 13 3 Why can we just blindly apply UNDOs?

24 UNDO Wrinkles Logical UNDO “Compensation Log Records” -- CLRs Why?
Avoid repeating UNDO work

25 UNDO with CLR LSN Type Tid PrevLSN Data 5 SOT 3 6 UP 1 C 7 2 8 D 9 EOT
10 B 11 A 12 13 E Losers: 3

26 UNDO with CLR LSN Type Tid PrevLSN Data 5 SOT 3 6 UP 1 C 7 2 8 D 9 EOT
10 B 11 A 12 13 E

27 UNDO with CLR LSN Type Tid PrevLSN Data 5 SOT 3 6 UP 1 C 7 2 8 D 9 EOT
10 B 11 A 12 13 E 14 CLR

28 UNDO with CLR LSN Type Tid PrevLSN Data 5 SOT 3 6 UP 1 C 7 2 8 D 9 EOT
10 B 11 A 12 13 E 14 CLR E, 10

29 UNDO with CLR LSN Type Tid PrevLSN Data 5 SOT 3 6 UP 1 C 7 2 8 D 9 EOT
10 B 11 A 12 13 E 14 CLR E, 10 15 B, 5

30 UNDO with CLR LSN Type Tid PrevLSN Data 5 SOT 3 6 UP 1 C 7 2 8 D 9 EOT
10 B 11 A 12 13 E 14 CLR E, 10 15 B, 5

31 UNDO with CLR LSN Type Tid PrevLSN Data 5 SOT 3 6 UP 1 C 7 2 8 D 9 EOT
10 B 11 A 12 13 E 14 CLR E, 10 15 B, 5

32 UNDO with CLR LSN Type Tid PrevLSN Data 5 SOT 3 6 UP 1 C 7 2 8 D 9 EOT
10 B 11 A 12 13 E 14 CLR E, 10 15 B, 5 16

33 REDO with CLR REDO CLRs on crash recovery
Use REDO rules to check if updates in CLRs have already been done Avoids repeating operational (escrow) operations After processing CLR, update lastLSN field in dirtyPgTable Allows UNDO to start from the right place


Download ppt "Lecture 15 – ARIES Recovery"

Similar presentations


Ads by Google