2014-10-01 54 views
4

on http://technet.microsoft.com/en-us/library/aa173882(v=sql.80).aspx 我在读取该CPU为“事件使用的CPU时间量(以毫秒为单位)”。 并且持续时间是“事件占用的时间量(以毫秒为单位)”。 因此,我正在解决一个查询使用2650ms的CPU,但只运行773ms持续时间,这些数字不应该有点接近?查询如何使用比整个事件持续时间更多的cpu时间? 谢谢SQL Server Profiler中的CPU与持续时间

+0

您需要了解操作系统如何工作,为不同进程提供时间片。这是一个开始的地方:http://en.wikipedia.org/wiki/Preemption_(computing)#Time_slice。注意:在多处理器环境(或超线程环境)中,您需要考虑处理器/线程的数量。 – 2014-10-01 19:13:41

+0

检查执行计划。看起来你有一个并行查询,这可以解释为什么CPU时间比持续时间更长。 – 2014-10-01 19:16:04

回答

5

最可能发生的事情是,您的SQL服务器正在将您的SELECT语句拆分为在多核CPU上的多个线程上运行。根据返回的时间来判断,我想冒险猜测你的服务器中有一个四核CPU。例如:如果CPU1,Cpu2和CPU3全部耗时750毫秒,CPU4耗时400毫秒,那么总共需要2650毫秒,但总时长仅为750毫秒。

+0

感谢您的解释;它总是感觉我不知道为什么我以前从未想到过。 – Don 2014-10-16 14:36:08