我需要对文件进行就地随机更新。我需要更新偏移量为k1,k2,....,kn的文件。从性能的角度来看,如果我按任意顺序编写,或者如果我按增加的偏移量顺序写入,性能是否会提高是否重要?更具体地说,我将在RAM中缓冲一堆更新然后更新。因此,当我准备将更新刷新到磁盘时,我知道需要写入的偏移量。
答案 0 :(得分:2)
将硬盘驱动器的磁头从一个磁道移动到另一个磁盘是处理旋转磁盘上的大文件时最大的性能杀手。头部移动得越远,影响就越大。
按顺序写入。这将导致(从统计上讲至少)圆柱体上的所有扇区被一起写入(没有头部移动),然后头部移动到相邻的圆柱体(最短的头部移动)。
请注意,如果您正在处理具有多个支持物理磁盘(例如RAID,NAS)的逻辑磁盘,则通过拥有更多磁盘可以稍微减轻磁头搜索问题,但除非您具有从逻辑扇区到逻辑扇区的映射的特定知识物理存储,按扇区顺序进行更新仍然最有可能减少磁头移动。
答案 1 :(得分:0)
除非你知道你的抵消如何转化为特定的气缸/磁头/扇区,否则我不会担心。您的磁盘控制器可能会自行重新排序请求以提高效率,如果磁盘碎片化,则无论如何都不知道文件的逻辑块是否是顺序的。