Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

configureQueryAnalyzer

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 访问控制
  • 行为
  • 输出
  • 示例
  • 了解详情
configureQueryAnalyzer

7.0 版本中的新增功能

为副本集或分片集群上的集合配置查询采样。 采样查询向 analyzeShardKey提供信息,以计算有关分分片键的读取和写入分布的指标。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令

该命令具有以下语法:

db.adminCommand(
{
configureQueryAnalyzer: <string>,
mode: <string>,
samplesPerSecond: <double>
}
)

configureQueryAnalyzer 有以下字段:

字段
类型
必要性
说明

configureQueryAnalyzer

字符串

必需

要为query采样配置的collection的命名空间

mode

字符串

必需

查询分析器运行的模式。 必须设置为"full""off"

samplesPerSecond

double

Optional

每秒的样本数。

  • mode设置为"full"时, samplesPerSecond必须设置在050之间。

  • mode设置为"off"时,服务器会忽略samplesPerSecond

有关详细信息,请参阅samplesPerSecond 上限。

configureQueryAnalyzer 需要以下角色之一:

运行configureQueryAnalyzer时请考虑以下行为:

删除或重命名集合时,会自动禁用查询采样。 如果要在重新创建或重命名collection后对查询进行采样,则必须重新配置查询采样。

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

采样的查询存储在一个内部集合中,该集合具有带有expireAfterSeconds的 TTL 索引。 要配置expireAfterSeconds ,请使用queryAnalysisSampleExpirationSecs服务器参数。 采样查询会在queryAnalysisSampleExpirationSecs后自动删除。

要监控查询采样过程,请使用$currentOp阶段。 有关示例,请参阅采样查询。

要查看所有collection或特定collection的采样查询,请使用$listSampledQueries聚合阶段。

  • 您无法在Atlas共享集群无服务器实例上运行configureQueryAnalyzer

  • 您无法在独立运行的实例上运行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"
}
)

后退

configureCollectionBalancing