Click here to load reader
Upload
pulasthi-lankeshwara
View
1.536
Download
0
Embed Size (px)
Citation preview
ARIES Recovery Algorithm
Repeating History Beyond ARIES
By C. Mohan
PRESENTED BY: Pulasthi lankeshwara 1158224B11
1
Overview
IntroductionBackground & ImpactRecovery MethodsWrite Ahead Logging (WHL)Shadow PagingARIESLoggingRestart RecoveryAnalysis PhaseRedo PhaseUndo PhaseCrashes During Restart2
IntroductionTransaction management is one of the most important functionalities provided by a DBMS
Two most important aspects of Transaction Management areConcurrency ControlRecovery
3
Background & Impact
Roadmap towards ARIESIn mid-80s IBMs focus is on building a brand new relational DBMS with extensibilityBy that time DB2/MVS RDBMS used WAL (write ahead logging) for recoverySQL/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 lockingThe original ARIES work, which was done in the mid-80s and publicly documented in a research report form in 19894
Recovery MethodsRecovery Methods
Shadow PagingWrite 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 DBThe 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 logThe 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 locationThe old physical page (the shadow version) associated with the (logical) page is not discarded until the next checkpointRestart recovery occurs from the shadow version of the pageOnce 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 AlgorithmsARIES algorithms support:High concurrency via fine-granularity lockingOperation loggingEfficient recoveryFlexible storageBuffer management
ARIES relate to:Nested transactionsIndex managementHashingFast restart recoveryQuery processing and concurrency control
8
ARIES - LoggingAll Log Record [prevLSN, TaID, type]Update Log Record [PrevLSN, TaID, update, pageID, redo info, undo info]DB BufferLogPage 42
Page 46TTTaIDlastLSN11
1:[-,1,update, 42, a+=1,a-=1]
DPTpageIDrecoveryLSN421
LSN=-B=55A=77LSN=-C=229
ARIES - LoggingAll Log Record [prevLSN, TaID, type]Update Log Record [PrevLSN, TaID, update, pageID, redo info, undo info]DB BufferLogPage 42
Page 46TTTaIDlastLSN1122
1:[-,1,update, 42, a+=1,a-=1]2:[-,2,update, 42, b+=3,b-=3]
DPTpageIDrecoveryLSN421
LSN=1B=55A=78LSN=-C=2210
ARIES - LoggingAll Log Record [prevLSN, TaID, type]Update Log Record [PrevLSN, TaID, update, pageID, redo info, undo info]DB BufferLogPage 42
Page 46TTTaIDlastLSN112233
1:[-,1,update, 42, a+=1,a-=1]2:[-,2,update, 42, b+=3,b-=3]3:[-,2,update, 42, c+=2,c-=2]
DPTpageIDrecoveryLSN421463
LSN=2B=58A=78LSN=3C=2411
ARIES -Restart RecoveryRecovering will use WAL & the most recent checkpointWrite-ahead logThe most recent checkpointCompensation Log Records undoNextLSN: the LSN of the next log record that is to be undoneTransaction tableactive (not committed) transactionslastLSNs: the LSN of the most recent log record for this transaction. (analysis)Used for undoDirty page tabledirty (not written to disk) pagesrecLSNs: LSN of the first log record that caused this page to become dirtyUsed for redo12
ARIES -Restart RecoveryARIES recovery involves three passesAnalysis pass: Determine which transactions to undoDetermine which pages were dirty (disk version not up to date) at time of crashRedoLSN: LSN from which redo should startRedo 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 transactionsTransactions whose abort was complete earlier are not undone13
ARIES -Restart Recovery: 3 PassesAnalysis, redo and undo passesAnalysis determines where redo should startUndo has to go back till start of earliest incomplete transaction
Last checkpointLog
Time
End of LogAnalysis pass
Redo pass
Undo pass14
Analysis Phase: AlgorithmFind the most recent begin_checkpoint log record.
Initialize transaction & dirty page tables from the ones saved in the most recent checkpoint.
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 Ts 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)LSNTransIDTypePageID00T1000updateP50010T2000updateP60020T2000updateP50030T1000updateP50540T2000commitSystem Crash
After system crash, both table are lost.No previous checkpointing, initialize tables to empty.
pageIDrecLSN
Transaction TableDirty PageTabletransIDlastLSN
16
Analysis Phase: Example (2)LSNTransIDTypePageID00T1000updateP50010T2000updateP60020T2000updateP50030T1000updateP50540T2000commitSystem Crash
Scanning log 00:Add T1000 to transaction table.Add P500 to dirty page table.
pageIDrecLSNP50000
transIDlastLSNT100000
Transaction TableDirty PageTable17
Analysis Phase: Example (3)LSNTransIDTypePageID00T1000updateP50010T2000updateP60020T2000updateP50030T1000updateP50540T2000commitSystem Crash
Scanning log 10:Add T2000 to transaction table.Add P600 to dirty page table.
pageIDrecLSNP50000P60010
transIDlastLSNT100000T200010
Transaction TableDirty PageTable18
Analysis Phase: Example (4)LSNTransIDTypePageID00T1000updateP50010T2000updateP60020T2000updateP50030T1000updateP50540T2000commitSystem Crash
Scanning log 20:Set lastLSN to 20
pageIDrecLSNP50000P60010
transIDlastLSNT100000T200020
Transaction TableDirty Page Table19
Analysis Phase: Example (5)LSNTransIDTypePageID00T1000updateP50010T2000updateP60020T2000updateP50030T1000updateP50540T2000commitSystem Crash
Scanning log 30:Add P505 to dirty page table.
pageIDrecLSNP50000P60010P50530
transIDlastLSNT100030T200020
Transaction TableDirty PageTable20
Analysis Phase: Example (6)LSNTransIDTypePageID00T1000updateP50010T2000updateP60020T2000updateP50030T1000updateP50540T2000CommitSystem 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.pageIDrecLSNP50000P60010P50530
transIDlastLSNT100030T200010
Transaction TableDirty PageTable
21
Redo Phase: AlgorithmScan 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 tableIt is not dirty. So no need to redo.The affected page is in the dirty page table, but recLSN > LSN.The pages recLSN (oldest log record causing this page to be dirty) is after LSN.pageLSN >= LSNA later update on this page has been written (pageLSN = the most recent LSN to update the page on disk).22
Redo Phase: Example (1)LSNTransIDTypePageID00T1000updateP50010T2000updateP600 (disk)20T2000updateP50030T1000updateP50540T2000commitSystem 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 00Scanning 10:
pageIDrecLSNP50000P60010P50530
transIDlastLSNT100030
Transaction TableDirty PageTable23
Redo Phase: Example (2)LSNTransIDTypePageID00T1000updateP50010T2000updateP600 (disk)20T2000updateP50030T1000updateP50540T2000commitSystem Crash
Scanning 10:10 (pageLSN) == 10 (LSN)Do not redo 10pageIDrecLSNP50000P60010P50530
transIDlastLSNT100030
Transaction TableDirty PageTable24
Undo Phase: AlgorithmIt 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)LSNTransIDTypePageID00T1000updateP50010T2000updateP600 (disk)20T2000updateP50030T1000updateP50540T2000commitSystem Crash
The only loser transaction is T1000.ToUndo set is {T1000:30}
pageIDrecLSNP50000P60010P50530
transIDlastLSNT100030
Transaction TableDirty PageTable26
Undo Phase: Example (2)The only loser transaction is T1000.ToUndo set is {T1000:30}Undoing LSN:30Write CLR:undo record log.ToUndo becomes {T1000:00}Undoing LSN:00Write CLR:undo record log.ToUndo becomes null.We are done.
LSNTransIDTypePageID00T1000updateP50010T2000updateP600 (disk)20T2000updateP50030T1000updateP50540T2000commitSystem Crash50T1000CLR:undo:30P50560T1000CLR:undo:00P500
undoNextLSN27
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. LSNLOG00, 05begin_checkpoint, end_checkpoint10Update: T1 write P520Update: T2 writes P330T1 aborts40, 45CLR: Undo T1 LSN 10, T1 end50Update: T3 writes P160Update: T2 writes P5CRASH, RESTART70CLR: Undo T2 LSN 6080, 85CLR: Undo T3 LSN 50, T3 endCRASH, RESTART90,95CLR: Undo T2 LSN 20, T2 end
undoNextLSN28
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
LSNLOG00, 05begin_checkpoint, end_checkpoint10Update: T1 write P520Update: T2 writes P330T1 aborts40, 45CLR: Undo T1 LSN 10, T1 end50Update: T3 writes P160Update: T2 writes P5CRASH, RESTART70CLR: Undo T2 LSN 6080, 85CLR: Undo T3 LSN 50, T3 endCRASH, RESTART90,95CLR: Undo T2 LSN 20, T2 end
undoNextLSN
29
Thank You .
30