1

我们有一个具有以下特征的 azure cosmos DB:

  1. 大约2M文件。

  2. 每个文件大约30KB。

当我们使用 Java mongo API ( org.mongodb:mongodb-driver-sync:3.9.1)查询 cosmos DB

使用分片键检索 4000 个文档(在我的理解中应该是最快的)需要 2 分钟以上。

是普通的吗?

我应该期望从 API 获得这些时间吗?

示例代码:

collection = <... init the collection>

final Bson filters = Filters.or(Filters.eq("shardKey", "key1"), Filters.eq("shardKey", "key2"));

long pre = System.currentTimeMillis();

logger.info("filter {}", filters);
List<Document> documents = new ArrayList<>();
FindIterable<Document> iterator = collection.find(filters);
try (MongoCursor<Document> cursor = iterator.iterator()) {
    while (cursor.hasNext()) {
        Document e = cursor.next();
        documents.add(e);
    }
}

logger.info("Got {}, time: {}", documents.size(), (System.currentTimeMillis() - pre));

似乎客户端以大约 100 项的批量检索文档。有没有办法增加批量大小?

使用 Azure 门户时,门户中的界面对调用进行分页并仅检索前 100 个文档,然后您必须单击“带来更多”以获取更多文档。似乎对于 azure 界面,检索每个批次也需要大约 2 秒

我有哪些选择可以让它更快地工作?谢谢

4

0 回答 0