Fuzzy Checkpointing
Make checkpoints cheap by avoiding synchronized flushing of dirty cache at checkpoint time.
- Stop accepting new update, commit, and abort operations
- Make a list of all dirty pages in cache
- Make list of [active transaction, pointer to last log record]
- Append a checkpoint record to log; include the list
- Resume normal processing
- Initiate low priority flush of all dirty pages
Don’t checkpoint again until all of the last checkpoint’s dirty pages are flushed
Restart begins at second-to-last (penultimate) checkpoint.
Checkpoint frequency depends on disk bandwidth