加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网_ASP源码网 (https://www.1asp.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

快被系统性能逼疯了?你需要这份性能优化策略

发布时间:2019-01-22 01:08:01 所属栏目:建站 来源:dbaplus社群
导读:副标题#e# 作者介绍 刘迪伟,就职于世界五百强银行。负责公司网银业务系统的设计和交付,擅长并持续关注Java性能优化、DevOps等领域。 XX银行网银系统是一套全新的对公业务渠道类系统,经过两年的建设,将逐步对外提供服务。 该系统融合了原来多个对公渠道

通过DB2数据库快照查看执行时间长的SQL,查看该SQL执行计划,在cost比较高的SQL上增加合适索引。要求所有大表SQL执行计划的cost低于100,超过100的SQL要评审。对于排序溢出、可参考数据中心规范设置排序堆大小,规范中排序堆设置为AUTOMATIC。

  • 制定数据库表清理策略。根据数据的生命周期要求,对流水类的数据定期进行清理备份,不再长期保留。定期对全库的表结构进行reorg、runstats操作,以提高索引效率。

  • 排查方法:

    • 获得数据库快照:db2 get snapshot for all on corpdb >gswyzfzzshpl1207.log

    • 从快照中提取慢SQL,Toad查看SQL执行计划

    • Db2命令方式查看SQL执行计划:db2expln -d corpdb -t -g -q "SQL语句"

    • 执行计划查看方法:自上而下查看cost最大的分支,找到未走索引或索引使用不当的表

    2、数据库出现死锁

    问题现象:数据库快照检测到存在数据库死锁,或通过db2evmon -db corpdb -evm DB2DETAILDEADLOCK>dlock.txt生成死锁监控文件,快照或监控文件中存在deadlock的情况。

    问题原因:全表扫描、大事务、更新相同表记录的SQL执行顺序交叉等。

    解决方法:缩短事务路径长度,避免全表扫描。如果必须存在大事务,则更新相同表的SQL执行顺序一致,并且坚决避免全表扫描。网银系统指令发送功能全表扫描+全局大事务,导致数据库死锁。

    排查方法:根据死锁监控文件dlock.txt找到导致死锁的SQL,以及该SQL持有的锁,分析该SQL可能存在的问题。

    3、线程阻塞在日志记录上

    问题现象:系统响应时间长、通过javacore查看很多线程阻塞在打印日志上。

    问题原因:log4j1.x版本较低,性能较差;大报文日志多次输出。

    解决方法:

    • 减少无效日志、删除无用日志,减少大日志输出。

    • (编辑:安卓应用网_ASP源码网)

      【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读