开发者社区> 问答> 正文

java查询mongodb速度慢的问题

mongodb数据量有1300+万,文件大小在36g左右,用_id做$in 查询,就算是一次查询几十条,竟然需要4分钟。
java是多线程同时查一张表,_id是自己定义的,部分查询代码如下

DBObject o = new BasicDBObject();
DBObject value = new BasicDBObject();

DBCollection dataCollection = null;
DBCollection dptCollection = db.getCollection("dpt");

for(Entry<String, List<String>> entry : grupByDate.entrySet()){
log.info("mongo find $in size=" + entry.getValue().size());
value.put("$in", entry.getValue());
o.put("_id", value);
dataCollection = db.getCollection("data" + entry.getKey());
DBCursor dataResult = dataCollection.find(o, fields);
for(DBObject data : dataResult){
dataPart.put(String.valueOf(data.get("_id")), data);
}

DBCursor dptResult = dptCollection.find(o, dptFields);
for(DBObject dpt : dptResult){
dptPart.put(String.valueOf(dpt.get("_id")), dpt);
}
}

望高手解答

展开
收起
落地花开啦 2016-02-21 18:02:39 7027 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    一条数据平均2k多,数据量也不大,我见别人比你这大多的量也很快,看看从以下方向考虑:
    1 机器的配置,尤其是内存,做查询的时候top观察一下,看瓶颈是不是在IO上面
    2 从程序角度做优化,比如增加中间cache,因为是id查询,用redis应该能满足要求

    2019-07-17 18:46:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载