これに関するヘルプは大歓迎です。
ユーザー アクティビティを格納する大規模な Mongodb コレクションがあります。実行したいクエリ用の複数の複合インデックスがあり、通常、クエリのパフォーマンスは素晴らしく、ユーザー アクティビティ ストリームはすぐに読み込まれます。
ただし、最近、2 時間ごとに 20,000 レコードをコレクションに追加するバックグラウンド タスクを追加しました (ユーザーごとに 1 つの新しいレコード)。このタスクが追加されてから、これらのレコードが追加された後に初めてアクティビティ ストリームにアクセスしたときに、ページが読み込まれるまでに大きな遅延があることに気付きました。次に、ページを更新すると、すぐに読み込まれます。
アクセスしようとした後、新しいアイテムがインデックスに追加されるだけのようです。しかし、MongoDB FAQ で読んだことから、それらは自動的にインデックスに追加されます - http://docs.mongodb.org/manual/faq/indexes/#should-you-run-ensureindex-after-every-insert。おそらく、まだ追加されていないだけの場合ですか?
役立つ場合は、これが私のコレクション統計です。
Array
(
[ns] => main.activities
[count] => 26280825
[size] => 3234981772
[avgObjSize] => 123.09285465734
[storageSize] => 4211892224
[numExtents] => 30
[nindexes] => 20
[lastExtentSize] => 844685312
[paddingFactor] => 1.001
[systemFlags] => 1
[userFlags] => 0
[totalIndexSize] => 25240448464
[indexSizes] => Array
(
[_id_] => 946551872
[portfolio_id_1_type_1_timestamp_-1] => 1519746704
[project_id_1_type_1_timestamp_1] => 1839902512
[project_id_1] => 1148997808
[piece_id_1] => 792794016
[user_id_1_type_1_timestamp_-1] => 1903806128
[type_1_timestamp_-1] => 1475522720
[user_id_1_type_1] => 1440243280
[project_id_1_type_1] => 1394008000
[project_id_1_type_1_timestamp_1_project_page_timestamp_1] => 2114419888
[project_id_1_type_1_project_page_timestamp_1] => 1564649296
[conversation_id_1] => 870670416
[project_comment_id_1] => 814640288
[project_comment_id_1_type_1] => 1032408048
[reply_to_comment_id_1] => 512324512
[collection_id_1] => 822996160
[user_id_1] => 1233578528
[portfolio_id_1] => 852691392
[type_1_user_id_1] => 1477182448
[type_1_user_id_-1] => 1483314448
)
[ok] => 1
)