设为首页 收藏本站
查看: 938|回复: 0

[经验分享] SQL性能优化前期准备-清除缓存、开启IO统计

[复制链接]

尚未签到

发表于 2017-7-14 13:25:12 | 显示全部楼层 |阅读模式
  如果需要进行SQl Server下的SQL性能优化,需要准备以下内容:
  一、SQL查询分析器设置:
  1、开启实际执行计划跟踪。
DSC0000.png

  2、每次执行需优化SQL前,带上清除缓存的设置SQL。
  平常在进行SQL Server性能优化时,为了确保真实还原性能问题,我们需要关闭SQL Server自身的执行计划及缓存。可以通过以下设置清除缓存。



1 DBCC DROPCLEANBUFFERS  --清除缓冲区
2 DBCC FREEPROCCACHE  --删除计划高速缓存中的元素
  3、开启查询IO读取统计、查询时间统计。



SET STATISTICS TIME ON --执行时间
SET STATISTICS IO ON --IO读取
  
开启设置后,执行SQL效果如下:
DSC0001.png

DSC0002.png

DSC0003.png

  针对其中的每个图标节点,鼠标滑上去的时候,可以看到具体的执行信息。如下图:
DSC0004.png

  可以通过查看谓词、对象、输出列表,分析问题点或者创建优化索引等。
  当然你也可以换一种查看方式,点击右键选择显示执行计划XML。
  还有一点特别说明的是:当你SQL很长逻辑关系很复杂的时候,执行计划会是一个很大的网状关系图,你会发现在右下角有一个加号的按钮,点击后一个缩略图。通过缩略图你可以很方便的定位执行节点,用起来还比较好用。
  二、针对SQL Server Profile,SQL查询跟踪器进行分析。
  1、打开方式:SQL Server查询分析器->工具,SQL Profile。打开方式截图:
DSC0005.png

  2、连接&特殊设置:
  打开后界面如下图:
DSC0006.png

  设置正确连接信息后,点击连接,弹出如下界面。按照图中操作步骤进行设置。
DSC0007.png

  其中DatabaseId、HostName可以在查询分析器中进行查询,脚本如下:



1 SELECT DB_ID()
2 SELECT DB_NAME()
3 SELECT HOST_ID()
4 SELECT HOST_NAME()
  实际上HostName就是你的本机计算机名。
  最终设置完之后点击运行。正常跟踪的效果如图:
DSC0008.png

  重点关注其中的Duration、Writes、Reads、CPU,分析对象是TextData,及执行的语句。其中Duration为毫秒数,1000即为1秒。
  ——————————————————————————————————————————
  应用总结&建议
  上面应用配合方式是:
  1、先通过SQL查询跟踪器,跟踪出你所以执行的SQL,然后定位其中Duration比较的SQL 或者超过性能标准的SQl(比如页面访问3s、5s、8s)、报表30s等。
  2、将问题SQL在查询分析器中进行分析,主要通过执行计划及IO统计定位耗时占比高及IO读取大的地方,然后逐步的调整SQL逻辑关系(比如添加业务条件过滤缩小集合,建立索引、调整like匹配等),优化后再重新进行跟踪看看是否有效果,最终达到SQL的优化目的。
  写到这里,基本上我常用的SQL性能优化的方式就已经讲完了,希望给大家能提供帮助。
  绝对干活,转载请注明出处。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393745-1-1.html 上篇帖子: SQL Server附加数据库问题 下篇帖子: MySql 执行语句错误 Err] 1064
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表