翻手为云覆手雨,天地由我一手掌。逍遥不认仙与魔,总归由我性张扬。

ORACLE存储过程调优日记

上一篇 / 下一篇  2009-02-08 13:24:25 / 个人分类:优化技术

:u#g*S t*UP0                                         ORACLE存储过程调优日记51Testing软件测试网s#a?7x0hrs8R

0811月份被公司派去客户方配合客户方做性能测试,结果被客户领导派去做存储过程调优,这对于没有写过存储过程的我来说是一个十分巨大的挑战,更何况是看别人写的存储过程并进行调优对我来说是难上加难了,但是没办法领导分配下来的任务不完成是不行的。

|-s!rP,F/z3S0

赶鸭子上架硬上了,一开始分配的第一个存储过程作业优化任务就把我看傻了,一个村粗过程里面嵌套了103INSERT操作语法而且根据业务规则的需求还要在继续增加,而在生产线上没执行一条业务规则的INSERT语法就要一分多种,一百来条INSERT就要一百多分钟,在加上存储过程本身执行语法消耗需要的时间整个存储过程执行完成一次作业至少需要120分钟,按领导的要求是要优化为执行完该作业值需要<=20分钟,单单一个INSERT语法就有一百来行SQL代码看都傻了更何况去优化它,一开始优化时我只是对单个SQL语法去优化但是发现这样符合事实因为这是已经上生产线了不可能对每个SQL去调优一百多条SQL一条一条的去调优消耗的时间太长了而且业务规则在变化说不定语法还会在新增在更新,因此第一种想法被排除了时间消耗了两天了,接下来对每个SQL语法去检查查看他们的共性然后并列优化创建临时表等方法结果发现还是不行因为碰到的问题跟优化方法一一样不是最优的优化方法,想了两天查看了很多资料还是没办法解决,时间一天一天的过了领导说我是第一次接触优化存储过程值给我分配两个存储过程作业结果都过了四天了还是没进展一个作业也没完成,那时那种压力困扰加上领导时不时的问优化进度怎么样,嗨,那时感受一言难尽。后来实在没办法如果没完成及时反馈问题给领导,害的不是自己是生产线系统性能问题,只好硬着头皮跟领导反映情况了,领导知道了我的问题情况后,蜻蜓点水的帮我说破了怎么优化,让我豁然开朗,通过并行方式终于把存储过程优化好了而且执行该存储过程所用的时间<=15分钟,接下来的各种存储过程的优化也慢慢的适应怎么优化了领导分配的任务也可以提前完成任务了,用了三周了的时间给客户优化了两个项目的存储过程,也得到客户方的认可发邮件表示感谢与支持,其实优化也是一门很好的艺术,同样也感谢领导还有一起优化的同事的支持与帮助,其实优化还是开发或者测试主要的还是沟通,知道业务的处理方式就可以优化一大部分的问题了不要盲目的拿到项目就开始优化,

$?w-x9R^;h_0

我在做几个项目存储过程中碰到的优化技术只是用到优化学问中的冰山一小小角,只是初步接触还希望以后多多接触因为发现当在优化时对一个存储过程的问题定位然后对问题的优化是一个有趣的事情,看到自己优化后的成果那种心情时跟喝了蜜一样的甜。

,A#J,wo7] gKxf j [0

本人碰到的优化时间短接触项目少因此用的也少主要是:加索引,分区,修改查询方式,使用分析函数、对WHERE语句的优化、避免无效操作,减少重复查询、使用并行、做批量处理、一次获取多次使用、排序方式优化,游标的使用,物化视图等等51Testing软件测试网_r b)O"\jN3@0^M

1a'VG-O S J5_K&J,C0 

%dn9vn Y0

TAG: 优化技术

 

评分:0

我来说两句

Open Toolbar