Lecture 14 – ARIES Recovery

32
Lecture 14 – ARIES Recovery 4/3/2013

description

Lecture 14 – ARIES Recovery. 4/3/2013. WA,B. WC. 1. CRASH. WD. WA. 2. WB. WE. 3. CP. Flush. ARIES Example. WA,B. WC. 1. CRASH. WD. WA. 2. WB. WE. 3. CP. Flush. ARIES Data Structures. xactionTable. dirtyPgTable. Checkpoint. Disk. Crash Recovery. 3 Phases Analysis - PowerPoint PPT Presentation

Transcript of Lecture 14 – ARIES Recovery

Page 1: Lecture 14 – ARIES Recovery

Lecture 14 – ARIES Recovery

4/3/2013

Page 2: Lecture 14 – ARIES Recovery

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

Page 3: Lecture 14 – ARIES Recovery

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

Page 4: Lecture 14 – ARIES Recovery

Crash Recovery

• 3 Phases– Analysis

• Rebuild data structures

• Determine winners & losers

– Redo• “Repeat history”• Why?

– Undo• Undo Losers

Page 5: Lecture 14 – ARIES Recovery

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

Page 6: Lecture 14 – ARIES Recovery

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

Page 7: Lecture 14 – ARIES Recovery

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

Page 8: Lecture 14 – ARIES Recovery

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

Page 9: Lecture 14 – ARIES Recovery

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

Page 10: Lecture 14 – ARIES Recovery

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

Page 11: Lecture 14 – ARIES Recovery

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

Page 12: Lecture 14 – ARIES Recovery

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

Page 13: Lecture 14 – ARIES Recovery

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

Page 14: Lecture 14 – ARIES Recovery

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

Page 15: Lecture 14 – ARIES Recovery

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

Page 16: Lecture 14 – ARIES Recovery

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

Page 17: Lecture 14 – ARIES Recovery

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

Page 18: Lecture 14 – ARIES Recovery

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

Page 19: Lecture 14 – ARIES Recovery

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

Page 20: Lecture 14 – ARIES Recovery

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

Page 21: Lecture 14 – ARIES Recovery

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

Page 22: Lecture 14 – ARIES Recovery

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?

Page 23: Lecture 14 – ARIES Recovery

UNDO Wrinkles

• Logical UNDO– Why?

• “Compensation Log Records” -- CLRs– Avoid repeating UNDO work– Why?

Page 24: Lecture 14 – ARIES Recovery

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

Page 25: Lecture 14 – ARIES Recovery

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

Page 26: Lecture 14 – ARIES Recovery

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

Page 27: Lecture 14 – ARIES Recovery

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

Page 28: Lecture 14 – ARIES Recovery

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

Page 29: Lecture 14 – ARIES Recovery

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

Page 30: Lecture 14 – ARIES Recovery

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

Page 31: Lecture 14 – ARIES Recovery

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

Page 32: Lecture 14 – ARIES Recovery

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