ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

局部性原理与磁盘预读角度解析B树的优势

2021-06-08 20:03:06  阅读:206  来源: 互联网

标签:读取 预读 IO 原理 磁盘 局部性


局部性原理

cpu访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续空间。

计算机读取数据层次:寄存器、一级缓存、二级缓存、三级缓存、内存、磁盘

  • 时间局部性原理 一个数据项正在被访问,则它在近期很可能会被再次访问
  • 空间局部性原理 最近的将来可能用到的数据与现在正在使用的信息在空间地址上是相近的
  • 顺序局部性原理 典型程序中,大部分指令是顺序进行的

磁盘预读原理

cpu 、cache、主内存、磁盘处理速度依次下降

磁盘读取时间:寻道时间、旋转时间、传输时间,为减少IO操作,计算机系统一般采取预读的方式,预读的长度一般为页的整数倍,主存与磁盘以页为单位交换数据;每次读取和存取的最小单元为一页,当一个数据被用时,其附近的数据也通常会马上被使用;程序运行期间,磁盘顺序读取效率很高,所以只是读取一个字节,也会读取一页的数据。

为何使用B-Tree

红黑树、平衡树也可实现索引,索引本身也比较大,需要以索引文件的形式存储在磁盘上,则在索引查找的过程中会产生磁盘IO的消耗,所以索引结构组织要尽量减少查找过程中磁盘IO的存取次数;数据库系统利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点需要一次IO就可以完全载入;新建节点时,直接申请一个页的空间,保证一个节点物理上也存储在一个页里,计算机存储分配是按页对齐的,则一个node只需一次IO,b-tree一次检索最多需要h-1次IO;红黑树深度过大,逻辑上相近的节点(父子),物理上可能很远,无法利用局部性原理。

标签:读取,预读,IO,原理,磁盘,局部性
来源: https://www.cnblogs.com/jianzihao/p/14864225.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有