有没有简单的方法可以查看正在使用哪些 mongodb 索引?

有没有简单的方法可以查看正在使用哪些 mongodb 索引?

我们在其中一个 mongodb 集合上积累了大量索引,如果可能的话,最好删除其中一些。但是,很难知道应用程序正在使用哪些索引,哪些索引(如果有的话)现在已经过时。

是否有人知道任何工具/技术可以分析正在使用的索引?

编辑:Mongo v3.0.5

答案1

不幸的是,MongoDB 3.0 没有直接识别未使用索引的方法。

MongoDB 3.2 确实通过引入 $indexStats 对此进行了改进,它显示索引访问情况: https://docs.mongodb.com/manual/reference/operator/aggregation/indexStats/

一些建议:

答案2

MongoDB 3.2 之后,您可以使用 $indexStats 了解哪些索引正在使用以及使用程度如何。我写了一篇关于此的博客文章 -https://scalegrid.io/blog/how-to-find-unused-indexes-in-mongodb/

答案3

您可以对单个查询使用 query.explain() 来返回该查询的查询计划。您可以在此处进一步了解。 https://docs.mongodb.com/manual/reference/method/cursor.explain/

您可能还想了解其他事项:

在 serverStatus 的输出中:

scanned
scanAndOrder

在 collStats 的输出中:

totalIndexSize
indexSizes

在 dbStats 的输出中:

dbStats.indexes
dbStats.indexSize

相关内容