前言
每当需要访问磁盘驱动器上的块时,机械手臂必须将磁头移动到正确的轨道(寻道时间),然后磁盘盘片必须旋转以找到正确的扇区(旋转延迟),这种机械动作需要时间完成。
顺序读写
在读写磁盘上的块时,如果下一个块恰好位于同一轨道上的前一个块之后,则磁盘头将立即遇到它,从而没有等待时间(即没有延迟),这便是一个顺序读写。
随机读写
倘若块在磁盘上的其它地方,那么需要磁头进行寻道且盘片进行旋转进行查找,那么这便是随机读写。
对比
顺序读写与随机读写的差异便是随机读写多出的寻道时间和旋转延迟,如果只是少量读写可能只是几毫米的花费,但如果是高频(高并发)读写,那么这个花费也将扩大,导致系统性能下降,此时可以考虑将随机读写转为顺序读写。
例如 MySQL 中的 Redo Logging 采用的 WAL 机制也是采用顺序写,以及 Kafka 的持久化处理。
性能对比
顺序 随机 读 84.0MB/s 0.226MB/s 写 79.0MB/s 0.576MB/s
资源
MySQL - Optimizing InnoDB Redo Logging
Kafka - Persistence
磁盘随机读写与顺序读写性能对比
磁盘 I/O 那些事