如何在生产中有效地“整理”MongoDB索引?

时间:2010-04-30 21:10:33

标签: indexing mongodb admin

我一直在关注MongoDB。感觉很好。

我在集合中添加了一些索引,上传了一堆数据,然后删除了所有数据,我注意到索引没有改变大小,类似于报告的行为here

如果我打电话

db.repairDatabase()

然后将索引压扁到接近零。同样,如果我不删除所有数据,但调用repairDatabase(),索引会被压缩一些(可能因为未使用的扩展被截断了?)。我从db.collection.stats()的“totalIndexSize”获得索引大小。

然而,这需要很长时间(我读过它可能是大型数据库上的几个小时)。我不清楚数据库在运行时读取或写入的可用性。我猜不太可用。

由于我想尽可能少地运行mongod实例,所以我想了解更多有关删除后如何管理索引的信息。任何人都可以指点我或提出任何建议吗?

2 个答案:

答案 0 :(得分:1)

总结大卫的linked question

  • 除了db.repairDatabase()之外没办法。
  • 如果您需要最大限度地减少停机时间,请设置主/从配置,并将“repairDatabase”设置为从站,然后切换从站和主站。

答案 1 :(得分:0)

我认为Reducing MongoDB database file size会回答你的问题。