Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but...
Transcript of Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but...
![Page 1: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/1.jpg)
Logging & RecoveryApril 18, 2017
1
![Page 2: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/2.jpg)
Announcements• CSE-662 Wait List created
• I will force reg up to 10 students for CSE-662
• Required: B+ in 562
• If >10 eligible, selection will be based on weighted avg of project/exam grades.
• In-Class Final Exam: May 11
• If this is a problem, contact me directly.
2
![Page 3: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/3.jpg)
3
What does it mean for a transaction to be committed?
![Page 4: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/4.jpg)
• … is recorded completely (atomicity)
• … left the database in a stable state (consistency)
• …’s effects are independent of other xacts (isolation)
• … will survive failures (durability)
4
If commit returns successfully, the transaction…
![Page 5: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/5.jpg)
5
commit returns
successfully=
the xact’s effects
are visible forever
![Page 6: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/6.jpg)
6
commit returns
successfully=
the xact’s effects
are visible forever
commit called but
doesn’t return
=
the xact’s effects may be visible
![Page 7: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/7.jpg)
Motivation
7
T1
T2
T3
T4
T5
Image copyright: Wikimedia Commons
CRASH!
Time
Committed Transactions. These should be present when the DB restarts.
Uncommitted Transactions. These should leave no trace
![Page 8: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/8.jpg)
ACID• Isolation: Already addressed. • Atomicity: Need writes to get flushed in a single step.
• IOs are only atomic at the page level.
• Durability: Need to buffer some writes until commit. • May need to free up memory for another xact.
• Consistency: Need to roll back incomplete xacts. • May have already paged back to disk.
8
![Page 9: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/9.jpg)
Atomicity• Problem: IOs are only atomic for 1 page.
• What if we crash in between writes?
• Solution: Logging (e.g., Journaling Filesystem)
• Log everything first before you do it.
9
append changes to log
time
overwrite file blocks
![Page 10: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/10.jpg)
Durability / Consistency• Problem: Buffer memory is limited
• What if we need to ‘page out’ some data?
• Solution: Use log (or similar) to recover buffer • Problem: Commits more expensive
• Solution: Modify DB in place, use log to ‘undo’ on abort • Problem: Aborts more expensive
10
append to log
time
‘page out’ data to disk
ABORT
replay log in reverse
![Page 11: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/11.jpg)
11
Problem 1: Providing durability under failures.
![Page 12: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/12.jpg)
12
Simplified Model When a write succeeds, the data is completely written
![Page 13: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/13.jpg)
Problems
• A crash occurs part-way through the write.
• A crash occurs before buffered data is written.
13
![Page 14: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/14.jpg)
Write-Ahead Logging
14
A 8
B 12
C 5
D 18
E 16
Before writing to the database, first write what you plan to write
to a log file…
Image copyright: OpenClipart (rg1024)
W(A:10)Log
![Page 15: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/15.jpg)
Write-Ahead Logging
15
A 8
B 12
C 5
D 18
E 16
/ 10Once the log is safely on disk you can write the database
Image copyright: OpenClipart (rg1024)
W(A:10)Log
![Page 16: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/16.jpg)
Write-Ahead Logging
16
A 8
B 12
C 5
D 18
E 16
/ 10Log is append-only, so writes are always
efficient
Image copyright: OpenClipart (rg1024)
W(A:10)W(C:8)W(E:9)
Log
![Page 17: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/17.jpg)
Write-Ahead Logging
17
A 8
B 12
C 5
D 18
E 16
/ 10
/ 8
/ 9
…allowing random writes to be safely batched
Image copyright: OpenClipart (rg1024)
W(A:10)W(C:8)W(E:9)
Log
![Page 18: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/18.jpg)
Anatomy of a log entry
18
Xact ID
Prev Entry
Entry Type Entry Metadata
Which Xact Triggered This
Entry
Last entry for this Xact
(forms a Linked List)
Write, Commit,
etc…
What was written, where, prior value,
etc…
![Page 19: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/19.jpg)
19
Problem 2: Providing rollback.
![Page 20: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/20.jpg)
Single DB Model
20 Image copyright: OpenClipart (rg1024)
A = 20B = 14COMMIT
A 8
B 12
C 5
D 18
E 16
E = 19B = 15ABORT
Txn 1 Txn 2
![Page 21: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/21.jpg)
Single DB Model
21 Image copyright: OpenClipart (rg1024)
A = 20B = 14COMMIT
A 8
B 12
C 5
D 18
E 16
E = 19B = 15ABORT
/ 20Txn 1 Txn 2
![Page 22: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/22.jpg)
Single DB Model
22 Image copyright: OpenClipart (rg1024)
A = 20B = 14COMMIT
A 8
B 12
C 5
D 18
E 16
E = 19B = 15ABORT
/ 20
19
/
/
Txn 1 Txn 2
![Page 23: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/23.jpg)
Single DB Model
23 Image copyright: OpenClipart (rg1024)
A = 20B = 14COMMIT
A 8
B 12
C 5
D 18
E 16
E = 19B = 15ABORT
/ 20
14
19
/
/
Txn 1 Txn 2
![Page 24: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/24.jpg)
Single DB Model
24 Image copyright: OpenClipart (rg1024)
A = 20B = 14COMMIT
A 8
B 12
C 5
D 18
E 16
E = 19B = 15ABORT
/ 20
14
19
15/
/
/
Txn 1 Txn 2
![Page 25: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/25.jpg)
A 8
B 12
C 5
D 18
E 16
Staged DB Model
25 Image copyright: OpenClipart (rg1024)
A = 20B = 14COMMIT
A 8
B 12
C 5
D 18
E 16
E = 19B = 15ABORT
Txn 1
Txn 2
![Page 26: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/26.jpg)
A 8
B 12
C 5
D 18
E 16
/ 20
14/
Staged DB Model
26 Image copyright: OpenClipart (rg1024)
A = 20B = 14COMMIT
A 8
B 12
C 5
D 18
E 16
E = 19B = 15ABORT
15
19
/
/
Txn 1
Txn 2
![Page 27: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/27.jpg)
A 8
B 12
C 5
D 18
E 16
/ 20
14/
Staged DB Model
27 Image copyright: OpenClipart (rg1024)
A = 20B = 14COMMIT
E = 19B = 15ABORT
Txn 1
Txn 2
![Page 28: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/28.jpg)
28
Is staging always possible?
![Page 29: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/29.jpg)
• Staging takes up more memory.
• Merging after-the-fact can be harder.
• Merging after-the-fact introduces more latency!
29
![Page 30: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/30.jpg)
30
Problem 2: Providing rollback.for the single database model
^
![Page 31: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/31.jpg)
UNDO Logging
31
A 8
B 12
C 5
D 18
E 16
W(A:8!10)W(C:5!8)W(E:16!9)
/ 10
/ 8
/ 9
Log
Image copyright: OpenClipart (rg1024)
Store both the “old” and the “new” values of the record being replaced
![Page 32: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/32.jpg)
UNDO Logging
32
A 8
B 12
C 5
D 18
E 16
W(A:8!10)W(C:5!8)W(E:16!9)
/ 10
/ 8
/ 9
Log
Image copyright: OpenClipart (rg1024)
Active Xacts
Xact:1, Log: 45 43:44:45:Xact:2, Log: 32
![Page 33: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/33.jpg)
UNDO Logging
33
A 8
B 12
C 5
D 18
E 16
W(A:8!10)W(C:5!8)W(E:16!9)
/ 10
/ 8
/ 9
Log
Image copyright: OpenClipart (rg1024)
Active Xacts
Xact:1, Log: 45 43:44:45:Xact:2, Log: 32
ABORT
![Page 34: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/34.jpg)
UNDO Logging
34
A 8
B 12
C 5
D 18
E 16
W(A:8!10)W(C:5!8)W(E:16!9)
/ 10
/ 8Log
Image copyright: OpenClipart (rg1024)
Active Xacts
Xact:1, Log: 45 43:44:45:Xact:2, Log: 32
ABORT
![Page 35: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/35.jpg)
UNDO Logging
35
A 8
B 12
C 5
D 18
E 16
W(A:8!10)W(C:5!8)W(E:16!9)
/ 10
Log
Image copyright: OpenClipart (rg1024)
Active Xacts
Xact:1, Log: 45 43:44:45:Xact:2, Log: 32
ABORT
![Page 36: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/36.jpg)
UNDO Logging
36
A 8
B 12
C 5
D 18
E 16
W(A:8!10)W(C:5!8)W(E:16!9)
Log
Image copyright: OpenClipart (rg1024)
Active Xacts
Xact:1, Log: 45 43:44:45:Xact:2, Log: 32
ABORT
![Page 37: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/37.jpg)
37
Problem 3: Providing atomicity.
![Page 38: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/38.jpg)
38
Goal: Be able to reconstruct all state at the time of the DB’s crash (minus all running xacts)
![Page 39: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/39.jpg)
Transaction Table
39
Transaction 24
Transaction 38
Transaction 42
Transaction 56
VALIDATING
COMMITTING
ABORTING
ACTIVE
99
85
87
100
Transaction Status Last Log Entry
![Page 40: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/40.jpg)
Buffer Manager
40
24
30
52
57
66
47
n/a
107
87
n/a
Page Status First Log Entry
DIRTY
CLEAN
DIRTY
DIRTY
CLEAN
Data
01011010…
11001101…
10100010…
01001101…
01001011…
![Page 41: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/41.jpg)
DB State
41
A 8
B 12
C 5
D 18
E 16
W(A:8!10)W(C:5!8)W(E:16!9)
/ 10
/ 8
/ 9
Log
Image copyright: OpenClipart (rg1024)
Active Xacts
Xact:1, Log: 45 43:44:45:Xact:2, Log: 32
On-Disk
On-Disk(or rebuildable)
In-MemoryOnly!
![Page 42: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/42.jpg)
ARIES Recovery
1. Rebuild Transaction Table
2. Rebuild Buffer Manager State
3. ABORT Crashed Transactions
42
![Page 43: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/43.jpg)
Transaction Table
• Log all state changes
• Replay state change log entries
43
Step 1: Rebuild Transaction Table
![Page 44: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/44.jpg)
Required Log Entries
44
Log every COMMIT (replay triggers commit process)
Log every ABORT (replay triggers abort process)
New message: END (replay removes Xact from Xact Table)
What about BEGIN? (when does an Xact get added to the Table?)
![Page 45: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/45.jpg)
Transaction Commit• Write Commit Record to Log
• All Log records up to the transaction’s LastLSN are flushed.
• Note that Log Flushes are Sequential, Synchronous Writes to Disk
• Commit() returns.
• Write End record to log.
45
![Page 46: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/46.jpg)
Speeding Up Recovery• Problem: We might need to scan to the very
beginning of the log to recover the full state of the Xact table (& Buffer Manager)
• Solution: Periodically save (checkpoint) the Xact table to the log.
• Only need to scan the log up to the last (successful) checkpoint.
46
![Page 47: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/47.jpg)
Checkpointing• begin_checkpoint record indicates when the
checkpoint began.
• Checkpoint covers all log entries before this entry.
• end_checkpoint record contains the current transaction table and the dirty page table.
• Signifies that the checkpoint is now stable.
47
![Page 48: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/48.jpg)
• Where do we get the buffered data from?
• Replay Updates in the Log
• … from when?
• The checkpoint?
• Earlier?
Buffer Manager
48
Step 2: Recover Buffered Data
Save Dirty Page Table with Checkpoint
![Page 49: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/49.jpg)
Consistency• Record previous values with log entries
• Replay log in reverse (linked list of entries)
• Which Xacts do we undo?
• Which log entries do we undo?
• How far in the log do we need to go?
49
Step 3: Undo incomplete xacts
![Page 50: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/50.jpg)
Compensation Log Records• Problem: Step 3 is expensive!
• What if we crash during step 3?
• Optimization: Log undos as writes as they are performed (CLRs).
• Less repeat computation if we crash during recovery
• Shifts effort to step 2 (replay)
• CLRs don’t need to be undone!
50
![Page 51: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/51.jpg)
ARIES Crash Recovery• Start from checkpoint stored in
master record.
• Analysis: Rebuild the Xact Table
• Redo: Replay operations from all live Xacts (even uncommitted ones).
• Undo: Revert operations from all uncommitted/aborted Xacts.
51
Oldest log record of transaction active at crash
Smallest recLSN in dirty page table
after Analysis
Last Checkpoint
CRASH
A R U
![Page 52: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/52.jpg)
Recovery Example
52
LSN Log000510203040455060
begin_checkpointend_checkpointupdate: T1 writes P5update: T2 writes P3T1 Abort
T1 End
update: T2 writes P5
CLR Undo T1 LSN 10
update: T3 writes P1
PrevLSNs
CRASH! Restart!
![Page 53: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/53.jpg)
Analysis
53
LSN Log000510203040455060
begin_checkpointend_checkpointupdate: T1 writes P5update: T2 writes P3T1 Abort
T1 End
update: T2 writes P5
CLR Undo T1 LSN 10
update: T3 writes P1
Xact TableT1; <0
DP Table
P5; 10
T2; <0T1; 10T2; 20
P3; 20
T3; 50T2; 60
P1; 50
![Page 54: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/54.jpg)
Redo
54
LSN Log000510203040455060
begin_checkpointend_checkpointupdate: T1 writes P5update: T2 writes P3T1 Abort
T1 End
update: T2 writes P5
CLR Undo T1 LSN 10
update: T3 writes P1
Xact Table
DP Table
P5; 10P3; 20
T3; 50T2; 60
P1; 50
![Page 55: Logging & Recovery · 4/18/2017 · the xact’s effects are visible forever commit called but doesn’t return = the xact’s effects may be visible. Motivation 7 T1 T2 T3 T4 T5](https://reader036.fdocuments.net/reader036/viewer/2022063014/5fcfb3fd1cdbb9176e00034a/html5/thumbnails/55.jpg)
Undo
55
LSN Log00,05
102030
40, 45
5060
begin_checkpoint, end_checkpointupdate: T1 writes P5update: T2 writes P3T1 Abort
update: T2 writes P5
CLR Undo T1 LSN 10; T1 End
update: T3 writes P1
Xact Table
ToUndo
6050
T3; 50T2; 60
70 CRASH80
90,95CLR: Undo T2, LSN 60CLR: Undo T3, LSN 50; T3 End
CRASH! 20100 CRASH110 CLR: Undo T2, LSN 20; T2 End