Azure cosmos DB在文档大小约为30KB时速度较慢

Azure cosmos DB在文档大小约为30KB时速度较慢,azure,azure-cosmosdb,azure-cosmosdb-mongoapi,Azure,Azure Cosmosdb,Azure Cosmosdb Mongoapi,我们有一个azure cosmos DB,具有以下特征: 大约200万份文件 每个文档大约30KB 当我们使用JavaMongoAPI查询COSMOSDB时 (org.mongodb:mongodb驱动程序同步:3.9.1) 使用shard键检索4000个文档(据我所知应该是最快的),需要2分钟以上的时间 这是常见的吗 我应该期望从API获得这些时间吗 示例代码: collection = <... init the collection> final Bson filters =

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

  • 大约200万份文件

  • 每个文档大约30KB

  • 当我们使用JavaMongoAPI查询COSMOSDB时 (
    org.mongodb:mongodb驱动程序同步:3.9.1

    使用shard键检索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));
    
    集合=
    最终Bson过滤器=过滤器。或(filters.eq(“shardKey”、“key1”)、filters.eq(“shardKey”、“key2”);
    long pre=System.currentTimeMillis();
    info(“filter{}”,filters);
    列表文档=新建ArrayList();
    FindItemerable迭代器=collection.find(过滤器);
    try(MongoCursor=iterator.iterator()){
    while(cursor.hasNext()){
    文档e=游标.next();
    文件.添加(e);
    }
    }
    info(“Got{},time:{}”,documents.size(),(System.currentTimeMillis()-pre));
    
    客户机似乎以大约100项为一批检索文档。 有没有办法增加批量

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

    我有什么办法让它工作得更快?
    谢谢

    据我所知,您无法增加mongo库的大小,因为他们不知道CosmosDB需要的请求选项。您是否尝试将此查询限制为单个分区键,并查看其在性能方面的效果?使用单个部分键(shard key)并没有加快查询速度,我们使用projection()方法仅获取文档的一部分,这确实加快了响应速度。由于我们使用PojoCodecProvider,我们必须创建一个新的实体类,该类将适合从API返回的“投影”文档。据我所知,mongo库无法增加大小,因为它们不知道CosmosDB需要的请求选项。您是否尝试将此查询限制为单个分区键,并查看其在性能方面的效果?使用单个部分键(shard key)并没有加快查询速度,我们使用projection()方法仅获取文档的一部分,这确实加快了响应速度。由于我们使用PojoCodecProvider,我们必须创建一个新的实体类,该类将适合从API返回的“投影”文档