首页  :: 新随笔  :: 管理

MongoDB评估数据库当前的性能

Posted on 2022-04-06 12:54  高&玉  阅读(184)  评论(0编辑  收藏  举报

Database Profiler

MongoDB提供了一个数据库分析器,可以显示针对数据库的每个操作的性能特征。使用分析器来定位运行缓慢的任何查询或写操作。例如,您可以使用这些信息来确定要创建哪些索引。

 

从MongoDB 4.2开始,用于读写操作的profiler条目和诊断日志消息(即mongod/mongos日志消息)包括:

  • queryHash帮助识别具有相同查询形状的慢速查询。
  • planCacheKey提供对慢速查询的查询计划缓存的更深入了解。

 

从4.2版开始(也可以从4.0.6版开始),副本集的SECONDARY成员现在开始记录日志条目,这些日志条目花费的时间比慢速操作阈值更长。这些缓慢的oplog消息:

  • 诊断日志中记录了SECONDARY服务器的日志。
  • 在REPL组件下记录应用op的文本:<oplog entry> took <num>ms。
  • 不依赖于日志级别(系统级别或组件级别)。
  • 不要依赖于分析级别。
  • 可能会受到slowOpSampleRate的影响,取决于您的MongoDB版本:
    • 在MongoDB 4.2和更早的版本中,这些慢oplog条目不受slowOpSampleRate的影响。MongoDB无论采样速率如何,都会记录所有慢的日志。
    • 在MongoDB 4.4及以后版本中,这些慢oplog条目会受到slowOpSampleRate的影响。

 

MongoDB分析器不捕获慢oplog条目。

db.currentOp()

db.currentOp()打印在mongod实例上运行的当前操作。

explain

       cursor.explain()db.collection.explain()方法返回查询执行的信息,比如MongoDB选择的用于执行查询和执行统计的索引。您可以在queryPlanner模式、executionStats模式或allPlansExecution模式下运行这些方法来控制返回的信息量。

 

从MongoDB 4.2开始,解释输出包括:

  • queryHash帮助识别具有相同查询形状的慢速查询。
  • planCacheKey提供对慢速查询的查询计划缓存的更深入了解。

 

具体使用请参考我的另一篇博客:MongoDB CRUD之分析查询性能

 

参考MongoDB官网文档:Evaluate Performance of Current Operations