图表分析系统调优全面性的必要(r6笔记第80天)
公众号:杨建荣的学习笔记 · 作者:杨建荣 · 发布:2015-10-06 20:56:23 · 原文链接
继昨天对系统进行了初步的调优后,效果还是比较显著,DB time从500%降到了100%以内,当然过程还是充满艰辛,期间也是各种工具和分析语句斟酌了再三。
今天也没有收到任何报警,所以感觉问题似乎已经彻底解决了。在下午的时候查看了一下,发现在凌晨的时候有一个大的抖动,然后DB time基本持续在300%~400%左右。比预期的要高很多。

这个时候的第一感觉就是是不是调优出问题了,性能还是不够稳定啊,带着疑问查看了今天的数据归档情况,发现在这段时间内的数据归档频率还是很高的。在短短几个小时之内就会切换十多次。这个频率还是很高的。是不是因为调优导致的这种隐患呢。

带着疑问查看了近一个月以来的数据归档情况,发现还是带有一定的规律性的,按照这个规律今天是刚好碰到高峰期了。所以可以排除调优带来的隐患,而且我的改动也是针对几个具体的sql还没有做大动作。

那么调优之后系统的DB time提高了,那么逻辑读之类的指标是不是也有一定的浮动呢,答案是有,但是浮动很小,和原来相比简直可以忽略不计。可以看到右边的部分是调优之后的逻辑读变化,浮动还是很小的。

那么DB time突然提高的原因是什么呢,结果发现在数据库中有另外几个sql语句在做大批量的update,看来是一个例行维护的任务,因为涉及的表都很大,数据量都在亿级以上,都是些批量操作。
而且还有一个sql会基于db link从另外一个库去查取大量的数据,这个部分从设计上来说,确实依赖性耦合性较高,因为批量任务,不要求实时,所以可以考虑通过物化视图等来代替,通过增量刷新来得到过滤后的数据。这个部分因为改动部分较大,可能需要后期和开发商量一下改动方案。
下面的图形是通过zabbix得到的网卡的繁忙程度。可以看到在问题发生的时间段内还是有大量的数据通信。

但是经过分析还是有几条语句可以做在线调优的,还是结合sqlmonitor和sqlprofile来做,效率还是不错的。可以看到在短时间内DB time就会降下去。
