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
有以下字段:
字段 | 类型 | 必要性 | 说明 |
---|---|---|---|
| 字符串 | 必需 | 要为query采样配置的collection的命名空间。 |
| 字符串 | 必需 | 查询分析器运行的模式。 必须设置为 |
| double | Optional | 每秒的样本数。
|
访问控制
configureQueryAnalyzer
需要以下角色之一:
dbAdmin
针对包含正在分析的collection的数据库的角色clusterManager
针对集群的角色
行为
运行configureQueryAnalyzer
时请考虑以下行为:
删除的集合和重命名的集合
删除或重命名集合时,会自动禁用查询采样。 如果要在重新创建或重命名collection后对查询进行采样,则必须重新配置查询采样。
samplePerSeconds 上限
samplesPerSecond
的上限为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
阶段。 有关示例,请参阅采样查询。
查看采样查询
要查看所有collection或特定collection的采样查询,请使用$listSampledQueries
聚合阶段。
限制
您无法在独立运行的实例上运行
configureQueryAnalyzer
。您无法直接针对
--shardsvr
副本集运行configureQueryAnalyzer
。 在分片集群上运行时,configureQueryAnalyzer
必须针对mongos
运行。您无法针对time-series collection运行
configureQueryAnalyzer
。您无法对具有Queryable Encryption的collection运行
configureQueryAnalyzer
。
输出
configureQueryAnalyzer
返回一个文档,其中包含描述旧配置的字段(如果存在)和描述新配置的字段。
oldConfiguration
,如果存在,则包含描述旧配置的字段。newConfiguration
包含描述新配置的字段。
configureQueryAnalyzer
返回类似于以下内容的文档:
{ ok: 1, oldConfiguration: { mode: ..., samplesPerSecond: ... } newConfiguration: { ... } }
示例
启用查询采样
要以每秒五个样本的速率对test.students
collection 启用查询采样,请使用以下命令:
db.adminCommand( { configureQueryAnalyzer: "test.students", mode: "full", samplesPerSecond: 5 } )
禁用查询采样
test.students
要禁用在collection上的查询采样,请使用以下命令:
db.adminCommand( { configureQueryAnalyzer: "test.students", mode: "off" } )