Mysql 为什么要选择 B+Tree

算法对比

二叉树

file
当我查找 8 的时候需要走五步
file

红黑树

file
当我查询8的时候需要四次 相对于二叉树有了一些优化 没有无限延伸.红黑树的深度会很深(深度不可控制)
file

hash

数据量大的话
file
查询很快(不能范围查找)

BTree

file
查询只需要查两步就可以找到,缺点携带(data)扩大横向减少纵向深度
ps:java拿取数据一般是这样的:java程序-->CPU--->内存---->硬盘,而内存与硬盘的交互是有大小限制的,是一页数据4k左右,所以不能把所有数据都放在一个节点来获取,一般来说节点会尽量预存4K容量。
file

B+Tree

file
BTree 变种B+Tree
ps:data不放在非叶子节点来增加度(小节点),一般会一百个以上使得深度是3~5,从而减少查询次数。并且,叶子节点之间会有指针,数据又是递增的,这使得我们范围查找可以通过指针连接查找,而不再从上面节点往下一个个找。既减少了查询次数,又提供了范围查询.
所以mysql采用的B+Tree算法
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • B树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balan...
    铁甲依然在_978f阅读 1,537评论 0 4
  • 原文链接 B树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(...
    非典型程序员阅读 1,274评论 0 3
  • 转载:http://blog.codinglabs.org/articles/theory-of-mysql-in...
    qf1007阅读 1,383评论 0 0
  • 一、概述 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持可以各不相同,因此MySQL数据库支持多种索引类型...
    落地生涯阅读 5,340评论 1 52
  • 今天爸爸和妈妈给我和姐姐去开家长了,我考的很差,姐姐考的很好,爸爸回来时拿了一张优胜奖是姐姐的,我心里很不高兴,妈...
    fa32dd1caf39阅读 45评论 0 0

友情链接更多精彩内容