暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle全表扫紧急性能故障处理过程

神奇的DBA 2021-04-21
492


   晚上接到同事电话,正在上线的某应用系统出现性能瓶颈,经反馈某条频繁查询的SQL语句10秒以上才能反馈结果,用户体验感肯定是不能接受呗。

接到具体SQL语句后,简单分析一下,由于改程序时间窗口不够,只能先通过其它手段来临时处理一下。

具体SQL语句如下:

    

select *

  from xxx a

 where 1 = 1

   and a.startdate >= to_date('2020-08-01', 'yyyy-MM-dd')

   AND EXISTS (SELECT 1

          FROM yyy b

         WHERE b.policyno = a.policyno

           and b.insuredFlag = '1'

           and b.mobile = '88888888')


执行计划如下(请忽略我用windows画笔做的脱敏处理.....)
TABLE ACCESS FULL全表扫描耗费了大量的资源,检查两张表的结构,数据分布情况和索引后,决定一个组合索引应该可以临时解决。


CREATE INDEX user.INDEX_PIII ON user.yyy

(INSUREDFLAG, mobile)

LOGGING

TABLESPACE xxxx_IDX

PCTFREE    10

INITRANS   2

MAXTRANS   255

STORAGE    (

            INITIAL          21824K

            NEXT             1M

            MINEXTENTS       1

            MAXEXTENTS       UNLIMITED

            PCTINCREASE      0

            BUFFER_POOL      DEFAULT

           )

NOPARALLEL;



索引后的执行计划如下:(请再次忽略我用windows画笔做的脱敏处理.....)


至于提升了多少倍的查询效率,各位同学自己估算,大概就是100000/50这个样子吧。

        BTW,公司群里刚讨论了一下云计算+区块链+大数据(含超算技术)+自动化运维;未来几年会在这些方面发力。江湖中认识我的和不认识我的各位大神们,可以联系我,共同学习发展。

    

最后修改时间:2021-04-21 13:39:02
文章转载自神奇的DBA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论