我正在编写一个处理大量数据(千兆字节)的应用程序。我正在考虑将数据拆分到多个硬盘上并并行读取。我想知道我将遇到什么样的限制 - 例如,是否可以并行读取4个或8个硬盘驱动器,如果磁盘I / O是限制因素,我将获得大约4或8倍的性能?我应该注意什么?相关文档的指针也很受欢迎 - 谷歌没有多少出现。
编辑:我应该指出我已经看过RAID,但性能并不像我希望的那么好。我打算用C / C ++编写这个。答案 0 :(得分:2)
分离数据和并行读取4到8个驱动器不会使吞吐量跳跃4到8倍。您还需要考虑其他因素。
答案 1 :(得分:1)
如果您不打算使用真正的RAID,最好至少使用多个硬盘控制器,否则您根本不会看到太多的性能提升。一个控制器无法执行大量并发IO,因此很快就会成为瓶颈。
答案 2 :(得分:0)
听起来你在谈论数据条带化的概念。这通常用于RAID实现。您可能希望了解大多数操作系统可用的软件RAID解决方案之一。一个优点是你可以使用raid来增加你的优势并增加奇偶校验(丢失驱动器的能力,而不是你的数据)
这将为您提供RAID的好处,而无需亲自尝试处理它。您可以在数据库级别以及分布在驱动器上的数据文件中执行此操作,但这会增加复杂性。
您将更快地流式传输数据。驱动器只有这么快,如果你的I / O通道可以处理更多。还有时间考虑......根据你的应用程序描述,可能不是什么大不了的事。
答案 3 :(得分:0)
看起来重新配置驱动器似乎没问题,SSD怎么样? 它们在任何机械驱动器周围运行环(读取大约200 + GB /秒,写入150 + GB /秒)。
您是按顺序读取数据还是随机读取数据? 你期待多少GB?