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

非并行查询:执行计划节点CPU时间总和与STATISTICS TIME结果差异原因

非并行查询中CPU时间统计差异的原因及对比有效性分析

一、核心差异的原因

  • 统计范围不一致:SET STATISTICS TIME统计的是查询从提交到完成的全生命周期CPU消耗,包含查询解析、编译、绑定、执行计划缓存查找,以及执行阶段之外的系统辅助开销;而执行计划节点的CPU时间仅统计执行阶段内各算子的CPU消耗,不覆盖解析、编译等前置环节。
  • 计时精度与取整规则差异:SQL Server的CPU时间统计以毫秒为展示单位,但内部计时粒度更细。SET STATISTICS TIME的结果是取整后的值,而执行计划节点的时间是更细粒度的累加值,两者的取整逻辑不同会导致汇总后出现偏差。
  • 未被捕获的后台开销:执行过程中诸如内存分配/释放、少量日志记录等后台操作的CPU消耗,会被计入SET STATISTICS TIME的总CPU时间,但不会被执行计划的算子节点统计捕获。

二、对比的有效性分析

这种直接对比不具备严格有效性,原因如下:

  • 两者统计维度完全不同:一个是端到端的全流程CPU开销,一个仅覆盖执行阶段的算子CPU开销,统计范围无完全重叠性,直接相加对比没有参考意义。
  • 轻量查询的偏差被放大:像示例中的简单查询,解析、编译等前置环节的CPU占比相对执行阶段更高,两者的差异会更明显。

三、示例说明

执行的查询:

select name from sys.tables;

SET STATISTICS TIME返回结果:

SQL Server 执行时间:
CPU 时间 = 4 毫秒, 占用时间 = 2 毫秒。
总执行时间: 00:00:00.053

执行计划节点CPU时间汇总:

从执行计划的RunTimeInformation中汇总所有节点CPU时间,结果为9毫秒。

内容的提问来源于stack exchange,提问作者Arun Prasanth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:44:56