树的基本概念
结点的层次:从根开始定义起,根为第1层,根的子结点为第2层,以此类推;
树的高度或深度:树中结点的最大层次;
B树:有序数组+平衡多叉树;数据存在于非叶子节点上
B+树:有序数组链表+平衡多叉树;数据只存在于叶子上。
B*树:一棵丰满的B+树。
B+树还有一个最大的好处,方便扫库,B树必须用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了,B+树支持range-query非常方便,而B树不支持。这是数据库选用B+树的最主要原因。
描述一颗 B树时需要指定它的阶数,阶数 表示 此树的结点 最多 有 多少个孩子结点(子树),一般用字母 M 表示阶数。
M 阶的B树 :以【子树】讨论
上限:每个节点最多有 M 个子树
下限:
根节点至少2个子树,
非根节点至少有⌈M /2⌉个子树
所以也称 M 阶B树 为 ( ⌈M /2⌉ , M ) 树 ,即超级节点(除根节点)的子树数的上下限 。
磁盘IO
IO读的次数取决于B+树的高度, H=3 ,IO一般只需三次。
读取的磁盘节点块,内部元素查找属于内存查找,可以使用折半查找(二分查找)