磁盘IO
https://tech.meituan.com/2017/05/19/about-desk-io.html
磁盘的数据读取是靠机械运动,耗时主要在:寻道时间、旋转延迟、数据传输时间
- 寻道时间:磁臂移动到磁道需要的时间;
- 旋转延迟:盘片旋转将请求数据所在的扇区移动到读写磁盘下方所需要的时间,取决于磁盘转速
- 数据传输时间:数据写入的时间;
随机读写和顺序读写
- 随机读写:寻道时间 + 旋转延迟 + 数据写入时间;
- 磁头需要不停移动进行读写,大量时间浪费在磁头寻址;
- 顺序读写:只需要数据写入时间,不需要来回寻道,并且读操作可以利用磁盘预读,连续读取多个页面;
PageCache
PageCache是操作系统的内核高速缓存,缓存磁盘上的部分数据,当请求到达,数据如果在Cache中,并且未过期,则不需要读取磁盘,直接返回;
- 32位操作系统:4KB;64位操作系统:8KB; https://blog.csdn.net/qq_32099833/article/details/123150701
磁盘预读
磁盘预读是一种优化策略;提前将关联的数据块读取到内存中,特别是顺序读场景可以提高读取的性能;但并非所有场景都适合磁盘预读,如果预读的数据并不会使用,反而浪费资源;