博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
性能调优:理解Set Statistics Time输出
阅读量:6812 次
发布时间:2019-06-26

本文共 1347 字,大约阅读时间需要 4 分钟。

我们用一个例子来开始。

1 USE AdventureWorks2008r2 2 GO 3             DBCC dropcleanbuffers 4             DBCC freeproccache 5  6 GO 7 SET STATISTICS TIME ON 8 GO 9 SELECT * 10     FROM Sales.SalesOrderHeader SOH INNER JOIN  Sales.SalesOrderDetail SOD ON11             SOH.SalesOrderID=SOD.SalesOrderID 12     WHERE ProductID BETWEEN 700 13         AND 80014 GO15 SELECT * 16     FROM Sales.SalesOrderHeader SOH INNER JOIN  Sales.SalesOrderDetail SOD ON17             SOH.SalesOrderID=SOD.SalesOrderID 18     WHERE ProductID BETWEEN 700 19         AND 800

在例子里有2个SELECT语句。第1个在清空缓存后执行。我们来看看输出。

SQL Server 分析和编译时间:

当我们提交了一个查询给SQL Server去执行时,它需要为任何语法错误进行分析并编译,然后优化器生成最优计划去执行。SQL Server分析和编译时间指的是完成进行这些预执行步骤所花的时间。我们来看第2个执行的输出,在SQL Server分析和编译时间环节,CPU时间是0毫秒,占用时间是21毫秒。这表示SQL Server没有花任何时间在分析和编译上,因为执行计划已经在缓存里。CPU时间值的花在CPU上的时间,占用时间指的是完成分析和编译所占用的总时间。CPU时间和占用时间两者之间的区别可能是在CPU周期队列里的等待,或者在等待IO操作完成。这些时间在性能调优里并不重要,因为每次执行都会不一样。如果你在这个环节看到的时间基本是一致的,很可能你在使用重编译选项运行存储过程。

SQL Server 执行时间:

这个指的是SQL Server完成执行编译好计划的时间。CPU时间指的是花在CPU上的实际时间,占用时间指的是包括信号等待时间(signal wait time)在内的完成执行的总时间,等待时间是完成IO操作和输出结果传送给客户端的时间。CPU时间可以作为性能调优的基线。这个值多次执行后不会有太大改变,除非你修改查询或数据有变动。在服务器上的负载不会影响这个值。请注意这里显示的时间单位都是毫秒。对于同个数据的同个查询CPU时间值在反复执行后可能会不同,但也是1/100秒内。占用时间就取决于很多因素了,例如服务器工作量,IO加载,服务器与客户端之间的网络带宽。因此在性能调优时,我们可以把CPU时间作为基线。 

本文转自Woodytu博客园博客,原文链接:http://www.cnblogs.com/woodytu/p/4536800.html,如需转载请自行联系原作者

你可能感兴趣的文章
腾讯抄你肿么办 ?
查看>>
java多线程的Fork/Join
查看>>
Java SE7新特性之try-with-resources语句
查看>>
利用ADOX修改ACCESS表字段名(VC/MFC)
查看>>
ftp 服务器的配置
查看>>
JavaScript的浏览器兼容性问题小结。
查看>>
Oracle Hint的用法
查看>>
Postfix邮件系统
查看>>
《编写可读代码的艺术》读书文摘--第一部分 表面层次的改进
查看>>
使用Nodejs创建基本的网站 Microblog--《Node.js开发指南》 3
查看>>
网管工作是否值得做下去?
查看>>
神行者PD10-adb push逃脱ro权限
查看>>
Oracle PL/SQL 学习笔记
查看>>
JPA(四)之实体关系一对一
查看>>
如何使用羊驼自动生成缩略图的功能。
查看>>
定制化Azure站点Java运行环境(1)
查看>>
inotify用法简介及结合rsync实现主机间的文件实时同步
查看>>
Docker学习笔记之存储篇
查看>>
Python 获取CentOS7的内存使用率并写入mysql
查看>>
IIS:错误处理
查看>>