我的数据库中有 100 万个地理数据,其中 20% 是 [0,0]
我运行简单的查询db.test.find({lc:{$near:[0,0]}})
,这非常慢。大约需要 20~30 秒,因为数据将使用 $near 操作进行排序。CPU 使用率肯定会上升到 100%。
听说 mongodb 已经支持多核了,但是当 geo-query 运行时,我启动了另一个 mongo shell 并输入了一个非常简单的查询db.test1.find().limit(1)
(注意我什至使用了不同的集合),它卡住了。结果只有在我的地理查询完成后才出来。
我很困惑,似乎 mongodb 只支持单核进行长时间运行的读取操作。真的吗?我正在使用 mongo 2.4.5
编辑:即使我使用不同的数据库,它仍然会卡住。
编辑:我使用 iostat -xm 2,当长查询运行时,所有磁盘 I/O 停止,%util 几乎为 0。内存使用率约为 12%。所以我很确定高CPU使用率引起的情况。