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
には、次のフィールドがあります。
フィールド | タイプ | 必要性 | 説明 |
---|---|---|---|
| string | 必須 | クエリ サンプリング用に構成するコレクションの名前空間。 |
| string | 必須 | クエリ アナライザが実行されるモード。 |
| double | 任意 | 1 秒あたりのサンプル数。
詳細については、「 samplePerSecond の上限制限 」を参照してください。 |
アクセス制御
configureQueryAnalyzer
には、次のいずれかのロールが必要です。
dbAdmin
分析対象のコレクションを含むデータベースに対するロールclusterManager
クラスターに対するロール
動作
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 | 432,0000 | 69,120 |
queryAnalysisSampleExpirationSecs
サンプリングされたクエリは、 expireAfterSeconds
を持つ TTL インデックスを持つ内部コレクションに保存されます。 expireAfterSeconds
を構成するには、 queryAnalysisSampleExpirationSecs
サーバー パラメータを使用します。 サンプリングされたクエリは、 queryAnalysisSampleExpirationSecs
後に自動的に削除されます。
クエリ サンプリングの進行状況
クエリのサンプリング プロセスをモニターするには、$currentOp
ステージを使用します。例については、「サンプル クエリ」を参照してください。
サンプル クエリの表示
すべてのコレクションまたは特定のコレクションのサンプリングされたクエリを表示するには、 $listSampledQueries
集計ステージを使用します。
制限
Atlas共有クラスターとサーバーレス インスタンスでは
configureQueryAnalyzer
を実行できません。スタンドアロン配置では
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" } )