現在の操作のパフォーマンスを評価する
次のセクションでは、運用パフォーマンスを評価するための手法について説明します。
データベースプロファイラーを使用してデータベースに対する操作を評価する
MongoDB は、 データベースに対する各操作のパフォーマンス特性を示すデータベースプロファイラーを提供します。 プロファイラー を使用して、低速で実行されているクエリまたは書き込み操作を見つけます。 この情報を使用して、たとえば、作成するインデックスを決定できます。
プロファイラー エントリと読み取り操作および書込み (write ) 操作の 診断ログ メッセージ(mongod/mongos ログ メッセージなど)には次のものが含まれます。
queryHash
は、同じクエリシェイプを持つ低速クエリの特定に役立ちます。planCacheKey
は、低速クエリのクエリプラン キャッシュに関する詳細なインサイトを提供します。
replica setのセカンダリ メンバーは、適用に低速操作しきい値よりも長い時間がかかるoplogをログに記録するようになりました。 これらの遅い oplog メッセージ:
ログは、テキスト
applied op: <oplog entry> took <num>ms
を含む
REPL
コンポーネントの下にあります。
ログレベルに依存しない(システムレベルでもコンポーネントレベルでも)
プロファイル レベルに依存しないでください。
slowOpSampleRate
の影響を受けます。
プロファイラーは遅い oplog エントリをキャプチャしません。
詳細については、「データベースプロファイラ 」を参照してください。
db.currentOp()
を使用してmongod
操作を評価する
db.currentOp()
メソッドは、 mongod
インスタンスで実行されている現在の操作を報告します。
explain
を使用してクエリ パフォーマンスを評価する
cursor.explain()
メソッドとdb.collection.explain()
メソッドは、クエリや実行統計を満たすために選択されたインデックス MongoDB など、クエリ実行に関する情報を返します。 返される情報の量を制御するには、 queryPlannerモード、 executionStatsモード、またはallPlansExecutionモードでメソッドを実行します。
例
式{ a: 1 }
に一致するドキュメントのクエリで
cursor.explain()
を使用するには、
records
という名前のコレクションで、 mongosh
の次のような操作を使用します。
db.records.find( { a: 1 } ).explain("executionStats")
MongoDB 4.2 以降では、 explain の出力に次のものが含まれます。
planCacheKey
は、低速クエリのクエリプラン キャッシュに関する詳細なインサイトを提供します。
詳細については、「結果の説明」、「 cursor.explain()
、 db.collection.explain()
、「クエリ パフォーマンスの分析 」を参照してください。