【问题标题】:MongoDB Insert performance - Huge table with a couple of IndexesMongoDB 插入性能 - 带有几个索引的巨大表
【发布时间】:2012-07-25 09:41:13
【问题描述】:

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

【问题讨论】:

  • 您能告诉我们现在的插入速度是多少吗?每次插入可能以平均毫秒为单位。
  • 现在的插入速度,在表中有10亿条记录和定义了2个索引的情况下,大约是每秒200条记录。
  • 2索引是什么索引? _id 还是稀疏的还是唯一的还是正常的?
  • 您在插入数据时是否使用批量插入?据我所知,批量插入的性能比每次插入一条记录要好。

标签: mongodb


【解决方案1】:

我建议将此主机添加到 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

【讨论】:

    猜你喜欢
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多