В моей базе 1 миллион геоданных и 20% из них [0,0]
Я запускаю простой запрос db.test.find({lc:{$near:[0,0]}})
, который очень медленный. Это стоит около 20~30 секунд, потому что данные будут отсортированы с операцией $near. Загрузка ЦП определенно возрастет до 100%.
Я слышал, что mongodb уже поддерживает многоядерность, но когда запущен гео-запрос, я запустил другую оболочку mongo и ввел очень простой запрос db.test1.find().limit(1)
(обратите внимание, что я даже использую другую коллекцию), он застрял. Результат вышел только после завершения моего гео-запроса.
Я в замешательстве, кажется, что mongodb поддерживает только одно ядро для длительной операции чтения. Это правда? Я использую монго 2.4.5
edit: даже если я использую другую базу данных, она все равно застрянет.
редактировать: я использую iostat -xm 2, когда выполняется длинный запрос, все дисковые операции ввода-вывода останавливаются, %util почти 0. Использование памяти составляет около 12%. Поэтому я почти уверен, что это состояние вызвано высокой загрузкой ЦП.