kusto now() 函数 returns 单个查询中的相同值

kusto now() function returns same value in single query

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

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

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

在 kusto explorer/azure 数据资源管理器中检测查询性能的方法有哪些?有什么方法可以覆盖默认的 now() 行为吗?

此行为是设计使然,如用于分析查询性能的 documentation, and cannot be overridden. You should use the .show queries 命令中所述。

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

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

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

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