顺序写入和随机写入之间的区别

Kai*_*zen 36 operating-system memory-management solid-state-drive disk virtual-memory

在以下情况下顺序写入和随机写入之间有什么区别: - 1)基于磁盘的系统2)基于SSD [闪存设备]的系统

当应用程序写入某些东西并且需要在磁盘上修改信息/数据时,我们如何知道它是顺序写入还是随机写入.到此为止,写入不能被区分为"顺序"或"随机".写入只是缓冲,然后在我们刷新缓冲区时应用到磁盘.

如果我错了,请纠正我.

Wil*_*son 85

当人们谈论顺序随机写入文件时,他们通常会在没有中间搜索("顺序")的写入与搜索 - 写入 - 搜索 - 写入 - 搜索 - 写入等模式之间进行区分. "随机").

这种区别在传统的基于磁盘的系统中非常重要,每个磁盘搜索大约需要10毫秒.按顺序将数据写入同一磁盘大约需要30 MB/MB.因此,如果您按顺序将100MB数据写入磁盘,则需要大约3秒钟.但是如果你每次进行100次随机写入1MB,那么总共需要4秒钟(实际写入时间为3秒,所有搜索时间为10ms*100 = 1秒).

随着每个随机写入变小,您为磁盘搜索支付越来越多的惩罚.在你执行1亿个随机1字节写操作的极端情况下,所有实际写入仍然会净3秒,但你现在有11.57天值得做!很明显,您的写入顺序与随机的程度可能会影响完成任务所需的时间.

闪存的情况有点不同.使用闪存,您没有必须移动的物理磁盘头.(这是10ms寻求成本来自传统磁盘的地方).但是,闪存设备往往具有较大的页面大小(根据维基百科,最小的"典型"页面大小约为512字节,并且4K页面大小似乎也很常见).因此,如果您正在写少量字节,则闪存仍然有开销,您必须读出整个页面,修改您正在编写的字节,然后回写整个页面.我不知道闪光灯顶部的特征数字.但经验法则是,如果每个写入的大小通常与设备的页面大小相当,那么在闪存上,那么随机写入和顺序写入之间不会有太大的性能差异.如果每次写入与设备页面大小相比较小,那么在进行随机写入时您会看到一些开销.

现在对于上述所有情况,在应用程序层确实隐藏了很多内容.内核,磁盘/闪存控制器等中有层,例如可以在"顺序"写入过程中插入非显而易见的搜索.但在大多数情况下,在应用层编写"看起来"顺序(没有搜索,大量连续I/O)将具有顺序写入性能,而在应用层写入"看起来"随机将具有(通常更糟)随机写性能.

  • 该视频对此进行了很好的详细解释。如果上面的答案你还不是很清楚。https://www.youtube.com/watch?v=IvVZ7jf8wqw 在顺序访问中,尽可能避免寻道时间。当当前柱面没有剩余位置可供读取时,则尝试切换到同一柱面上的不同磁头,直到这也是不可能的并且需要切换柱面为止。 (2认同)