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.