MongoDB插入性能 - 包含几个索引的巨大表

时间:2012-03-26 08:59:52

标签: mongodb

我正在测试Mongo DB在一个数据库中使用,该数据库包含大约300亿条记录的大表,每条记录大约200字节。我知道这种音量需要Sharding,所以我试图在一台机器上获得1到20亿条记录。我已经在一台机器上达到了10亿条记录,每台机器有2个CPU / 6个核心,以及64 GB的RAM。我mongoimport-ed没有索引,速度还可以(平均14k记录/秒)。我添加了索引,这花了很长时间,但这是好的,因为它是一次性的事情。现在将新记录插入数据库需要很长时间。据我所知,插入记录(CPU,RAM和I / O状态良好)时没有加载机器。如何加快插入新记录的速度?

1 个答案:

答案 0 :(得分: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