场景:财务类项目,余额视图较慢
需求:拿到自己系统业务信息与其他系统业务及余额信息对比
实现:使用java直接切换数据源,获取对方数据后插入自己临时表,使用sql查询数据并展示对比结果
问题:对方数据量不大,没问题。己方余额视图速度较慢较复杂,占用临时表空间过大,且java程序中excel导出时使用了poi封装的importExcelForBigDate方法,此方法要求直接放入sql,导致前面临时表无法释放,临时表空间被占满,最终影响部分程序执行。
解决方式
第一次优化:将余额视图数据插入临时表后再查询。由于数据量并不大,切换导出方式为小数据量导出,并且在调用导出方法之前提交事务,释放临时表空间。
第一次优化后速度快了,但是依然没有解决问题,毕竟余额视图进临时表的速度还是慢。
第二次优化:先查账户表,查完账户表拿着账户id去查余额视图,插入临时表做后续处理,基本解决,仍在尝试。