2012-03-26 46 views
3

我正在测试Mongo DB用于数据库中一个巨大的表约300亿记录约200字节每个。我知道Sharding是这种音量所需要的,所以我试图在一台机器上获得1到20亿条记录。我已经在具有2个CPU/6个内核和64 GB RAM的计算机上达到了10亿条记录。我输入了没有索引的文件,并且速度还可以(平均14k条记录/秒)。我添加了索引,这需要很长时间,但这是可以的,因为它是一次性的。现在将新记录插入数据库需要很长时间。据我所知,插入记录(CPU,RAM和I/O状态良好)时机器未加载。如何加速插入新记录?MongoDB插入性能 - 巨大的表与几个索引

+0

你能告诉我们的插入速度是什么呢?也许平均每个插入毫秒。 – 2012-03-27 17:15:44

+0

现在的插入速度,在表中有10亿条记录,并且定义了2个索引,每秒大约有200条记录。 – 2012-04-01 10:28:08

+0

2指数是什么样的指数? _id或稀疏或独特或正常? – jianpx 2013-01-26 03:46:45

回答

4

我建议将此主机添加到MMS(http://mms.10gen.com/help/overview.html#installation) - 确保您安装了munin-node支持,这将为您提供最多的信息。这可以让你跟踪什么可能会减慢你的速度。对不起,我不能在答案中更具体,但这里有很多很多可能的解释。一些一般性的要点:

  • 添加索引意味着,索引以及你的工作数据集将在RAM现在,这可能褪去,你的资源(查找页面错误)
  • 现在,你有指标,它们必须在插入时更新 - 如果所有内容都适合RAM,则应该是正常的,请参阅第一点
  • 您还应该检查磁盘IO,看看它是如何执行的 - 背景平均值如何显示?
  • 您是否正在运行正确的文件系统(XFS,ext4)和2.6.25以后的内核版本? (早期版本有fallocate问题())

跟进一些不错的一般信息可以在这里找到:

http://www.mongodb.org/display/DOCS/Production+Notes