我已经对获取有关慢速查询的信息进行了合理的搜索,但我发现的信息似乎表明您可以从数据库中获取的数据相当有限。
我想知道查询花费了多少时间等待锁,查询使用了哪个索引,等待/从磁盘获取花费了多少时间,以及处理花费了多少时间(对聚合框架特别感兴趣表现)。
我想看看这里的人是否对测量这些参数有任何建议,和/或是否有可能。
提前致谢。:)
*编辑。如果这很重要,我倾向于使用 java mongo 驱动程序。
如果您没有查看mongod
日志,有些事情可能并不明显 - 所有花费超过“慢毫秒”阈值(默认为 100 毫秒,但您可以更改它)的操作都会记录到 mongod 日志文件中。
以下是它的外观以及如何阅读的示例:
update training.scores
query: { score: { $lte: 90.0 } }
update: { $set: { grade: "B" } }
nscanned:4876
nmoved:2438
nupdated:2438
keyUpdates:0
numYields: 2
locks(micros) w:400877
235ms
您可以在这里看到其中一些字段的含义,但您感兴趣的是锁、numYields、nmoved 和 nupdated 以及 nscanned - 还有 scanAndOrder(即排序是使用索引还是必须在内存中完成)。
我建议查看该文档页面,了解您可以从 system.profile 集合以及 mongod 日志中获得哪些信息,以帮助调查集群的性能。