一、准备工作


缓存对于某个查询的性能影响十分之大,所以优化之前要清空缓存。

清除Buffer Pool里面的所有缓存

DBCC DROPCLEANBUFFERS

清除Buffer Pool里的所有缓存的执行计划,已经预编译的内容,在此处将被清空

DBCC FREEPROCCACHE

二、SET STATISTICS TIME ON/OFF开关


这个开关能输出SQL语句各阶段所消耗的时间

返回值说明:
CPU Time,SQL Server所花的纯CPU时间是多少,也就是说语句花了多少CPU资源
elapsed Time,语句运行的时间长短,有些动作会发生I/O操作、产生了I/O等待,或者是遇到阻塞、产生阻塞的等待,总之时间用掉了,但是没有用CPU资源,所以Elapsed Time比CPU Time长是很正常的。但是CPU Time是语句在所有CPU上的时间总和,如果语句使用了多颗CPU,而其他等待几乎没有,那么CPU Time大于Elapsed Time也是正常的。
SQL Server parse and compile time,语句的编译时间
SQL Server Execution Times,语句真正运行的时间

效果如下:

三、SET STATISTICS IO ON/OFF开关


这个开关能够输出语句做的物理读和逻辑读的数,这个开关对SQL Server执行计划的性能调优非常重要。一般逻辑读次数(logical reads)越小越好。

返回值说明:
scan count:执行的扫描次数。按照执行计划,表格被Scan了几次。一般来讲大表Scan的次数越多越不好,唯一的例外是如果执行计划选择了并发运行,由多个Thread同时做一个表的读取,每个Thread读其中的一部分,但是这里会显示所有Thread的数目。也就是有几个Thread在并发做,就会有几个Scan。这时数目大一点没问题。
logical reads:从数据缓存读取的页数。页数越多,说明查询要访问的数据量就越大,内存消耗量越大,查询也就越昂贵。可以检查是否应该调整索引,减少扫描的次数,缩小扫描范围。
physical reads:从磁盘读取的页数。
read-ahead reads:为进行查询而预读入缓存的页数。
physical reads + read ahead reads就是SQL Server为了完成这句查询而从磁盘上读取的页数。如果不为0,说明数据没有缓存在内存里,运行速度一定会受到影响。
lob logical reads:从数据缓存读取的Text、Ntext、Image或大值类型(Varchar(max)、Nvarchar(max)、Varbinary(max))页的数目。
lob physical reads:从磁盘读取的Text、Ntext、Image或大值类型页的数目。
lob read-ahead reads:为进行查询而放入缓存的Text、Ntext、Image或大值类型页的数目。

效果如下:

四、SET STATISTICS PROFILE ON/OFF开关


这个开关能返回语句的执行计划,以及语句运行在每一步的实际返回行数

Rows:执行计划的每一步返回的实际行数。
Executes:执行计划的每一步被运行了多少次。
StmtText:执行计划的具体内容。执行计划以一棵树的形式显示。每一行,都是运行的一步,都会有结果集返回,也都会有自己的cost。
EstimateRows:SQL Server根据表格上的统计信息,预估的每一步的返回行数。在分析执行计划时,我们会经常将Rows和EstimateRows这两列做对比,先确认SQL Server预估得是否准确。
EstimateIO:SQL Server根据EstimateRows和统计信息里记录的字段长度,预估的每一步会产生的I/O cost。
EstimateCPU:SQL Server根据EstimateRows和统计信息里记录的字段长度,以及要做的事情的复杂度,预估的每一步会产生的CPU cost。
TotalSubtreeCost:SQL Server根据EstimateIO和EstimateCPU通过某种计算公式,计算出的每一步执行计划子树cost(包括这一步自己的cost和它的所有下层步骤的cost总和)。
Warnings:SQL Server在运行每一步时遇到的警告,例如,某一步没有统计信息支持cost预估等。
Parallel:执行计划的这一步是不是使用了并行的执行计划。

效果如下:

原文链接

最新文章

  1. jQuery进阶
  2. PL/SQL Developer 和 instantclient客户端安装配置(图文)
  3. C语言中的 extern 关键字
  4. Cocos2dx 把 glview 渲染到 Qt 控件上(Mac 环境)
  5. 【转】实战 SSH 端口转发
  6. java生成随机大数据文件
  7. 给Java新手的一些建议----Java知识点归纳(Java基础部分)
  8. [Everyday Mathematics]20150108
  9. hdu2222之AC自动机入门
  10. Angular报错记录
  11. 201521123040《Java程序设计》第5周学习总结
  12. Linux定时执行PHP
  13. Git clone出现SSL certificate problem
  14. scrapy 爬取豆瓣互联网图书
  15. bzoj-1787-洛谷-4281(LCA板子题)
  16. 题解 P4512 【【模板】多项式除法】
  17. 判断闰年的Java算法
  18. mongodb权限
  19. 面对对象程序设计_task2_1001.A+B Format (20)
  20. 格式工厂将图片变小,有500kb变为16kb

热门文章

  1. Spring框架快速入门
  2. 性能测试-MySQL性能查看(转)
  3. 堆叠降噪自编码器SDAE
  4. Linux shell awk数组使用
  5. Linux学习之路-基础入门 20191104
  6. MarkDown中如何加入上标和下标
  7. 第10节-BLE协议链路层(LL)
  8. 201800624模拟赛T2——回家路上
  9. Pressure on CTRM/ETRM systems to find arbitrage
  10. Spring Cloud微服务安全实战_2-1_开发环境