MongoDB需要很长时间才能建立索引

时间:2009-11-19 15:09:23

标签: mongodb performance indexing nosql

我有以下设置:

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我只想指出命令:

db.currentOp()

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

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

如前所述,谷歌BTree,如果你对它们的工作方式感兴趣。

  

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

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