首页 > 解决方案 > 为什么 RU 的数量会改变我的 CosmosDB 结果集大小?

问题描述

这让我完全困惑。

上下文:我在 CosmosDB 上运行一个存储过程,如果有多个数据“页面”(其中至少会有几个),它会返回结果集以及延续令牌。我的收藏中共有 65,000 条记录。对于最后一个“页面”,延续令牌应该(并且确实)从 CosmosDB 返回为 NULL,表明我的整个集合已返回。

我的问题: 当我将 CosmosDB 集合的 RU 设置为最小值 (400) 时,数据集以及下一页的延续标记都可以正常运行,并且一切正常。一旦我提高了我的 RU(为了更快的查询执行),前几个“页面”的延续标记就可以通过,但随后在整个数据集的一半左右突然返回为 NULL。

这是我的存储过程:

function count(continuationToken) {
var filterQuery = 'select c.id from c where c.Type = 0';
var collection = getContext().getCollection();
var maxResult = 900000;
var result = [];
tryQuery(continuationToken);

function tryQuery(nextContinuationToken) {
    var responseOptions = { continuation: nextContinuationToken, pageSize: maxResult };
    if (result.length >= maxResult || !query(responseOptions)) {
        setBody(nextContinuationToken);
    }
}
function query(responseOptions) {
    return collection.queryDocuments(collection.getSelfLink(), filterQuery, responseOptions, onReadDocuments);
}
function onReadDocuments(err, docFeed, responseOptions) {
    if (err) {
        throw 'Error while reading document: ' + err;
    }
    result.push(docFeed);
    if (responseOptions.continuation) {
        tryQuery(responseOptions.continuation);
    } else {
        setBody(null);
    }
}
function setBody(continuationToken) {
    var body = { records: result, continuationToken: continuationToken };        
    getContext().getResponse().setBody(body);
}
}

有人对这里可能出了什么问题有任何想法吗?对我来说,RU 应该对从 CosmosDB 集合返回的数据量产生影响是没有意义的。

任何帮助将不胜感激,谢谢!

标签: c#.netazureazure-cosmosdb

解决方案


推荐阅读