ARIES Overview 3 phases –Analysis Reconstruct dirtyPg, xaction tables Find redoLSN –Min(recLSN) in dirtyPgTable Start from last checkpoint, scan forward After analysis, conservative estimate of dirtyPgTable lastLSNTID …… 43 xactionTable pgNorecLSN A2 B3 …… E13 dirtyPgTable xactionTable 0 dirtyPgTable 0 Checkpoint PagepageLSN A2 B3 Disk
ARIES Overview –Redo Replay log from redoLSN Replay all updates -- “Repeating History” –Idempotent thanks to pageLSN –Optimizations that allow us to avoid some writes Physical logging : e.g., exact bytes, or byte-level diff lastLSNTID …… 43 xactionTable pgNorecLSN A2 B3 …… E13 dirtyPgTable xactionTable 0 dirtyPgTable 0 Checkpoint PagepageLSN A2 B3 Disk 3 phases – Analysis
ARIES Overview –Undo Just undo “losers” –Xactions in the xaction table –Start at lastLSN, follow prevLSNs in the log Logical UNDO -- e.g., “Remove record i, pg k” Write CLRs as we go –Allow us to avoid multiple UNDOs lastLSNTID …… 43 xactionTable pgNorecLSN A2 B3 …… E13 dirtyPgTable xactionTable 0 dirtyPgTable 0 Checkpoint PagepageLSN A2 B3 Disk Analysis Redo Undo Min(SOT losers ) redoLSN checkpoint 3 phases – Analysis – Redo
UNDO with CLR LSNTypeTidPrevLSNData 5SOT3 6UP13C 7SOT2 8UP27A 9EOT16 10UP35B 11UP28D 12EOT211 13UP310E Losers: 3
UNDO with CLR LSNTypeTidPrevLSNData 5SOT3 6UP13C 7SOT2 8UP27A 9EOT16 10UP35B 11UP28D 12EOT211 13UP310E
UNDO with CLR LSNTypeTidPrevLSNData 5SOT3 6UP13C 7SOT2 8UP27A 9EOT16 10UP35B 11UP28D 12EOT211 13UP310E 14CLR31310
UNDO with CLR LSNTypeTidPrevLSNData 5SOT3 6UP13C 7SOT2 8UP27A 9EOT16 10UP35B 11UP28D 12EOT211 13UP310E 14CLR31310
UNDO with CLR LSNTypeTidPrevLSNData 5SOT3 6UP13C 7SOT2 8UP27A 9EOT16 10UP35B 11UP28D 12EOT211 13UP310E 14CLR CLR3145
UNDO with CLR LSNTypeTidPrevLSNData 5SOT3 6UP13C 7SOT2 8UP27A 9EOT16 10UP35B 11UP28D 12EOT211 13UP310E 14CLR CLR3145
UNDO with CLR LSNTypeTidPrevLSNData 5SOT3 6UP13C 7SOT2 8UP27A 9EOT16 10UP35B 11UP28D 12EOT211 13UP310E 14CLR CLR3145
UNDO with CLR LSNTypeTidPrevLSNData 5SOT3 6UP13C 7SOT2 8UP27A 9EOT16 10UP35B 11UP28D 12EOT211 13UP310E 14CLR CLR EOT315
Why Physiological? Why do we do physical REDO? (Hint: ARIES is !ATOMIC) –System not “action consistent” at crash Why do we do logical UNDO? –More compact records –Physical layout may be different at UNDO time E.g., suppose additional records in index since record was written Why do we “repeat history”? –So that we can use physical REDO If an action is redone, we have exactly the same layout on disk –pageLSN on disk lets us determine this