有B树、B+树、B*树,没有B- 树
一、B-tree (B树)
1、每个结点至多有m颗子树;
2、除根结点外,所有非终端结点至少有[ m/2 ] ( 向上取整 )颗子树;
3、若根结点不是叶子结点,则至少有两颗子树;
4、所有的叶子结点都出现在同一层次上;
5、一个非终端结点包含k个子节点和k-1个key
二、B+tree
1、B+树由B树和索引顺序访问方法演化而来;
2、B+树是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树;
3、B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶节点中,各叶节点指针进行连接;
4、叶节点存放着所有的数据;
三、InnoDB主键索引B+树 ???? https://www.cnblogs.com/leefreeman/p/8315844.html
1、树的高度通常是1-3;
2、树可以存放约2千万数据;
注:在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一个页的大小是16K。
有疑问加站长微信联系(非本文作者))

1.B+树是应文件系统产生的B树的变种。它依然是一颗多路查找树,与B树相比它的不同体现在:
(1).如果非叶子节点包含n个关键码,则这个节点有n个子树。
(2).非叶子节点仅包含关键码信息,叶子节点包含关键码以及含有这个关键码的记录的指针。所以查找时,B+树必须到达叶子节点才会命中。
(3).叶子节点包含有兄弟叶子节点的指针,而且叶子节点的关键码值是有序的,有利于遍历。
(4).所有的非叶子节点可看成是索引部分(稀疏索引)
2.为什么说B+树比B树更适合实际应用中作为操作系统的文件索引和数据库索引?
(1)B+树的磁盘读写代价更低
非叶子节点包含的信息更少,如果把同一节点的所有信息放在一个磁盘块中,则可以比B树放入更多的关键码。一次读入内存当中(读一个块)就能读入更多的关键码,所以降低了磁盘I/O总数。
(2)查询效率更加稳定
对任何关键字的查找都必须从根节点走到叶子节点,路径长度相同,所以对每条数据的查询效率相当。
(3)B树在提高磁盘I/O性能的同时并没有解决元素遍历效率低下的问题。而B+树因为叶子节点有链指针存在,所以遍历叶子节点即可以实现对整棵树的遍历。而在数据库中基于范围的查询是非常频繁的,B+树就能更好的支持。