【问题标题】:Is a file read faster than reading data from the database?文件读取比从数据库读取数据快吗?
【发布时间】:2010-11-17 22:58:46
【问题描述】:

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

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

哪个会更快?提前致谢。

【问题讨论】:

标签: python performance mongodb


【解决方案1】:

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

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

在随机阅读的密集情况下 - 我将使用数据库选项。

【讨论】:

    【解决方案2】:

    试一试,告诉我们答案。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2018-10-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-08
            • 1970-01-01
            相关资源
            最近更新 更多