SQL Server 探查器

Posted

技术标签:

【中文标题】SQL Server 探查器【英文标题】:SQL Server Profiler 【发布时间】:2011-08-29 19:18:48 【问题描述】:

当您使用 时 持续时间和 CPU 有什么区别? 我知道默认情况下两者都显示为 MilliSeconds 和 CPU 是运行查询所花费的 CPU 时间,而持续时间更像是查询返回任何数据所花费的时间。

根据我的理解,如果有任何阻塞等,您的 CPU 时间可能会更少,但持续时间可能会更长。

谁能提供更多见解?通过 BOL 进行争夺,但很难找到细微的差异。

【问题讨论】:

【参考方案1】:

CPU 时间表示所有 CPU 上的请求/语句(取决于您正在监视的事件)主动消耗(未挂起)的时间。对于单线程查询,这将始终小于或等于经过的时间(持续时间 = 挂钟时间)。但是对于并行查询,CPU 时间可能超过经过的时间,因为它会将多个 CPU 的 CPU 时间相加。

一般来说,已用时间和 CPU 时间之间的这种区别适用于 SQL Server 中的任何地方,从 SET STATISTICS TIME ON 输出到像 sys.dm_exec_query_stats(其中 CPU 时间称为 worker_time)或 sys.dm_exec_requests(又称为 cpu_time)这样的 DMV在这个 DMV 中)。

【讨论】:

【参考方案2】:

持续时间可以包括等待时间、I/O、数据传输时间等。CPU 只是 CPU 花费的时间。如果您的查询受 CPU 限制,它将比受 I/O 或内存限制的查询更接近。

【讨论】:

以上是关于SQL Server 探查器的主要内容,如果未能解决你的问题,请参考以下文章

是否有 PostgreSQL 等效的 SQL Server 探查器?

如何查看SQL Server2000执行过的SQL语句

python测试开发django-117.bootstrapTable结合Paginator分页器查显示表格

(转)SQLServer_十步优化SQL Server中的数据访问四

诊断SQL Server 2005中的死锁

SQL 探查器和调优顾问