@PostConstruct使用不当带来的生产启动问题

        需求:该表记录的是双方交互发生的报文详情,一般用于追溯问题。因此,需求是保存60天的数据即可,即:在项目启动时执行删除该表60天前的数据。更好的方式是以自动任务的方式配置在每天的晚上十点执行,不影响项目的启动。

        以下代码是使用@PostConstruct在项目启动时执行删除该表数据的操作,存在一些问题:

该表数据很大,且条件字段没有添加索引。直接执行删除操作,占用大量文件空间资源,轻则启动耗时很长(本次上线启动耗时超过20分钟),重则资源耗尽导致重启失败。由于投产过程十分严格,不让手动使用数据库连接工具执行删除表数据操作,也不让修改投产的代码,除非紧急走邮件审批,所以非常麻烦,差点要回滚原来备份程序,重新投产。因此更换jar包后能否正常重启也是投产是否成功的标志之一,向这种重启耗时过久的现象实在是捏了一把大汗。需要优化这段代码

改进后(使用多线程方式)

 

        可以在 cleanInterfacePaymentHistory方法中模拟耗时操作,验证睡眠时间内,服务是否启动成功,还是说等待睡眠时间过后才启动成功

        优化点2:还需要在INTERFACE_PAYMENT_HISTORY为字段REQ_DATETIME添加索引

CREATE INDEX IDX_REQ_DATETIME ON CUSTOMER.INTERFACE_PAYMENT_HISTORY (REQ_DATETIME);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值