解决阻塞
解决语句间的阻塞,这需要分析语句的阻塞链,到底语句被什么样的操作阻塞了,为什么会阻塞?
很多新手经常问的问题:为什么我有的时候查很快有的时候查就很慢? 答:大多数情况就是你的语句被阻塞了。
优化TempDB
针对TempDB调优,减少TempDB资源争用导致的压力。本例中可以死看到有TempDB的争用等待,所以对TempDB的优化也是必要的。
优化日志碎片
针对日志增大,带来的日志碎片问题进行优化。
清除索引碎片检查系统的索引维护情况,并针对碎片过大的表进行碎片清除操作。主要体现在系统中有老化的索引,索引的老化导致索引的性能不高或失效。
一阶段预期效果
一阶段的优化是对性能的整体提升,性能提升也会很明显,针对不同系统提升一般在2-3倍。
步骤二 处理热点问题处理热点问题主要是在阶段一的基本优化后针对重点的语句进行调优,可能包含创建索引,修改写法,查询提示,计划向导等等。
在语句调优中请主要关注:是否有缺失索引,是否存在隐式转换,语句的执行时间、CPU、逻辑读写量、物理读写量、占用TempDB空间等信息。
例:这样一条语句经过第一阶段的优化并没有太大的提升,而且资源消耗依然很大,那么我们可以针对这条语句进行详细的二阶段优化。
简单的优化一下
只是简单的改了下语句的写法时间有7秒变成1秒,内存消耗从300+MB 变成 1MB
二阶段预期效果
阶段二的优化属于细致的优化步骤,要针对更为具体的语句、具体的情况。经过本阶段优化可以使系统中大部分语句从写法、配置、运行指标都趋于优化值。
步骤三 针对业务
这个步骤需要配合开发人员,到底哪些功能依然慢?执行了哪些语句?是领导用的功能?还是一般可以慢的功能?如果大领导用的功能,那可能你就需要多花些心思了。这部分这里就不展开说了。
三阶段预期效果
第三阶段属于最细致的阶段,可以结合业务真正点对点的消灭系统中存在问题。
导图针对性能优化奉上几个图希望能帮助数据库从业者梳理一下优化的思路(个人思路仅供参考,不完善的地方也请见谅)
CPU:
内存:
磁盘:
等待: