mongodb 查询大量数据 速度慢的问题?

一开始使用mongoTemplate 进行查询表数据为19万数据,查询结果数据大约4万条数据,耗时40 秒,添加索引后耗时20秒,但还是觉得太慢了,然后查看帖子建议不使用mongoTemplate,转而使用cursor 也就是游标的方式进行查询最后得出的代码为:

 Bson filter = Filters.gte("forecastdate", date);

CodecRegistry codecRegistry = CodecRegistries.fromRegistries(

MongoClientSettings.getDefaultCodecRegistry(),

CodecRegistries.fromProviders(new StatisticsDetailDaoCodecProvider())

);

List<StatisticsDetailDao> allDetail = new ArrayList<>();

MongoCursor<StatisticsDetailDao> cursor = mongoTemplate.getDb().getCollection("STRATEGY_STATISTICS_DETAIL", StatisticsDetailDao.class).withCodecRegistry(codecRegistry).find(filter).cursor();

try {

while (cursor.hasNext()) {

allDetail.add(cursor.next());

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (cursor != null) {

cursor.close();

}

}

改用了cursor 来进行数据的遍历,但最后结果发现耗时还是20s,并没有啥子大的改变
问题是出现在

while (cursor.hasNext()) {

allDetail.add(cursor.next());

}

这个位置,每次获取到一批数据之后要等好久,才会再次返回,有什么好的方法可以提升查询的速度吗?


回答:

一次查这么多数据是要做什么?
数据量大的话查询速度是一方面,数据库和应用之间的网络带宽也会有问题,因为要传输的数据太多了


回答:

有一个默认的batchsize ,如果数据量大,就调大。当时回导致内存的占用变高,这时也有一个allowDiskxxx的选项。 都在MongoCursor的api里,你可以看看 。然后在试试

以上是 mongodb 查询大量数据 速度慢的问题? 的全部内容, 来源链接: utcz.com/p/944569.html

回到顶部