Космос БД Query Metrics - PullRequest
       18

Космос БД Query Metrics

0 голосов
/ 09 ноября 2018

У меня возник вопрос относительно QueryMetrics, возвращенного API-интерфейсом Cosmos DB.

Согласно порталу Azure у меня есть 5 разделов в моей БД. Я устанавливаю PopulateQuery=true в FeedOptions при запросе CosmosDB для подтверждения и проверки дорогостоящих запросов. Поскольку это запрос SELECT *, я ожидаю, что 5 метрик запросов будут возвращаться для каждого раздела с правильными идентификаторами разделов.

Я получаю 5 разных метрик запросов, но у каждой метрики одинаковый идентификатор раздела.

Это ошибка или я что-то не так делаю. Смотрите пример ниже.

DocumentClient documentClient = null;
DocumentCollection collection = null;

FeedOptions feedOptions = new FeedOptions
{
    EnableCrossPartitionQuery = true,
    PopulateQueryMetrics = true
    MaxItemCount = -1,
    MaxDegreeOfParallelism = 5,
    MaxBufferedItemCount = 100
};

string query = "SELECT * FROM docs
         WHERE docs.Type = @docType AND
            (docs.A - docs.B - (IS_NULL(docs.C)?0:docs.C))
                / (IS_NULL(docs.Info.D)?1:docs.Info.D.E)
                > @threshold"
IDocumentQuery<dynamic> documentQuery = documentClient.CreateDocumentQuery(Collection.SelfLink, query, feedOptions).AsDocumentQuery();

while (documentQuery.HasMoreResults)
{
    FeedResponse<dynamic> feedResponse = await documentQuery.ExecuteNextAsync();
    IReadOnlyDictionary<string, QueryMetrics> partitionIdToQueryMetrics = feedResponse.QueryMetrics;
    foreach (KeyValuePair<string, QueryMetrics> kvp in partitionIdToQueryMetrics)
    {
        string partitionId = kvp.Key;
        QueryMetrics queryMetrics = kvp.Value;
        DoSomeLoggingOfQueryMetrics(query, partitionId, queryMetrics);
    }
}

Данные разделены по идентификатору. Этот идентификатор не является частью запроса.

PartitionID в приведенном выше запросе для всех 5 раз равен 0. Но все остальные показатели отличаются.

Разве это не должно быть 0, 1, 2, 3, 4.

...