Трассировка запросов API-интерфейса Cosmos DB SQL - PullRequest
0 голосов
/ 08 мая 2019

У меня много коллекций в Cosmos DB (SQL API) и много сервисов, использующих одну и ту же базу данных. Сотни запросов выполняются каждую минуту. Иногда я вижу, что RU превышает предупреждение. Я знаю, что все запросы не оптимизированы во всех приложениях.

Есть ли способ получить все запросы и время выполнения (например, трассировка Profiler SQL-сервера)?

Я пытался включить Cosmos DB Diagnostic Settings, но не смог отследить запросы

1 Ответ

1 голос
/ 08 мая 2019

То, что вам нужно сделать, это включить PopulateQueryMetrics в SDK.

Если ваши запросы включены, заголовок x-ms-documentdb-query-metrics будет заполнен. Значение выглядит так:

totalExecutionTimeInMs=33.67;queryCompileTimeInMs=0.06;queryLogicalPlanBuildTimeInMs=0.02;queryPhysicalPlanBuildTimeInMs=0.10;queryOptimizationTimeInMs=0.00;VMExecutionTimeInMs=32.56;indexLookupTimeInMs=0.36;documentLoadTimeInMs=9.58;systemFunctionExecuteTimeInMs=0.00;userFunctionExecuteTimeInMs=0.00;retrievedDocumentCount=2000;retrievedDocumentSize=1125600;outputDocumentCount=2000;writeOutputTimeInMs=18.10;indexUtilizationRatio=1.00

Как вы можете видеть, это нужно разделить и проанализировать, но в нем есть много полезной информации, которую вы можете регистрировать и запрашивать, чтобы увидеть много информации о ваших запросах и их производительности.

Подробнее о показателях запросов вы можете прочитать здесь: https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-query-metrics

...