定義
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() には、次のフィールドがあります。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| string | 必須 | クエリ サンプリング用に構成するコレクションの名前空間。 |
| string | 必須 | クエリ アナライザが実行されるモード。 |
| double | 任意 | 1 秒あたりのサンプル数。
For details, see samplesPerSecond Upper Limit. |
アクセス制御
db.collection.configureQueryAnalyzer() には、次のいずれかのロールが必要です。
dbAdmin分析対象のコレクションを含むデータベースに対するロールclusterManagerクラスターに対するロール
動作
db.collection.configureQueryAnalyzer()を実行中のときは、次の動作を考慮してください。
削除されたコレクションと名前が変更されたコレクション
コレクションが削除または名前変更されると、クエリ サンプリングは自動的に無効になります。 コレクションが再作成または名前変更された後にクエリをサンプリングする場合は、クエリ サンプリングを再構成する必要があります。
シャードクラスタへの変換
レプリカセットでクエリ分析を実行中、それを 専用のコンフィギュレーションサーバーを使用してシャーディングされたクラスターに変換すると、クエリ分析が停止します。
samplePerSeconds の上限
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 |
queryAnalysisSampleExpirationSecs
サンプリングされたクエリは、 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
configureQueryAnalyzeron 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" } )