2) X State XX the XXXXXX XXXXXX Crash XXX XXXXX XX the XXXXXX right XXXXXX the crash XX XX follows: Transaction XXXXX: transID XXXXXXX XXXXXX XX X XXXXXXX (i.e. XX Progress) Transaction T1 gets XXXXXXX XXXX the table XXXXX XX force-XXXXX (i.e., XXXXX XXX XXX to XXXX) XXX commit log XXXXXX. Right XXXXXX XXXXX removed, XX had an XXXXX in XXX table XXXX l status committed. Dirty XXXX XXXXX: XXXXXX recLSN P1 X P2 X XXX: LSN XXXXXXX XXXXXXX type XXXXXX XXX entry XXXXXXXXXXX X XX - Update XX - X XX - Update P2 - X T3 X Update XX - 4 XX 1 Update XX - 5 T1 4 Commit - - X T2 3 Abort XX - 7 T1 X End - - - 3) Redo Phase The XXXX XXXXX starts XX XXX rstLSN, which XX the smallest XXX in XXX Dirty Page Table. In this example, it's XXX X. For each XXXXXXXX log XXXXXX (XXXXXX or CLR), XXX redo XXXXX redoes the XXXXXX if XXXXXXXXX. To check if XXX system needs to reapply XXX XXXXXX XX the page, it rst checks if the XXXX XX in XXX Dirty Page Table. If it XX in the table, then it XXXXXX XXXX the XXXXXX for XXX page XX XXXXX or equal to the LSN of the XXXXXX XXXXX consideration. If XXXX XX XXX XXXX, then nally XXX system reads the page from disk XXX checks XX the XXXXXXX is XXXXXXXX smaller than XXX XXXXXXX XXX. XX that XX the XXXX XXXX it redoes XXX XXXXXX. Otherwise, it skips XXX change. XX XXX example, we get XXX following: LSN 1: XXXXXX. LSN 2: XXXXXX XXX X: No XXXX to redo XXXXXXX XXXX LSN XX X already. XXX 4: XXXXXX XXX X: XXXXXXX XX this point, the XXXXXX is XXXX in the state at XXX XXXX when XXX XXXX of the XXX was XXXX XXXXX to XXXX. XXX XXXXXX XXX XXX XXXXX an END XXXX XXXXXX for T1. This XXXXXX will XXXX XXX X. T1 XXX XXXX be removed XXXX XXX XXXXXXXXXXX XXXXX. X) The system XXXX undo XX. It's XXX only XXXXXXXXXXX in XXX XXXXXXXXXXX XXXXX. XXX lastLSN is 3. So XX start XXXX XX XXXX XXX X. XXXXX is no XXXX to XXXXX an abort XXX record during XXXX. The system XXX XXXXX CLRs XXXXXXXX: 5 Second Crash XXX's consider XXXXXXX XXXXXXXXX for a second XXXXX: XXXXXX crashes XXXXXXX having XXXXXXX XXX of the XXX log entries or XXXXX to XXXX: In XXXX XXXX, the XXXXXX XXXX XXXX XXX XXXXXXXX, redo, XXX XXXX XXXXXX in exactly the XXXX XXX as we did XXXXX. XXXXXX ushes XXX log to XXXX, except for T2's XXX XXX XXXXXX: XX XXXX XXXX, XX the XXX XX XXX analysis phase, XXXX T2 XX in XXX XXXXXXXXXXX Table. XX XXXX the same XXXXX XXXX Table. XXX redo XXXXX XX XXX same XX XXXXX XXXXX LSN 5. For LSN 6, XXX system does nothing. XXX XXX X, XX we previously ushed XXX XXXX to XXXX, then XX skip it. Otherwise, XX XXXXXXX the XXXXXX. Same for LSN 8. Finally, XXX XXXX XXXXX XXXX undo T2. It nds a CLR for T2 XXXXXXX any XXXXXXXXXXX. So it XXXXXX an END log record XXXXXXXX. System ushed the entire new XXX to XXXX: XX that XXXX, the XXXXXXXXXXXX table XX the end XX the analysis phase is empty and the system XXXXX XXX undo anything. XXXXXX crashes XXXXX ushing CLR XXXX XXX 7. XX XXXX case, the XXXX XXXXX starts XXXX that CLR when undoing T2. It XXXXXXXX XXXXXXX the undo XXXXXXX XXXXXXX. XX XXXX XXX XXXXXX XXX and END XXX XXXXXXX.