MongoDB Java驱动程序 - $ in select select

时间:2017-12-15 15:32:39

标签: mongodb mongodb-java

我正在使用Java Driver查询MongoDB实例并且读取性能很差。我的表格不是特别大,有大约30米的记录。我一直在尝试不同大小的查询,我没有在合理的时间内返回200k以上的任何东西,200k需要大约5-10分钟。

MongoDB记录查询:

2017-12-15T01:13:10.877 + 0000 I COMMAND [conn3]命令db.events命令:getMore {getMore:23973717840,collection:“events”,batchSize:10000} originatingCommand:{find:“events”, filter:{id:{$ in:[]}},batchSize:10000} planSummary:IXSCAN {id:1} cursorid:23973717840 keysExamined:10000 docsExamined:10000 fromMultiPlanner:1 numYields:79 nreturned:10000 reslen:7280007 locks:{全局:{acquireCount:{r:160}},数据库:{acquireCount:{r:80}},集合:{acquireCount:{r:80}}}协议:op_query 124ms

2017-12-15T01:13:14.214 + 0000 I COMMAND [conn3]命令db.events命令:getMore {getMore:23973717840,collection:“events”,batchSize:10000} originatingCommand:{find:“events”, filter:{id:{$ in:[]}},batchSize:10000} planSummary:IXSCAN {id:1} cursorid:23973717840 keysExamined:10001 docsExamined:10000 fromMultiPlanner:1 numYields:79 nreturned:10000 reslen:7240971 locks:{全局:{acquireCount:{r:160}},数据库:{acquireCount:{r:80}},集合:{acquireCount:{r:80}}}协议:op_query 114ms

2017-12-15T01:13:18.646 + 0000 I COMMAND [conn3]命令db.events命令:getMore {getMore:23973717840,collection:“events”,batchSize:10000} originatingCommand:{find:“events”, filter:{id:{$ in:[]}},batchSize:10000} planSummary:IXSCAN {id:1} cursorid:23973717840 keysExamined:10000 docsExamined:10000 fromMultiPlanner:1 numYields:81 nreturned:10000 reslen:7217981 locks:{全局:{acquireCount:{r:164}},数据库:{acquireCount:{r:82}},集合:{acquireCount:{r:82}}}协议:op_query 172ms

2017-12-15T01:15:39.565 + 0000 I COMMAND [conn3]命令db.events命令:getMore {getMore:23973717840,collection:“events”,batchSize:10000} originatingCommand:{find:“events”, filter:{id:{$ in:[]}},batchSize:10000} planSummary:IXSCAN {id:1} cursorid:23973717840 keysExamined:10001 docsExamined:10000 fromMultiPlanner:1 numYields:79 nreturned:10000 reslen:7252405 locks:{全局:{acquireCount:{r:160}},数据库:{acquireCount:{r:80}},集合:{acquireCount:{r:80}}}协议:op_query 165ms

我已经描述了我的Java代码:

enter image description here

我没有在其他地方做任何非标准的事情(使用forEach循环使用Consumer的FindIterable)所以我不确定它是如何成为Java ...但是日志表明它不可能只是Java。

我的表在相关列上有索引。我删除了$ in的内容。我尽可能地优化了我的桌面结构(我相信)。这可能是某种RAM问题吗?

在有人要求之前,我无法以不同的方式做某事。这个查询看起来很简单,使用较小的in(例如,5)返回更快但对我的应用程序来说太慢了。

任何帮助表示感谢。

0 个答案:

没有答案