profile
定义
profile
5.0 版本中的更改。
对于
mongod
实例,该命令启用、禁用或配置数据库分析器。 分析器捕获并记录有关运行的mongod
实例上的写入操作、游标和数据库命令性能的数据。 如果分析器已禁用,该命令将配置如何将慢速操作记录到诊断日志中。在
mongod
中,如果数据库分析器级别为2
,则在分析器上和diagnostic log
上启用完整日志。在数据库分析器级别
1
中,以下设置修改分析器和diagnostic log
:如果数据库分析器级别为
0
,则禁用数据库分析器。在级别0
中,以下设置仅修改诊断日志:对于
mongos
实例,该命令仅配置如何将操作写入诊断日志。 您无法在 实例上启用 数据库分析器mongos
,因为mongos
没有分析器可以写入的任何集合。从 MongoDB5.0 开始,使用
level
slowms
sampleRate
filter
命令或db.setProfilingLevel()
包装器方法对 数据库分析器profile
log file
、 、 或 所做的更改会记录在 。在
mongos
上,您可以将profile
级别设置为:0
为诊断日志设置slowms
、sampleRate
和filter
;-1
读取当前设置。
默认情况下,分析器处于关闭状态。
警告
分析会降低性能,并在系统日志中暴露未经加密的查询数据。在生产部署中配置和启用分析器之前,请仔细考虑对性能和安全的影响。
有关潜在性能下降的更多信息,请参阅分析器开销。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { profile: <level>, slowms: <threshold>, sampleRate: <rate>, filter: <filter expression> } )
命令字段
该命令接受以下字段:
字段 | 类型 | 说明 | |
---|---|---|---|
| int | 配置分析器级别。可以使用以下分析器级别:
| |
| int | 可选。默认值:100 慢速操作时间阈值(以毫秒为单位)。运行时间超过此阈值的操作被视为慢速操作。 根据 当 如果 此参数影响与配置选项 | |
| double | 可选。默认值:1.0 应分析或记录的慢速操作的比例。 此参数影响与配置选项 | |
| 对象 | 可选。确定要分析或记录哪些操作的查询。 filter 查询采用以下形式:
该查询可以是任何合法的 此参数影响与配置选项 |
db.getProfilingStatus()
和 db.setProfilingLevel()
shell 方法为 profile
命令提供了包装器。
行为
profile
命令在启用或禁用分析器时获得对受影响数据库的写锁。这通常是一个短期操作。锁定会阻塞其他操作,直到 profile
命令执行完毕。
例子
启用筛选
要启用分析并过滤记录的数据:
db.runCommand( { profile: 1, filter: { $or: [ { millis: { $gte: 100 } }, { user: "testuser@admin" } ] } } )
过滤器仅选择以下操作:
至少
100
毫秒长,或者由
testuser
提交。
取消设置筛选器
要清除分析筛选器,请运行带有 filter: "unset"
选项的 profile
。
db.runCommand( { profile: 1, filter: "unset" } )
该操作返回一个包含先前设置值的文档。
要查看当前分析级别,请参阅 db.getProfilingStatus()
。