Lecture 14 – ARIES Recovery
description
Transcript of Lecture 14 – ARIES Recovery
Lecture 14 – ARIES Recovery
4/3/2013
ARIES Example
LSN Type Tid PrevLSN Data
1
2
3
WA,B
CP
WC
WD
WB
WA
WE
CRASH
Flush
1 SOT 12 UP 1 1 A3 UP 1 2 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 610 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
ARIES Data Structures
12
3
WA,B
CP
WC
WD
WB
WA
WE
CRASH
Flush
lastLSN TID
1 1
xactionTablepgNo recLSN
dirtyPgTable
xactionTable
dirtyPgTable
Checkpoint
Page pageLSN
A ?
B ?
C ?
D ?
E ?
Disk
lastLSN TID
2 1
lastLSN TID
3 1
lastLSN TID
3 1
5 3
lastLSN TID
13 3
pgNo recLSN
A 2
B 3
pgNo recLSN
A 2
B 3
C 6
Page pageLSN
A 2
B 3
C 6
D ?
E ?
pgNo recLSNpgNo 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
xactionTable 3 - 1
dirtyPgTable A - 2, B - 3
Crash Recovery
• 3 Phases– Analysis
• Rebuild data structures
• Determine winners & losers
– Redo• “Repeat history”• Why?
– Undo• Undo Losers
AnalysisLSN Type Tid PrevLSN Data
1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 610 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
AnalysisLSN Type Tid PrevLSN Data
5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 610 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
lastLSN TID
3 1
pgNo recLSN
A 2
B 3
Page pageLSN
A 2
B 3
C 6
D ?
E ?
xactionTable dirtyPgTableDisk
AnalysisLSN Type Tid PrevLSN Data
5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 610 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
lastLSN TID
3 1
5 3
pgNo recLSN
A 2
B 3
Page pageLSN
A 2
B 3
C 6
D ?
E ?
xactionTable dirtyPgTableDisk
AnalysisLSN Type Tid PrevLSN Data
5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 610 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
lastLSN TID
3 1
5 3
pgNo recLSN
A 2
B 3
C 6
Page pageLSN
A 2
B 3
C 6
D ?
E ?
xactionTable dirtyPgTableDisk
AnalysisLSN Type Tid PrevLSN Data
5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 610 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
lastLSN TID
3 1
5 3
7 2
pgNo recLSN
A 2
B 3
C 6
Page pageLSN
A 2
B 3
C 6
D ?
E ?
xactionTable dirtyPgTableDisk
AnalysisLSN Type Tid PrevLSN Data
5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 610 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
lastLSN TID
3 1
5 3
7 2
pgNo recLSN
A 2
B 3
C 6
D 8
Page pageLSN
A 2
B 3
C 6
D ?
E ?
xactionTable dirtyPgTableDisk
AnalysisLSN Type Tid PrevLSN Data
5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 610 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
lastLSN TID
13 3
pgNo recLSN
A 2
B 3
C 6
D 8
E 13
Page pageLSN
A 2
B 3
C 6
D ?
E ?
xactionTabledirtyPgTable Disk
Dirty page table doesn’treflect true state on disk
Redo
• Where to begin?– 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
dirtyPgTable
Page pageLSN
A 2
B 3
C 6
D ?
E ?
Disk
Redo Example
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
pgNo recLSN
A 2
B 3
C 6
D 8
E 13
Redo UNLESS•Page is not in dirtyPgTable•LSN < recLSN•LSN <= pageLSN
DirtyPgTable
Page pageLSN
A 2
B 3
C 6
D ?
E ?
Disk
pgNo recLSN
B 3
C 6
D 8
E 13
Redo Example
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
pgNo recLSN
B 3
C 6
D 8
E 13
Redo UNLESS•Page is not in dirtyPgTable•LSN < recLSN•LSN <= pageLSN
DirtyPgTable
Page pageLSN
A 2
B 3
C 6
D ?
E ?
Disk
pgNo recLSN
C 6
D 8
E 13
Redo Example
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
pgNo recLSN
C 6
D 8
E 13
Redo UNLESS•Page is not in dirtyPgTable•LSN < recLSN•LSN <= pageLSN
DirtyPgTable
Page pageLSN
A 2
B 3
C 6
D ?
E ?
Disk
pgNo recLSN
D 8
E 13
Redo Example
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
pgNo recLSN
D 8
E 13
Redo UNLESS•Page is not in dirtyPgTable•LSN < recLSN•LSN <= pageLSN
DirtyPgTable
Page pageLSN
A 2
B 3
C 6
D ?
E ?
Disk
Redo Example
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
pgNo recLSN
D 8
E 13
Redo UNLESS•Page is not in dirtyPgTable•LSN < recLSN•LSN <= pageLSN
DirtyPgTable
Page pageLSN
A 2
B 3
C 6
D ?
E ?
Disk
pgNo recLSN
B 10
D 8
E 13
Redo Example
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
pgNo recLSN
B 10
D 8
E 13
Redo UNLESS•Page is not in dirtyPgTable•LSN < recLSN•LSN <= pageLSN
DirtyPgTable
Page pageLSN
A 2
B 3
C 6
D ?
E ?
Disk
pgNo recLSN
A 11
B 10
D 8
E 13
Redo Example
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
pgNo recLSN
A 11
B 10
D 8
E 13
Redo UNLESS•Page is not in dirtyPgTable•If LSN < recLSN•If LSN <= pageLSN
DirtyPgTable
Page pageLSN
A 2
B 3
C 6
D ?
E ?
Disk
State identical to pre-crash state
Undo
• Walk backwards, following prevLSNs to UNDO losers
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
lastLSN TID
13 3
xactionTable
Undo
• Walk backwards, following prevLSNs to UNDO losers
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
lastLSN TID
13 3
xactionTable
Undo
• Walk backwards, following prevLSNs to UNDO losers
LSN Type Tid PrevLSN Data1 SOT 12 UP 1 2 A3 UP 1 3 B4 CP5 SOT 36 UP 1 3 C7 SOT 28 UP 2 7 D9 EOT 1 6
10 UP 3 5 B11 UP 2 8 A12 EOT 2 1113 UP 3 10 E
lastLSN TID
13 3
xactionTable
•Why can we just blindly apply UNDOs?
UNDO Wrinkles
• Logical UNDO– Why?
• “Compensation Log Records” -- CLRs– Avoid repeating UNDO work– Why?
UNDO with CLRLSN Type Tid PrevLSN Data
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
Losers: 3
UNDO with CLRLSN Type Tid PrevLSN Data
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
UNDO with CLRLSN Type Tid PrevLSN Data
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
14 CLR 3 13 10
UNDO with CLRLSN Type Tid PrevLSN Data
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
14 CLR 3 13 E, 10
UNDO with CLRLSN Type Tid PrevLSN Data
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
14 CLR 3 13 E, 10
15 CLR 3 14 B, 5
UNDO with CLRLSN Type Tid PrevLSN Data
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
14 CLR 3 13 E, 10
15 CLR 3 14 B, 5
UNDO with CLRLSN Type Tid PrevLSN Data
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
14 CLR 3 13 E, 10
15 CLR 3 14 B, 5
UNDO with CLRLSN Type Tid PrevLSN Data
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
14 CLR 3 13 E, 10
15 CLR 3 14 B, 5
16 EOT 3 15
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