我想知道消耗cosmos db azure中cosmos db "诊断工具"支持的更高RU的可靠查询。
我可以将DataPlane日志从Azure Portal存储到日志分析/blob存储中。查看日志时,我看到名为"requestcharge_s"的字段。据我所知,这是该操作消耗的RU。
我想知道与此日志条目对应的确切底层查询。如何获取该查询?我确实在日志条目中看到"activityId_g"字段...但不知道是否有任何方法可以使用该字段值获取确切查询。
我知道,在cosmos db上触发查询时,已使用的RU作为HTTP头值之一返回。但是,我更希望在azure门户上看到它,以便进行更好的就地分析。
我错过了什么吗?
2条答案
按热度按时间9rnv2umw1#
根据Interpret your logs中的属性表,不存在使用罗斯记录确切查询的属性。
事实上,Cosmos DB上的任何操作都将消耗罗斯和诊断日志,通过
OperationName
属性区分操作类型。你可以在上面的链接得到以下线索:
1.TimeGenerated,操作发生的日期和时间(UTC
2.OperationName,该值可以是以下任意操作:创建、更新、读取、ReadFeed、删除、替换、执行、SqlQuery、查询、JSQuery、标题、标题提要或向上插入。
3.activityId_g,记录的操作的唯一GUID。
4.ResourceId,根据执行的操作,该值可以指向databaseRid、collectionRid或documentRid。
5.requestCharge_s,由操作使用的罗斯的数目。
我想基本上可以定位到客户端发送查询的位置,如果确实想知 prop 体的查询sql,可以在客户端添加打印SQL的日志,辅以运行时间来定位。
t2a7ltrp2#
为了找到消耗量最大的Cosmos查询,我找到了this article。从那时起,我对该查询做了一些改进,并提出了以下查询:
轻松获取此数据的主要问题是,消耗的RU/s记录在
DataPlaneRequests
中,而具体的查询在QueryRuntimeStatistics
中可用。令人高兴的是,两者共享相同的activityId,并且可以连接以获取两个条目之间的链接。如果您在日志查询中运行此命令,您的结果将如下所示,这非常有助于查找有问题的查询(根据您的需要,您可能必须按平均值或计数排序):