业务系统优化

                            简单系统优化 

项目描述:公司oms业务系统运行过程中突然出现cpu爆满异常,导致业务无法正常访问。业务部门要求马上解决此问题,恢复生产,并同时反馈最近部分业务访问十分缓慢,要求可以针对某些特定业务做优化调整,提高业务人员的工作效率。
责任描述:查看dbtime发现超过1500,生成AWR报告发现,sql软解析比值,buffer cache 命中率以及sql重用率非常低,既然是cpu耗费较大,判断问题原因可能是硬解析或者是逻辑读过高,查看CURSOR_SHARING参数,发现此参数设置为SIMILAR,判断此处为cpu异常的根因,因为SIMILAR参数已经是oracle废弃参数,不推荐使用,查看逻辑读,没有发现异常,综合考虑,问题应该就在硬解析上了,找到原因后对数据库做了以下调整,
1、将参数改成FORCE,让共享池强制使用游标,减少硬解析几率。
2、增加了共享池大小,增加软解析命中率。
3、增加会话游标缓存数的数量,增加sql重用率。
重启数据库和业务系统,当并发上来之后,cpu稳定保持在10%以下,至此,cpu异常问题解决。接下来针对业务部门提出的部分业务访问缓慢问题进行分析。
发现如下问题:
1、sql解析时间过长,发现开发人员所编写大部分sql未进行任何优化,仅仅只是达到业务需求。
2、主流程表出现大量行迁移。
3、索引规划错误,需要常用查询条件没有建立相应索引,出现大量全表扫描。
4、联系开发部门,发现程序包含大量循环更新,拉长了执行时间。
考虑到系统为核心系统,首先,我对数据库层做了如下调整。
1、对主流程表进行重构,将出现行迁移的数据导入中间表,删除迁移行,重新将数据导入原表,消除行迁移,重建索引。
2、根据sql执行计划,在频繁出现的查询列,及条件列根据不同情况建立不同类型的索引。
3、根据sql,将部分无意义索引进行清除。
4、和开发部门相关人员对程序进行改写,将大量循环查询和更新尽量放在一起操作。
5、重新收集统计信息。
6、对索引进行监控一个周期,删除完全不会使用的索引。
最终结果:业务部门所提出的部分流程,访问效率有显著提升,从之前的40秒压缩到现在2秒,cpu稳定运行,整体速率得到提升。

转载于:https://www.cnblogs.com/jiaowenhao/p/7510014.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值