【IT专家】Mysql InnoDB B+树索引和哈希索引的区别? MongoDB 为什么使用B

本文由我司收集整编,推荐下载,如有疑问,请与我司联系Mysql InnoDB B+树索引和哈希索引的区别?MongoDB 为什么使用管理会计系统
水葫芦之灾B
伦敦铜
2018/04/04 7  B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。
分水实验小学 B+树B+树是为磁盘及其他存储辅助设备而设计一种平衡查树(不是二叉树)。B+树中,所有记录的节点按大小顺序存放在同一层的叶节点中,各叶节点用指针进行连接。
 数据库中B+树索引分为聚集索引(clustered index)和非聚集索引(secondary index).这两种索引的共同点是内部都是B+树,高度都是平衡的,叶节点存放着所有数据。不同点是叶节点是否存放着一整行数据。
《国家新型城镇化规划(2014-2020年)》
 B+树有如下特点:
 B+树每个节点可以包含更多的节点,这样做有两个原因,一个是降低树的高度。另外一个是将数据范围变为多个区间,区间越多,数据检索越快。每个节点不再只是存储一个key了,可以存储多个key。非叶子节点存储key,叶子节点存储key和数据。叶子节点两两指针相互链接,顺序查询性能更高。通俗的黔西南论坛
讲- B+树的非叶子节点只是存储key,占用空间非常小,因此每一层的节点能索引到的数据范围更加的广。换句话说,每次IO操作可以搜索更多的数据。- 叶子节点两两相连,符合磁盘的预读特性。比如叶子节点存储50和55,它有个指针指向了60和62这个叶子节点,那么当我们从磁盘读取50和55对应的数据的时候,由于磁盘的预读特性,会顺便把60和62对应的数据读取出来。这个时候属于顺序读取,而不是磁盘寻道了,加快了速度。- 支持范围查询,而且部分范围查询非常高效,每个节点能索引的范围更大更精确,也意味着B+树单次磁盘IO的信息量大于B-树,I/O 效率更高。
 原因是数据都是存储在叶子节点这一层,并且有指针指向其他叶子节点,这样范围查询只需要遍历叶子节点这一层,无需整棵树遍历。
 局部性原理与磁盘预读由于磁盘的存取速度与内存之间鸿沟,为了提高效率,要

本文发布于:2024-09-23 14:24:34,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/398294.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:节点   磁盘   数据   范围   查询
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议