B-树家族: 1.多叉的平衡搜索树(允许一个结点有多个孩子) 习惯上可以把 B- 树 称为 M- 树,M的意思是结点中最多有多少个孩子 2.特性 K(甲) < Ka < K(乙) < Kb < K(丙) 3.查找思路: 小于k,在k之前的子树中找 等于k,找到了 大于k,比较下一个k,如果没有后续k了,就在最后一个子树中查找 4.插入过程 首先所有的插入操作,必须都是在叶子结点上 B- 树的修复:分裂修复 分裂:把 key 个数超出的结点分裂成两个结点 左边结点:[0,mid) 右边结点:(mid,length) 中间的 key 保存在父节点中,随着分裂,可能引起父节点也破坏规则,进而导致父节点继续分裂 注意: (1)B-树的生长是朝上生长的,随着分裂长出的结点,只有根节点才会新建结点 (2)B-树能保证所有的叶子都在同一层(从根到所以路径的长度是一样长) 5.二叉平衡搜索树和多叉平衡搜索树的区别 在 key 的数量一定的情况下,多叉树的高度一定是小于二叉树的 6.B-树的适用场景 数据保存在硬盘中(包含其他低速IO设备)时,所用的平衡搜索树。 MySQL中为什么用 B- 树做索引,而不用红黑树,因为MySQL的数据存储在硬盘中