在本页面
数据库分析器捕获有关读取和写入操作,游标操作和数据库命令的数据信息。要配置数据库概要文件并设置捕获概要文件数据的阈值,请参阅“ 数据库概要分析器”部分。
数据库探查器将数据写入system.profile具有上限的集合中。要查看事件探查器的输出,请在system.profile集合上使用常规的MongoDB查询。
注意
因为数据库探查器会将数据写入数据库中的
system.profile集合,所以探查器将对某些写活动进行探查,即使对于只读的数据库也是如此。
在版本3.4中更改。
currentOp和
数据库配置报告对所有CRUD操作,主要包括以下相同的基本诊断信息:
aggregatecountdeletedistinctfind(OP_QUERY和
command)findAndModifygetMore(OP_GET_MORE和
command)insertmapReduceupdate这些操作还包括在慢查询的日志记录中(slowOpThresholdMs有关慢查询日志的更多信息,请参阅)。
system.profile文件¶下面显示了在system.profile集合中找到的一些示例文档,这些文档可
用于独立运行:
中的以下文档system.profile反映了查找操作:
对于任何单个操作,数据库探查器创建的文档将包括以下字段的子集。这些文档中字段的准确选择取决于操作的类型。
从MongoDB 4.2(和4.0.9)开始,为了进行慢速操作,探查器条目和
诊断日志消息均包含
storage信息。
注意
有关特定于MongoDB版本的输出,请参阅相应版本的《 MongoDB手册》。
system.profile.op¶操作类型。可能的值为:
commandcountdistinctgeoNeargetMoregroupinsertmapReducequeryremoveupdatesystem.profile.command¶在版本3.6中更改。
包含与此操作关联的完整命令对象的文档。
例如,以下输出包含对find在名为items的数据库中命名的集合进行操作的命令对象
test:
下面的示例输出包含一个命令对象
getMore通过用光标ID的命令生成的操作19234103609上的指定集合
items中指定的数据库test:
如果命令文档超过50 KB,则该文档具有以下格式:
该$truncated字段包含文档的字符串摘要,不包括文档的comment字段(如果存在)。如果摘要仍超过50 KB,则会被进一步截断,并在字符串末尾用省略号(...)表示。
comment如果将注释传递给操作,则该字段存在。
system.profile.originatingCommand¶在版本3.6中更改。
对于"getmore"从游标检索下一批结果的操作,该originatingCommand字段包含最初创建该游标的完整命令对象(例如find或aggregate)。
system.profile.cursorid¶通过query和getmore
操作访问的游标的ID 。
system.profile.keysExamined¶在版本3.2.0中进行了更改。
从改名system.profile.nscanned。MongoDB扫描以执行操作的索引键的数量。
通常,如果keysExamined大于nreturned,则数据库正在扫描许多索引键以查找结果文档。考虑创建或调整索引以提高查询性能。
在版本3.4中更改。
keysExamined 可用于以下命令和操作:
system.profile.docsExamined¶在3.2.0版中进行了更改:从重新命名system.profile.nscannedObjects。
MongoDB扫描以执行操作的集合中的文档数。
在版本3.4中更改。
docsExamined 可用于以下命令和操作:
system.profile.hasSortStage¶在3.2.0版中进行了更改:从重新命名system.profile.scanAndOrder。
hasSortStage是一个布尔值,表示true
查询无法使用索引中的排序来返回请求的排序结果;也就是说,MongoDB在从游标接收文档后必须对文档进行排序。该字段仅在值为时出现true。
在版本3.4中更改。
hasSortStage 可用于以下命令和操作:
find(OP_QUERY和
command)getMore(OP_GET_MORE和
command)findAndModifymapReduceaggregatesystem.profile.ndeleted¶操作删除的文档数。
system.profile.ninserted¶操作插入的文档数。
system.profile.nMatched¶符合system.profile.query
更新操作条件的文档数。
system.profile.nModified¶通过更新操作修改的文档数。
system.profile.upsert¶指示更新操作的upsert选项值的布尔值。仅在upsert为true时出现。
system.profile.fromMultiPlanner¶3.2.5版中的新功能。
一个布尔值,指示查询计划者在选择查询的获胜执行计划之前是否评估了多个计划。
仅在值为时存在true。
system.profile.keysInserted¶为给定的写操作插入的索引键的数量。
system.profile.numYield¶操作产生的允许其他操作完成的次数。通常,操作在需要访问MongoDB尚未完全读入内存的数据时产生。这样,在MongoDB读取数据以进行yield操作时,可以完成内存中具有数据的其他操作。有关更多信息,请参见有关何时产生操作的常见问题解答。
system.profile.queryHash¶一个十六进制字符串,表示查询形状的哈希,并且仅取决于查询形状。queryHash可以帮助识别具有相同查询形状的慢查询(包括写操作的查询过滤器)。
注意
与任何哈希函数一样,两个不同的查询形状可能会导致相同的哈希值。但是,不同查询形状之间不会发生哈希冲突。
有关详细信息queryHash,并planCacheKey请参阅
queryHash和planCacheKey。
4.2版中的新功能。
system.profile.planCacheKey¶与查询关联的计划缓存条目的键的哈希值。
与不同的是queryHash,
planCacheKey是查询形状和该形状当前可用索引的函数。即,如果添加/删除了可以支持查询形状的索引,则该planCacheKey值可能会更改,而该queryHash值不会更改。
有关详细信息queryHash,并planCacheKey请参阅
queryHash和planCacheKey。
4.2版中的新功能。
system.profile.locks¶在system.profile.locks提供各种信息
的锁类型和锁模式运行期间举行。
可能的锁定类型为:
| 锁类型 | 描述 |
|---|---|
ParallelBatchWriterMode |
表示并行批处理写入器模式的锁。 在早期版本中,PBWM信息被报告为 4.2版中的新功能。 |
ReplicationStateTransition |
表示为副本集成员状态转换使用的锁定。 4.2版中的新功能。 |
Global |
代表全局锁定。 |
Database |
表示数据库锁定。 |
Collection |
表示收集锁。 |
Mutex |
代表互斥体。 |
Metadata |
表示元数据锁定。 |
oplog |
表示锁定oplog。 |
锁定类型的可能锁定模式如下:
| 锁定模式 | 描述 |
|---|---|
R |
表示共享(S)锁。 |
W |
表示排他(X)锁。 |
r |
表示意图共享(IS)锁。 |
w |
表示Intent Exclusive(IX)锁。 |
返回的各种锁类型的锁信息包括:
system.profile.locks.acquireCount¶操作在指定模式下获得锁定的次数。
system.profile.locks.acquireWaitCount¶acquireCount由于锁处于冲突模式下,操作必须等待锁获取的次数
。
acquireWaitCount小于或等于acquireCount。
system.profile.locks.timeAcquiringMicros¶操作必须等待以获取锁的累积时间(以微秒为单位)。
timeAcquiringMicros除以
acquireWaitCount给出特定锁定模式的近似平均等待时间。
system.profile.locks.deadlockCount¶操作在等待锁获取时遇到死锁的次数。
有关锁定模式的更多信息,请参阅 MongoDB使用哪种锁定类型?。
system.profile.storage¶在新版本4.2: (在4.0.9也可启动)
该system.profile.storage信息提供有关存储引擎数据和操作等待时间的指标。
仅当值大于零时,才返回特定的存储指标。
system.profile.storage.data.bytesRead