profile
定义
profile
已更改在版本中5.0.
对于
mongod
实例,此命令启用、禁用或配置 数据库分析器。分析器捕获并记录运行中mongod
实例上写操作、游标和数据库命令的性能数据。如果分析器被禁用,则该命令配置如何将缓慢的操作记录到诊断日志中。在
mongod
上,如果 数据库分析器级别 为2
,则在分析器中启用完整日志记录,并在诊断日志
中。在 数据库分析器级别
1
时,以下设置会修改分析器和诊断日志
:如果 数据库分析器级别 为
0
,则 数据库分析器 被禁用。在级别0
时,以下设置仅修改诊断日志对于
mongos
实例,该命令仅配置如何将操作写入诊断日志。您不能在 数据库分析器 上启用mongos
实例,因为mongos
没有任何分析器可以写入的集合。从 MongoDB 5.0 开始,使用
profile
命令或db.setProfilingLevel()
包装方法对 数据库分析器 的level
、slowms
、sampleRate
或filter
进行更改将记录在日志文件
中。在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> } )
命令字段
命令接受以下字段
字段 | 类型 | 描述 | |
---|---|---|---|
profile | int | ||
slowms | int | 可选。默认:100 慢操作时间阈值(毫秒)。运行时间超过此阈值的操作被认为是 慢。 慢操作基于 当 在更高的 此参数影响与配置选项 | |
sampleRate | double | 可选。默认:1.0 应分析或记录的慢操作的分数。 此参数影响与配置选项 | |
filter | object | 可选。一个查询,用于确定哪些操作要进行分析或记录。 过滤查询采用以下形式
查询可以是任何合法的 此参数影响与配置选项 |
db.getProfilingStatus()
和db.setProfilingLevel()
shell方法是profile
命令的包装器。
行为
执行 profile
命令时,会对受影响的数据库加写锁,同时启用或禁用性能分析器。这通常是一个短暂的操作。该锁会阻塞其他操作,直到 profile
命令执行完毕。
示例
启用过滤
要启用性能分析并过滤记录的数据
db.runCommand( { profile: 1, filter: { $or: [ { millis: { $gte: 100 } }, { user: "testuser@admin" } ] } } )
filter 只选择
至少
100
毫秒长,或者由
testuser
提交的操作。
取消设置过滤器
要清除配置文件过滤器,请使用 profile
命令并指定 filter: "unset"
选项。
db.runCommand( { profile: 1, filter: "unset" } )
此操作会返回设置的上一个值的文档。
要查看当前的配置文件级别,请参阅 db.getProfilingStatus()
。