BTree
一个 m 阶的B树满足以下条件:
1.每个结点至多拥有m棵子树;
2.根结点至少拥有两颗子树(存在子树的情况下),根结点至少有一个关键字;
3.除了根结点以外,其余每个分支结点至少拥有 m/2 棵子树;
4.所有的叶结点都在同一层上,B树的叶子结点可以看成是一种外部节点,不包含任何信息;
5.有 k 棵子树的分支结点则存在 k-1 个关键码,关键码按照递增次序进行排列;
6.关键字数量需要满足ceil(m/2)-1 <= n <= m-1;
插入,删除的过程
B+Tree
特点
1、B+树的层级更少:相较于B树B+每个非叶子节点存储的关键字数更多,树的层级更少所以查询数据更快;
2、B+树查询速度更稳定:B+所有关键字数据地址都存在叶子节点上,所以每次查找的次数都相同所以查询速度要比B树更稳定;
3、B+树天然具备排序功能:B+树所有的叶子节点数据构成了一个有序链表,在查询大小区间的数据时候更方便,数据紧密性很高,缓存的命中率也会比B树高。
4、B+树全节点遍历更快:B+树遍历整棵树只需要遍历所有的叶子节点即可,,而不需要像B树一样需要对每一层进行遍历,这有利于数据库做全表扫描。
B树相对于B+树的优点是,如果经常访问的数据离根节点很近,而B树的非叶子节点本身存有关键字其数据的地址,所以这种数据检索的时候会要比B+树快。
innoDB的B+Tree
参考文档:
平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了