我们有一个具有以下特征的 azure cosmos DB:
大约2M文件。
每个文件大约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 秒
我有哪些选择可以让它更快地工作?谢谢