Index maintenance — where it appears
Named by 2 essays across one field — each of them below, with the objects they name alongside it.
Also named here as node fill — the same set of essays touches all of them, so they are one junction rather than several.
The sibling a full leaf asks first
The rule databases use to fix ascending inserts fills their leaves completely and collapses to 53.4% when one key in a hundred arrives late. A leaf that offers a key to a sibling before it splits, and splits two full leaves into three when neither will take one, holds 84.2% on the same stream — and is better with a trickle of late keys than without one, because a perfectly ascending stream has no sibling with room.
A key passed along the row
A full B+-tree leaf that offers a key to its immediate neighbours before splitting leaves an ascending stream 67.2% full. Let it look one sibling further and the same stream fills its leaves completely, 2,048 leaves where there were 3,048, for about the same key moves. On random keys each doubling of the reach adds a few points of fill and more writes than it saves, and at the whole parent a key travels sixteen leaves on average. On a stream that is mostly in order the same reach costs almost nothing.
Named alongside it
The objects these essays reach for when they reach for this one.
B-treeDesign parameterInsertion orderNode fillPresortednessAmortisationBlock sizeBlock transferBulk loadingHonest limitMeasured countSpace accounting