在实际生产环境中,很多时候都需要对核心系统的性能进行优化,特别是影响业务性能的潜在隐患,如何完成性能成倍提升这一艰巨任务?实战案例马上奉送:
1.背景
在海天起点配合下,工银瑞信信息科技部在2015年完成了系统高可用改造等项目建设,降低了生产系统单点隐患,保护了数据安全,最大程度上保证了业务的连续性,从总体上提高了信息科技部的运维水平。海天起点赢得了客户高度认可,也为新业务拓展奠定了基础。
2.运作
2015年底,工银瑞信针对业务发展导致核心系统数据快速增长,业务性能遭受威胁问题高度重视。我方非常关注,内部针对客户业务和技术方面进行了梳理。随后由我方发起了系统业务性能技术交流会。由客户业务方、开发方、运维方及我方资深专家共同参与讨论。
我方专家先从总体层面介绍Oracle性能优化流程和思想。重点针对生产批量、报表查询等业务场景从数据库整体调优、sql调优方面、历史数据方面等优化技术深入展开。期间有针对具体细节进行演绎取得预期效果。客户业务方表示希望先利用测试环境展示一下优化效果。
3.成果
我们迅速成立项目组,细致收集整理业务现状信息:
当前直销系统跑批作业需要运行四个小时以上,这个跑批时间影响到了开市的时间。系统经过硬件升级后,跑批作业时间提升到三个小时左右,但是效果并不明显。当前直销生产数据库使用的是Oracle 10.2.0.5 RAC架构,大部分业务在节点二运行,部分查询被分到了节点一上。当前数据库的优化器版本为9.2,优化器模式为RULE,绝大多数SQL都运行在此模式上,由于使用的是RULE+较低版本优化器,SQL可以选择的执行计划并不多。
随后我们分别从操作系统和数据层面分析,当前资源使用率较低,空闲较大。很多操作业务可以尝试并行执行提高效率。开始分解工作部分:索引优化方面、优化器、统计信息收集、TopSql优化。
A、索引优化方面:
索引创建时间接近工作跑批作业运行时间的1/3左右时间,优化空间较大。利用并行创建技术逐步优化。
B、优化器方面:
当前数据库的优化器版本为9.2, 优化器模式为RULE,绝大多数SQL都运行在此模式上,为了获得更好的SQL执行计划以及相关特性支持,由于该优化器模式更改对生产数据库影响较大,未经严格测试,不建议调整,因此优化仅针对跑批作业调整相关优化器参数,白天生产交易将保持原有优化器模式。
C、统计信息收集方面:
由于采用了ALL_ROWS的方式,统计信息对跑批作业SQL起着至关重要的作用。在2016年2月24日已经对ICBCCSDS用户下所有表进行了统计信息的收集工作。
D、TopSql优化
针对重点sql增加Hint方式满足运行批量作业需求
通过以上各方面的努力,在我方近一个月高效工作下取得可喜成果,直销系统跑批时间从原来近4小时成功缩短至不足2小时,并在正式环境上应用通过。