以下各节介绍了评估运行性能的技术。
使用数据库分析器评估对数据库的操作
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() 和分析查询性能”。