我在Cosmos DB(SQL API)中有许多集合,并且使用同一数据库有许多服务。每分钟执行100个查询,有时我会看到RU超出警告。我知道并不是所有应用程序都优化了所有查询。
是否可以获取所有查询和执行时间(例如SQL Server Profiler跟踪)?
我尝试启用Cosmos DB Diagnostic Settings
,但没有任何跟踪查询的方法
答案 0 :(得分:1)
您必须执行的方法是在SDK中启用PopulateQueryMetrics
。
已启用查询的人将填充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