Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

クエリの問題の修正

項目一覧

  • アラート条件
  • 一般的な Triggers
  • 当面の問題の修正
  • 長期的な解決策の実装
  • 進捗状況の監視

Query Targeting アラートは、多くの場合、非効率的なクエリを示します。

プロジェクト レベルの アラート設定ページで次のアラート条件を構成して、アラートをtriggerできます。

Query Targeting: Scanned Objects / Returned アラートは、サンプリング期間中にすべての操作でサーバー全体で返されたドキュメントの平均数に対し、スキャンされたドキュメントの平均数が定義されたしきい値を超えたときにトリガーされます。デフォルトのアラートでは 1000:1 のしきい値が使用されています。

理想的には、スキャンされた文書と返された文書の比率は 1 に近くなるはずです。比率が高いと、クエリのパフォーマンスに悪影響を及ぼします。

Query Targeting: Scanned / Returned 返されたドキュメントの実際の数に対するクエリを満たすために検査されたインデックス キーの数が、ユーザー定義のしきい値を満たすか、それを超える場合に発生します。このアラートは、デフォルトでは有効になっていません。

次の mongod ログエントリは、非効率的なクエリから生成された統計を示しています。

<Timestamp> COMMAND <query>
planSummary: COLLSCAN keysExamined:0
docsExamined: 10000 cursorExhausted:1 numYields:234
nreturned:4 protocol:op_query 358ms

このクエリは、10,000 のドキュメントをスキャンし、2500 の比率で 4 ドキュメントのみを返すため、非常に非効率的です。インデックス キーは検査されなかったため、MongoDB はコレクション内のすべてのドキュメントをスキャンしました。これはコレクションスキャンと呼ばれます。

クエリのターゲット アラートは通常、1 つまたは複数のクエリをサポートするインデックスがない場合や、既存のインデックスが 1 つまたは複数のクエリを部分的にしかサポートしていない場合に発生します。

Atlas Searchプロセス(mongot )がAtlas Search インデックスを最新の状態に保つために使用する change streamtrigger カーソルは、クエリ ターゲット設定率に貢献し、比率が高い場合は アラート を できます。

1 つまたは複数のインデックスを追加して、非効率的なクエリをより良く処理します。

Performance Advisor は、インデックスを作成する最も簡単かつ迅速な方法を提供します。Performance Advisor は、MongoDB が低速と見なすクエリをモニタリングし、パフォーマンスを向上させるためのインデックスを推奨します。Atlas は、クラスター全体の操作の実行時間に基づいて、低速クエリのしきい値を動的に調整します。

推奨インデックスの作成方法については、低速クエリの [Create Index] をクリックしてください。

注意

クエリが低速クエリのしきい値を超え、スキャンされたドキュメントと返されたドキュメントの比率がアラートで指定されたしきい値を上回っている場合、Performance Advisor から推奨インデックスを受け取らずに、非効率的なクエリに対してクエリのターゲット アラートを受け取ることがあります。

さらに、どのクエリがアラートを生成したかを判断するには、以下のリソースを使用します。

  • リアルタイム パフォーマンス パネルは、Atlas クラスターで MongoDB をホストしているマシン上の現在のネットワーク トラフィックとデータベース操作をモニタリングして表示します。

  • MongoDB ログには、Atlas クラスター内の各 mongod インスタンスのアクティビティ(クエリを含む)の記録が保持されます。

  • cursor.explain() mongosh のコマンドは、すべてのクエリのパフォーマンスの詳細を提供します。

  • 名前空間インサイトは、コレクション レベルのクエリ レイテンシを監視します。

  • Atlas クエリプロファイラーは、クラスター上のすべての操作の平均実行時間と比較して、Atlas が低速と見なす操作を記録します。

クエリ パフォーマンスの詳細については、以下を参照してください。

Atlas は、次のような方法でクエリのターゲットを視覚化します。

  • クエリ ターゲティング メトリクス。スキャンされたオブジェクトと返されたオブジェクトの比率が高いことを強調表示します。

  • 名前空間インサイト。コレクション レベルのクエリ レイテンシを監視します。

  • クエリプロファイラー。クラスター上で実行された特定の非効率的なクエリを説明します。

履歴メトリックを表示すると、クラスターのクエリ パフォーマンスを視覚化できます。Atlas UI で Query Targeting メトリクスを表示するには:

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. Clusters ページがまだ表示されていない場合は、サイドバーの Database をクリックします。

    [ Clusters (クラスター) ] ページが表示されます。

2
  1. クラスターのダッシュボードで [View Monitoring] をクリックします。

  2. Metrics ページで、[Add Chart] ドロップダウン メニューをクリックし、[Query Targeting] を選択します。

Query Targeting チャートには、サーバー上で実行されたクエリの次のメトリクスが表示されます。

メトリクス
説明
Scanned Objects / Returned
返されたドキュメントの平均数に対する検査されたドキュメントの平均数を示します。
Scanned / Returned
返されたドキュメントの実際の数に対するクエリを満たすために検査されたインデックス キーの数を示します。

Atlas Searchプロセス(mongot )がAtlas Search インデックスを最新の状態に保つために使用する change streamtrigger カーソルは、クエリ ターゲット設定率に貢献し、比率が高い場合は アラート を できます。

これらのメトリクスのいずれかがユーザー定義のしきい値を超えると、Atlas は対応する Query Targeting: Scanned Objects / Returned または Query Targeting: Scanned / Returned アラートを生成します。

注意

リアルタイム パフォーマンス パネルを使用して、Query Targeting の操作比率をリアルタイムで表示することもできます。

名前空間インサイトは、コレクション レベルのクエリ レイテンシを監視します。特定のホストおよび操作タイプに関するクエリ レイテンシのメトリクスと統計情報を表示できます。ピン留めされた名前空間を管理し、対応するクエリ レイテンシ チャートに表示する名前空間を最大 5 つ選択できます。

名前空間インサイト にアクセスするには、

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. Clusters ページがまだ表示されていない場合は、サイドバーの Database をクリックします。

    [ Clusters (クラスター) ] ページが表示されます。

2
  1. クラスターのダッシュボードで [View Monitoring] をクリックします。

  2. [Query Insights] タブをクリックします。

  3. [Namespace Insights] タブをクリックします。

クエリプロファイラーには、特定の非効率的なクエリを特定するのに使用できるいくつかのメトリクスが含まれています。過去 24 時間までのクエリ操作を視覚化できます。クエリプロファイラーでは、ログに記録されたクエリの Examined : Returned Ratio(返されたドキュメントに対して検査されたインデックス キー)を表示できます。これにより、Query Targeting: Scanned / Returned アラートをトリガーしたクエリを特定するのに役立つ場合があります。このチャートは、返されたドキュメントの実際の数に対するクエリを満たすために検査されたインデックス キーの数を示します。

注意

デフォルトの Query Targeting: Scanned Objects / Returned アラート比率は若干異なります。このアラートは、サンプリング期間中にスキャンされたドキュメントの平均数と、返されたドキュメントの平均数の比率によってトリガーされます。

Atlas は、自動的にしきい値が設定されるため、Query Targeting 比率に寄与する個別の操作をログに記録しない場合があります。ただし、クエリプロファイラーと Query Targeting メトリクスを使用してクエリのパフォーマンスを分析および最適化することはできます。

クエリプロファイラーへのアクセス

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. Clusters ページがまだ表示されていない場合は、サイドバーの Database をクリックします。

    [ Clusters (クラスター) ] ページが表示されます。

2
  1. クラスターのダッシュボードで [View Monitoring] をクリックします。

  2. [Query Insights] タブをクリックします。

  3. [Query Profiler] タブをクリックします。

戻る

ストレージ