私のデータベースには 100 万の地理データがあり、そのうちの 20% は [0,0] です。
db.test.find({lc:{$near:[0,0]}})
非常に遅い単純なクエリを実行します。$near 操作でデータを並べ替えるため、20 ~ 30 秒ほどかかります。CPU 使用率は間違いなく 100% まで上昇します。
mongodb はすでにマルチコアをサポートしていると聞きましたが、geo-query の実行中に、別の mongo シェルを起動して非常に単純なクエリを入力するとdb.test1.find().limit(1)
(別のコレクションを使用していることに注意してください)、スタックしました。結果は、ジオクエリが終了した後にのみ出てきました。
私は混乱しています.mongodbは、長時間実行される読み取り操作に対してシングルコアのみをサポートしているようです. 本当?私はmongo 2.4.5を使用しています
編集:別のデータベースを使用しても、スタックします。
編集: 長いクエリの実行中に iostat -xm 2 を使用すると、すべてのディスク I/O が停止し、%util はほぼ 0 になります。メモリ使用量は約 12% です。したがって、CPU使用率が高いことが原因であると確信しています。