M10 以上のクラスターとサーバーレスインスタンスでのみ利用可能
パフォーマンス アドバイザーは、MongoDB が遅いと判断したクエリを監視し、クエリ パフォーマンスを向上させるための新しいインデックスを提案します。遅いクエリのしきい値は、クラスター上の操作の平均時間に基づいて変化し、ワークロードに関連する推奨事項が提供されます。
推奨されるインデックスには、クエリシェイプでグループ化されたサンプル クエリが付属しています。これらのクエリは、インデックスに関する提案によりメリットを得るコレクションに対して実行されたものです。Performance Advisor が、Atlas クラスターのパフォーマンスに悪影響を及ぼすことはありません。
また、Namespace Insights を使用してコレクション レベルの クエリのレイテンシ を監視したり、Query Profiler を使用してクエリ パフォーマンスを監視したりすることもできます。
注意
クエリが遅くなる一般的な理由
クエリが遅い場合、一般的な理由は次のとおりです。
クエリは現在のインデックスではサポートされていません。
コレクション内の一部のドキュメントには、検索とインデックス作成にコストがかかる大きな配列フィールドがあります。
1 つのクエリで、$lookup を使用して複数のコレクションから情報を検索します。
必要なアクセス権
クエリが遅いコレクションを表示し、推奨されるインデックスを確認するには、プロジェクトに対する Project Read Only
以上のアクセス権が必要です。
Performance Advisor のサンプルクエリのフィールド値を表示するには、プロジェクトに対する Project Observability Viewer
、Project Data Access Read Only
、Project Data Access Read/Write
、または Project Data Access Admin
へのアクセス権が必要です。
Atlas が管理する低速操作しきい値を有効または無効にするには、プロジェクトに対する Project Owner
アクセス権が必要です。Organization Owner
アクセス権を持つユーザーは、自分自身を Project Owner
としてプロジェクトに追加する必要があります。
スロー クエリのしきい値を設定する
デフォルトでは、Atlas はクラスター全体の操作の実行時間に基づいて、低速クエリのしきい値を動的に調整します。ただし、この機能をオプトアウトして、代わりに 100 ミリ秒の固定の低速クエリしきい値を使用することもできます。Atlas CLI、Atlas 管理 API、または Atlas UI を使用して、Atlas 管理の低速操作しきい値を無効にすることができます。
注意
MongoDB Search が有効になっている Atlas クラスターは、Atlas が管理する低速クエリ操作のしきい値をサポートしていません。
Atlas の M0
クラスター、フレックス クラスター、サーバーレスインスタンス(非推奨)では Atlas 管理の低速クエリ操作のしきい値はデフォルトで無効であり、ユーザーは有効にできません。
Atlas 管理の低速操作しきい値を無効にする
重要
デフォルトでは、Atlas はクラスター全体の操作の実行時間に基づいて、低速クエリのしきい値を動的に調整します。Atlas が管理する低速クエリしきい値を無効にすると、動的に調整されなくなります。MongoDB では、固定の低速クエリしきい値がデフォルトで 100 ミリ秒に設定されています。固定の低速クエリしきい値を 100 ミリ秒未満に設定することはお勧めしません。
Atlas が管理する低速操作しきい値を無効にし、100 ミリ秒の固定しきい値を使用するには、次の手順を実行します。
Atlas CLI を使用してプロジェクトの Atlas が管理する低速操作しきい値を無効にするには、次のコマンドを実行します。
atlas performanceAdvisor slowOperationThreshold disable [options]
コマンドの構文とパラメータについて詳しくは、Atlas CLI ドキュメントの performanceAdvisor slowOperationThreshold disable を参照してください。
「管理された低速操作しきい値を無効にする」を参照してください。
Atlasで、Go Project Settings{0 ページに します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、Project Settings をクリックします。
- プロジェクト設定ページ
- 表示されます。
現在のプロジェクトのプロジェクト設定で、Managed Slow Operations を Off に切り替えます。
Atlas 管理の低速操作しきい値を有効にする
Atlas は、Atlas が管理する低速操作しきい値をデフォルトで有効にします。以前無効にした Atlas 管理の低速操作しきい値を再度有効にするには:
Atlas CLI を使用してプロジェクトの Atlas が管理する低速操作しきい値を有効にするには、次のコマンドを実行します。
atlas performanceAdvisor slowOperationThreshold enable [options]
コマンドの構文とパラメータについて詳しくは、Atlas CLI ドキュメントの atlas performanceAdvisor slowOperationThreshold enable を参照してください。
「管理された低速操作しきい値を有効にする」を参照してください。
現在のプロジェクトのプロジェクト設定で、Managed Slow Operations を On に切り替えます。
インデックスの考慮事項
インデックスは読み取りパフォーマンスを向上させますが、書き込み中にインデックスを更新する必要があるため、インデックスの数が多いと書き込みパフォーマンスに悪影響を与える可能性があります。コレクションにすでに複数のインデックスがある場合は、新しいインデックスを作成するかどうかを決定する際に、読み取りと書き込みのパフォーマンスのトレードオフを考慮してください。このようなコレクションのクエリを変更して既存のインデックスを活用できるかどうか、また、クエリが新しいインデックスのコストに見合うほど頻繁に発生するかどうかを調べます。
Performance Advisor にアクセスする
低速クエリが発生しているコレクションの表示
Atlas CLI を使用して、低速クエリが発生しているコレクションの名前空間を <database>.<collection>
形式で最大 20 個返すには、次のコマンドを実行します。
atlas performanceAdvisor namespaces list [options]
コマンドの構文とパラメータについて詳しくは、Atlas CLI ドキュメントの atlas performanceAdvisor namespaces list を参照してください。
低速クエリ ログの表示
Atlas CLI を使用して、Performance Advisor とクエリプロファイラーによって特定された低速クエリのクエリログアイテムを返すには、次のコマンドを実行します。
atlas performanceAdvisor slowQueryLogs list [options]
コマンドの構文とパラメータについて詳しくは、Atlas CLI ドキュメントの atlas performanceAdvisor slowQueryLogs list を参照してください。
推奨インデックスの表示
Atlas CLI を使用して、低速クエリが発生しているコレクションの推奨インデックスを返すには、次のコマンドを実行します。
atlas performanceAdvisor suggestedIndexes list [options]
コマンドの構文とパラメータの詳細については、Atlas CLI ドキュメントの atlas performanceAdvisor suggestedIndexes list を参照してください。
Atlas UI を使用して Performance Advisor にアクセスするには、以下の手順を行います。
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
推奨事項 の表示。
Performance Advisor は過去 24 時間からインデックスの推奨事項を取得します。
Performance Advisor に推奨事項がある場合は、Create Indexes セクションの View Recommendations ボタンをクリックします。
Performance Advisor に推奨事項がない場合、過去 5 日間までのインデックスの推奨事項を検索するには、Create Indexes セクションの Explore Recommendations をクリックします。
Performance Advisor は、関連する操作によって読み取られた無駄なバイトの合計に基づいて、インデックスを Impact に従ってランク付けします。 インデックスランキングの詳細については、「 インデックスランキングを確認する 」を参照してください。
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
MongoDB MCP サーバーを使用して Performance Advisor にアクセスできます。このツールを使用すると、Clude、Cursor、 Github Copirot などのAIクライアントから Atlas クラスターを自然言語で操作できます。
MongoDB MCP Server を使用して Performance Advisor の推奨事項を取得する方法については、 「 MongoDB MCP サーバーで Performance Advisor にアクセスする 」を参照してください。
インデックスに関する提案
Performance Advisor は、関連する操作によって読み取られた無駄なバイトの合計に基づいて、インデックスを Impact に従ってランク付けします。 Performance Advisor がインデックスをランク付けする方法の詳細については、「 インデックスのランク付けを確認する 」を参照してください。
Performance Advisor が提案するインデックスを作成する方法については、「提案されたインデックスを作成する」を参照してください。
インデックス メトリクス
Performance Advisor が提案する各インデックスには、次のメトリクスが含まれます。これらのメトリクスは、インデックスによって改善されるクエリに特に適用されます。
メトリクス | 説明 |
---|---|
Execution Count | 改善される 1 時間あたりに実行されるクエリの数。 |
Average Execution Time | 影響を受けるクエリの現在の平均実行時間(ミリ秒単位)。 |
Average Query Targeting | 影響を受けたクエリによって返されたドキュメント 1 件ごとの平均読み取りドキュメント数。 クエリ ターゲティング スコアが高いほど、クエリ効率は低くなります。 クエリ ターゲティングについて詳しくは、「クエリ ターゲティング 」を参照してください。 |
In Memory Sort | メモリ内でソートする必要があった、1 時間あたりの影響を受けたクエリの現在の数。 |
Average Docs Scanned | スキャンされたドキュメントの平均数。 |
Average Docs Returned | 返されたドキュメントの平均数。 |
Average Object Size | 平均オブジェクト サイズ。 |
サンプル クエリ
Performance Advisor は、提案されたインデックスごとに、インデックスによって改善される最も頻繁に実行されるクエリシェイプを表示します。Performance Advisor は、クエリシェイプごとに次のメトリクスを表示します。
メトリクス | 説明 |
---|---|
Execution Count | クエリシェイプに一致する、1 時間あたりに実行されるクエリの数。 |
Average Execution Time | クエリシェイプにマッチするクエリの平均実行時間(ミリ秒)。 |
Average Query Targeting | 一致するクエリによって返されたドキュメント 1 件ごとの平均読み取りドキュメント数。 クエリ ターゲティング スコアが高いほど、クエリ効率は低くなります。 クエリ ターゲティングについて詳しくは、「クエリ ターゲティング 」を参照してください。 |
Average Docs Scanned | スキャンされたドキュメントの平均数。 |
Average Docs Returned | 返されたドキュメントの平均数。 |
Performance Advisorには、クエリシェイプに一致する実行済みの各サンプル クエリと、そのクエリの特定のメトリクスも表示されます。
クエリ ターゲティング
各インデックス提案には、インデックスの対応するクエリシェイプに対して返されたドキュメントごとに読み取られたドキュメントの数を示す Average Query Targeting スコアが含まれます。スコア 1 は、読み取られたすべてのドキュメントがクエリに一致し、クエリ結果とともに返されたため、非常に効率的なクエリシェイプを表します。提案されたすべてのインデックスは、クエリのパフォーマンスを向上させる機会を表します。
フィルター インデックスの提案
デフォルトでは、Performance Advisorは配置内のすべてのクラスターのインデックスを提案します。特定のコレクションからの推奨インデックスのみを表示するには、Performance Advisor の上部にある Collection ドロップダウンを使用します。
Performance Advisor の上部にある Time Range ドロップダウンを使用して、Performance Advisor がインデックスを提案する際に考慮する時間範囲を調整することもできます。
インデックス提案の制限
タイムスタンプの形式
Performance Advisor は、ctime
タイムスタンプ形式を使用するように構成された MongoDB データベースのインデックスを提案できません。回避策として、このようなデータベースのタイムスタンプ形式を iso8601-utc
または iso8601-local
に設定します。タイムスタンプ形式の詳細については、「mongod --timeStampFormat」を参照してください。
ログの量
クラスターのアクティビティが急増し、極端に大量のログメッセージが生成された場合、Atlas は一定期間、新しいログの収集と保存を停止することがあります。
注意
ログ分析レート制限は、パフォーマンス アドバイザーUI、アクセス トラッキングUI 、およびMongoDB検索クエリ分析UIにのみ適用されます。 ダウンロード可能なログファイル は常に完全です。
時系列コレクション
パフォーマンス アドバイザーは、時系列コレクションのパフォーマンスに関する提案を提供しません。
ユーザー フィードバック
パフォーマンス アドバイザーには、インデックス提案のユーザーフィードバックボタンが含まれています。 Atlas は、サーバーレス インスタンスの場合、このボタンを非表示にします。
推奨インデックスを作成する
Performance Advisor によって提案されたインデックスを、Performance Advisor 内で直接作成できます。インデックスを作成するときは、ターゲットコレクションへの読み取りと書き込みの比率を念頭に置きます。インデックスにはパフォーマンスコストが伴いますが、大規模なデータセットで頻繁にクエリを実行する場合はコストに見合うだけの価値があります。インデックス作成戦略について詳しくは、「インデックスの作成戦略」を参照してください。
行動と限界
プロジェクトでデータ エクスプローラーが無効になっている場合は、Performance Advisor を使用してインデックスを作成することはできません。Performance Advisor の推奨事項は引き続き表示できますが、それらのインデックスは
mongosh
. から作成する必要があります。パフォーマンス アドバイザーでは一度に 1 つのインデックスのみ作成できます。同時にさらに作成したい場合は、Atlas UI、ドライバー、または シェル を使用できます。
Atlas は常にクラスター全体のインデックスを作成します。Performance Advisor の表示中にシャーディングされたクラスター内の単一のシャードのインデックスを作成すると、Atlas はシャーディングされたクラスター全体に対してそのインデックスを作成します。
手順
推奨インデックスを作成するには、次の手順に従います。
(任意)インデックス オプションを指定します。
{ <option1>: <value1>, ... }
例
次のオプション ドキュメントでは、インデックスの unique
オプションと name
を指定します。
{ unique: true, name: "myUniqueIndex" }
(任意)照合オプションを設定します。
collat ion を使用して、大文字と小文字やアクセント記号のルールなど、文字列比較の言語固有のルールを指定します。 照合ドキュメントには、ICU ロケール コードを示すlocale
フィールドが含まれており、照合動作を定義する他のフィールドが含まれている場合があります。
例
次の照合オプション ドキュメントでは、フランス語の照合にロケール値 fr
を指定しています。
{ "locale": "fr" }
MongoDB 照合がサポートするロケールのリストを確認するには、言語とロケールのリストを参照してください。各ロケールでデフォルトで有効になっている照合オプションなどについて詳しくは、MongoDB マニュアルの 照合 を参照してください。
(任意) ローリング方式でインデックスの構築を有効にします。
重要
ローリング方式でインデックスをビルドすると、クラスターの回復力が低下し、インデックス構築時間が増えます。通常のインデックスビルドがニーズを満たせない場合にのみ、ローリングインデックスビルドを使用することをお勧めします。
ローリングインデックスを 使用し続ける場合は、成功するために一定の条件を満たしている必要があることを考慮してください。インデックス構築に成功するようにするには、再起動ループをトリガーすることが多い次の設計パターンを避けてください。
インデックス キーが インデックス キーの制限 を超えています
インデックス名はすでに存在します
複数の配列フィールドにおけるインデックス
テキスト インデックスの最大数を持つコレクションのインデックス
テキスト インデックスの最大数を持つコレクションのテキスト インデックス
注意
Atlas UI は、M0
個の無料クラスターと Flex クラスターのローリング構築によるインデックスの構築をサポートしていません。サーバーレス インスタンスのローリング構築ではインデックスを構築できません。
インデックス構築によるパフォーマンスの低下を許容できないワークロードの場合は、ローリング方式でインデックスを構築することを検討してください。
クラスターの可用性を維持するには、次の手順に従います。
Atlas は、セカンダリから始めて、一度に 1 つのノードをクラスターから削除します。
一度に複数のノードがダウンする可能性がありますが、Atlas は常に大多数のノードをオンラインに保ちます。
Atlas は、すべてのノードで成功しないローリング インデックス構築を自動的にキャンセルします。ローリング インデックス構築が一部のノードで完了したが、他のノードで失敗した場合、Atlas は構築をキャンセルし、正常に構築されたすべてのノードからインデックスを削除します。
ローリング インデックス構築がキャンセルされた場合、Atlas は アクティビティフィード イベント を生成し、次の情報を含む通知メールをプロジェクト所有者に送信します。
ローリング インデックス構築に失敗したクラスターの名前
ローリング インデックス構築に失敗した名前空間
クラスターと名前空間を含むプロジェクト
プロジェクトを含む組織
アクティビティ フィード イベントへのリンク
インデックスの再構築について詳しくは、「レプリカセットでインデックスを構築する」を参照してください。
注意
Unique
インデックス オプションは、ローリング方式でのインデックスの構築と互換性がありません。Options ペインで unique
を指定すると、Atlas はエラー メッセージを表示して構成を拒否します。
Confirm Operation ダイアログボックスで、インデックスを確認します。
重要
インデックス構築が完了すると、Atlas は アクティビティフィード イベント を生成し、次の情報を含む通知メールをプロジェクト所有者に送信します。
インデックス構築の完了日
インデックス構築が完了したクラスターの名前
インデックス構築が完了した名前空間
クラスターと名前空間を含むプロジェクト
プロジェクトを含む組織
アクティビティ フィード イベントへのリンク