阿龙的学习笔记--- B-树和B+树 以及 MySQL的索引机制总结

  • B-树和B+树原理详解:https://blog.csdn.net/ywlmsm1224811/article/details/97890446

  • 深入理解MySQL索引之B+Tree: 写得好!InnoDB和MyISEM的区别也很清楚。https://blog.csdn.net/b_x_p/article/details/86434387

  • MySQL索引详解:写得超详细。https://blog.csdn.net/IT_10/article/details/95488179

  • MyISAM和InnoDB的区别:超详细https://blog.csdn.net/helloxiaozhe/article/details/88601028

  • B-树和B+树区别:

    • b+树的中间节点不保存数据,(一般一个节点大小为一个磁盘页) 所以磁盘页能容纳更多节点元素,更“矮胖”;
    • b+树查询必须查找到叶子节点,b树只要匹配到即可不用管元素位置,因此b+树查找更稳定;
    • 叶子节点之间有指针,链式。对于范围查找来说,b+树只需遍历叶子节点链表即可。
  • 为啥最终选择了B+树作为MySQL的结构:

    B+Tree是B TREE的变种,B TREE能解决的问题,B+TREE也能够解决(降低树的高度,增大节点存储数据量)

    B+Tree扫库和扫表能力更强。如果我们要根据索引去进行数据表的扫描,对B TREE进行扫描,需要把整棵树遍历一遍,而B+TREE只需要遍历他的所有叶子节点即可(叶子节点之间有引用)。

    B+TREE磁盘读写能力更强。他的根节点和支节点不保存数据区,所以根节点和支节点同样大小的情况下,保存的关键字要比B TREE要多。而叶子节点不保存子节点引用,能用于保存更多的关键字和数据。所以,B+TREE读写一次磁盘加载的关键字比B TREE更多。

    B+Tree排序能力更强。上面的图中可以看出,B+Tree天然具有排序功能。

    B+Tree查询性能稳定。B+Tree数据只保存在叶子节点,每次查询数据,查询IO次数一定是稳定的。当然这个每个人的理解都不同,因为在B TREE如果根节点命中直接返回,确实效率更高。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值