0

私のq_development.usersテーブルには1,000,000を超えるレコードがあります。私のmongodbが、クエリが何であるかを明示的にログに記録せずに、このコレクションに時間のかかるアイテムをログに記録するのは奇妙です。ntoreturnMongoDBは、ntoskipこれらのクエリをログに記録しません。reslenすべて同じなので、非常に疑わしいです。ログは次のようになります

Fri May 25 00:01:00 [conn56429] query q_development.users nscanned:1207786 reslen:20 2390ms
Fri May 25 00:09:09 [conn55528] query q_development.users nscanned:1207799 reslen:20 2623ms
Fri May 25 00:11:11 [conn55529] query q_development.users nscanned:1207800 reslen:20 2660ms
Fri May 25 00:28:56 [conn55586] query q_development.users nscanned:1207823 reslen:20 2777ms
Fri May 25 00:46:45 [conn55529] query q_development.users nscanned:1207850 reslen:20 4218ms
Fri May 25 00:47:46 [conn56169] query q_development.users nscanned:1207851 reslen:20 2392ms
Fri May 25 01:30:49 [conn57141] query q_development.users nscanned:1207901 reslen:20 4289ms

どのようなクエリがそのようなmongodb.logアイテムを生成する可能性があるか知っていますか?どうもありがとうございます!

4

1 に答える 1

1

これは、一部のクエリに時間がかかったことを意味します。最初のクエリは、たとえば2390ミリ秒です。(デフォルトで)100ms以上かかるものはすべてログに記録されます。この場合、「ユーザー」のクエリには時間がかかるようです。は、ディスクから検索する必要のあるドキュメントのnscanned数を示しています。それぞれが100万を超えています。これは、おそらく全表スキャン、つまりインデックスなしのクエリを実行していることを意味します。プロファイラーが、このインデックス付けされていない全表スキャンを実際に引き起こしているクエリを特定できるようにします。

この場合、クエリが表示されないため、引数なしで検索を実行する可能性があります。

于 2012-05-26T21:38:27.853 に答える