【问题标题】:CPU vs. Duration in SQL Server ProfilerSQL Server Profiler 中的 CPU 与持续时间
【发布时间】:2014-10-01 19:08:47
【问题描述】:

this 文章中,我正在阅读:

Data column Column Number Description
Duration 13 Amount of time (in milliseconds) taken by the event.
CPU 18 Amount of CPU time (in milliseconds) used by the event.

我正在对正在使用的查询进行故障排除

  • CPU: 2,650 ms
  • 持续时间: 733 ms

这些数字不应该更接近一些吗?查询如何使用比整个事件持续时间更多的 CPU 时间?

谢谢

【问题讨论】:

  • 您需要了解操作系统的工作原理,即为不同进程提供时间片。这是一个开始的地方:en.wikipedia.org/wiki/Preemption_(computing)#Time_slice。注意:在多处理器环境(或超线程环境)中,您需要考虑处理器/线程的数量。
  • 检查执行计划。看起来你在那里有一个并行查询,这可以解释为什么 CPU 时间比持续时间长。

标签: sql cpu profiler trace duration


【解决方案1】:

最有可能发生的情况是您的 SQL 服务器将您的 SELECT 语句拆分为在多核 CPU 上的多个线程上运行。从返回的时间来看,我敢猜测您的服务器中有一个四核 CPU。

例如:如果 CPU1、Cpu2 和 CPU3 都需要 750 毫秒,而 CPU4 需要 400 毫秒,那么您的总时间为 2650 毫秒,但总持续时间仅为 750 毫秒。

【讨论】:

  • 感谢您的解释;完全有道理,我不知道为什么我以前从未想过。
猜你喜欢
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多