configureQueryAnalyzer
定义
configureQueryAnalyzer
新版本7.0.
配置副本集或分片集群中集合的查询采样。采样的查询为
analyzeShardKey
提供信息,以计算分片键的读写分布指标。
兼容性
此命令在以下环境中托管的部署中可用
MongoDB Atlas:适用于云中MongoDB部署的全面托管服务
注意
此命令在所有MongoDB Atlas集群中受支持。有关Atlas对所有命令的支持信息,请参阅不受支持的命令。
MongoDB Enterprise:MongoDB的基于订阅的自主管理版本
MongoDB Community:MongoDB的开源、免费使用和自主管理版本
语法
该命令具有以下语法
db.adminCommand( { configureQueryAnalyzer: <string>, mode: <string>, samplesPerSecond: <double> } )
命令字段
configureQueryAnalyzer
具有以下字段
字段 | 类型 | 必要性 | 描述 |
---|---|---|---|
configureQueryAnalyzer | string | 必需 | namespace 要配置查询采样的集合的命名空间。 |
mode | string | 必需 | 查询分析器运行的模式。必须设置为 "full" 或"off" 。 |
samplesPerSecond | double | 可选 | 每秒的样本数。
有关详细信息,请参阅samplesPerSecond 上限。 |
访问控制
configureQueryAnalyzer
需要以下角色之一
dbAdmin
角色针对要分析的集合所在的数据库clusterManager
角色针对集群
行为
当删除或重命名集合时,自动禁用查询采样。如果您想在集合重新创建或重命名后采样查询,您必须重新配置查询采样。
删除的集合和重命名的集合
当删除集合或重命名集合时,查询采样会自动禁用。如果您想在集合重新创建或重命名后进行查询采样,您必须重新配置查询采样。
每秒样本数上限
每秒样本数上限为 50
。更高的速率会导致采样查询在不到四天内填满10GB的磁盘空间。
此表显示了每个样本速率和持续时间组合的估计磁盘使用量
平均采样查询大小(kB) | samplesPerSecond | 采样持续时间(天) | 采样查询数量 | 采样查询总大小(GB) |
---|---|---|---|---|
0.5 | 0.1 | 7 | 60,480 | 0.03024 |
0.5 | 10 | 7 | 6,048,000 | 3.024 |
0.5 | 50 | 7 | 30,240,000 | 15.12 |
1000 | 50 | 1 | 4,320,000 | 4320 |
16,000 | 50 | 1 | 432,0000 | 69,120 |
queryAnalysisSampleExpirationSecs
采样查询存储在具有 expireAfterSeconds
TTL索引的内部集合中。要配置 expireAfterSeconds
,请使用 queryAnalysisSampleExpirationSecs
服务器参数。采样查询将在 queryAnalysisSampleExpirationSecs
后自动删除。
查询采样进度
为了监控查询采样过程,请使用 $currentOp
阶段。例如,请参阅 采样查询。
查看采样查询
要查看所有集合或特定集合的采样查询,请使用 $listSampledQueries
聚合阶段。
限制条件
您无法在独立部署上运行
configureQueryAnalyzer
。您无法直接针对
--shardsvr
副本集运行configureQueryAnalyzer
。当在分片集群上运行时,configureQueryAnalyzer
必须针对mongos
运行。您无法针对 时间序列 集合运行
configureQueryAnalyzer
。您无法针对具有 可查询加密 的集合运行
configureQueryAnalyzer
。
输出
configureQueryAnalyzer
返回一个文档,其中包含描述旧配置的字段(如果存在)以及描述新配置的字段。
如果存在,
oldConfiguration
包含描述旧配置的字段。newConfiguration
包含描述新配置的字段。
configureQueryAnalyzer
返回的文档类似于以下内容
{ ok: 1, oldConfiguration: { mode: ..., samplesPerSecond: ... } newConfiguration: { ... } }
示例
启用查询采样
要在 test.students
集合上以每秒五个样本的速率启用查询采样,请使用以下命令
db.adminCommand( { configureQueryAnalyzer: "test.students", mode: "full", samplesPerSecond: 5 } )
禁用查询采样
要在 test.students
集合上禁用查询采样,请使用以下命令
db.adminCommand( { configureQueryAnalyzer: "test.students", mode: "off" } )