在以下情况下顺序写入和随机写入之间有什么区别: -1)基于磁盘的系统2)基于SSD [闪存设备]的系统
当应用程序写入内容和信息/数据时……
当人们谈论 顺序 VS 随机 写入文件时,他们通常会在没有中间搜索(“顺序”)的写入与搜索 - 写入 - 搜索 - 写入 - 搜索 - 写入等模式(“随机”)之间进行区分。
这种区别在传统的基于磁盘的系统中非常重要,每个磁盘搜索大约需要10毫秒。按顺序将数据写入同一磁盘大约需要30 MB / MB。因此,如果您按顺序将100MB数据写入磁盘,则需要大约3秒钟。但是如果你每次进行100次随机写入1MB,那么总共需要4秒钟(实际写入时间为3秒,所有搜索时间为10ms * 100 = 1秒)。
随着每个随机写入变小,您为磁盘搜索支付越来越多的惩罚。在你执行1亿个随机1字节写操作的极端情况下,所有实际写入仍然会净3秒,但你现在已经有了 的 11.57天 强> 值得寻求的!很明显,您的写入顺序与随机的程度可能会影响完成任务所需的时间。
闪存的情况有点不同。使用闪存,您没有必须移动的物理磁盘头。 (这是10ms寻求成本来自传统磁盘的地方)。但是,闪存设备往往具有较大的页面大小(最小的“典型”页面大小约为512字节 维基百科 ,4K页面大小似乎也很常见)。因此,如果您正在写少量字节,则闪存仍然有开销,您必须读出整个页面,修改您正在编写的字节,然后回写整个页面。我不知道闪光灯顶部的特征数字。但经验法则是,如果每个写入的大小通常与设备的页面大小相当,那么在闪存上,那么随机写入和顺序写入之间不会有太大的性能差异。如果每次写入与设备页面大小相比较小,那么在进行随机写入时您会看到一些开销。
现在对于上述所有情况,在应用程序层确实隐藏了很多内容。内核,磁盘/闪存控制器等中有层,例如可以在“顺序”写入过程中插入非显而易见的搜索。但在大多数情况下,在应用层编写“看起来”顺序(没有搜索,大量连续I / O)将具有顺序写入性能,而在应用层写入“看起来”随机将具有(通常更糟)随机写性能。