我需要对文件进行随机更新。我们需要更新偏移量为k1,k2,...,kn的文件。从性能的角度来看,如果我按任何顺序编写,或者如果我按照递增的偏移顺序编写,性能会有所提高,那么这很重要吗?更具体地说,我要在RAM中缓冲一堆更新,然后更新。所以当我准备刷新磁盘更新时,我知道需要写入的偏移量。随机磁盘写入
Q
随机磁盘写入
3
A
回答
2
在处理旋转磁盘上的大文件时,将硬盘驱动器的磁头从一个磁盘移动到另一个磁盘是最大的性能杀手。头部移动得越远,影响就越大。
按顺序进行写入。这将导致(统计上至少)气缸上的所有扇区被写在一起(无头移动),然后头移动到相邻气缸(尽可能短的头移动)。
请注意,如果您正在处理具有多个后备物理磁盘(例如RAID,NAS)的逻辑磁盘,则通过增加磁盘可以缓解磁头寻道问题,但除非您具有逻辑扇区映射的特定知识到物理存储,按照扇区顺序进行更新仍然最有可能使头部移动最小化。
0
除非你知道你的偏移如何转换成特定的气缸/头/部门,我不会担心它。您的磁盘控制器可能会自行重新排序请求以提高效率,并且如果您的磁盘碎片化,您不知道文件的逻辑块是否是顺序的。
相关问题
- 1. NSUserDefaults写入磁盘?
- 2. UIWebView写入磁盘方法
- 3. 将PFObject写入磁盘
- 4. NSUserDefaults不会写入磁盘
- 5. FMDB databaseWithPath:不写入磁盘
- 6. 文件写入磁盘
- 7. Python随着时间的推移将性能写入磁盘
- 8. 磁性随机?
- 9. 写CFArray到磁盘
- 10. 将结构和类写入磁盘
- 11. 可以将HTML5 sessionStorage写入磁盘吗?
- 12. 磁盘写入队列长度
- 13. 防止RabbitMQ将消息写入磁盘
- 14. 挂钩磁盘写入操作? Win32/64
- 15. 写入后中止缓冲到磁盘?
- 16. ZipArchive ExtractToFile延迟写入磁盘
- 17. 刷新磁盘写入缓存
- 18. 写入磁盘文件不正确
- 19. 使用比萨写入pdf到磁盘
- 20. 写入磁盘回调的数据
- 21. 防止.net程序写入磁盘
- 22. 用php直接写入磁盘
- 23. 如何将XPerf写入备用磁盘
- 24. WordPress无法将文件写入磁盘
- 25. 不写入磁盘的C++文件
- 26. golang的磁盘写入性能
- 27. 以'页'为单位写入磁盘
- 28. 在VB.NET中将图标写入磁盘
- 29. 快速写入int []到磁盘?
- 30. NSUserDefaults没有被写入磁盘
不......如果您正在批量处理大量随机更新,则磁盘控制器将知道对邻近扇区的更新尚未在下一批中进行更新。百分比来看,写作顺序和随机写作之间存在巨大差异。绝对数字是否重要取决于需求,硬件和文件的大小。 –
有关碎片的好处。 – bosmacs
@bosmacs:即使您有文件碎片,文件在磁盘上随机组织也不太可能。即使是高度碎片化(现代操作系统也不太可能),两个相邻的逻辑扇区更可能与物理上相邻。 –