1

プロファイリング モード 2 (すべてのイベント) を有効にしました。私の考えは、すべてのクエリを実行して説明プランを実行し、クエリのいずれかがインデックスを使用していないかどうかを確認するスクリプトを作成することです。ただし、system.profile に並べ替え情報が表示されないため、これを行うことはできません。なんでそうなの?

ありがとう

アップデート:

users コレクションがあるとします。そして、このコレクションにインデックスを作成しました: user(name, createdAt)。ここで、時間でソートされたユーザーを見つけたいと思います。system.profile では、クエリの 2 番目の部分 (並べ替え/ページ付け) は保存されませんが、パフォーマンスとインデックスの選択に影響を与えるため、使用された並べ替え操作を理解することが非常に重要です。そのため、私の意図は、system.profile 内のすべてのステートメントを調べて実行計画を実行し、インデックスが使用されているかどうかを確認するスクリプトを作成することでした。そうでない場合は、統合テストの実行中にすべての新しい/信頼できないクエリを自動的にキャッチできます。

4

3 に答える 3

0

申し訳ありません。私はその質問に対する答えを見つけました。実際にmongoはそれを持っています。query 要素内では orderby と呼ばれます。私の悪い:-)

于 2013-01-29T21:01:01.277 に答える
0

集計フレームワークを使用して、たとえば最も遅い操作を最初に並べ替えることができます db.system.profile.aggregate( { $sort : { millis : -1 }})

于 2013-01-29T16:36:57.403 に答える
0

10gen が system.profile にソート情報を含めないことを選択したのはなぜですか?

この機能に興味がある場合は、こちらからリクエストすることをお勧めします。(この機能に関する既存の提案は見つかりませんでした)。含まれていない理由の詳細がわかる場合があります。

インデックスが使用されているかどうかを知る方法として、nscanned と nreturnedを比較することをお勧めします(さらに重要なことは、スキャンされるドキュメントをできるだけ少なくすることです)。

したがって、完全ではありませんが、パフォーマンスを評価し、インデックスの使用状況を検出する簡単な方法を提供します。

于 2013-01-29T01:26:41.353 に答える