数据库的一个问题

innodb为什么会使用B+树做索引?看有的答案说是因为预读,可预读与b+树又有什么联系?因为最后叶子节点形成链表?可链表即使在磁盘也不一定是空间连续的?有大佬愿意给讲解一下吗?
全部评论
这个我觉得是不是得有个对比呀?比如说为什么使用B+树而不使用B树?不使用哈希索引,然后可以比较的来说下,比如说B+树和B树相比有哪些优点。磁盘读取效率更好,因为所有信息都存储在叶子节点,非叶子节点只存储索引信息。插入删除更加方便,因为所有叶子节点是有序排列的。查询效率更加稳定,因为所有的查询都是从根节点到叶子节点,路径长度相同。也不知道说的对不对,欢迎大家批评指正😄
点赞 回复 分享
发布于 2019-09-06 22:17
两方面 1.范围查找 2.B+树减少磁盘IO
点赞 回复 分享
发布于 2019-09-06 23:40
我也一直很纠结这个问题
点赞 回复 分享
发布于 2019-09-06 22:15
我的一点愚见: 1)B+叶子结点才包含数据(对主键索引来讲),非叶子节点只是指针或者主键值,这样每一页存放的数据更多,树也就会更加矮胖,可以减少磁盘IO。每页存放的数据更多,也意味着插入删除啥的不用频繁拆页分页。 2)B+树所有叶子节点都在一层,且是一个有序的双向链表,有利于范围查询。
点赞 回复 分享
发布于 2019-09-06 22:27
是连续的,根节点、中间节点和叶节点是以页为单位组织在硬盘连续空间上的,读取时候会以页为单位读取到内存形成页的lru。具体是不是“页”不太确定,可以看一下innodb那本书
点赞 回复 分享
发布于 2019-09-06 22:28

相关推荐

11-27 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
1
28
分享
牛客网
牛客企业服务