B-tree详解
来源:互联网 发布:利他林代购淘宝 编辑:程序博客网 时间:2024/05/18 21:41
要理解B树,必须从二叉查找树(Binary search tree)讲起。
- 二叉查找树是一种查找效率非常高的数据结构,它有三个特点。
(1)每个节点最多只有两个子树。
(2)左子树都为小于父节点的值,右子树都为大于父节点的值。
(3)在n个节点中找到目标值,一般只需要log(n)次比较。
二叉查找树的结构不适合数据库,因为它的查找效率与层数相关。越处在下层的数据,就需要越多次比较。极端情况下,n个数据需要n次比较才能找到目标值。对于数据库来说,每进入一层,就要从硬盘读取一次数据,这非常致命,因为硬盘的读取时间远远大于数据处理时间,数据库读取硬盘的次数越少越好。
B树是对二叉查找树的改进。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数。
- B树的特点也有三个。
(1)一个节点可以容纳多个值。比如上图中,最多的一个节点容纳了4个值。
(2)除非数据已经填满,否则不会增加新的层。也就是说,B树追求”层”越少越好。
(3)子节点中的值,与父节点中的值,有严格的大小对应关系。一般来说,如果父节点有a个值,那么就有a+1个子节点。比如上图中,父节点有两个值(7和16),就对应三个子节点,第一个子节点都是小于7的值,最后一个子节点都是大于16的值,中间的子节点就是7和16之间的值。
这种数据结构,非常有利于减少读取硬盘的次数。假定一个节点可以容纳100个值,那么3层的B树可以容纳100万个数据,如果换成二叉查找树,则需要20层!假定操作系统一次读取一个节点,并且根节点保留在内存中,那么B树在100万个数据中查找目标值,只需要读取两次硬盘。
转载自:http://www.ruanyifeng.com/blog/2014/07/database_implementation.html
0 0
- B-tree 算法详解
- B-tree详解
- 详解 B-Tree 与B+Tree
- 关于索引的B tree B-tree B+tree B*tree 详解结构图
- 关于索引的B tree B-tree B+tree B*tree 详解结构图( 二)
- 关于索引的B tree B-tree B+tree B*tree 详解结构图
- 关于索引的B tree B-tree B+tree B*tree 详解结构图( 二)
- 关于索引的B tree B-tree B+tree B*tree 详解结构图
- 关于索引的B tree B-tree B+tree B*tree 详解结构图
- BTree和B+Tree详解
- BTree和B+Tree详解
- BTree和B+Tree详解
- BTree和B+Tree详解
- mysql 索引类型详解-B-Tree索引
- 详解b+tree以及mysql索引 二
- B-tree详解及实现(C语言)
- B+tree详解及实现(C语言)
- MySQL系列—详解B+Tree
- linux yum命令详解
- js反射机制
- 基本控件:UIActivityIndicatorView
- swift中的可选类型Optional?、解包!和隐式解包的可选类型的用法
- LeetCode Path Sum
- B-tree详解
- 【Android】获取手机的相关硬件信息
- 如何查看MyEclipse包含的Eclipse的版本号
- 到底谁才是真正的隐形战友——开源软件和OpenSSL的真实故事
- 两个日期的时间差
- OSX平台下跨平台编译Go程序(交叉编译)
- iOS Programming 学习笔记 - 04 UITableView编辑模式
- 配置 vsftpd 出现:500 OOPS:cannot change directory
- Android原理——回调机制