广州网站制作网页,合肥网站建设方案维护,郓城网页设计,普洱网站建设优化一 数据库为什么使用B树
1. 与二叉树相比 二叉树相比于顺序查找的确减少了查找次数#xff0c;但是在最坏情况下#xff0c;二叉树有可能退化为顺序查找。而且就二叉树本身来说#xff0c;当数据库的数据量特别大时#xff0c;其层数也将特别大。二叉树的高度一般是log_2…一 数据库为什么使用B树
1. 与二叉树相比 二叉树相比于顺序查找的确减少了查找次数但是在最坏情况下二叉树有可能退化为顺序查找。而且就二叉树本身来说当数据库的数据量特别大时其层数也将特别大。二叉树的高度一般是log_2^nB树的高度是log_t^((n1)/2) 1其高度约比B树大lgt倍。n是节点总数t是树的最小度数。 假如每个盘块可以正好存放一个B树的结点正好存放2个文件名。那么一个BTNODE结点就代表一个盘块而子树指针就是存放另外一个盘块的地址。
下面咱们来模拟下B树索引查找文件29的过程
根据根结点指针找到文件目录的根磁盘块1将其中的信息导入内存。【磁盘IO操作 1次】此时内存中有两个文件名17、35和三个存储其他磁盘页面地址的数据。根据算法我们发现172935因此我们找到指针p2。根据p2指针我们定位到磁盘块3并将其中的信息导入内存。【磁盘IO操作 2次】 此时内存中有两个文件名2630和三个存储其他磁盘页面地址的数据。根据算法我们发现262930因此我们找到指针p2。根据p2指针我们定位到磁盘块8并将其中的信息导入内存。【磁盘IO操作 3次】
此时内存中有两个文件名2829。根据算法我们查找到文件名29并定位了该文件内存的磁盘地址。
2. 与B树相比 B树在提高IO性能的同时并没与解决元素遍历时效率低下的问题正是为了解决这个问题B数应运而生。B数只需遍历叶子节点即可实现整棵树的遍历而B树必须使用中序遍历按序扫库B树支持范围查询非常方便。这才是数据库选用B树的主要原因。
另外最后说一下并不是说B树就比B树好有很多基于频率的搜索是选用B树越频繁query的结点越往根上走前提是需要对query做统计而且要对key做一些变化。 无论是B树还是B树由于前边几层反复query因此早已被加载入内存不会出现读磁盘IO。一般启动的时候就会主动换入内存。在内存中B树并没有优势只有在磁盘中B树的威力才能显现。
参考文献
B树高度计算 B树和B树读取磁盘过程