先说说b树
B树相对于平衡二叉树的不同是,每个节点包含的关键字增多了,特别是在B树应用到数据库中的时候,数据库充分利用了磁盘块的原理(磁盘数据存储是采用块的形式存储的,每个块的大小为4K,每次IO进行数据读取时,同一个磁盘块的数据可以一次性读取出来)把节点大小限制和充分使用在磁盘快大小范围;把树的节点关键字增多后树的层级比原来的二叉树少了,减少数据查找的次数和复杂度;
图片说明
插入时如果关键字数目超过了阶数,就将当前块分成两块,前面的用之前那块,后面的用新建的块,并将中间的关键字放到父亲节点中去,然后加入新的块的指针

再看b+树
B+树是B树的一个升级版,相对于B树来说B+树更充分的利用了节点的空间,让查询速度更加稳定,其速度完全接近于二分法查找。
图片说明
与b-树的差异
有n棵子树的节点含有n个关键字
所有叶子结点单包含了全部关键字信息
所有的非终端节点可以看成索引,节点中仅含有子树中的最大或最小的元素
b+树上通常有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,锁一b+树既可以从最小关键字查找,也可以随机查找,也可以查找某个范围
B+树的层级更少:相较于B树B+每个非叶子节点存储的关键字数更多,树的层级更少所以查询数据更快;
B树相对于B+树的优点是,如果经常访问的数据离根节点很近,而B树的非叶子节点本身存有关键字其数据的地址,所以这种数据检索的时候会要比B+树快。