文件读取速度比读取数据库中的数据要快吗?

时间:2010-11-17 22:58:47

标签: python performance mongodb

在资源和效率,文件读/写操作或数据库读/写操作方面哪个更昂贵?

我正在使用MongoDB和Python。我不是每分钟在db / file上执行大约100k个请求。此外,数据库/文件中有大约15000个文档。

哪个会更快?提前谢谢。

5 个答案:

答案 0 :(得分:5)

这取决于..如果你需要读取有序数据,文件可能会更快,如果你需要读取随机数据,数据库有更好的机会根据你的需要进行优化。

(毕竟 - 数据库也从文件中读取它的记录,但它有内部结构和算法来提高性能,它可以更智能地使用内存,并在后台做很多事情,所以结果将会来得更快)

在随机阅读的密集案例中 - 我将使用数据库选项。

答案 1 :(得分:3)

有太多因素无法提供具体答案,但这里有一个供你考虑的清单:

  1. 磁盘带宽
  2. 磁盘延迟
  3. 磁盘缓存
  4. 网络带宽
  5. MongoDB群集大小
  6. MongoDB客户端活动量(磁盘只有一个“客户端”,除非您的计算机忙于其他工作负载)

答案 2 :(得分:3)

尝试并告诉我们答案。

答案 3 :(得分:1)

从数据库中读取可以更有效,因为您可以直接访问记录并使用索引等。对于普通的平面文件,您基本上必须按顺序读取它们。 (大型机支持直接访问文件,但这些文件位于平面文件和数据库之间)。

如果您处于多用户环境中,即使多个用户同时尝试更新,您也必须确保数据保持一致。使用平面文件时,除了一个用户之外,您必须锁定文件,直到她准备好更新,然后锁定下一个文件。数据库可以在行级别上进行锁定。

您可以使基于文件的系统与数据库一样高效,但这种努力相当于自己编写数据库系统。

答案 4 :(得分:0)

如果未使用缓存,则根据定义,文件的顺序IO操作会更快。数据库最终使用文件,但在数据到达文件之前,它们有更多层要传递。但是,如果要使用数据库查询数据更有效,因为如果选择文件,则必须自己实现。对于您的任务,我建议研究不同数据库的聚类,它们可以扩展到您的速率。