昨天,一个客户现场人员急急忙忙打电话找我,说需要帮忙调优系统,因为经常给他们干活,所以,也就没多说什么,先了解情况,据他们说,就是他们的系统最近才出现了明显的反应迟钝问题,他们的那个系统我很了解,软硬件不会有问题,主机是*小机,存储也是高端存储,高度怀疑他们的应用出了问题。问他们是整个系统慢还是某个模块慢,他们也说不清楚,说这事儿前后有一个多月了,开始没这么严重,我们查了半天也没找出问题,我们的dba们也一直在看,都没找到具体原因,最近我们的客户有点怒了,说根本就快不能用了,亚历山大。。。到此为止,这没法继续沟通下去了,还是自己动手,丰衣足食吧。
让他们帮忙下了典型时段的awr先看看再说,发过来后,搂了一眼,大体明白了,接着,向他们了解了相关的数据环境。
给出了方案,发了邮件。无非就是把一个过程重新改了下,认真检查了语义和逻辑,没问题,然后,他们认真核对了语义、逻辑和结果,也没问题。另外一项就是建一个索引,确认没问题后,把方案发了出去。后来各方沟通好了,最后确定,决定晚上负载低时实施方案,我负责晚上远程保障,方案实施后,他们那边说是好了很多,因为不是典型负载,和他们观察了一段时间,确认各项指标都正常后,早点休息了。
上午一上班,现场客户早早的发来了消息,说:系统反应非常快,索引有关的模块,性能提升了一千倍以上,他们的客户非常满意和高兴,他们当然更高兴。也搞不清楚他们怎么测的,精确不精确,反正解决了就好,不管了,接下来,看点资料。
让我没想到的是,他们的客户居然还抄来了一封邮件,说:硬件没升级扩容的情况下,性能居然能提升一千倍,这经验也太值得推广了。
看完邮件,回了邮件,对客户的重视和反馈表示感谢。有点感动,毕竟中间还隔着一层客户。
虽然本人觉得这次解决问题实在是太简单,简单到不好意思写,其实每次也是这种感觉,觉得没什么可写的。但毕竟这是博客,还是写下大体思路,希望对广大同行有所帮助
1、过程是个自动维护数据的过程,因为数据量较大,单表大小达到了几个T,可能出于性能的考虑,过程的作者用了循环多次对表操作。该场景太常见了,我解决的这种编程问题至少不下10次,而且,目前为止,这种编程思想似乎还在蔓延。
2、加索引,由于该表最近数据量变大很多,之前索引问题没暴露出来,现在出现了。该表索引列选择性非常好,近乎唯一。
其实,数据量是性能问题的前提,没数据,无论怎么写SQL,也不会出性能问题,数据量上来了,性能问题就出现了,很多客户性能问题都有这么个过程。
很小的两个改动,分析解决时间前后算起来不过半小时,居然能给客户解决问题,客户还给了这么正面的反馈,看来自己的工作还是很值得的。从另一个方面来说,客户并不是有些人说的怎么挑剔和难伺候,经验说明,客户还是很讲道理、容易打交道和容易满足的。如果说客户不满意,我们服务方更应该从自己的服务上多找找原因。
此外,看来国内数据库行业的应用水平,确实还有待于提高,客户能用到我们,说明我们还有价值和市场。
继续加油!!!