<!-- llms-explorer concept facts · https://llms-explorer.com/tree/reconciliation-and-page-splitting/ · pack 2026-10-23 · ~1444 tokens -->

# Reconciliation and Page Splitting

> Source-anchored research for Reconciliation and Page Splitting. Run status: COMPLETED.

Parent: [WiredTiger Storage Engine Internals](https://llms-explorer.com/tree/wiredtiger-storage-engine-internals/) · 6 facets · 17 facts · page: https://llms-explorer.com/tree/reconciliation-and-page-splitting/

## Definitions

- The development Architecture Guide explicitly warns that it is not updated in lockstep with implementation and may be incomplete or incorrect for a particular release. Check release-specific code before treating its structural descriptions as exact implementation contracts. (high confidence) (verified as of 2026-10-23) — [source](https://source.wiredtiger.com/develop/arch-btree.html)

## Structure and components

- The historical February 2014 in-memory split design publishes a replacement parent index array atomically, marks the old reference WT_REF_SPLIT, and makes blocked traversals reconsider their position. These are historical design details, not a guarantee of current structure layouts. (low confidence) — [source](https://github.com/wiredtiger/wiredtiger/wiki/In-memory-Page-Splits)

## How it works

- In WiredTiger 11.0.0 documentation, split_pct determines the target fraction of page maximum when splitting is necessary; it is ignored when the image fits one page. Splitting precedes block compression. (low confidence) — [source](https://source.wiredtiger.com/11.0.0/tune_page_size_and_comp.html)
- memory_page_max is not an absolute memory ceiling: application threads attempt forced eviction when a page grows too large, but unsuccessful eviction can let it temporarily exceed the configured size. (low confidence) — [source](https://source.wiredtiger.com/11.0.0/tune_page_size_and_comp.html)
- Percona’s August 2024 support account observes secondary-node disk growth alongside aggressive eviction. It proposes memory pressure and extra page splitting as the cause; the post labels that mechanism a theory. (low confidence) — [source](https://www.percona.com/blog/addressing-data-size-differences-in-mongodb-replica-set-nodes/)

## Problems, failure modes and limitations

- Haas and Leis identify reconciliation’s representation conversion as a CPU expense on fast storage. Their 2023 NVMe study used WiredTiger 3.2.1, disabled logging, and selected minimal isolation; its performance results cannot establish present MongoDB throughput. (low confidence) — [source](https://vldb.org/pvldb/vol16/p2090-haas.pdf)

## Comparisons and alternatives

- Reconciliation runs during dirty-page eviction and checkpoints. In the conventional block-based architecture described in the 2022 paper, it writes new blocks rather than overwriting existing disk blocks in place. (high confidence) — [source](https://people.ece.ubc.ca/~sasha/papers/socc22.pdf)
- Forced eviction can involve application threads. Exclusive page access during splitting or eviction can delay operations, making page-size tuning a latency and throughput tradeoff. (high confidence) — [source](https://source.wiredtiger.com/11.0.0/tune_page_size_and_comp.html)

## Facts and statements

- Reconciliation can run during a checkpoint or dirty-page eviction; clean eviction can discard an unmodified cached page without building a new disk image. (high confidence) — [source](https://people.ece.ubc.ca/~sasha/papers/socc22.pdf)
- If a reconciled image exceeds its page-type maximum, WiredTiger emits multiple smaller disk pages. internal_page_max and leaf_page_max constrain disk images; memory_page_max controls growth in cache. (high confidence) — [source](https://source.wiredtiger.com/11.0.0/tune_page_size_and_comp.html)
- Increasing memory_page_max trades less frequent splitting and reconciliation for longer exclusive-access intervals; lowering it produces more frequent, shorter intervals. Evaluate operation latency as well as throughput. (low confidence) — [source](https://source.wiredtiger.com/11.0.0/tune_page_size_and_comp.html)
- The documented update-restore eviction path writes committed content while retaining uncommitted updates in memory. After a split, only output pages containing updates that require restoration must remain dirty. (low confidence) — [source](https://source.wiredtiger.com/develop/eviction.html)
- WT-10833 proposes combining sparsely populated leaf pages and links an investigation into inefficiently small reconciliation output. The proposal alone does not establish that routine splitting automatically merges sparse disk pages later. (low confidence) — [source](https://jira.mongodb.org/browse/WT-10833)
- WT-13612 documents a split-tail rebalancing bug: moving entries between output chunks computed an overly conservative aggregate for the latter page. Its impact analysis identifies extra page visits and delayed cleanup, with no data correctness issue identified. (low confidence) — [source](https://jira.mongodb.org/browse/WT-13612)
- Reconciliation converts WiredTiger’s mutable in-memory representation into the encoded representation used for storage. This separation favors efficient updates in cache and compact persistent data. (high confidence) — [source](https://people.ece.ubc.ca/~sasha/papers/socc22.pdf)
- The historical in-memory split design deepens the tree by creating internal pages and moving child references beneath them. Parent-pointer repair and concurrent traversal require explicit coordination. (low confidence) — [source](https://github.com/wiredtiger/wiredtiger/wiki/In-memory-Page-Splits)
- WT-10832 warns that small leaf pages can result from selectively deleting most records after population. Sparse pages alone therefore do not prove that reconciliation chose poor split boundaries. (low confidence) — [source](https://jira.mongodb.org/browse/WT-10832)
