-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Engines - Persistence
-
None
-
None
With WiredTiger returning to point-in-time checkpoints, it is possible for a checkpoint to know exactly the require point-in-time before it starts. We could do a pass over all content in cache after choosing a checkpoint time, but before starting the actual checkpoint and pre-reconcile all (or all leaf) pages.
If that pre-flush phase is adequate, then the checkpoint itself should only need to write the root pages (or some other similarly small set of pages).
There is some design involved in implementing this ticket. We need to be careful in changing the checkpoint walk logic - there are subtle correctness requirements about the order of flushing leaf and internal pages which mean it is unlikely that this optimization could simply write root pages for changed trees. It would be appealing if we could figure out how to just walk in-memory pages and check to ensure their reconciliations satisfy the checkpoint requirements.