通过nodejs进行Mongodb并行查询

Sat*_*m S 7 mongodb node.js

我试图通过节点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
Run Code Online (Sandbox Code Playgroud)

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

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

Zac*_*chB 1

正如@Martin 所说,你需要进行分析。使用诸如cursor.explain之类的东西来确保查询正在使用索引并找到弱点。使用您的系统拥有的任何资源监视器(例如 Linux 上的 top/htop)来查看它是否内存不足或是否受 CPU 限制。

“查询正在逐一运行”——我假设您没有使用async.series或类似的,这是连续的。