Upload
shreya-blease
View
213
Download
0
Tags:
Embed Size (px)
Citation preview
ARIES Example
LSN Type Tid PrevLSN Data1 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
1
2
3
WA,B
CP
WC
WD
WB
WA
WE
CRASH
Flush
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 Phases
1. Analysis– Find earliest useful log record– Rebuild xactionTable and dirtyPgTable– Determine winners & losers
2. Redo– Redo all updates, even from losers (“repeat history”)– Why?
3. Undo– Undo Losers
AnalysisLSN Type Tid PrevLSN Data
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
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
Not the same as just beforecrash (note disk state)
Redo
• Where to begin?– Checkpoint?
– Min(recLSN)!
• What to REDO?
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• If LSN < recLSN• If 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
A 2
B 3
C 6
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
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• If LSN < recLSN• If 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
A 2
B 3
C 6
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
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• If LSN < recLSN• If 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
A 2
B 3
C 6
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
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• If LSN < recLSN• If LSN <= pageLSN
DirtyPgTable
Page pageLSN
A 2
B 3
C 6
D ?
E ?
Disk
Buffer/disk pages same as pre-crash
Undo
• Walk backwards, following prevLSNs to UNDO losers
LSN Type Tid PrevLSN Data1 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 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 1 A3 UP 1 2 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 1 A3 UP 1 2 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
What does UNDO do?
• Why is it safe to undo an op from middle of log?
• What if the operation split a B+Tree block?
Crash during UNDO phase?
– Example:• T1 starts
• T1 deletes tuple, modifies heapfile, B+Tree index
• DB writes all dirty pages to disk
• checkpoint
• crash
– Nothing to redo– Undo phase starts to modify heapfile/B+Tree, writes
some pages to disk, crash again.– Will the 2nd recovery work correctly?
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 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 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 10 E
15 CLR 3 5 B
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 10 E
15 CLR 3 5 B
16 EOT 3 -
REDO with CLR
• REDO CLRs on crash recovery– Just like redo of ordinary update– CLR is the physical redo version of the logical undo– Each CLR has an entire undo’s worth of redo info
• Thus redo w/ CLRs yields action consistency
– After processing CLR, update lastLSN field in xactionTable to point to prevLSN of CLR
• Allows UNDO to start from the right place