【问题标题】:MongoDB takes long for indexingMongoDB 索引需要很长时间
【发布时间】:2010-12-18 08:23:03
【问题描述】:

我有以下设置:

  • 配备 2 GB RAM 的 Mac Pro(是的,没那么多)
  • MongoDB 1.1.3 64 位
  • 单个集合中有 800 万个条目
  • 需要一个字段(整数)的索引

调用.ensureIndex(...) 需要一个多小时,实际上我在那之后就终止了该进程。我的印象是,它需要的时间太长了。另外,我终止了进程,但之后可以使用.getIndexes() 看到索引。

有人知道这里出了什么问题吗?

【问题讨论】:

    标签: mongodb performance indexing nosql


    【解决方案1】:

    在现有数据集上添加索引预计需要一段时间,因为需要构建整个 BTree。如果您认为这花费了不合理的时间,或者您已经看到性能下降,最好的办法是在the list 上询问。

    【讨论】:

      【解决方案2】:

      我只想指出命令:

      db.currentOp()
      

      打印服务器上运行的当前操作,并显示索引过程。

      前台索引分 3 步完成,后台索引分 2 步完成(如果我没记错的话),但后台索引要慢很多。另一方面,前台在为它编制索引时锁定集合(即在正在运行的应用程序服务器上不是很有用)。

      如前所述,如果您对 BTree 的工作原理感兴趣,请使用 Google BTree。

      有人知道这里出了什么问题吗?

      您是通过 ssh 运行还是以某种方式远程连接?听起来有点像管道破裂的问题。您是否使用 {background : true} 创建了索引?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-01
        • 1970-01-01
        • 2018-01-09
        • 2020-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多