Docs Menu
Docs Home
/
MongoDB Ops Manager
/ /

低速クエリのモニターと改善

項目一覧

  • クエリが遅くなる一般的な理由
  • インデックスの考慮事項
  • Performance Advisor にアクセスする
  • インデックスに関する提案
  • 推奨インデックスを作成する

Performance Advisorは、 MongoDBによって低速と見なされるクエリ述語を持つ操作を監視し、クエリのパフォーマンスを向上させるための新しい インデックスを提案します。 選択したホストと期間にわたって、Performance Advisor は、ログにある最近の低速クエリを最大20 、 000まで評価します。

推奨されるインデックスには、クエリシェイプでグループ化されたサンプル クエリが付属しています。これらのクエリは、インデックスに関する提案によりメリットを得るコレクションに対して実行されたものです。 Performance Advisorが、 MongoDB Ops Managerクラスターのパフォーマンスに悪影響を及ぼすことはありません。

注意

Performance Advisor を表示するには、次の条件を満たす必要があります。

  • クラスターで MongoDB バージョン 3.2 以降を実行します。

  • MongoDB Agent Automation を使用してクラスターを管理します。

    MongoDB Agent の詳細については、「 MongoDB Agent 」を参照してください。

サンプル クエリのフィールド値を表示するには、次の 1 つ以上のロールを持つ MongoDB Ops Manager ユーザー である必要があります。

上記のロールを持たないユーザーは、 フィールド値を表示できません。

クエリが遅い場合、一般的な理由は次のとおりです。

  • クエリは現在のインデックスではサポートされていません。

  • コレクション内の一部のドキュメントには、検索とインデックス作成にコストがかかる大きな配列フィールドがあります。

  • 1 つのクエリで、$lookup を使用して複数のコレクションから情報を検索します。

インデックスは読み取りパフォーマンスを向上させますが、書き込み中にインデックスを更新する必要があるため、インデックスの数が多いと書き込みパフォーマンスに悪影響を与える可能性があります。コレクションにすでに複数のインデックスがある場合は、新しいインデックスを作成するかどうかを決定する際に、読み取りと書き込みのパフォーマンスのトレードオフを考慮してください。このようなコレクションのクエリを変更して既存のインデックスを活用できるかどうか、また、クエリが新しいインデックスのコストに見合うほど頻繁に発生するかどうかを調べます。

Performance Advisor は、不要なインデックスを識別して削除するのに役立ちます。 詳細については、「ドロップインデックスの推奨事項を確認する 」を参照してください。

Performance Advisorにアクセスするには、以下の手順を行います。

1
2

レプリカセットがシャーディングされたクラスターに存在する場合は、まずレプリカセットを含むシャーディングされたクラスターをクリックします。

3
4
5

Performance Advisor には、クラスター内のすべてのコレクションにわたる最大 20 個のクエリシェイプと、それらのシェイプの推奨インデックスが表示されます。Performance Advisor は、インデックスを Impact に従ってランク付けします。これは、読み取られた無駄なバイトの合計に基づいて High または Medium を示します。インデックス ランキングの詳細については、「インデックスランキングを確認する」を参照してください。

注意

低速クエリ ログに集計パイプラインの連続する $match ステージが含まれている場合、2 つのステージが最初の $match ステージにまとまって、単一の $match ステージになります。その結果、Performance Advisor のクエリシェイプは、実際に実行したクエリと異なる場合があります。

Performance Advisor は、Impact に従って提案するインデックスをランク付けします。これは、読み取られた無駄なバイトの合計に基づいて High または Medium を示します。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
返されたドキュメントの平均数。
Avgerage 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 データベース向けのインデックスは提案できません。 回避策として、このタイプのデータベースにはタイムスタンプ形式をiso 8601 -utcまたはiso 8601 -local に設定します。

Performance Advisor は、クラスターの最新のログ行を最大 200,000 行分析します。

Performance Advisor によって提案されたインデックスを、Performance Advisor 内で直接作成できます。インデックスを作成するときは、ターゲットコレクションへの読み取りと書き込みの比率を念頭に置きます。インデックスにはパフォーマンスコストが伴いますが、大規模なデータセットで頻繁にクエリを実行する場合はコストに見合うだけの価値があります。インデックス作成戦略について詳しくは、「インデックスの作成戦略」を参照してください。

  • Performance Advisorでは一度に 1 つのインデックスのみ作成できます。 同時にさらに作成したい場合は、 Data Explorerまたはshellを使用できます

  • MongoDB Ops Managerは常に配置の最上位にインデックスを作成します。 Performance Advisorの表示中にシャーディングされたクラスター内の単一のシャードのインデックスを作成すると、 MongoDB Ops Managerはシャーディングされたクラスター全体に対してそのインデックスを作成します。

推奨インデックスを作成するには、次の手順に従います。

1

Performance Advisor はCreate Indexダイアログを開き、選択したインデックスに基づいてFieldsに事前入力します。

2
{ <option1>: <value1>, ... }

次のオプション ドキュメントでは、インデックスの unique オプションと name を指定します。

{ unique: true, name: "myUniqueIndex" }
3

照合を使用して、大文字と小文字やアクセント記号の規則など、文字列比較の言語独自のルールを指定します。照合ドキュメントには、ICU ロケール コード を示す locale フィールドが含まれており、照合動作を定義する他のフィールドが含まれている場合があります。

次の照合オプション ドキュメントでは、フランス語の照合にロケール値 fr を指定しています。

{ "locale": "fr" }

MongoDB 照合がサポートするロケールのリストを確認するには、言語とロケールのリストを参照してください。各ロケールでデフォルトで有効になっている照合オプションなどについて詳しくは、MongoDB マニュアルの 照合 を参照してください。

4

警告

重大な問題により SERVER-68925 、特定のMongoDB Ops Manager バージョン の を使用した の配置では、次のMongoDB Agent バージョンを実行しているクラスターで は自動ローリング インデックスのビルドMongoDB は実行されません。

  • MongoDB 4.2.19-4.2.22

  • MongoDB 4.4.13-4.4.16

  • MongoDB 5.0.6-5.0.11

  • MongoDB 6.0.0-6.0.1

クラスターで手動ローリング インデックスのビルドを安全に実行できます。 自動ローリング インデックスビルドを安全に実行するには、MongoDB Agent を12.0.11.7606以降にアップグレードするか、クラスターを次のようにアップグレードします。

  • MongoDB 4.2.23 以降

  • MongoDB 4.4.17 以降

  • MongoDB 5.0.12 以降

  • MongoDB 6.0.2 以降

重要

ローリング インデックス構築は、特定の条件を満たした場合にのみ成功します。インデックス構築に成功するようにするには、再起動ループをトリガーすることが多い次の設計パターンを避けてください。

注意

Data Explorer は、スタンドアロン配置のローリング方式でのインデックスのビルドをサポートしていません。

ローリング方式でインデックスをビルドすると、レプリカセットおよびシャーディングされたクラスターへのインデックスビルドによるパフォーマンスへの影響が軽減されます。 クラスターの可用性を維持するために、 MongoDB Ops Managerは、セカンダリ から始めて、一度に 1 つのノードをクラスターから削除します。

ローリング方式でインデックスを構築した後、MongoDB database が4.2未満のFCVで実行される場合は、ヘッドデータベースを再同期して、ヘッドデータベースが新しいインデックスを考慮するようにします。

MongoDB Ops Managerは、すべてのノードで成功しないローリング インデックス ビルドを自動的にキャンセルします。 ローリング インデックスのビルドが一部のノードで完了したが、他のノードで失敗した場合、 MongoDB Ops Managerはビルドをキャンセルし、正常にビルドされたすべてのノードからインデックスを削除します。

ローリング インデックスのビルドがキャンセルされた場合、 MongoDB Ops Managerは アクティビティフィード イベント を生成し、次の情報を含む通知メールをプロジェクト所有者に送信します。

  • ローリング インデックス構築に失敗したクラスターの名前

  • ローリング インデックス構築に失敗した名前空間

  • クラスターと名前空間を含むプロジェクト

  • プロジェクトを含む組織

  • アクティビティ フィード イベントへのリンク

インデックスの再構築について詳しくは、「レプリカセットでインデックスを構築する」を参照してください。

注意

次のインデックス オプションは 、ローリング方式でのインデックスのビルドと互換性がありません。

Optionsペインでこれらのオプションを指定すると、MongoDB Ops Manager はこれらのオプションを無視します。

5
6

重要

インデックスのビルドが完了すると、 MongoDB Ops Managerはアクティビティフィード イベントを生成し、次の情報を含む通知メールをプロジェクト所有者に送信します。

  • インデックス構築の完了日

  • インデックス構築が完了したクラスターの名前

  • インデックス構築が完了した名前空間

  • クラスターと名前空間を含むプロジェクト

  • プロジェクトを含む組織

  • アクティビティ フィード イベントへのリンク

戻る

低速クエリの分析