执行计划异常变化分析处理过程
作为本际云服务器推荐网的小编小本本,今天为大家分享一次执行计划异常变化的分析处理过程。

问题分析及解决过程
开发人员反映,系统工单无法提交成功,双机业务程序报超时异常,请求DB侧确认数据库是否存在异常。进行以下分析和解决过程:
- 接入数据库等待事件无异常,程序账号会话信息无异常。
- 开发人员反馈后台一类(selectdistinctxxxx)sql执行时间异常,请求db侧进行优化。
- 根据提示找到其中一条sqlid,进一步分析==>这里直接说分析结果了,执行计划第七步走错了索引,原因是某张表的谓语列长度超过32个字符,使用了直方图统计信息,导致执行计划不是最优。
- 解决方法需要重新收集该表统计信息,删除列上统计信息,收集方法为:METHOD_OPT=>FORCOLUMNSSIZE1。
- 优化效果执行时间由之前的150s左右降为1s左右,应用程序重启后功能恢复正常了。
- 结合历史快照及sql信息,虽然执行次数少,但可以看到上午时间10点后就异常了,而其他时间的信息快照信息也没有抓到,进一步说明之前确实是正常的。查询某表的统计信息变更时间,上午时间段确实有变化。大致可以确定统计信息发生了变化,导致涉及某表的一批sql语句执行计划异常。至于是啥原因导致了统计信息有变更,这里不再阐述。
总结
这种执行次数少的语句,历史信息可能没有记录,导致出问题时,不能和历史的执行计划做对比,立即判断出执行计划有变化。要特别注意这种情况,通过分析和解决,能够快速的优化解决问题。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5944.html
