通过nodejs进行Mongodb并行查询

时间:2015-12-28 11:15:38

标签: node.js mongodb

我试图通过节点Async运行一些mongodb查询。但他们仍然需要时间来运行.. 数据库已编制索引并完全优化。 有没有办法可以通过mongodb admin增加查询速度...或者通过为它分配更多内存来提高其性能。

当我在控制台上看到时,查询一个接一个地运行。有些人花了太长时间......没有回应..

2015-12-29T10:31:48.958-0800 I COMMAND  [conn63] command consumers.$cmd command: count { count: "consumer1s", query: { ZIP: 37089, $or: [ { ADULTS_F_18_24: "Y" }, { ADULTS_F_24_35: "Y" } ] } } planSummary: IXSCAN { ZIP: 1.0, GENDER: 1.0 } keyUpdates:0 writeConflicts:0 numYields:1 reslen:44 locks:{ Global: { acquireCount: { r: 4 } }, MMAPV1Journal: { acquireCount: { r: 4 } }, Database: { acquireCount: { r: 2 } }, Collection: { acquireCount: { R: 2 }, acquireWaitCount: { R: 2 }, timeAcquiringMicros: { R: 54270 } } } 146ms

2015-12-29T10:31:54.925-0800 I COMMAND  [conn62] command consumers.$cmd command: count { count: "consumer1s", query: { ZIP: 37024, $or: [ { ADULTS_F_18_24: "Y" }, { ADULTS_F_24_35: "Y" } ] } } planSummary: IXSCAN { ZIP: 1.0, GENDER: 1.0 } keyUpdates:0 writeConflicts:0 numYields:88 reslen:44 locks:{ Global: { acquireCount: { r: 178 } }, MMAPV1Journal: { acquireCount: { r: 172 } }, Database: { acquireCount: { r: 89 } }, Collection: { acquireCount: { R: 89 }, acquireWaitCount: { R: 83 }, timeAcquiringMicros: { R: 1654781 } } } 6114ms

嗨,请查看日志以了解我的问题...... 2个查询遵循相同的计划..执行时间差异很大...请告诉我原因以及如何解决它

以下信息必须得心应手。 我在Macintosh系统上使用此应用程序。 OSX Yosemite 10.10.2处理器3.2Ghz Intel Core i5。内存为8GB 1600MHz DDR3。有关如何为mongodb分配更多虚拟内存的任何建议

1 个答案:

答案 0 :(得分:1)

正如@Martin所说,你需要描述一下。使用类似cursor.explain的内容来确保查询使用索引并查找弱点。使用您的系统具有的任何资源监视器(如Linux上的top / htop)来查看它是否内存不足或是否受CPU限制。

“查询逐个运行” - 我假设您没有使用async.series或类似的,这是顺序的。