Avoid marking btree and internal page dirty when instantiating updates on page read

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Minor - P4
    • None
    • Affects Version/s: None
    • Component/s: Btree
    • Storage Engines - Transactions
    • 412.571
    • SE Transactions - 2026-07-17
    • 3

      Problem

      When reading a page from disk into cache, if an update is instantiated onto the update chain, the code marks the btree dirty, the parent internal page dirty, and the leaf page dirty. The leaf page is then immediately marked clean again — but the btree and parent internal page remain dirty.

      This causes checkpoints to unnecessarily write this tree even though no user-visible changes have occurred, wasting I/O and CPU.

      Expected Behavior

      Instantiating updates on page read is an internal bookkeeping operation. The btree and parent internal page should not be dirtied as a result, since the leaf page itself ends up clean. Checkpoints should not consider this tree modified.

      Proposed Fix

      Avoid marking the btree and internal page dirty in the first place when instantiating updates during a page read. Since the leaf page is subsequently marked clean, the dirty propagation up the tree is unnecessary and should be skipped.

      Impact

      Reduces unnecessary checkpoint work for trees that have had pages read from disk with instantiated updates but no actual user modifications.

            Assignee:
            [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            Chenhao Qu
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: