Docs Menu
Docs Home
/
Atlas
/ /

クエリプロファイラーによるクエリ パフォーマンスの監視

M10 以上のクラスターでのみ使用可能

クエリプロファイラーはパフォーマンスの問題を診断およびモニターします。このモニタリングにより、実行速度が遅いクエリとその主要なパフォーマンス統計を Atlas UI に表示できます。

Atlas は、 mongod インスタンスのいずれかから統計情報を収集して表示します。クエリプロファイラーは mongod インスタンスの ログ データに基づいて、スロー クエリを識別します。Atlas はインスタンスの Query Profiler セクションの Query Insights タブに、このデータを表示します。

注意

クエリプロファイラーはデータベースプロファイラーとは異なります。クエリプロファイラーは mongod ログのエントリに基づいて、特定の非効率的なクエリを識別します。データベースプロファイラーは、指定されたプロファイリング レベルに基づいて、mongod で実行されたコマンドに関する詳細情報を返します。プロファイリング レベルを変更しても、クエリプロファイラーに表示されるスロー クエリには影響しません。

Atlas クエリプロファイラーには、 デフォルトでクラスター全体の操作が表示されます。 Filter by Hosts ドロップダウンを使用して、クエリプロファイラーがデータを表示する操作のホストをフィルタリングできます。これにより、1 つ以上の特定のホストに関連するデータを表示したり、プライマリまたはセカンダリ ホスト グループを表示したりできます。 Query Insightsタブには、次のような設定された時間枠でのデータベース操作の遅延を明らかにする情報が表示されます。

  • Operation Execution Time

  • Docs Examined : Returned Ratio

Atlas クエリプロファイラーは、追加のデータポイントをサポートするために、同じタイムスタンプの周囲の同じコレクションで実行される同じタイプのビン化操作をサポートします。

追加のデータポイントをサポートするために、Atlas クエリプロファイラーは、次の基準を満たすビン化操作をサポートします。

  • 操作は同じ操作タイプです。

  • 操作は同じ名前空間で実行中です。

  • 操作は hasSortusedIndex のブール値に一致します。

  • 操作は、同じタイムスタンプの周囲で実行されます。

Atlas は各ホストでの平均操作実行時間に基づいて、各 mongod ホストの低速操作のしきい値を管理します。このしきい値は db.setProfilingLevel mongosh コマンドを使用して変更できます。

注意

db.setProfilingLevel を使用して低速操作のしきい値を変更すると、パフォーマンスとシステムログ設定に影響する可能性があります。本番環境の配置で db.setProfilingLevel を使用してクエリプロファイラーの設定を調整する前に、パフォーマンスとセキュリティへの影響を慎重に検討してください。ノードの再起動後、クエリプロファイラーの設定はデフォルト値にリセットされます。

さらに、散布図のX軸を拡大すると低速操作が再度取得され、選択した時間枠での低速操作をより詳細に再現できる場合があります。

注意

Atlas が管理する低速操作しきい値をオプトアウトし、代わりに 100 ミリ秒の固定スロー クエリしきい値を使用するには、Atlas APIを使用します。 「 管理された低速操作しきい値を無効にする 」を参照してください。M0 クラスター、Flex クラスター、サーバーレス インスタンスの場合、Atlas はデフォルトで Atlas 管理の低速クエリ操作しきい値を無効にしており、有効にすることはできません。

重要

クエリプロファイラーを有効にする前に、以下の注意事項をお読みください。

プロファイルデータには、データベースクエリの内容などの機密情報が含まれる場合があります。このデータを Atlas に開示することが、貴組織の情報セキュリティ保護ルールに違反していないことを確認してください。

クエリプロファイラーは、一度に約 100,000 のサンプル ログを表示します。選択したホストと時間範囲で 100,000 以下のログが記録された場合は、すべてのログが表示されます。

Atlas は、Query Profiler チャートに最大 100,000 データ ポイントを表示します。

ログデータはバッチ処理されます。データにはリアルタイムから最大 5 分の遅延があります。

クラスターのアクティビティが急増し、極端に大量のログメッセージが生成された場合、Atlas は一定期間、新しいログの収集と保存を停止することがあります。

注意

ログ分析レート制限は、パフォーマンス アドバイザーUI、アクセス トラッキングUI 、およびMongoDB検索クエリ分析UIにのみ適用されます。 ダウンロード可能なログファイル は常に完全です。

一部の高レイテンシ $lookup 操作では、外部コレクションの低速クエリログは生成されません。これは、低速クエリ ログはクエリプロファイラーで報告される操作に対応するために発生する可能性があり、レイテンシメトリクスはコレクションロックが取得された場合にのみ増加するためです。

シャードに対する $lookup クエリがローカル読み取りを実行できる場合、$lookup は 外部コレクションをクエリするための別の操作をレコードしません。ローカル読み取りは、外部コレクションのクエリが、現在の操作が実行されているのと同じシャードのみを対象としている場合の を指します。その結果、$lookup操作によって Namespace Insights のレイテンシメトリクスと操作数が増加しますが、外部コレクションの低速クエリログは生成されません。

プロジェクトの Performance Advisor とクエリプロファイラーを有効または無効にするには、プロジェクトに対する Project Owner ロールまたはその親組織に対する Organization Owner ロールが必要です。

クエリプロファイラーでクエリ パフォーマンスを表示するには、プロジェクトに対する Project Read Only または Project Observability Viewer アクセス権が必要です。

Atlas はデフォルトでクエリプロファイラーを有効にします。

クエリプロファイラーを無効にする方法。

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

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

  3. サイドバーで、Project Settings をクリックします。

[ Project Settings ]ページが表示されます。

2

Database Monitoring Tools セクションで、Performance Advisor and ProfilerOff に切り替えます。

次のセクションでは、 クエリプロファイラー を使用して低速クエリを見つける方法について説明します。

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

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

  3. サイドバーで、 Database見出しの下のClustersをクリックします。

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

2
  1. クラスターの [ View Monitoring ] ボタンをクリックします。

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

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

    クエリプロファイラーには、デフォルトで プライマリ ノードと セカンダリ ノードのログからのすべてのデータが表示されます。

3

クエリプロファイラーは、 散布チャートとチャートの直下にある テーブル を使用することで、低速操作を見つけるのに役立ちます。

  1. [Filter by Hosts ドロップダウンでメトリクスを表示する 1 つ以上のホストを選択します。

  2. Time Range または Filter by Date and Time ドロップダウンから期間を選択します。クエリプロファイラーには、デフォルトで過去の 24 時間のデータが表示されます。

  3. Operation Execution Time ドロップダウンからメトリクスを選択します。オプションは次のとおりです。

    • Operation Execution Time (デフォルト): MongoDBデータベース操作が完了するまでにかかった合計時間(通常はミリ秒単位)。

    • Response Length:操作に応答してデータベースによって返されたドキュメントまたはデータのサイズ(バイト単位で測定)。

    • Docs Examined: クエリの結果を見つけるためにコレクション内でスキャンされたドキュメントの合計数。

    • Docs Returned: Atlas がクエリに返したクエリ条件に一致したドキュメントの数。

    • Keys Examined: クエリの実行中にデータベースによってスキャンされたインデックスエントリの合計数。

    • Num Yields: 他の操作を続行するために操作が一時停止した回数。

    • Docs Examined : Returned Ratio: Docs ExaminedDocs Returned で割った比率。

    • Keys Examined : Returned Ratio: Keys ExaminedDocs Returned で割った比率。

  4. プロファイルする操作を変更するには、All operation types ドロップダウンをクリックします。クエリプロファイラーには、すべての操作タイプがデフォルトで表示されます。

4
  • チャートの散布点をクリックします。そうすると、サマリー情報を含む右側のパネルが開きます。

  • 右側のパネルで [View more details] をクリックすると、完全なクエリシェイプ、詳細な実行統計、 クエリログ、改善に関する提案が表示されます。

  • XY の軸に沿ってクリックしてドラッグし、収集されたデータの特定のサブセットを拡大します。

  • チャートの下の 表までスクロールすると、コレクションごとの低速クエリのリストが表示されます。詳細については、表の行をクリックします。

5

低速クエリを調べるときは、まず次の重要なメトリクスとパターンを調べます。

  • Operation Execution Timemillis): クエリ時間(ミリ秒単位)。これは、低速クエリのプライマリ インジケーターです。このメトリクスが一貫して高い場合は、クエリ ロジックの最適化、結果のバッチ処理、またはデータへのアクセス方法を再検討してください。

  • クエリログに "planSummary": "COLLSCAN": が表示されている場合、クエリはコレクションスキャンを実行し、インデックスを使用しませんでした。これは、インデックスを追加するか、クエリを書き換えるための強力なシグナルです。

  • Docs ExamineddocsExamined): MongoDBがクエリを検査したドキュメントの数。Docs ExaminedDocs Returned よりもかなり大きい場合、多くの場合次のことを意味します。

    • クエリは結果を見つけるために多くのドキュメントをスキャンするため、ネットワークレイテンシとアプリケーションのパフォーマンスに影響可能性があります。

    • 既存のインデックスは非効率的または最適ではありません。詳細については、「 インデックス 」を参照してください。

  • Keys ExaminedkeysExamined): クエリに対してスキャンされたインデックスキーの数。フィルター条件を含むクエリで、このメトリクスが 0 の場合、インデックスはなくMongoDB がコレクション全体をスキャンした可能性が高くなります。これは低速の主な原因です。Docs Examined が非常に高く、Keys Examined0 または Docs Examined と比較して非常に低い場合は、コレクションまたは非常に選択的でないインデックスがスキャンされている可能性があります。詳細については、インデックスを参照してください。

  • Docs Examined : Returned Ratio が高い場合は、クエリが多くのドキュメントをスキャンして結果がほとんど返されないことを意味します。これは、非効率的なクエリやインデックスの欠落の可能性があります。

  • Num YieldsnumYields) :リソース

  • Response Length: 応答長が異常に長い場合は、クエリが必要以上に多くのデータを返していることを示します。返されるフィールドを制限するには、プロジェクションの使用を検討してください。

  • Has Index CoverageusedIndex): このブール値は、インデックスが使用されているかどうかを確認します。インデックスを作成する必要があるクエリで false に設定されている場合は、インデックスを追加します。

  • hasSorttrue に設定されている場合、クエリに sort() メソッドが含まれていることを示します。インデックスのない sort() メソッドは、非常にリソースを集中的に消費する可能性があります。検索インデックスの構成をチェックし、sort() メソッドをサポートしているかどうかを確認します。

戻る

クエリのレイテンシ

項目一覧