KEMBAR78
ARIES Recovery Algorithms | PPSX
Repeating History Beyond ARIES
By C. Mohan
PRESENTED BY:
PULASTHI LANKESHWARA – 1158224B
11
Overview
 Introduction
 Background & Impact
 Recovery Methods
 Write Ahead Logging (WHL)
 Shadow Paging
 ARIES
 Logging
 Restart Recovery
 Analysis Phase
 Redo Phase
 Undo Phase
 Crashes During Restart
2
Introduction
 Transaction management is one of the most important functionalities provided by a
DBMS
 Two most important aspects of Transaction Management are
 Concurrency Control
 Recovery
3
Background & Impact
 Roadmap towards ARIES
 In mid-80’s IBM’s focus is on building a brand new relational DBMS with extensibility
 By that time DB2/MVS RDBMS used WAL (write ahead logging) for recovery
 SQL/DS used shadow paging for recovery
 But researches were unable to producing a recovery method that supported fine-
granularity. They used page as the smallest granularity of locking
 The original ARIES work, which was done in the mid-80s and publicly documented in
a research report form in 1989
4
Recovery Methods
Recovery Methods
Shadow Paging
Write Ahead
Logging (WAL)
5
Write Ahead Logging (WAL)
 The Atomic Rule: The log entry for an insert, update or delete must be written to disk
before the change is made to the DB
 The Durability Rule: All log entries for a transaction must be written to disk before the
commit record is written to disk
 In WAL Systems updated page is written back to the same disk location from which it was
read.
 Each log record is assigned, a unique log sequence number (LSN) at the time the record
is written to the log
 The LSN of the log record corresponding to the latest update to the page is placed in a
field in the page header
 Ex: All Log Record [prevLSN, TaID, type]
 Ex: Update Log Record [PrevLSN, TaID, “update”, pageID, redo info, undo info]
6
Shadow Paging
 First time a (logical) page is modified after a checkpoint and new physical page is
associated with it on disk.
 Later the page (the current version) is written to disk and it is written to the new
location
 The old physical page (the shadow version) associated with the (logical) page is not
discarded until the next checkpoint
 Restart recovery occurs from the shadow version of the page
 Once all the modified pages in the buffer pool & logs are written to disk , shadow
version is discarded
 Disadvantages:
 Checkpoints tend to be very expensive and disruptive
7
The ARIES Family of Algorithms
 ARIES algorithms support:
 High concurrency via fine-granularity locking
 Operation logging
 Efficient recovery
 Flexible storage
 Buffer management
 ARIES relate to:
 Nested transactions
 Index management
 Hashing
 Fast restart recovery
 Query processing and concurrency control
8
ARIES - Logging
 All Log Record [prevLSN, TaID, type]
 Update Log Record [PrevLSN, TaID, “update”, pageID, redo info, undo info]
DB Buffer Log
Page 42
Page 46
TT
TaID lastLSN
1 11:[-,1,”update”, 42, a+=1,a-=1]
DPT
pageID recoveryLSN
42 1
LSN=-
B=55
A=77
LSN=-
C=22
9
ARIES - Logging
 All Log Record [prevLSN, TaID, type]
 Update Log Record [PrevLSN, TaID, “update”, pageID, redo info, undo info]
DB Buffer Log
Page 42
Page 46
TT
TaID lastLSN
1 1
2 2
1:[-,1,”update”, 42, a+=1,a-=1]
2:[-,2,”update”, 42, b+=3,b-=3]
DPT
pageID recoveryLSN
42 1
LSN=1
B=55
A=78
LSN=-
C=22
10
ARIES - Logging
 All Log Record [prevLSN, TaID, type]
 Update Log Record [PrevLSN, TaID, “update”, pageID, redo info, undo info]
DB Buffer Log
Page 42
Page 46
TT
TaID lastLSN
1 1
2 2
3 3
1:[-,1,”update”, 42, a+=1,a-=1]
2:[-,2,”update”, 42, b+=3,b-=3]
3:[-,2,”update”, 42, c+=2,c-=2]
DPT
pageID recoveryLSN
42 1
46 3
LSN=2
B=58
A=78
LSN=3
C=24
11
ARIES -Restart Recovery
 Recovering will use WAL & the most recent checkpoint
 Write-ahead log
 The most recent checkpoint
 Compensation Log Records
 undoNextLSN: the LSN of the next log record that is to be undone
 Transaction table
 active (not committed) transactions
 lastLSNs: the LSN of the most recent log record for this transaction. (analysis)
 Used for undo
 Dirty page table
 dirty (not written to disk) pages
 recLSNs: LSN of the first log record that caused this page to become dirty
 Used for redo
12
ARIES -Restart Recovery
ARIES recovery involves three passes
 Analysis pass:
 Determine which transactions to undo
 Determine which pages were dirty (disk version not up to date)
at time of crash
 RedoLSN: LSN from which redo should start
 Redo pass:
 Repeats history, redoing all actions from RedoLSN
 RecLSN and PageLSNs are used to avoid redoing actions already
reflected on page
 Undo pass:
 Rolls back all incomplete transactions
 Transactions whose abort was complete earlier are not undone
13
ARIES -Restart Recovery: 3 Passes
 Analysis, redo and undo passes
 Analysis determines where redo should start
 Undo has to go back till start of earliest incomplete
transaction
Last checkpoint
Log
Time
End of Log
Analysis pass
Redo pass
Undo pass
14
Analysis Phase: Algorithm
1. Find the most recent begin_checkpoint log record.
2. Initialize transaction & dirty page tables from the ones saved in the most
recent checkpoint.
3. Scan forward the records from begin_checkpoint log record to the end
of the log. For each log record LSN, update trans_tab and
dirty_page_tab as follows:
 If we see an end log record for T, remove T from trans_tab.
 If we see a log record for T’ not in trans_tab, add T’ in trans_tab. If T’ is
in the trans_tab, then set T’s lastLSN field to LSN.
 If we see an update/CLR log record for page P and P is not in the dirty
page table, add P in dirty page table and set its recLSN to LSN.
15
Analysis Phase: Example (1)
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600
20 T2000 update P500
30 T1000 update P505
40 T2000 commit
System Crash
 After system crash,
both table are lost.
 No previous
checkpointing,
initialize tables to
empty.
pageID recLSN
Transaction Table Dirty Page
Table
transID lastLSN
16
Analysis Phase: Example (2)
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600
20 T2000 update P500
30 T1000 update P505
40 T2000 commit
System Crash
 Scanning log 00:
 Add T1000 to
transaction table.
 Add P500 to dirty
page table.
pageID recLSN
P500 00transID lastLSN
T1000 00
Transaction Table Dirty Page
Table
17
Analysis Phase: Example (3)
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600
20 T2000 update P500
30 T1000 update P505
40 T2000 commit
System Crash
 Scanning log 10:
 Add T2000 to
transaction table.
 Add P600 to dirty
page table.
pageID recLSN
P500 00
P600 10
transID lastLSN
T1000 00
T2000 10
Transaction Table Dirty Page
Table
18
Analysis Phase: Example (4)
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600
20 T2000 update P500
30 T1000 update P505
40 T2000 commit
System Crash
 Scanning log 20:
 Set lastLSN to 20
pageID recLSN
P500 00
P600 10
transID lastLSN
T1000 00
T2000 20
Transaction Table Dirty Page
Table
19
Analysis Phase: Example (5)
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600
20 T2000 update P500
30 T1000 update P505
40 T2000 commit
System Crash
 Scanning log 30:
 Add P505 to dirty
page table.
pageID recLSN
P500 00
P600 10
P505 30
transID lastLSN
T1000 30
T2000 20
Transaction Table Dirty Page
Table
20
Analysis Phase: Example (6)
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600
20 T2000 update P500
30 T1000 update P505
40 T2000 Commit
System Crash
 Scanning log 40:
 Remove T2000 from
transaction table.
 We are done!
 The redo point starts at 00.
 Why?
 P500 is the earliest log that
may not have been written to
disk before crash.
 We have restored
transaction table & dirty
page table.
pageID recLSN
P500 00
P600 10
P505 30
transID lastLSN
T1000 30
T2000 10
Transaction Table Dirty Page
Table
21
Redo Phase: Algorithm
 Scan forward from the redo point (LSN 00).
 For each update/CLR-undo log record LSN, perform redo unless one of the
conditions holds:
 The affected page is not in the dirty page table
 It is not dirty. So no need to redo.
 The affected page is in the dirty page table, but recLSN > LSN.
 The page’s recLSN (oldest log record causing this page to be dirty) is after
LSN.
 pageLSN >= LSN
 A later update on this page has been written (pageLSN = the most recent
LSN to update the page on disk).
22
Redo Phase: Example (1)
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600 (disk)
20 T2000 update P500
30 T1000 update P505
40 T2000 commit
System Crash
 Scan forward from the redo
point (LSN 00).
 Assume that P600 has been
written to disk.
 But it can still be in the dirty
page table.
 Scanning 00:
 P500 is in the dirty page
table.
 00(recLSN) = 00 (LSN)
 -10 (pageLSN) < 00 (LSN)
 Redo 00
 Scanning 10:
pageID recLSN
P500 00
P600 10
P505 30
transID lastLSN
T1000 30
Transaction Table Dirty Page
Table
23
Redo Phase: Example (2)
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600 (disk)
20 T2000 update P500
30 T1000 update P505
40 T2000 commit
System Crash
 Scanning 10:
 10 (pageLSN) == 10 (LSN)
 Do not redo 10
pageID recLSN
P500 00
P600 10
P505 30
transID lastLSN
T1000 30
Transaction Table Dirty Page
Table
24
Undo Phase: Algorithm
 It scans backward in time from the end of the log.
 It needs to undo all actions from active (not committed) transactions.
They are also called loser transactions.
 Same as aborting them.
 Analysis phase gives the set of loser transactions, called ToUndo set.
 Repeatedly choose the record with the largest LSN value in this set and
processes it, until ToUndo is empty.
 If it is a CLR and undoNextLSN value is not null, use undoNextLSN value in
ToUndo. If undoNextLSN is null, this transaction is completely undo.
 If it is an update record, a CLR is written and restore the data record value
to before-image. Use prevLSN value in ToUndo.
25
Undo Phase: Example (1)
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600 (disk)
20 T2000 update P500
30 T1000 update P505
40 T2000 commit
System Crash
 The only loser transaction is
T1000.
 ToUndo set is {T1000:30}
pageID recLSN
P500 00
P600 10
P505 30
transID lastLSN
T1000 30
Transaction Table Dirty Page
Table
26
Undo Phase: Example (2)
 The only loser transaction is T1000.
 ToUndo set is {T1000:30}
 Undoing LSN:30
 Write CLR:undo record log.
 ToUndo becomes {T1000:00}
 Undoing LSN:00
 Write CLR:undo record log.
 ToUndo becomes null.
 We are done.
LSN TransID Type PageID
00 T1000 update P500
10 T2000 update P600 (disk)
20 T2000 update P500
30 T1000 update P505
40 T2000 commit
System Crash
50 T1000 CLR:undo:30 P505
60 T1000 CLR:undo:00 P500
undoNextLSN
27
Crashes During Restart (1)
 After T1 aborts, undo actions from T1.
 Undo LSN #10: write CLR:undo record
log for LSN #10.
 Dirty pages:
 P1 (recLSN=50)
 P3(20)
 P5(10).
 Loser transaction:
 T2(lastLSN=60)
 T3(50)
 Redo phases starts at 10.
 Undo LSN #60.
LSN LOG
00, 05 begin_checkpoint,
end_checkpoint
10 Update: T1 write P5
20 Update: T2 writes P3
30 T1 aborts
40, 45 CLR: Undo T1 LSN 10, T1 end
50 Update: T3 writes P1
60 Update: T2 writes P5
CRASH, RESTART
70 CLR: Undo T2 LSN 60
80, 85 CLR: Undo T3 LSN 50, T3 end
CRASH, RESTART
90,95 CLR: Undo T2 LSN 20, T2 end
undoNextLSN
28
Crashes During Restart (2)
 Undo LSN #50: write CLR: undo record
log.
 T3 is completely undone.
 LSN #85,80,70 are written to stable
storage.
 Crash occurs after restart.
 Loser transaction is T2.
 Read LSN #70, set ToUndo to #20.
 Undo #20: write another CLR.
 Done
LSN LOG
00, 05 begin_checkpoint,
end_checkpoint
10 Update: T1 write P5
20 Update: T2 writes P3
30 T1 aborts
40, 45 CLR: Undo T1 LSN 10, T1 end
50 Update: T3 writes P1
60 Update: T2 writes P5
CRASH, RESTART
70 CLR: Undo T2 LSN 60
80, 85 CLR: Undo T3 LSN 50, T3 end
CRASH, RESTART
90,95 CLR: Undo T2 LSN 20, T2 end
undoNextLSN
29
Thank You ….
30

ARIES Recovery Algorithms

  • 1.
    Repeating History BeyondARIES By C. Mohan PRESENTED BY: PULASTHI LANKESHWARA – 1158224B 11
  • 2.
    Overview  Introduction  Background& Impact  Recovery Methods  Write Ahead Logging (WHL)  Shadow Paging  ARIES  Logging  Restart Recovery  Analysis Phase  Redo Phase  Undo Phase  Crashes During Restart 2
  • 3.
    Introduction  Transaction managementis one of the most important functionalities provided by a DBMS  Two most important aspects of Transaction Management are  Concurrency Control  Recovery 3
  • 4.
    Background & Impact Roadmap towards ARIES  In mid-80’s IBM’s focus is on building a brand new relational DBMS with extensibility  By that time DB2/MVS RDBMS used WAL (write ahead logging) for recovery  SQL/DS used shadow paging for recovery  But researches were unable to producing a recovery method that supported fine- granularity. They used page as the smallest granularity of locking  The original ARIES work, which was done in the mid-80s and publicly documented in a research report form in 1989 4
  • 5.
    Recovery Methods Recovery Methods ShadowPaging Write Ahead Logging (WAL) 5
  • 6.
    Write Ahead Logging(WAL)  The Atomic Rule: The log entry for an insert, update or delete must be written to disk before the change is made to the DB  The Durability Rule: All log entries for a transaction must be written to disk before the commit record is written to disk  In WAL Systems updated page is written back to the same disk location from which it was read.  Each log record is assigned, a unique log sequence number (LSN) at the time the record is written to the log  The LSN of the log record corresponding to the latest update to the page is placed in a field in the page header  Ex: All Log Record [prevLSN, TaID, type]  Ex: Update Log Record [PrevLSN, TaID, “update”, pageID, redo info, undo info] 6
  • 7.
    Shadow Paging  Firsttime a (logical) page is modified after a checkpoint and new physical page is associated with it on disk.  Later the page (the current version) is written to disk and it is written to the new location  The old physical page (the shadow version) associated with the (logical) page is not discarded until the next checkpoint  Restart recovery occurs from the shadow version of the page  Once all the modified pages in the buffer pool & logs are written to disk , shadow version is discarded  Disadvantages:  Checkpoints tend to be very expensive and disruptive 7
  • 8.
    The ARIES Familyof Algorithms  ARIES algorithms support:  High concurrency via fine-granularity locking  Operation logging  Efficient recovery  Flexible storage  Buffer management  ARIES relate to:  Nested transactions  Index management  Hashing  Fast restart recovery  Query processing and concurrency control 8
  • 9.
    ARIES - Logging All Log Record [prevLSN, TaID, type]  Update Log Record [PrevLSN, TaID, “update”, pageID, redo info, undo info] DB Buffer Log Page 42 Page 46 TT TaID lastLSN 1 11:[-,1,”update”, 42, a+=1,a-=1] DPT pageID recoveryLSN 42 1 LSN=- B=55 A=77 LSN=- C=22 9
  • 10.
    ARIES - Logging All Log Record [prevLSN, TaID, type]  Update Log Record [PrevLSN, TaID, “update”, pageID, redo info, undo info] DB Buffer Log Page 42 Page 46 TT TaID lastLSN 1 1 2 2 1:[-,1,”update”, 42, a+=1,a-=1] 2:[-,2,”update”, 42, b+=3,b-=3] DPT pageID recoveryLSN 42 1 LSN=1 B=55 A=78 LSN=- C=22 10
  • 11.
    ARIES - Logging All Log Record [prevLSN, TaID, type]  Update Log Record [PrevLSN, TaID, “update”, pageID, redo info, undo info] DB Buffer Log Page 42 Page 46 TT TaID lastLSN 1 1 2 2 3 3 1:[-,1,”update”, 42, a+=1,a-=1] 2:[-,2,”update”, 42, b+=3,b-=3] 3:[-,2,”update”, 42, c+=2,c-=2] DPT pageID recoveryLSN 42 1 46 3 LSN=2 B=58 A=78 LSN=3 C=24 11
  • 12.
    ARIES -Restart Recovery Recovering will use WAL & the most recent checkpoint  Write-ahead log  The most recent checkpoint  Compensation Log Records  undoNextLSN: the LSN of the next log record that is to be undone  Transaction table  active (not committed) transactions  lastLSNs: the LSN of the most recent log record for this transaction. (analysis)  Used for undo  Dirty page table  dirty (not written to disk) pages  recLSNs: LSN of the first log record that caused this page to become dirty  Used for redo 12
  • 13.
    ARIES -Restart Recovery ARIESrecovery involves three passes  Analysis pass:  Determine which transactions to undo  Determine which pages were dirty (disk version not up to date) at time of crash  RedoLSN: LSN from which redo should start  Redo pass:  Repeats history, redoing all actions from RedoLSN  RecLSN and PageLSNs are used to avoid redoing actions already reflected on page  Undo pass:  Rolls back all incomplete transactions  Transactions whose abort was complete earlier are not undone 13
  • 14.
    ARIES -Restart Recovery:3 Passes  Analysis, redo and undo passes  Analysis determines where redo should start  Undo has to go back till start of earliest incomplete transaction Last checkpoint Log Time End of Log Analysis pass Redo pass Undo pass 14
  • 15.
    Analysis Phase: Algorithm 1.Find the most recent begin_checkpoint log record. 2. Initialize transaction & dirty page tables from the ones saved in the most recent checkpoint. 3. Scan forward the records from begin_checkpoint log record to the end of the log. For each log record LSN, update trans_tab and dirty_page_tab as follows:  If we see an end log record for T, remove T from trans_tab.  If we see a log record for T’ not in trans_tab, add T’ in trans_tab. If T’ is in the trans_tab, then set T’s lastLSN field to LSN.  If we see an update/CLR log record for page P and P is not in the dirty page table, add P in dirty page table and set its recLSN to LSN. 15
  • 16.
    Analysis Phase: Example(1) LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 20 T2000 update P500 30 T1000 update P505 40 T2000 commit System Crash  After system crash, both table are lost.  No previous checkpointing, initialize tables to empty. pageID recLSN Transaction Table Dirty Page Table transID lastLSN 16
  • 17.
    Analysis Phase: Example(2) LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 20 T2000 update P500 30 T1000 update P505 40 T2000 commit System Crash  Scanning log 00:  Add T1000 to transaction table.  Add P500 to dirty page table. pageID recLSN P500 00transID lastLSN T1000 00 Transaction Table Dirty Page Table 17
  • 18.
    Analysis Phase: Example(3) LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 20 T2000 update P500 30 T1000 update P505 40 T2000 commit System Crash  Scanning log 10:  Add T2000 to transaction table.  Add P600 to dirty page table. pageID recLSN P500 00 P600 10 transID lastLSN T1000 00 T2000 10 Transaction Table Dirty Page Table 18
  • 19.
    Analysis Phase: Example(4) LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 20 T2000 update P500 30 T1000 update P505 40 T2000 commit System Crash  Scanning log 20:  Set lastLSN to 20 pageID recLSN P500 00 P600 10 transID lastLSN T1000 00 T2000 20 Transaction Table Dirty Page Table 19
  • 20.
    Analysis Phase: Example(5) LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 20 T2000 update P500 30 T1000 update P505 40 T2000 commit System Crash  Scanning log 30:  Add P505 to dirty page table. pageID recLSN P500 00 P600 10 P505 30 transID lastLSN T1000 30 T2000 20 Transaction Table Dirty Page Table 20
  • 21.
    Analysis Phase: Example(6) LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 20 T2000 update P500 30 T1000 update P505 40 T2000 Commit System Crash  Scanning log 40:  Remove T2000 from transaction table.  We are done!  The redo point starts at 00.  Why?  P500 is the earliest log that may not have been written to disk before crash.  We have restored transaction table & dirty page table. pageID recLSN P500 00 P600 10 P505 30 transID lastLSN T1000 30 T2000 10 Transaction Table Dirty Page Table 21
  • 22.
    Redo Phase: Algorithm Scan forward from the redo point (LSN 00).  For each update/CLR-undo log record LSN, perform redo unless one of the conditions holds:  The affected page is not in the dirty page table  It is not dirty. So no need to redo.  The affected page is in the dirty page table, but recLSN > LSN.  The page’s recLSN (oldest log record causing this page to be dirty) is after LSN.  pageLSN >= LSN  A later update on this page has been written (pageLSN = the most recent LSN to update the page on disk). 22
  • 23.
    Redo Phase: Example(1) LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 (disk) 20 T2000 update P500 30 T1000 update P505 40 T2000 commit System Crash  Scan forward from the redo point (LSN 00).  Assume that P600 has been written to disk.  But it can still be in the dirty page table.  Scanning 00:  P500 is in the dirty page table.  00(recLSN) = 00 (LSN)  -10 (pageLSN) < 00 (LSN)  Redo 00  Scanning 10: pageID recLSN P500 00 P600 10 P505 30 transID lastLSN T1000 30 Transaction Table Dirty Page Table 23
  • 24.
    Redo Phase: Example(2) LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 (disk) 20 T2000 update P500 30 T1000 update P505 40 T2000 commit System Crash  Scanning 10:  10 (pageLSN) == 10 (LSN)  Do not redo 10 pageID recLSN P500 00 P600 10 P505 30 transID lastLSN T1000 30 Transaction Table Dirty Page Table 24
  • 25.
    Undo Phase: Algorithm It scans backward in time from the end of the log.  It needs to undo all actions from active (not committed) transactions. They are also called loser transactions.  Same as aborting them.  Analysis phase gives the set of loser transactions, called ToUndo set.  Repeatedly choose the record with the largest LSN value in this set and processes it, until ToUndo is empty.  If it is a CLR and undoNextLSN value is not null, use undoNextLSN value in ToUndo. If undoNextLSN is null, this transaction is completely undo.  If it is an update record, a CLR is written and restore the data record value to before-image. Use prevLSN value in ToUndo. 25
  • 26.
    Undo Phase: Example(1) LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 (disk) 20 T2000 update P500 30 T1000 update P505 40 T2000 commit System Crash  The only loser transaction is T1000.  ToUndo set is {T1000:30} pageID recLSN P500 00 P600 10 P505 30 transID lastLSN T1000 30 Transaction Table Dirty Page Table 26
  • 27.
    Undo Phase: Example(2)  The only loser transaction is T1000.  ToUndo set is {T1000:30}  Undoing LSN:30  Write CLR:undo record log.  ToUndo becomes {T1000:00}  Undoing LSN:00  Write CLR:undo record log.  ToUndo becomes null.  We are done. LSN TransID Type PageID 00 T1000 update P500 10 T2000 update P600 (disk) 20 T2000 update P500 30 T1000 update P505 40 T2000 commit System Crash 50 T1000 CLR:undo:30 P505 60 T1000 CLR:undo:00 P500 undoNextLSN 27
  • 28.
    Crashes During Restart(1)  After T1 aborts, undo actions from T1.  Undo LSN #10: write CLR:undo record log for LSN #10.  Dirty pages:  P1 (recLSN=50)  P3(20)  P5(10).  Loser transaction:  T2(lastLSN=60)  T3(50)  Redo phases starts at 10.  Undo LSN #60. LSN LOG 00, 05 begin_checkpoint, end_checkpoint 10 Update: T1 write P5 20 Update: T2 writes P3 30 T1 aborts 40, 45 CLR: Undo T1 LSN 10, T1 end 50 Update: T3 writes P1 60 Update: T2 writes P5 CRASH, RESTART 70 CLR: Undo T2 LSN 60 80, 85 CLR: Undo T3 LSN 50, T3 end CRASH, RESTART 90,95 CLR: Undo T2 LSN 20, T2 end undoNextLSN 28
  • 29.
    Crashes During Restart(2)  Undo LSN #50: write CLR: undo record log.  T3 is completely undone.  LSN #85,80,70 are written to stable storage.  Crash occurs after restart.  Loser transaction is T2.  Read LSN #70, set ToUndo to #20.  Undo #20: write another CLR.  Done LSN LOG 00, 05 begin_checkpoint, end_checkpoint 10 Update: T1 write P5 20 Update: T2 writes P3 30 T1 aborts 40, 45 CLR: Undo T1 LSN 10, T1 end 50 Update: T3 writes P1 60 Update: T2 writes P5 CRASH, RESTART 70 CLR: Undo T2 LSN 60 80, 85 CLR: Undo T3 LSN 50, T3 end CRASH, RESTART 90,95 CLR: Undo T2 LSN 20, T2 end undoNextLSN 29
  • 30.