磁盘预读以及缓存行

9 篇文章 0 订阅

磁盘预读介绍(内存和磁盘之间的交互的方式)
内存比磁盘的读写速度要快很多,但内存容量要远小于磁盘,数据,程序的执行要调入内存后才能执行,所以内存和磁盘要经常进行I/O操作,I/O操作是个费事的过程,虽然现代系统已经有了通道(I/O处理机)技术的支持,但这还不够
在这里插入图片描述

在这里插入图片描述
上面是两张磁盘的示意图 ,扇区为磁盘的最小存储单元,当需要从磁盘读取数据时,系统会将逻辑地址发给磁盘,磁盘的控制电路将逻辑地址转换为物理地址(哪个磁道,哪个扇区)这时候就会有磁头的机械运动,磁头找到相应磁道–寻道,时间成为寻道时间,磁头找到对应磁道的对应扇区,成为旋转时间。 这是很大的时间消耗,所以系统一般采取预读的方式,减少磁盘I/O。

系统是分页读取和存储的 一般一页为4KB(mysql的页的大小为16KB),每次读取和存取的最小单元为一页,预读即在读取的起始地址连续读取多个页面(现在不需要的页面也读取了,这样以后用时就不用再读取,当一个页面用到时,大多数情况下,它周围的页面也会被用到)

至于磁盘分页,参考计算机操作系统的分页,分段存储管理 逻辑地址和物理地址被分为大小相同的页面,逻辑地址中叫页,物理地址中叫块
磁盘预读在mysql的中应用
mysql中的每页大小为16KB,如下图是mysql的组合索引的B+树的结构,每次mysql读取数据都会读取一页,每页大小为16KB
在这里插入图片描述

缓存行Cache Line(cpu和内存之间的交互方式)
Cache是由很多个 Cache line 组成的。Cache line 是 cache 和 RAM 交换数据的最小单位,通常为 64 Byte。当 CPU 把内存的数据载入 cache 时,会把临近的共 64 Byte 的数据一同放入同一个Cache line,因为空间局部性:临近的数据在将来被访问的可能性大。

以大小为 32 KB,cache line 的大小为 64 Byte 的L1级缓存为例,对于不同存放规则,其硬件设计也不同,下图简单表示一种设计:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值