AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

configureQueryAnalyzer(データベースコマンド)

configureQueryAnalyzer

バージョン7.0の新機能。

レプリカセットまたはシャーディングされたクラスター上のコレクションのクエリ サンプリングを構成します。 サンプリングされたクエリは、シャードキーの読み取りと書込みの分布に関するメトリクスを計算するための情報をanalyzeShardKeyに提供します。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

注意

This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

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

db.collection.configureQueryAnalyzer() には、次のフィールドがあります。

フィールド
タイプ
必要性
説明

configureQueryAnalyzer

string

必須

クエリ サンプリング用に構成するコレクションの名前空間。

mode

string

必須

クエリ アナライザが実行されるモード。 "full"または"off"のいずれかに設定する必要があります。

samplesPerSecond

double

任意

1 秒あたりのサンプル数。

  • modeが"full"に設定されている場合、 samplesPerSecondは0と50の間で設定する必要があります。

  • modeが"off"に設定されている場合、サーバーはsamplesPerSecondを無視します。

For details, see samplesPerSecond Upper Limit.

db.collection.configureQueryAnalyzer() には、次のいずれかのロールが必要です。

  • dbAdmin 分析対象のコレクションを含むデータベースに対するロール

  • clusterManager クラスターに対するロール

db.collection.configureQueryAnalyzer()を実行中のときは、次の動作を考慮してください。

コレクションが削除または名前変更されると、クエリ サンプリングは自動的に無効になります。 コレクションが再作成または名前変更された後にクエリをサンプリングする場合は、クエリ サンプリングを再構成する必要があります。

レプリカセットでクエリ分析を実行中、それを 専用のコンフィギュレーションサーバーを使用してシャーディングされたクラスターに変換すると、クエリ分析が停止します。

samplesPerSecondの上限は50です。 レートが高い場合、サンプリングされたクエリは 4 日未満で 10 GB のディスク領域を埋め込みます。

次の表は、各サンプル レートと期間の組み合わせでの推定ディスク使用量を示しています。

サンプル クエリ サイズ(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

4,320,000

69,120

サンプリングされたクエリは、 expireAfterSecondsを持つ TTL インデックスを持つ内部コレクションに保存されます。 expireAfterSecondsを構成するには、 queryAnalysisSampleExpirationSecsサーバー パラメータを使用します。 サンプリングされたクエリは、 queryAnalysisSampleExpirationSecs後に自動的に削除されます。

クエリのサンプリング プロセスをモニターするには、$currentOp ステージを使用します。例については、「サンプル クエリ」を参照してください。

すべてのコレクションまたは特定のコレクションのサンプリングされたクエリを表示するには、 $listSampledQueries集計ステージを使用します。

クエリアナライザによってキャプチャされたすべてのコマンド タイプのカウントを確認するには、次のコマンドを使用します。

db.getSiblingDB("admin").aggregate( [
{ "$listSampledQueries": { ns: "<db.collectionName>" } },
{
"$group": {
"_id": {
ns: "$ns",
cmdName: "$cmdName"
},
count: { "$sum": 1 }
}
},
{
"$project": {
"_id.ns": 1,
"_id.cmdName": 1,
"count": 1 // Explicitly include fields to output
}
},
{ "$sort": { "_id.ns": 1 } }
] );
[{ count: 10, cmdName: 'aggregate' },
{ count: 51, cmdName: 'delete' },
{ count: 25, cmdName: 'distinct' },
{ count: 100, cmdName: 'find' },
{ count: 24, cmdName: 'findAndModify' },
{ count: 7, cmdName: 'update' }]

十分なサンプルがある場合は、 クエリアナライザを無効にできます。

  • You cannot run configureQueryAnalyzer on Atlas flex clusters.

  • スタンドアロン配置ではconfigureQueryAnalyzerを実行できません。

  • --shardsvrレプリカセットに対してconfigureQueryAnalyzerを直接実行することはできません。 シャーディングされたクラスターで実行する場合、 configureQueryAnalyzerはmongosに対して実行する必要があります。

  • 時系列コレクションに対してconfigureQueryAnalyzerを実行することはできません。

  • Queryable Encryptionが設定されているコレクションに対してconfigureQueryAnalyzerを実行することはできません。

configureQueryAnalyzer は、古い構成を説明するフィールド(存在する場合)と新しい構成を説明するフィールドを含むドキュメントを返します。

  • oldConfigurationが存在する場合は、古い構成を説明するフィールドが含まれます。

  • newConfiguration には、新しい構成を説明するフィールドが含まれています。

configureQueryAnalyzer は、次のようなドキュメントを返します。

{
ok: 1,
oldConfiguration: {
mode: ...,
samplesPerSecond: ...
}
newConfiguration: {
...
}
}

test.studentsコレクションで 1 秒あたり 5 サンプルのレートでクエリ サンプリングを有効にするには、次のコマンドを使用します。

db.adminCommand(
{
configureQueryAnalyzer: "test.students",
mode: "full",
samplesPerSecond: 5
}
)

test.studentsコレクションでクエリ サンプリングを無効にするには、次のコマンドを使用します。

db.adminCommand(
{
configureQueryAnalyzer: "test.students",
mode: "off"
}
)