Course contents
On this page
Lesson plan 24: Crash recovery and durable commit
Follow recovery from a checkpoint through redo and, where required, undo.
Placement: Part 4: Transactions, concurrency, and recovery.
Prerequisites: Lesson 23: Concurrent engine internals, plus the earlier dependency chain.
Learning outcomes
- Follow recovery from a checkpoint through redo and, where required, undo.
- Explain torn-write protection, checksums, log flushing, group commit, and restartable recovery.
- Calculate replay time and distinguish amortized flush cost from individual transaction latency.
- Separate a general mechanism, a documented implementation choice, and an illustrative numerical assumption.
Teaching sequence
- Establish the motivating situation: A crash interrupts a page write and leaves a complete commit record in the log.
- Introduce the vocabulary and the correctness obligation before an optimization. Define replay, checkpoints, torn writes.
- Develop the mechanism: Walk through analysis, redo, undo where required, and page-integrity handling; define durable acknowledgment.
- Follow the complete worked example: Replaying 120 GB at an effective 400 MB/s takes 300 s before other restart work. Explain the assumptions, intermediate units, and limiting interpretation.
- Extend the scenario to changed load, skew, or failure, explaining checksums, flushing, group commit, recovery time.
- Connect the mechanism to a documented implementation and an alternative with a different workload fit. Close by stating the remaining cost and the next lesson dependency.
Required chapter material
Use a complete execution trace or worked calculation, supported by an annotated static diagram or table. Include language-neutral pseudocode or labeled SQL when it clarifies the mechanism. State preconditions, ownership, visibility, and failure boundaries for algorithms. Describe operational costs as well as the normal path. All questions raised in the narrative must be resolved in the text.
Visual explanation
A crash matrix lists which log records and pages survived; a group-commit timeline shows several transactions sharing one flush while retaining their own wait intervals. The accompanying prose explains the arrows, state changes, or table entries so the lesson remains understandable in a plain Markdown reader.
Editorial checks
Confirm that the numerical example agrees with its units and assumptions. Check that a faster path preserves the stated contract, or explicitly identify the changed guarantee. Keep hypothetical figures separate from product measurements. Explain both an appropriate use and a limitation of the case design. Check terminology against the glossary and links against the course index.