社区
数据结构与算法
帖子详情
看到了一句:B+树在内存中是没有优势的,但是在磁盘上,就显示出来了.求解..
ibmmicrosoft
2012-07-10 11:01:35
RT, 为什么在内存中是没有优势的??
求具体分析...
...全文
670
7
打赏
收藏
看到了一句:B+树在内存中是没有优势的,但是在磁盘上,就显示出来了.求解..
RT, 为什么在内存中是没有优势的?? 求具体分析...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ibmmicrosoft
2012-07-10
打赏
举报
回复
还是得靠自己来........
ibmmicrosoft
2012-07-10
打赏
举报
回复
自己顶`~
施工中请绕行
2012-07-10
打赏
举报
回复
为了证明上述观点我还进行了测试,结果如下
程序中用1~1000000作为关键字顺序插入B+树中
内存中存储B+树
阶数为3时 : 2062 ms
阶数为101时 : 4578 ms
外存存储B+树
阶数为3时 : 141328 ms
阶数为101时 : 36234 ms
施工中请绕行
2012-07-10
打赏
举报
回复
举个例子,假设B+树一个节点保存了101个关键字,即使我们只对其中一个关键字操作,也必须将这个B+树节点
整个读取出来,修改完关键字后还需要将节点全部写回内存,上述操作冗余操作了100个关键字。而对于内存来说,寻址时间和读取时间的差距不大,可以近似的理解为同样的操作读取的关键字越少速度越快,而B+树在这种情况下劣势,为了弥补内存中B+树的这种劣势,可以把树的阶数设置小点,减少关键字冗余操作,可以提升内存B+树的效率。
而外存和内存的情况不一样,外存的寻址速度和外存的读取速度差距比较大,举个例子:假设在外存读取4K的数据,其中寻址用了4ms,而真正读取的时间连1ms都不到,此时能提升速度的途径就是,尽量减少读写次数,每次多读多写,而B+树正是基于这种思想设计的数据结构。假设用平衡二叉树实现外存索引,在数据规模相同的情况下,在平衡二叉树中操作一个关键字需要对节点I/O的次数比B+树多很多,并且平衡二叉树节点比B+树节点小,违背了上述的途径,因此效率自然不如B+树。
另外在外存索引中,B+树阶数和它的效率有很大的关系,效率和阶数在一定范围内是成正比的,超过这个范围就是反比了.
V68V6
2012-07-10
打赏
举报
回复
磁盘本身是一个顺序读写快,随机读写慢的物理系统,那么如果想高效的从磁盘中找到数据,势必需要满足一个最重要的条件:减少寻道次数。B+树提出来的背景,就是为了减少查找时产生的磁盘磁道寻道次数。
不过随着磁盘逐渐的淡出,由于磁盘特性而设计的数据结构也会逐渐的被其它数据结构所替代。譬如,现在比较火的LSM树和COLA树。
绿色夹克衫
2012-07-10
打赏
举报
回复
主要原因在于我们用的都是机械硬盘,机械硬盘最慢的就是寻道,寻道之后读取数据的话,2个字节同4K个字节消耗的时间几乎没有区别。用B树可以减少树高,如果用二叉树,也许需要寻道20次,B数也许2次就够了。
不过现在的SSD硬盘,不用寻道,B树就不一定强了。另外在普通机械硬盘上,顺序读写的速度要远远高于随机读写,针对于顺序写,LSM树效率更优。
hz张三
2012-07-10
打赏
举报
回复
因为B+树在内存中会占据大量的空间,内存相对比较宝贵。
硬盘上则空间几乎无限。
2020Java开发工程师面试题
有些图片
没有
显示
,可以在百度网盘里边找到 链接:https://pan.baidu.com/s/1KnQHMjvwF41M4zmImUI8iQ 提取码:ltbu 小米
B+树
结构上 (1)B树中关键字集合分布在整棵树中,叶节点中不包含任何关键字信息,而
B+树
关键字集合分布在叶子结点中,非叶节点只是叶子结点中关键字的索引; (2)B树中任何一个关键字只出现在一个结点中,而
B+树
中的关键字必须出现在...
闭关30天,献上【Java一线大厂高岗面试题解析合集】,冲刺金九银十!
马上又是秋招的高峰“金九银十”,估计现在就已经有不少的程序猿(媛)朋友早就踏上提前批之路了吧,机会来临,好好把握,争取一举上岸!第四部分:分布式(限流:ZK+Nginx;通讯:MQ+kafka)第四部分:分布式(限流:ZK+Nginx;第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)第六部分:其他:并发编程+设计模式+数据结构与算法+网络。第六部分:其他:并发编程+设计模式+数据结构与算法+网络。
2023年最新一线大厂Java面试题解析合集,备战金九银十
第四部分:分布式(限流:ZK+Nginx;第四部分:分布式(限流:ZK+Nginx;第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)第五部分:微服务(SpringBoot+SpringCloud+Dubbo)第五部分:微服务(SpringBoot+SpringCloud+Dubbo)第六部分:其他:并发编程+设计模式+数据结构与算法+网络。第六部分:其他:并发编程+设计模式+数据结构与算法+网络。
全国计算机试题选登答案,2012年宁波市中小学生计算机程序设计初赛试题选登...
宁波市第27届中小学程序设计竞赛初中组初赛试题(图未
显示
)●●所有答案都必须写在答题纸上,写在试卷上无效●●一、选择题(每题1.5分,共30分。每小题只有唯一一个正确答案)1.关于64位操作系统下面说法不正确的是 ( )A. 64位操作系统的设计初衷是:满足各领域中需要大量
内存
和浮点性能的客户需求。B. 64位操作系统的
优势
还体现在可以通过...
2020年Java开发工程师面试问题
由于图片很多,所以给出我整理的word文档链接https://pan.baidu.com/s/1iqFZ_iVzGqcDFVwIUzD4YA 提取码:n6y2 小米
B+树
结构上 (1)B树中关键字集合分布在整棵树中,叶节点中不包含任何关键字信息,而
B+树
关键字集合分布在叶子结点中,非叶节点只是叶子结点中关键字的索引; (2)B树中任何一个关键字只出现在一个结点中,而
B+树
中的关键字必...
数据结构与算法
33,009
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章