mongodb много вставляет \ обновляет производительность - PullRequest
2 голосов
/ 24 января 2011

Я использую mongodb для хранения событий пользователя, для каждого пользователя есть документ, содержащий массив событий.Система обрабатывает тысячи событий в минуту и ​​вставляет каждое из них в mongo.

Проблема в том, что у меня плохая производительность для операции обновления, при использовании профилировщика я замечаю, что WriteResult.getError является единственнымЭто влияет на производительность.

Это имеет смысл, обновление является асинхронным, но если кто-то хочет получить результат операции, ему нужно подождать, пока операция не будет завершена.

Мой вопрос:есть способ сохранить асинхронное обновление, но получить исключение только в случае возникновения ошибки (в 99,999 случаях ошибки нет, поэтому система ничего не ждет).Я понимаю, что это означает, что исключение будет возбуждено где-то еще ниже по ходу процесса, но я могу с этим смириться.

Любые другие предложения?

Приложение написано на Java, поэтому мы используемдрайвер Java, но я не уверен, что он связан.

1 Ответ

2 голосов
/ 03 марта 2011

Вы закончили индексацию своих записей? это может быть проблемой для вашей работы.

если вы не сделали этого раньше, вы должны выполнить индексирование для вашей коллекции, как

db.collectionName.ensureIndex({"event.type":1})  

для получения дополнительной помощи посетите http://www.mongodb.org/display/DOCS/Indexes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...