【干货】语句优化思路与流程

  最近接到一个系统全面优化的工作,此系统从开发到运维到管理(服务器配置/架构/索引设计/日常维护)等等方面均非常优秀,在之前的一些文章中很少涉及深层次语句调优的方法和思路,那么今天补充一篇。

废话不多说 直接上思路步骤。

 

步骤一: 确定重点语句

  此部分详细说明,请参见:Expert 诊断优化系列-------------针对重点语句调索引

l  在SQL专家云[全面诊断] –[慢语句]-[汇总视图](默认页) 中找到执行次数多的语句

l  结合业务找出重点功能,针对性梳理调优

【干货】语句优化思路与流程

 

步骤二 : 重点语句调整思路(以下方法为递进方式)

注:以下思路适用于语句深度调优(已经规避低级设计或写法问题,具体内容请参见 :SQL SERVER全面优化-------写出好语句是习惯)

   

l  在复杂存储过程中找出慢的部分(如图:存储过程整体执行6秒,主要消耗在2个高消耗子语句)

【干货】语句优化思路与流程

 

l  观察语句基本运行情况是否索引缺失(针对重点语句调索引,请参见: Expert 诊断优化系列-------------针对重点语句调索引)

l  定位语句运行中的阻塞与等待

  在SQL专家云语句执行中观察所产生的等待,消除语句等待(此部分涉及的点较多,请参见 全面调优系列 SQL SERVER全面优化-------Expert for SQL Server 诊断系列)

 

【干货】语句优化思路与流程

 

l  定位高开销

n    Set statistics io on 定位高逻辑读部分

n    执行计划中高开销百分比

n    Hash join/merage join/nested join 表扫描/索引扫描次数

l  没有明显缺失索引或以添加索引后,详细分析执行计划

n    继续分析索引(消除key lookup,index/table spool 等)

n    分析查询计划尝试使用查询提示(option 并行/并行度/连接方式/连接顺序等)

l  分析语句复杂度及写法

n    尽量较少表关联数量(1.执行计划稳定性 2.预估数量准确性 3.嵌套导致的多次扫描)

n    视图/表值函数筛选条件应用(较少视图查询数据量)

n    降低视图复杂度(多层视图嵌套且涉及数量量大无法根据条件筛选),降低由于复杂度导致的视图内表多次嵌套(hash join/ nested join)扫描

考虑使用高成本多字段覆盖索引

 当语句复杂度高且受业务限制无法修改,则尝试使用多列覆盖索引来降低内层多次循环中的每次开销

l  降低数据量与读写分离

n  当语句复杂度高且受业务限制无法修改,可以考虑降低表数据量来减少每次扫描/嵌套开销等等

n  读写分离,报表类大查询降低语句阻塞影响,非核心类查询分离等

步骤三 :保证执行计划稳定性

当上述优化都进行以后,要确保运行运行稳定,包含如下因素:

l  统计信息

l  索引碎片

l  参数嗅探

l  执行计划重编译

l  2014以上版本的新参数估计

l  其他多种因素

步骤四 :复杂过程中其他部分调优

l  复杂过程的优化可能涉及集中情况

n    过程中大量时间和消耗集中在1-2条语句,则针对性调优

n    时间及消耗分布在多条语句,每条语句时间都不是很长,但整体步骤多,此时一般重点业务逐条优化,非重点业务优化循环类操作

n    非逐条分析,整体环境提升如参数配置、索引全面解析

注 :此部分根据自身业务情况而定,无法给出标准套路

 

另附几篇较好的优化思路文章,供大家参考:

数据库优化案例——————某市中心医院HIS系统

30分钟带你熟练性能优化的那点儿事儿(案例说明)

SQL SERVER全面优化-------Expert for SQL Server 诊断系列

 

--------------博客地址---------------------------------------------------------------------------

诊断优化系列 

 

-----------------------------------------------------------------------------------------------------

 

  总结 : 语句的调优方法很多,内容很复杂,涉及到的点也很多,无法全部涉及,本文也许只是提供一个简单的思路供大家参考。

      各有各的套路和方法,不喜勿喷!

      优化无止境,且行且珍惜!

-----------------------------------------------------------------------------------------------------

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyxyg.html