本文由我司收集整编,推荐下载,如有疑问,请与我司联系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 效率更高。
原因是数据都是存储在叶子节点这一层,并且有指针指向其他叶子节点,这样范围查询只需要遍历叶子节点这一层,无需整棵树遍历。
局部性原理与磁盘预读由于磁盘的存取速度与内存之间鸿沟,为了提高效率,要