统计数据:CPU 时间 vs 已用时间。什么更重要?

Ent*_*ode 12 performance sql-server performance-tuning

在性能调优时,更重要的是:

  • CPU时间或经过的时间?
  • 是否存在其中一个比另一个更重要的场景?

一个例子:虽然性能调整 CPU 时间将减少~38%,但 Elapsed Time增加~22%。这是一种改进吗?

Han*_*non 17

CPU 时间是进程占用的处理器时间量。这并不表示持续时间。“Elapsed Time”表示任务的总持续时间。如果给定任务使用 8 个并行度(即 8 个线程),并且每个线程在任务的整个持续时间内以 100% 的速率使用,则 CPU 时间可能为 8000 毫秒,而 Elapsed Time 仅为 1000 毫秒。

因此,较短的“经过时间”表示更快的响应时间。

如果您担心 CPU 压力,而不关心用户体验,您可能想要更短的 CPU 时间和更长的运行时间。

如果这会导致经过的时间减少,您可以接受更长的 CPU 时间,因为这可能表明用户等待的时间更少,但 CPU 利用率更高。

可以说,查询优化的更重要指标是等待时间


Lau*_*gil 6

...虽然性能调优 CPU 时间将减少 ~38%,但 Elapsed Time 增加 ~22%。这是一种改进吗?

这完全取决于您要优化的内容以及原因。在最常见的意义上 - 查询输出的速度 - 这并不是一种改进,正如 Max Vernon 在他的回答中指出的那样。

但是,如果您的系统受 CPU 限制,那么这是一个改进,因为您减少了 CPU 负载。事实上,如果是这种情况,最终结果也可能意味着更快地返回结果集。

如果您的系统受磁盘限制或内存限制,这将是一个中性结果,因为没有迹象表明它改进或降低了这些措施。

因此,在 95% 的情况下,Max 是绝对正确的——这不是改进。在剩下的少数情况下,它可能是一种改进。