随着我的项目代码的不断发展,新的索引正在就位,我确信一些旧的索引不再需要。然而,在我删除它们以查看是否有任何东西变慢之前,我更希望是否有一种更具编程性或分析性的方法来确定索引是否正在被使用。
我在 system.indexes 集合中没有看到任何内容,但理想情况下在某处有一些关于索引访问的统计信息!是这样吗?
最佳答案
运行 db.collection.find(...)
查询,并将 .explain()
添加到末尾。这是查看查询如何运行的最有用的方法:http://www.mongodb.org/display/DOCS/Explain
您还可以打开分析,分析日志条目会为您提供所分析的每个查询的索引使用情况。不过,到目前为止还没有任何汇总统计数据。特别是,它不会告诉您哪些索引未被使用,只会告诉您正在使用的索引(对于每个查询)。 (编辑:我一定是在想象——你必须从探查器中获取查询,然后对其运行解释。手动有点痛苦。)http://www.mongodb.org/display/DOCS/Database+Profiler
更新: 刚从 mongolab 看到这个;看起来像一个有趣的新项目:http://blog.mongolab.com/2012/06/introducing-dex-the-index-bot/
更新: 我创建了一个脚本来通过探查器检查未使用的索引: https://github.com/wfreeman/indexalizer
关于mongodb - 有什么简单的方法可以判断 mongodb 索引是否仍在使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12355702/