MongoDBクエリプロファイラ
数ヶ月前、私はいくつかの集約されたデータを表示するためにWebページを作成していましたが、すぐにデータを取得するために使用されるAPIは非常に遅いことに気づいた.可能な問題を調査した後,ボトルネックを発見した.解決策は、Webページからそれを消耗させるためにデータを再構成することでした.
私は時々SQLServerプロファイラを使用していましたが、MongoDBのプロファイラーについての経験はありませんでした.したがって、ここでは、MongoDBクエリを分析するための手順の下にあります.
MongoDBプロファイラを有効にする
デフォルトでは、MongoDBはどんなクエリもプロファイルしません.プロファイルレベルの実行を設定することができます.
直近のクエリプロファイルを取得する
プロファイルが有効になったら、最後の問い合わせをプロファイル(検索レベルを設定した後に実行する必要があります)を取得します.
説明する
The explain command それは多くの一般的な操作に関する情報を提供するので、便利になります
それで、我々が情報を分析したいならば
冗長性を説明する
The
結論
MongoDBによってクエリが実行されたことを理解するだけで、パフォーマンスを向上させることができました.
資源 MongoDB database profiler Explain results MongoDB Indexes
私は時々SQLServerプロファイラを使用していましたが、MongoDBのプロファイラーについての経験はありませんでした.したがって、ここでは、MongoDBクエリを分析するための手順の下にあります.
It doesn't apply to our case, but in many situations performance problems are related to missing or wrongly implemented MongoDB Indexes.
MongoDBプロファイラを有効にする
デフォルトでは、MongoDBはどんなクエリもプロファイルしません.プロファイルレベルの実行を設定することができます.
db.setProfilingLevel(<profile_level>)
どこprofile_level
は以下のようになります.0
- プロファイラはオフですので、データを収集しません.1
- プロファイラは、操作がslowms
(設定可能な閾値).2
- プロファイラはすべての操作のデータを収集します.IMPORTANT: At the end of the analysis, please remember to disable profiling with:
db.setProfilingLevel(0)
, since that it can affect MongoDB performance.
直近のクエリプロファイルを取得する
プロファイルが有効になったら、最後の問い合わせをプロファイル(検索レベルを設定した後に実行する必要があります)を取得します.
db.system.profile.find().limit(1).sort({ts:-1}).pretty()
説明する
The explain command それは多くの一般的な操作に関する情報を提供するので、便利になります
aggregate
, count
, distinct
, find
, findAndModify
, delete
and update
. それにもかかわらず、同じ名前のメソッドはcollection
and cursor
また.それで、我々が情報を分析したいならば
aggregate
操作を実行できます:db.<collection_name>.explain(<verbosity>).aggregate(...)
ここで<collection_name>
集約が実行されるコレクションの名前です<verbosity>
我々が抽出したい冗長性のレベルです.冗長性を説明する
The
explain
コマンドは以下の冗長レベルのいずれかを受け付けます:queryPlanner
- It returns the queryPlanner 優勝プラン評価に関する情報.executionStats
- It returns queryPlanner とexecutionStats しかし、拒否された計画は後者に含まれません.allPlansExecution
- It returns queryPlanner とexecutionStats すべての評価された計画についての情報.結論
MongoDBによってクエリが実行されたことを理解するだけで、パフォーマンスを向上させることができました.
Not our case, but I would remind that performance problems are often associated to missing or wrongly implemented indexes. If so, please have a look at MongoDB Indexes.
資源
Reference
この問題について(MongoDBクエリプロファイラ), 我々は、より多くの情報をここで見つけました https://dev.to/antomor/mongodb-query-profiler-4kf9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol