评估当前操作的性能
以下各节介绍了评估运行性能的技术。
使用数据库分析器评估对数据库的操作
MongoDB提供了一个数据库分析器,可显示针对数据库的每个操作的性能特征。 使用分析器查找任何运行缓慢的查询或写入操作。 示例,您可以使用此信息来确定要创建哪些索引。
读/写操作的分析器条目和诊断日志消息(即 mongod/mongos 日志消息)包括:
现在,副本集的从节点会记录应用时间超过慢操作阈值的 oplog 条目。这些慢 oplog 消息:
在
diagnostic log
中针对从节点记录。记录在
REPL
组件下,该组件将含有文本applied op: <oplog entry> took <num>ms
。不依赖日志级别(系统级别或组件级别)
不依赖于分析级别。
受
slowOpSampleRate
影响。
分析器不会捕获慢 oplog 条目。
如需了解更多信息,请参阅“数据库分析器”。
使用db.currentOp()
评估mongod
操作
db.currentOp()
方法会报告 mongod
实例上运行的当前操作。
使用explain
评估查询性能
cursor.explain()
和 db.collection.explain()
方法返回有关查询执行的信息,例如为完成查询和执行统计信息而选择的 MongoDB 索引。您可以在 queryPlanner 模式、executionStats 模式或 allPlansExecution 模式下运行这些方法,以控制返回的信息量。
例子
要在查询上使用cursor.explain()
,查找与表达式{ a: 1 }
匹配的文档,请在名为records
的集合中,使用类似于 mongosh
中以下内容的操作:
db.records.find( { a: 1 } ).explain("executionStats")
从 MongoDB 4.2 开始,解释输出包括:
planCacheKey
提供对慢速查询的查询计划缓存的更多见解。
如需了解更多信息,请参阅“解释结果、cursor.explain()
、db.collection.explain()
和分析查询性能”。