博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
B树学习总结
阅读量:6496 次
发布时间:2019-06-24

本文共 1421 字,大约阅读时间需要 4 分钟。

1,B树的基本介绍

①B树,相比于二叉树、红黑树而言,它的特点就是树的高度比其他类型的树要低很多。如何做到低呢?B树中的每个结点的分支数目非常大,即每个结点有很多很多孩子结点。这样,在相同结点数目情况下,B树就比其他树的高度低了。

②B树,是针对磁盘(外存)而设计的数据结构。由于内存有限,巨大量的数据还是存储在磁盘上,磁盘访问时间要远远大于内在的访问时间,当访问磁盘上的数据时,如何减少访问读写磁盘的次数?

首先了解磁盘的结构:参考

在磁盘的实际读取时,每次读取不会只读一个数据项,而是每次读取一个或多个页面,----这是局部性原理的应用。

也即,“预读的长度一般为页(page)的整倍数。页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每 个存储块称为一页(在许多操作系统中,页得大小通常为4k),主存和磁盘以页为单位交换数据。当程序要读取的数据不在主存中时,会触发一个缺页异常,此时 系统会向磁盘发出读盘信号,磁盘会找到数据的起始位置并向后连续读取一页或几页载入内存中,然后异常返回,程序继续运行。”----这是计算机内存管理的功能。

在B树应用中,需要处理的数据量巨大,无法将数据一次都装入主存,B树将所需要的页查找出来并复制到主存中,而后将修改后的页写回到磁盘。因此,通常B树的结点大小相当于一个磁盘页大小。由于B树的高度非常小,(比如每个结点包含1000个关键字,高度为2的B树,总共可以含有10亿个关键字。)当查找B树中的某个结点时,查找次数(树高)也非常少。

将B树的每个结点 “对应” 到磁盘的每个页面上,访问磁盘的次数也就少了。

 

2,B树/B+ 树为什么用做数据库的索引?

参考:

关于索引的一段介绍:

好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search)、二叉树查找(binary tree search)等。如果稍微分析一下会发现,每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构(例如,理论上不可能同时将两列都按顺序进行组织),所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引

       索引是对数据库表 中一个或多个列的值进行排序的结构。与在表 中搜索所有的行相比,索引用指针 指向存储在表中指定列的数据值,然后根据指定的次序排列这些指针,有助于更快地获取信息。通常情 况下 ,只有当经常查询索引列中的数据时 ,才需要在表上创建索引。索引将占用磁盘空间,并且影响数 据更新的速度。但是在多数情况下 ,索引所带来的数据检索速度优势大大超过它的不足之处。”

 

也就是说,数据库中存储的数据量是非常非常巨大的,但是我们不可能把数据组织成满足二分查找算法等这种要求数据满足特定条件(在内存中、有序、地址连续)形式。在这种情况下,如何更快地获取数据?这就是索引的作用了。

而B+树之所以适合做数据库索引,估计也是利用了它只需要少量几次访问磁盘就能从大量数据中查找数据。

 

参考资料汇总:

 本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/,如需转载请自行联系原作者

你可能感兴趣的文章
计算几何专题
查看>>
GNU/Linux 正则表达式与三剑侠(grep,sed,awk)(精)
查看>>
36、自定义控件详解(一)-- 自定义属性
查看>>
DOM学习笔记二
查看>>
[Array]189. Rotate Array
查看>>
iuap
查看>>
inkscape
查看>>
关于C语言中单双引号的问题
查看>>
I00003 贝尔三角形
查看>>
HDU1200 POJ2039 ZOJ2208 UVALive3084 To and Fro【密码】
查看>>
CCF201403-1 相反数(100分)
查看>>
表单通过连接数据库数据进行验证
查看>>
redis hash操作 list列表操作
查看>>
利用Hibernate 框架,实现对数据库的增删改查
查看>>
mysql开启远程连接权限
查看>>
关于商米D1S,USB默认权限在关机后丢失的FAQ
查看>>
css3 text-transform变形动画
查看>>
scikit-learn中文api
查看>>
一个完整的大作业--广州市社会保障(市民)卡服务网
查看>>
迭代器和生成器
查看>>