0

给定20M 个文档,每个文档平均550 字节PHP 驱动程序在一台机器上。

首先插入(不是 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。在整个过程中,RAM 使用率稳定在 %50。但是 CPU 使用率很高。在 PHP 中,我ini_set('memory_limit', -1)不必限制内存使用量。

4

2 回答 2

0

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

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

于 2013-06-03T05:58:07.673 回答
0

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

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

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

回答您的(2)问题,可能您的服务器在一些插入后是内存的运气。

于 2013-05-29T00:11:39.577 回答