【问题标题】:MongoDB write performanceMongoDB 写入性能
【发布时间】:2013-05-28 23:24:56
【问题描述】:

假设 20M 文档,每个平均 550bytesPHP 驱动程序在一台机器上。

第一个 插入(不是 mongoimport)journal on, WriteConcern to default (1)。大约需要 12 小时。然后它让我好奇,所以我尝试了第二次导入。

其次,我将 batchInsert()--nojournal and WriteConcern=0 一起使用,并记录了性能。 总共花了 12 个小时?!有趣的是,开始时每分钟插入40000 records,最终每分钟插入2500 records,我只能想象到最后会是每分钟100 records

我的问题是:

  1. 我假设通过关闭日志并设置 w=0 并使用 batchInsert(),我的总插入量应该会显着下降!
  2. 如何解释每分钟插入的显着下降?

--更新--

机器是 Core Duo 3GHz,具有 8GB 内存。在整个过程中,RAM 使用率稳定在 %50。但是 CPU 使用率很高。在 PHP 中我有 ini_set('memory_limit', -1) 不限制内存使用。

【问题讨论】:

  • 什么是集合结构?

标签: php mongodb performance database


【解决方案1】:

如果只是一次迁移,我建议您在这些插入之前删除所有索引。使用deleteIndex(..) 方法。

所有插入完成后,使用isureIndex(..) 取回索引。

PS。从您提供的数字来看,数据量并不大,可能是您错误配置了 MongoDB 服务器。请提供您的 MongoDB 服务器配置和内存大小,也许我可以找到其他需要改进的地方。

回复你的第(2)个问题,可能你的服务器在插入一些内存之后是幸运的。

【讨论】:

  • 我没有添加任何二级索引,只有 _id 由 mongo 创建。您建议在每次插入后删除索引吗?
  • 不可以,如果您确定没有更多索引,那么我看到的唯一问题是 MongoDB 配置。我已经向 mongoDB 服务器插入了超过 4GB 的数据,没有任何问题。检查 mongoDB 配置中的内存限制,以及服务器上有多少内存?
【解决方案2】:

在拉了很多头发之后,我实现了积压效果。有趣的是,当我将文档整理到 5000 行时,批量插入就像魔术一样工作,并在不到 4 分钟!!

这个工具给了我这个想法:https://github.com/jsteemann/BulkInsertBenchmark

【讨论】:

    猜你喜欢
    • 2017-04-08
    • 2013-09-05
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多