我使用mongodb来存储用户的事件,每个用户都有一个文档,其中包含一系列事件。系统每分钟处理数千个事件,并将每个事件插入mongo。
问题是我使用分析器对更新操作的性能很差,我注意到WriteResult.getError会引起性能影响。
这是有道理的,更新是异步的,但是如果想要检索操作结果,他需要等到操作完成。
我的问题是,有没有办法让更新保持异步,但只有在发生错误时才会出现异常(99.999次没有错误,所以系统什么都不等)。我理解这意味着异常将在流程的某个地方进行,但我可以忍受。
还有其他建议吗?
应用程序是用Java编写的,所以我们使用的是Java驱动程序,但我不确定它是否相关。
答案 0 :(得分:2)
您是否已对您的记录编制索引? 这可能是你表现的问题。
如果没有在你应该对你的集合进行索引之前完成,比如
db.collectionName.ensureIndex({"event.type":1})
要获得更多帮助,请访问http://www.mongodb.org/display/DOCS/Indexes