• 11、都知道数据库索引采用B+树而不是B树,原因也有很多,主要原因是 什么?12、文件索引和数据库索引为什么使用B+树?(第9个问题的详细回答)


    11、都知道数据库索引采用B+树而不是B树,原因也有很多,主要原因是 什么?

    主要原因:B+树只要遍历叶子节点就可以实现整棵树的遍历,而且在数据库中基于范围的查询是非常频 繁的,而B树只能中序遍历所有节点,效率太低。

    12、文件索引和数据库索引为什么使用B+树?(第9个问题的详细回答)

    文件与数据库都是需要较大的存储,也就是说,它们都不可能全部存储在内存中,故需要存储到磁盘 上。而所谓索引,则为了数据的快速定位与查找,那么索引的结构组织要尽量减少查找过程中磁盘I/O 的存取次数,因此B+树相比B树更为合适。数据库系统巧妙利用了局部性原理与磁盘预读原理,将一个 节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入,而红黑树这种结构,高度 明显要深的多,并且由于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性。

    最重要的是,B+树还有一个最大的好处:方便扫库。

    B树必须用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了,B+树支持range-query 非常方便,而B树不支持,这是数据库选用B+树的最主要原因。

    B+树查找效率更加稳定,B树有可能在中间节点找到数据,稳定性不够。

    B+tree的磁盘读写代价更低:B+tree的内部结点并没有指向关键字具体信息的指针(红色部分),因此其内 部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一块盘中,那么盘块所能容纳的关键 字数量也越多。一次性读入内存中的需要查找的关键字也就越多,相对来说IO读写次数也就降低了;

    B+tree的查询效率更加稳定:由于内部结点并不是最终指向文件内容的结点,而只是叶子结点中关键字 的索引,所以,任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相 同,导致每一个数据的查询效率相当;

  • 相关阅读:
    我理解的软件编码规范
    分享:读完这100篇论文,你就能成大数据高手!
    Docker简明教程
    几种源码管理工具的使用
    《构建之法.现代软件工程》教材读后问题
    三层神经网络自编码算法推导和MATLAB实现 (转载)
    aa
    奇异值分解(SVD)原理详解及推导(转载)
    奇异值分解(SVD) --- 几何意义 (转载)
    奇异值分解(SVD)原理详解及推导 (转载)
  • 原文地址:https://www.cnblogs.com/crbhf/p/15143764.html
Copyright © 2020-2023  润新知