低速クエリのモニターと改善
項目一覧
- Cloud Managerへのプログラムによるアクセスのための OAuth 2.0認証はプレビュー機能として利用できます。
- 機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。 OAuth2.0 認証を使用するには、 Cloud Manager Public APIへのリクエストで使用する サービス アカウント を作成します。
Performance Advisor は、 MongoDB によって低速と見なされるクエリ述語を持つ操作を監視し、クエリのパフォーマンスを向上させるための新しいインデックスを提案します。 選択したホストと期間にわたって、Performance Advisor は、ログにある最近の低速クエリを最大20 、 000まで評価します。
推奨されるインデックスには、クエリシェイプでグループ化されたサンプル クエリが付属しています。これらのクエリは、インデックスに関する提案によりメリットを得るコレクションに対して実行されたものです。 Performance Advisor が、Cloud Manager クラスターのパフォーマンスに悪影響を与えることはありません。
クエリ インサイト を使用して、コレクション レベルのクエリ レイテンシを監視することもできます。
注意
Performance Advisor を表示するには、次の条件を満たす必要があります。
Cloud Premium ユーザーであること。
クラスターで MongoDB バージョン 3.2 以降を実行します。
MongoDB Agent Automation を使用してクラスターを管理します。
MongoDB Agent の詳細については、「 MongoDB Agent 」を参照してください。
サンプル クエリのフィールド値を表示するには、次の 1 つ以上のロールを持つ Cloud Manager ユーザーである必要があります。
上記のロールを持たないユーザーは、 フィールド値を表示できません。
プロジェクトの Performance Advisor の有効化または無効化
Performance Advisor はデフォルトで有効になっています。 Performance Advisor を無効または有効にするには、次の手順に従います。
MongoDB Cloud ManagerGoMongoDB Cloud Managerで、Project Settings ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
Projects メニューの横にある Options メニューをクリックし、 Project Settings をクリックします。
[ Project Settings ]ページが表示されます。
クエリが遅くなる一般的な理由
クエリが遅い場合、一般的な理由は次のとおりです。
クエリは現在のインデックスではサポートされていません。
コレクション内の一部のドキュメントには、検索とインデックス作成にコストがかかる大きな配列フィールドがあります。
1 つのクエリで、$lookup を使用して複数のコレクションから情報を検索します。
インデックスの考慮事項
インデックスは読み取りパフォーマンスを向上させますが、書き込み中にインデックスを更新する必要があるため、インデックスの数が多いと書き込みパフォーマンスに悪影響を与える可能性があります。コレクションにすでに複数のインデックスがある場合は、新しいインデックスを作成するかどうかを決定する際に、読み取りと書き込みのパフォーマンスのトレードオフを考慮してください。このようなコレクションのクエリを変更して既存のインデックスを活用できるかどうか、また、クエリが新しいインデックスのコストに見合うほど頻繁に発生するかどうかを調べます。
Performance Advisor は、不要なインデックスを識別して削除するのに役立ちます。 詳細については、「ドロップインデックスの推奨事項を確認する 」を参照してください。
Performance Advisor にアクセスする
Performance Advisorにアクセスするには、以下の手順を行います。
MongoDB Cloud ManagerGoDeploymentMongoDB Cloud Managerで、プロジェクトの ページにGoします。
まだ表示されていない場合は、目的のプロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
Deployment ページがまだ表示されていない場合は、サイドバーの Deployment をクリックします。
配置ページが表示されます。
推奨事項 を表示します。
Performance Advisor は過去 24 時間からインデックスの推奨事項を取得します。
Performance Advisor に推奨事項がある場合は、Create Indexes セクションの View Recommendations ボタンをクリックします。
Performance Advisor に推奨事項がない場合、過去 5 日間までのインデックスの推奨事項を検索するには、Create Indexes セクションの Explore Recommendations をクリックします。
Performance AdvisorImpactは、インデックスを に従ってランク付けします。これは、関連する操作によって読み取られた無駄なバイトの合計に基づいています。インデックスランキングの詳細については、「 インデックスランキングを確認する 」を参照してください。
インデックスに関する提案
Performance AdvisorImpactは、インデックスを に従ってランク付けします。これは、関連する操作によって読み取られた無駄なバイトの合計に基づいています。 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 によって提案されたインデックスを、Performance Advisor 内で直接作成できます。インデックスを作成するときは、ターゲットコレクションへの読み取りと書き込みの比率を念頭に置きます。インデックスにはパフォーマンスコストが伴いますが、大規模なデータセットで頻繁にクエリを実行する場合はコストに見合うだけの価値があります。インデックス作成戦略について詳しくは、「インデックスの作成戦略」を参照してください。
動作
Performance Advisorでは一度に 1 つのインデックスのみ作成できます。 同時にさらに作成したい場合は、 Data Explorerまたはshellを使用できます
Cloud Manager は常に配置の最上位にインデックスを作成します。 Performance Advisor の表示中にシャーディングされたクラスター内の単一のシャードのインデックスを作成すると、Cloud Manager はシャーディングされたクラスター全体に対してそのインデックスを作成します。
手順
推奨インデックスを作成するには、次の手順に従います。
(任意) <a class=\" \" target=\" \" href=\" \"> インデックス オプション を指定します。<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
{ <option1>: <value1>, ... }
例
次のオプション ドキュメントでは、インデックスの unique
オプションと name
を指定します。
{ unique: true, name: "myUniqueIndex" }
(任意) <a class=\" \" target=\" \" href=\" \"> 照合 オプションを設定します。<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
照合を使用して、大文字と小文字やアクセント記号の規則など、文字列比較の言語独自のルールを指定します。照合ドキュメントには、ICU ロケール コード を示す locale
フィールドが含まれており、照合動作を定義する他のフィールドが含まれている場合があります。
例
次の照合オプション ドキュメントでは、フランス語の照合にロケール値 fr
を指定しています。
{ "locale": "fr" }
MongoDB 照合がサポートするロケールのリストを確認するには、言語とロケールのリストを参照してください。各ロケールでデフォルトで有効になっている照合オプションなどについて詳しくは、MongoDB マニュアルの 照合 を参照してください。
(任意) ローリング方式でインデックスの構築を有効にします。
警告
重大な問題による SERVER-68925 、特定の バージョン の MongoDB Agent を使用する Cloud Manager の配置では、次の 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.4.0.7703以降にアップグレードするか、クラスターを次のようにアップグレードします。
MongoDB 4.2.23 以降
MongoDB 4.4.17 以降
MongoDB 5.0.12 以降
MongoDB 6.0.2 以降
重要
ローリング インデックス構築は、特定の条件を満たした場合にのみ成功します。インデックス構築に成功するようにするには、再起動ループをトリガーすることが多い次の設計パターンを避けてください。
インデックス キーが インデックス キーの制限 を超えています
インデックス名はすでに存在します
複数の配列フィールドにおけるインデックス
テキスト インデックスの最大数を持つコレクションのインデックス
テキスト インデックスの最大数を持つコレクションのテキスト インデックス
注意
Data Explorer は、スタンドアロン配置のローリング方式でのインデックスのビルドをサポートしていません。
ローリング方式でインデックスをビルドすると、レプリカセットおよびシャーディングされたクラスターへのインデックスビルドによるパフォーマンスへの影響が軽減されます。 クラスターの可用性を維持するために、Cloud Manager はセカンダリ から始めて、一度に 1 つのノードをクラスターから削除します。
ローリング方式でインデックスを構築した後、MongoDB database が4.2
未満のFCVで実行される場合は、ヘッドデータベースを再同期して、ヘッドデータベースが新しいインデックスを考慮するようにします。
Cloud Manager は、すべてのノードで成功しないローリング インデックス ビルドを自動的にキャンセルします。 ローリング インデックスのビルドが一部のノードで完了したが、他のノードで失敗した場合、Cloud Manager はビルドをキャンセルし、正常にビルドされたすべてのノードからインデックスを削除します。
ローリング インデックスのビルドがキャンセルされた場合、Cloud Manager は アクティビティフィード イベント を生成し、次の情報を含む通知メールをプロジェクト所有者に送信します。
ローリング インデックス構築に失敗したクラスターの名前
ローリング インデックス構築に失敗した名前空間
クラスターと名前空間を含むプロジェクト
プロジェクトを含む組織
アクティビティ フィード イベントへのリンク
インデックスの再構築について詳しくは、「レプリカセットでインデックスを構築する」を参照してください。
注意
次のインデックス オプションは 、ローリング方式でのインデックスのビルドと互換性がありません。
Optionsペインでこれらのオプションを指定すると、Cloud Manager はこれらのオプションを無視します。
Confirm Operationダイアログで、インデックスを確認します。
重要
インデックスのビルドが完了すると、Cloud Manager はアクティビティフィード イベントを生成し、次の情報を含む通知メールをプロジェクト所有者に送信します。
インデックス構築の完了日
インデックス構築が完了したクラスターの名前
インデックス構築が完了した名前空間
クラスターと名前空間を含むプロジェクト
プロジェクトを含む組織
アクティビティ フィード イベントへのリンク