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, which includes 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