MongoDBには、次の方法で有効にできる組み込みのプロフィラーがあります。
db.setProfilingLevel(2)
「2」の代わりに、以下のリストから任意のオプションを選択できます。
- 0 -プロファイラーはオフで、データを収集しません。 mongodは、常にslowOpThresholdMsしきい値よりも長い操作をログに書き込みます。
- 1 -低速操作の場合にのみプロファイリングデータを収集します。デフォルトでは、低速操作は100ミリ秒より低速です。slowOpThresholdMsランタイムオプションまたはsetParameterコマンドを使用して、「低速」操作のしきい値を変更できます。詳細については、「低速操作のしきい値の指定」セクションを参照してください。
- 2 -すべてのデータベース操作のプロファイリングデータを収集します。
また、 system.profile を確認すると、クエリの結果を確認できます。 MongoDBのコレクション..
編集:
パフォーマンスをテストする場合は、mongoコンソールから実行できる次のコードスニペットを使用できます。
> for (var i = 0; i < 10000000; ++i) { db.countTest.insert({a: i % 10}) }
> db.countTest.ensureIndex({a:1})
> db.countTest.count({a: 1})
> db.countTest.count()
> db.countTest.find().count()
そして、私の結論は次のとおりです。
- インデックスの追加 (IDからのアパート)1,000万レコードのカウントを返しました 約170ms
- IDでカウント (クエリなしのカウント)ミリ秒未満でカウントを返しました
- カーソルを使用したIDによるカウント (.find()はコレクション上のカーソルとして機能することに注意してください)ミリ秒未満でカウントを返しました
したがって、より多くのインデックス コレクションのクエリが遅くなる 。 _idでカウントすると、すぐに 、複合インデックスがある場合 インデックスの数に基づいてスケーリングします 。