mongodb-分片上的巨大插入时间

时间:2013-11-29 02:44:19

标签: mongodb

我遇到了300,000,000个文件的插入时间问题。 我正在检查单个节点的插入时间对于相同文档数的性能。所花的时间大约是23分钟。

我创建2个分片 - 并尝试插入相同数量的文档。插入时间超过25小时。

这两个分片配置了8 GB RAM,8个核心机器。 配置和路由器在4 GB RAM,4核机器的同一台机器上。

我正在使用C#驱动程序 - 在我的应用程序中创建BSON文档以便插入。

集合结构是:

Logs{
            "_id" 
            "LID"
            "Ver"
            "Y" 
            "M" 
            "D" 
            "H" 
            "Min" 
            "Sec" 
            "MSec" 
            "FID" 
    }

分片键是_id字段。分片的chunkSize设置为1。

我应该检查性能导致问题的位置有哪些? 任何人都可以建议我一个解决方案或我应该考虑的事情,以找到增加插入时间的因素

提前致谢。

1 个答案:

答案 0 :(得分:2)

我认为问题是由chunk migration造成的。基本上,当您插入时间时,数据也会从一个碎片移动到另一个碎片。然后它可能会回到同一个碎片。还有一点可能是索引占用了你的一些时间(这在数据库中创建索引然后插入数据然后插入数据和创建索引的速度很慢)。

如果我是你,我会做以下事情:

  • 创建1个节点mongo并将所有数据插入其中。没有db.coll.insert()但使用mongodumpmongorestore
  • 然后在需要的任何字段上创建索引。
  • 然后粉碎你的收藏

您也可以在插入时尝试disable balancer