3

MongoDB ベースの REST サービス設定でインデックスの有効性を評価したいと考えています。コレクションに合成データセット (例: 10,000,000 ドキュメント) を入力し、ロード インジェクター プロセスを実行してランダムな REST 操作 (それぞれに MongoDB レイヤーでのクエリが含まれます) を実行して、使用されているインデックスとそれらに関する統計情報 (例:インデックスあたりのヒット率)。

Explain()コマンドまたはindexStats の使用を検討しました。ただし、explain() に関しては、2 つの問題があります。1) 1 つのクエリの有効性しか評価できない、2) ロード インジェクター プロセスが REST サービスと対話する「ブラック ボックス」環境で使用するのが難しい。 MongoDB ではトップですが、MonoDB 自体ではありません。indexStats に関しては、私の知る限り、「ディスク上の」インデックス構造に関する情報は表示されますが、インデックスの使用法に関する情報は表示されません。

したがって、その種のテストを行う最良の方法はどれですか? 手順の説明やトピックに関する情報への URL は大歓迎です。

4

1 に答える 1

3

パフォーマンス プロファイリングについて読む必要があります。

プロファイリングをオンにするには、次のようにします。

db.setProfilingLevel(2);

または、ノイズを多くしたくなくて、たとえば 20 ミリ秒以上かかったクエリだけをチェックしたい場合は、次のようにします。

db.setProfilingLevel(1,20);

をクエリしsystem.profileて、遅いクエリに関する情報を取得できます。たとえば、30 ミリ秒より遅いすべての操作を見つけます。

db.system.profile.find( { millis : { $gt : 30 } } ).pretty()

を使用して、各遅いクエリを手動でプロファイリングすることもできますexplain()

リアルタイム監視には、mongotopmongostatを使用できます。また、 MMS(無料監視サービス)の設定も検討する必要があります。MMS では、btree のヒット/ミスをチェックし、それらを他の関連する統計と比較できます。

編集serverStatusコマンドを使用し て、関連するindexCountersデータを取得できます。

db.serverStatus()
于 2014-06-04T12:33:13.067 に答える