У меня нет математики, но ...
По сути, основным фактором глубины дерева является "разветвление" каждого узла дерева.
Обычно в простом B-дереве разветвление составляет 2, 2 узла в качестве дочерних для каждого узла в дереве.
Но с B + Tree, как правило, у них есть веер гораздо больше.
Одним из факторов, влияющих на воспроизведение, является размер узла на диске.
Например, если у вас есть размер страницы 4K и, скажем, 4000 байт свободного пространства (не включая любые другие указатели или другие метаданные, связанные с узлом), и допустим, что указатель на любой другой узел в дерево представляет собой 4-байтовое целое число. Если ваше B + Tree на самом деле хранит 4-байтовые целые числа, то объединенный размер (4 байта информации указателя + 4 байта информации ключа) = 8 байтов. 4000 свободных байтов / 8 байтов == 500 возможных детей.
Это даст вам веер из 500 для этого надуманного дела.
Таким образом, с одной страницей индекса, то есть корневым узлом или высотой 1 для дерева, вы можете сослаться на 500 записей. Добавьте еще один уровень, и вы получите 500 * 500, поэтому для 501 страницы 4K вы можете сослаться на 250 000 строк.
Очевидно, что чем больше размер ключа или чем меньше размер страницы вашего узла, тем меньше вероятность выхода из этого дерева. Если вы разрешите ключи переменной длины в каждом узле, то разветвление может легко меняться.
Но, надеюсь, вы сможете понять суть того, как все это работает.