1

我正在尝试使用 kusto 函数的一部分来检查不同场景中的执行时间。但是我找不到打印前后时间的方法。

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

两个打印语句都在输出中返回相同的值。我尝试print now()作为另一个函数的一部分运行,tostring()或者使用extend. 但价值保持不变。

在 kusto explorer/azure data explorer 中检测查询性能的方法是什么?有没有办法覆盖默认的 now() 行为?

4

2 回答 2

0

如文档中所述,此行为是设计使然,不能被覆盖。您应该使用.show queries命令来分析查询性能。

于 2021-09-17T07:27:00.277 回答
0

正如@yifats 在她的回答中提到的那样,now()将在同一查询中的所有事件中返回相同的值,这是设计使然。

但是无论如何查看查询持续时间并不是进行性能测试的好方法。相反,您应该多次交替运行两个查询(您想要比较的),而不是查看查询的持续时间,而是转到 Kusto Explorer 中的查询摘要选项卡,然后查看“总 CPU 时间”和“数据扫描(估计)” - 数字越低越好。此外,查看“并行度”(更高的并行度更好,因为具有更高并行度的相同 CPU 时间将导致更低的查询持续时间)。

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

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

于 2021-09-17T11:55:38.060 回答