首页 技术 正文
技术 2022年11月16日
0 收藏 618 点赞 2,416 浏览 657 个字

  首先要了解磁盘预读机制,大致就是说,从磁盘读取数据的速度比从内存读取数据的速度要慢很多,所以要尽量减少磁盘I/O的操作,尽量增加内存I/O操作,既然这样,我们可以从磁盘提前把需要的数据拿到内存,这样需要这个数据的时候,它就可以直接从内存读取了。那么哪些数据是以后需要的数据呢,内存也是有限的,不能什么乱七八糟的数据都拿来啊。这出现了局部性原理:当一个数据被用到时,其附近的数据也通常会马上被使用。所以比如当你需要从磁盘获取某个数据时,它会同时把相邻的一段数据一起给拿出来放到内存,当再次想获取附近的数据时,直接从内存中读取就可以了,这样就极大地提升了效率。此外每一次磁盘I/O称之为一页(page)。

接下来看B+树的结构:有序数组链表+平衡多叉树

要想说明一个事物的优点就必须要有比较,要有参照物。

  相比于二叉树,多叉树一个节点能够存储更多的信息,磁盘进行一个I/O操作时能够获取到更多“周围的数据“,节点包含的数据尽量可以满足上面所说的一页数据。同时多叉树还可以降低树的深度,加快查找效率。

  相比于B树(有序数组+平衡多叉树),B+树多了链表的结构。B+树的数据是全部存在于叶子节点上的,叶子节点有指针指向下一个叶子节点,非叶子节点用来作为索引。比如当你用B树访问下一个节点数据时,你会怎么做?肯定是先访问当前节点的父节点,然后再访问下一个节点来获取数据,这就跟中序遍历有些类似了,但是如果使用B+树,叶子节具有指针,想访问下一个数据时直接通过指针就可以知道位置,是不是更方便了。

还在慢慢补充完善。。。。。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,412
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,185
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905