文档菜单
文档首页
/
MongoDB 手册
/ / /

configureQueryAnalyzer

在本页

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

版本7.0.

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

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

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

注意

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

该命令具有以下语法

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

configureQueryAnalyzer具有以下字段

字段
类型
必要性
描述
configureQueryAnalyzer
string
必需
namespace 要配置查询采样的集合的命名空间。
mode
string
必需
查询分析器运行的模式。必须设置为"full""off"
samplesPerSecond
double
可选

每秒的样本数。

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

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

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

configureQueryAnalyzer 需要以下角色之一

当删除或重命名集合时,自动禁用查询采样。如果您想在集合重新创建或重命名后采样查询,您必须重新配置查询采样。

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

每秒样本数上限为 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 阶段。例如,请参阅 采样查询。

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

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

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

返回

configureCollectionBalancing