You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kusto单查询中now()返回相同值 如何实现查询性能打点监控?

Kusto 查询性能打点常见问题解答

问题原因:多次调用now()返回相同值的原因

Kusto 中的 now() 函数会在查询编译阶段统一求值一次,整个查询的执行生命周期内值固定,和调用位置、执行顺序无关,且不支持修改该默认行为,因此无法通过多次调用now()实现阶段耗时打点。

可行的性能打点方案

1. 内置查询统计功能(最推荐)

无需修改查询代码,查询执行完成后,在Kusto Explorer或Azure Data Explorer Web UI的结果面板下方,打开「查询详情」/「性能」标签页即可获取全量性能数据:

  • 整个查询的总执行耗时、CPU占用、内存占用
  • 执行计划每个算子的分步耗时、处理行数、扫描数据量
  • 客户端耗时、服务端耗时、缓存命中情况等明细维度统计

2. 拆分查询分段统计

如果需要单独验证某一段逻辑的耗时,将对应逻辑拆分为独立查询单独执行,直接查看该查询的统计耗时即可。

3. 内置函数实现查询内耗时返回

如果需要在查询结果中直接返回指定逻辑的执行耗时,可以配合get_consumption_stats()实现,示例代码如下:

// 定义要测试的目标查询逻辑
let target_logic = () {
    // 替换为你实际的耗时查询语句
    range x from 1 to 10000000 step 1
    | summarize sum(x)
};
// 打点计算耗时
let start = get_consumption_stats();
target_logic();
let end = get_consumption_stats();
print 目标逻辑执行耗时 = end.Time - start.Time

4. 自定义诊断标记打点

如果需要在查询执行日志中打自定义阶段标记,可以使用trace算子,执行后可以在查询的诊断日志中查看每个标记的触发时间,示例代码如下:

trace "第一阶段逻辑开始执行"
// 第一阶段逻辑
| range x from 1 to 1000 step 1
| trace "第一阶段执行完成,第二阶段开始"
// 第二阶段逻辑
| extend y = x * 2
| trace "全部逻辑执行完成"

内容的提问来源于stack exchange,提问作者Rajanikanth Ragula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:45:03