MongoDB的数据库探查器输出
文章目录
示例system.profile文档
下面显示了在system.profile集合中找到的一些示例文档,这些文档可 用于独立运行:
以下文档system.profile反映了查找操作:
|
|
以下示例反映了对名为report的集合的更新操作。
|
|
输出参考
对于任何单个操作,数据库探查器创建的文档将包括以下字段的子集。这些文档中字段的准确选择取决于操作的类型。
从MongoDB 4.2(和4.0.9)开始,为了进行慢速操作,探查器条目和诊断日志消息包括storage信息。
system.profile.op
操作类型。可能的值为:
- command
- count
- distinct
- geoNear
- getMore
- group
- insert
- mapReduce
- query
- remove
- update
system.profile.ns
操作目标的名称空间。 MongoDB中的命名空间采用数据库的形式,后跟一个点(。),然后是集合的名称。
system.profile.command
在版本3.6中更改。
包含与此操作关联的完整命令对象的文档。
例如,以下输出包含对名为test的数据库中名为items的集合的find操作的命令对象:
|
|
以下示例输出包含getMore操作的命令对象,该对象由光标ID为19234103609的命令在名为test的数据库中的名为items的集合上生成:
|
|
如果命令文档超过50 KB,则该文档具有以下格式:
|
|
$ truncated字段包含文档的字符串摘要,不包括文档的注释字段(如果存在)。如果摘要仍超过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 可用于以下命令和操作:
- aggregate
- find(OP_QUERY和 command)
- findAndModify
- count
- distinct
- getMore(OP_GET_MORE和 command)
- mapReduce
- delete
- update
system.profile.docsExamined
在3.2.0版中进行了更改:从重新命名system.profile.nscannedObjects。
MongoDB扫描以执行操作的集合中的文档数。
在版本3.4中更改。
docsExamined 可用于以下命令和操作:
- aggregate
- find(OP_QUERY和 command)
- findAndModify
- count
- distinct
- getMore(OP_GET_MORE和 command)
- mapReduce
- delete
- update
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)
- findAndModify
- mapReduce
- aggregate
system.profile.usedDisk
4.2版中的新功能。
一个布尔值,指示由于内存限制,任何聚合阶段是否将数据写入临时文件。
仅在usedDisk为true时出现。
system.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.replanned
3.2.5版中的新功能。
一个布尔值,指示查询系统是否收回了缓存的计划并重新评估了所有候选计划。
仅在值为时存在true。
system.profile.replanReason
版本4.2.6中的新功能。
一个字符串,指示退出缓存的计划的特定原因 。
因为只有当存在replanned为true时出现。
system.profile.keysInserted
为给定的写操作插入的索引键的数量。
system.profile.keysDeleted
在3.4中删除。
在操作中更新更改的索引键的数量。更改索引键会降低性能成本,因为数据库必须删除旧键并将新键插入B树索引。
system.profile.writeConflicts
写操作期间遇到的冲突数;例如,一个update操作试图与另一个update操作修改同一文档。另请参见写冲突。
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信息被报告为Global锁定信息的一部分。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
在新版本4.2: (在4.0.9也可启动)
该操作从磁盘读取到高速缓存的字节数。
system.profile.storage.data.timeReadingMicros
在新版本4.2: (在4.0.9也可启动)
从磁盘读取操作必须花费的时间(以微秒为单位)。
system.profile.storage.data.bytesWritten
在新版本4.2: (在4.0.9也可启动)
该操作从缓存写入磁盘的字节数。
system.profile.storage.data.timeWritingMicros
在新版本4.2: (在4.0.9也可启动)
操作写入磁盘所花费的时间(以微秒为单位)。
system.profile.storage.timeWaitingMicros.cache
在新版本4.2: (在4.0.9也可启动)
操作必须等待缓存中的空间的时间(以微秒为单位)。
system.profile.storage.timeWaitingMicros.schemaLock
在新版本4.2: (在4.0.9也可启动)
操作(如果修改架构)必须等待以获取架构锁的时间(以微秒为单位)。
system.profile.storage.timeWaitingMicros.handleLock
在新版本4.2: (在4.0.9也可启动)
操作必须等待以获取所需数据句柄上的锁的时间(以微秒为单位)。
system.profile.nreturned
操作返回的文档数。
system.profile.responseLength
运算结果文档的字节长度。很大会 responseLength影响性能。要限制查询操作的结果文档的大小,可以使用以下任一方法:
投影 The limit() method The batchSize() method 注意
当MongoDB将查询配置文件信息写入日志时,该responseLength值位于名为的字段中reslen。
system.profile.protocol
的MongoDB的有线协议请求消息的格式。
system.profile.millis
从mongod操作开始到操作结束的时间,以毫秒为单位 。
system.profile.planSummary
3.4版的新功能。
执行计划摘要。
system.profile.execStats
包含查询操作执行统计信息的文档。对于其他操作,该值为空文档。
system.profile.execStats
以树的形式显示统计信息;每个节点提供在查询操作的该阶段执行的操作的统计信息。
注意
以下字段列表execStats 并不意味着要详尽无遗,因为返回的字段在每个阶段都有所不同。
system.profile.execStats.stage
作为查询执行的一部分执行的操作的描述性名称;例如
- COLLSCAN 用于集合扫描
- IXSCAN 用于扫描索引键
- FETCH 用于检索文件
system.profile.execStats.inputStages
一个数组,其中包含作为当前阶段的输入阶段的操作的统计信息。
system.profile.ts
操作的时间戳。
system.profile.client
操作起源的客户端连接的IP地址或主机名。
system.profile.appName
3.4版的新功能。
运行该操作的客户端应用程序的标识符。使用appName连接字符串选项可以为appName字段设置自定义值。
system.profile.allUsers
会话的经过身份验证的用户信息(用户名和数据库)的数组。另请参阅用户。
system.profile.user
运行该操作的已认证用户。如果该操作不是由经过身份验证的用户运行的,则此字段的值为空字符串。
文章作者 Forz
上次更新 2020-06-09