+
 新版

java查询mongodb很慢

阿_嚏 发布于 2014/09/11 09:29
阅读 3K+
收藏 0

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);
}
}

望高手解答

加载中
0
jack_jones
jack_jones
有索引吗
阿_嚏
阿_嚏
用的_id,这个mongodb会自动建立索引吧
0
jindaodama
jindaodama

一条数据平均2k多,数据量也不大,我见别人比你这大多的量也很快,看看从以下方向考虑:

1 机器的配置,尤其是内存,做查询的时候top观察一下,看瓶颈是不是在IO上面

2 从程序角度做优化,比如增加中间cache,因为是id查询,用redis应该能满足要求

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部