百倍性能的PL/SQL优化案例(r11笔记第13天)

作者: admin 分类: 公众号存档            4 次浏览 发布时间: 2016-12-15 23:42

公众号:杨建荣的学习笔记 · 作者:杨建荣 · 发布:2016-12-15 23:42:39 · 原文链接

我相信你是被百倍性能的字样吸引了,不过我所想侧重的是优化的思路,这个比优化技巧更重要,而结果嘛,其实我不希望说成是百倍提升,“”自黑“”一下。

    有一个真实想法和大家讨论一下,就是一条SQL语句如果原本运行20秒,优化到了1秒,性能提升该说是20倍还是提高了95%。当然还见过一种说法,一条SQL语句每次运行20秒,每天运行100次,优化后每次运行1秒,运行还是100次,那么性能提升是说成优化累计时间为100*20-100=1990秒?

好了,我们来看看PL/SQL的优化,前期自己分析了一些信息,可以参考闪回区报警引发的性能问题分析(r11笔记第11天)

总体来说就是数据库层面的闪回区暴增,很快就接近报警阈值。

发现其中的一个重要因素就是一个update操作时间极长,大概是4个小时,而且资源消耗巨大。

SQL_FULLTEXT
----------------------------------------------------------------------------------------------------
UPDATE CARDINFO A SET A.MAX_LEVEL = NVL((SELECT USER_CLASS FROM ROLE_CLASS_INFO B WHERE A.GROUPID =
B.GROUP_ID AND B.CN_GUID = A.ROLE_GUID), A.MAX_LEVEL) WHERE DRAWED = 'Y'而经过数据分析发现这是一个规律性的变化,是在每周二会触发一次。经过确认这是一个scheduler JOB运行导致。而其中的关键就是调用的存储过程。

好了,重点就是存储过程,当然里面的逻辑还是有一些复杂。我简化一下。

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注