kusto now()函数在单个查询中返回相同的值



我正在尝试检测kusto函数的一部分,以检查不同场景下的执行时间。然而,我找不到一种方法来打印前后的时间。

print now();
<query takes few seconds>;
print now();

两个print语句在输出中返回相同的值。我尝试运行print now()作为另一个功能的一部分,或转换tostring()或使用extend添加另一列。但是值保持不变。

在kusto资源管理器/azure数据资源管理器中有哪些方法来测量查询性能?是否有办法覆盖默认的now()行为?

如文档中所述,这种行为是设计出来的,不能被重写。您应该使用.show queries命令来分析查询性能。

正如@yifats在她的回答中提到的,now()将在相同查询中的所有出现中返回相同的值,这是通过设计的。

但是查看查询持续时间并不是进行完美测试的好方法。相反,您应该交替运行这两个查询(您想要比较的)几次,而不是查看查询的持续时间,而是转到Kusto Explorer中的query Summary选项卡,查看"总CPU时间"。和"扫描(估计)数据";-数字越低越好。还有,看看"平行"(更高的并行性更好,因为相同的CPU时间,更高的并行性将导致更短的查询持续时间)。

确保对所有查询运行使用恒定的时间窗口,例如| where Timestamp between (datetime(2021-09-12 14:00:00) .. 1d)而不是使用| where Timestamp > ago(1d)过滤数据,这是为了在完全相同的数据上运行查询-只需确保您的时间窗口不包括最后几分钟,因为在此时间框架内的摄取可能仍在进行中,因此两次运行可能需要扫描不同数量的数据。

最后,确保只查询热缓存中的数据(否则在性能方面,您将无法获得一致的结果)。

最新更新