当获取第二批时,MongoDB游标很慢

时间:2019-06-06 20:20:50

标签: mongodb

在游标上迭代时,我看到一个奇怪的行为:提取 second 批处理非常慢(几秒钟或更长时间)。第一批相当快,第二批之后的所有批次也是如此。另一个奇怪的是,我可以通过增加批处理大小来消除这种行为(默认为100,我将其增加为800)。

    MongoCursor<Document> it = collection
            .find()
            .batchSize(800)
            .projection(Projections.fields(Projections.include("year")))
            .iterator();
    int count = 0;
    while (it.hasNext()) {
        System.out.println(""+count+" : "+it.next());
        count++;
    }

对于上面的示例,我使用的数据库大约有100万条记录。如果我未设置批量大小,则在打印第100条记录后暂停,然后继续正常进行。

有人可以解释为什么会这样吗?是服务器还是客户端中的错误?是否表明我设置数据库的方式有问题?

服务器版本:4.0.10

Java客户端版本:3.10.1

0 个答案:

没有答案