最近、私は多くのクエリを作成していることに気付きました。(おもう)
編集:
アプリの作成方法を分析できるかどうか知りたいだけです。top
Linuxを使用していますか?または、ブラウザにサイトをロードするだけです。例として firebug を使用して、クエリが長いかどうかを確認します。サーバー側のトリックはありませんか?たとえば、8 つのクエリをロードするページがあるためです。多いと思います。いいえ ?
ありがとうございました !
最近、私は多くのクエリを作成していることに気付きました。(おもう)
編集:
アプリの作成方法を分析できるかどうか知りたいだけです。top
Linuxを使用していますか?または、ブラウザにサイトをロードするだけです。例として firebug を使用して、クエリが長いかどうかを確認します。サーバー側のトリックはありませんか?たとえば、8 つのクエリをロードするページがあるためです。多いと思います。いいえ ?
ありがとうございました !
他のデータベースと同様に、クエリのパフォーマンスと各データベースから返されるデータの効率に注意を払う必要があるのは、必ずしもクエリの総数ではありません。アプリケーションの設計、データ モデル、およびインデックスによっては、1 ページあたり 8 つのクエリが予想される場合があります。クエリの数に関係なく、一般的なクエリが高速であることを確認する必要があります。
MongoDB のクエリを理解するために試すことができる重要な場所がいくつかあります。
使いやすさの大まかな順序:
1)クエリでExplain()機能を使用して、クエリ プランとインデックスの使用に関する詳細情報を取得します。
これは、インデックスが必要かどうか、または一般的なクエリで効果的に使用されているかどうかを知るための出発点となるはずです。
2) MongoDB データベースのデータベース プロファイラーを有効にできます。
キャプチャされたプロファイリング情報は、explain() の出力に似ており、すべての読み取り/書き込みクエリが含まれています。すべてではなく低速クエリのみを表示する場合は、適切なプロファイリング レベルを設定できます。「遅いクエリ」のデフォルトは 100 ミリ秒ですが、必要に応じて設定できます。
MongoDB シェルからのすべてのクエリのプロファイリングを有効にするには"
$ mongo mydb
MongoDB shell version: 2.2.0-rc0
connecting to: mydb
> db.setProfilingLevel(2);
{ "was" : 0, "slowms" : 100, "ok" : 1 }
> db.getProfilingLevel()
2
ドキュメントには、プロファイル データの表示に関する詳細が記載されています。
3) MongoDB に送信される前に、アプリケーション/ドライバーによって生成されたクエリを表示することもできます。
そのための手順 (または可能性) は、使用しているドライバーによって異なります (ドライバーのドキュメントを確認してください!)。
4)その他のプロファイリング ツール
プロファイリング データを分析し、インデックスの推奨に役立つユーティリティ アプリがいくつかあります。
MongoDB ログで遅いクエリを確認できます: http://www.mongodb.org/display/DOCS/Logging
クエリの量については、このSQLの可能な限り少ないクエリのマインドセットから頭を悩ませてください。MongoDB のルールブックを捨ててください。たとえば、カーソルを反復するたびに、DB からストリーミングされるため、クエリが再度実行されるため、8 つのクエリを実行していると思われますが、実際には 1 秒間に 10 を実行している可能性があります。Mongo の結果セットは SQL とは異なり、クエリを同じように扱うべきではありません。
この質問に答えたとき、実際にはプロファイリング リンクではなくロギング リンクを貼り付けたことがわかりましたが、@Stennie は正しいリンクを貼り付けたので問題ありません。