A full page splits when the next insert descends through it.

highlighted = computed this step

Split on the next descent

The engine uses proactive CLRS splitting. A full page can exist; it splits when the next insert has to descend through that full page. Note: the before and after trees show that timing.

proactive split\text{proactive split}

Full page before descent

Before the next insert, the recomputed height is 1 and the page count is 1. Note: the full page has not split yet.

h=1,pages=1h=1,\quad \text{pages}=1

a page models a node; real B-trees tune fanout to disk pages; tiny exact trees prove structure/search behavior only - no I/O or perf claims.

B-tree pages102030n0

After the next insert

After the next insert descends through the full page, height becomes 2 and page count becomes 3. Note: the median is pushed up by the recomputed split.

h=2,pages=3h=2,\quad \text{pages}=3

a page models a node; real B-trees tune fanout to disk pages; tiny exact trees prove structure/search behavior only - no I/O or perf claims.

B-tree pages20n010n13040n2

A leaf split can keep height

In the leaf-split contrast, recomputed height stays 2 while page count moves from 3 to 4. Note: the split adds a page without growing the root.

h=2,before pages=3,after pages=4h=2,\quad \text{before pages}=3,\quad \text{after pages}=4

a page models a node; real B-trees tune fanout to disk pages; tiny exact trees prove structure/search behavior only - no I/O or perf claims.

B-tree pages20n010n1304050n2
B-tree pages2040n010n130n25060n3

Summary

A split happens when insertion must pass through a full page, not one key early. Note: a page models a node; real B-trees tune fanout to disk; no I/O or perf claims.

split timing\text{split timing}