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()。