Glossary — in plain language

Page split (B-tree)

Also called: leaf split, _bt_split, node split

In plain English

A page split happens when an insert lands on a B-tree page that is already full. PostgreSQL (_bt_split() in nbtinsert.c) allocates a new page, moves part of the entries to it, rewires the sibling links, and posts a new pointer (downlink) up to the parent. If the parent is full too, the split cascades upward — and at the top it can create a whole new root.

Why it matters

Splits are how a B-tree grows, but they are also work and a source of bloat. Random-insert keys split ~50/50; monotonically increasing keys split ~90/10 at the right edge, which packs tightly but concentrates activity on one hot page. Tuning fillfactor and using deduplication both aim to delay splits.

Was this helpful?

← Browse the full glossary