Docs Menu
Docs Home
/
MongoDB Atlas
/ /

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

項目一覧

  • クエリが遅くなる一般的な理由
  • 必要なアクセス権
  • スロー クエリのしきい値を設定する
  • インデックスの考慮事項
  • Performance Advisor にアクセスする
  • インデックスに関する提案
  • 推奨インデックスを作成する

M10 以上のクラスターとサーバーレスインスタンスでのみ利用可能

パフォーマンス アドバイザーは、MongoDB が遅いと判断したクエリを監視し、クエリ パフォーマンスを向上させるための新しいインデックスを提案します。遅いクエリのしきい値は、クラスター上の操作の平均時間に基づいて変化し、ワークロードに関連する推奨事項が提供されます。

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

また、Namespace Insights を使用してコレクション レベルの クエリのレイテンシ を監視したり、Query Profiler を使用してクエリ パフォーマンスを監視したりすることもできます。

注意

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

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

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

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

クエリが遅いコレクションを表示し、推奨されるインデックスを確認するには、プロジェクトに対する Project Read Only 以上のアクセス権が必要です。

パフォーマンス アドバイザーのサンプルクエリのフィールド値を表示するには、プロジェクトに対するProject Observability ViewerProject Data Access Read OnlyProject Data Access Read/Write 、またはProject Data Access Admin アクセス権が必要です。

Atlas が管理する低速操作しきい値を有効または無効にするには、プロジェクトに対する Project Owner アクセス権が必要です。Organization Owner アクセス権を持つユーザーは、自分自身を Project Owner としてプロジェクトに追加する必要があります。

デフォルトでは、Atlas はクラスター全体の操作の実行時間に基づいて、低速クエリのしきい値を動的に調整します。ただし、この機能をオプトアウトして、代わりに 100 ミリ秒の固定の低速クエリしきい値を使用することもできます。Atlas CLI、Atlas 管理 API、または Atlas UI を使用して、Atlas 管理の低速操作しきい値を無効にすることができます。

注意

Atlas Search が有効になっている Atlas クラスターは、Atlas が管理する低速クエリ操作のしきい値をサポートしていません。

M0M2M5 クラスターおよびサーバーレス インスタンスの場合、Atlas はデフォルトで Atlas 管理の低速クエリ操作しきい値を無効にしており、有効にすることはできません。

重要

デフォルトでは、Atlas はクラスター全体の操作の実行時間に基づいて、低速クエリのしきい値を動的に調整します。Atlas が管理する低速クエリしきい値を無効にすると、動的に調整されなくなります。MongoDB では、固定の低速クエリしきい値がデフォルトで 100 ミリ秒に設定されています。固定の低速クエリしきい値を 100 ミリ秒未満に設定することはお勧めしません。

Atlas が管理する低速操作しきい値を無効にし、100 ミリ秒の固定しきい値を使用するには、次の手順を実行します。

Atlas CLI を使用してプロジェクトの Atlas が管理する低速操作しきい値を無効にするには、次のコマンドを実行します。

atlas performanceAdvisor slowOperationThreshold disable [options]

コマンドの構文とパラメータについて詳しくは、Atlas CLI ドキュメントの performanceAdvisor slowOperationThreshold disable を参照してください。

Tip

参照: 関連リンク

現在のプロジェクトのプロジェクト設定で、 Managed Slow OperationsOff に切り替えます。

Atlas は、Atlas が管理する低速操作しきい値をデフォルトで有効にします。以前無効にした Atlas 管理の低速操作しきい値を再度有効にするには:

Atlas CLI を使用してプロジェクトの Atlas が管理する低速操作しきい値を有効にするには、次のコマンドを実行します。

atlas performanceAdvisor slowOperationThreshold enable [options]

コマンドの構文とパラメータについて詳しくは、Atlas CLI ドキュメントの atlas performanceAdvisor slowOperationThreshold enable を参照してください。

現在のプロジェクトのプロジェクト設定で、Managed Slow OperationsOn に切り替えます。

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

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 にアクセスするには、以下の手順を行います。

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

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

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

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

2

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

3
4

Performance Advisor は過去 24 時間からインデックスの推奨事項を取得します。

  • Performance Advisor に推奨事項がある場合は、Create Indexes セクションの View Recommendations ボタンをクリックします。

  • Performance Advisor に推奨事項がない場合、過去 5 日間までのインデックスの推奨事項を検索するには、Create Indexes セクションの Explore Recommendations をクリックします。

Performance AdvisorImpactは、インデックスを に従ってランク付けします。これは、関連する操作によって読み取られた無駄なバイトの合計に基づいています。インデックスランキングの詳細については、「 インデックスランキングを確認する 」を参照してください。

5

次のいずれかのオプションで結果をフィルタリングします。

  • Filter by shards and hosts

  • Filter by namespace

  • Filter by time range

  • Filter by date and time

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

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

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

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

2
3

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、アクセス トラッキング UI、および Atlas 検索クエリ分析 UI にのみ適用されます。ダウンロード可能なログ ファイルは常に完全です。

パフォーマンス アドバイザーは、時系列コレクションのパフォーマンスに関する提案を提供しません。

パフォーマンス アドバイザーには、インデックス提案のユーザーフィードバックボタンが含まれています。 Atlas は、サーバーレス インスタンスの場合、このボタンを非表示にします。

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

  • プロジェクトでデータ エクスプローラーが無効になっている場合は、Performance Advisor を使用してインデックスを作成することはできません。Performance Advisor の推奨事項は引き続き表示できますが、それらのインデックスは mongosh. から作成する必要があります。

  • パフォーマンス アドバイザーでは一度に 1 つのインデックスのみ作成できます。同時にさらに作成したい場合は、Atlas UIドライバー、または シェル を使用できます。

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

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

1

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

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

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

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

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

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

{ "locale": "fr" }

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

4

重要

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

注意

Atlas UI は、M0 個の無料クラスターと M2/M5 個の共有クラスターのローリング構築によるインデックスの構築をサポートしていません。サーバーレス インスタンスのローリング構築ではインデックスを構築できません。

インデックス構築によるパフォーマンスの低下を許容できないワークロードの場合は、ローリング方式でインデックスを構築することを検討してください。

クラスターの可用性を維持するには、次の手順に従います。

  • Atlas は、セカンダリから始めて、一度に 1 つのノードをクラスターから削除します。

  • 一度に複数のノードがダウンする可能性がありますが、Atlas は常に大多数のノードをオンラインに保ちます。

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

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

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

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

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

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

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

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

注意

Unique インデックス オプションは、ローリング方式でのインデックスの構築と互換性がありません。Options ペインで unique を指定すると、Atlas はエラー メッセージを表示して構成を拒否します。

5
6

重要

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

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

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

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

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

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

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

戻る

低速クエリの分析