事务超时

在面临定时任务中大量数据同步导致的事务超时问题时,通过将查询和插入操作拆分为两个方法并设置新的事务边界,成功避免了事务超时。在处理过程中遇到了部分插入失败、开发环境与测试环境差异以及事务只读状态错误。通过调整方法间的事务管理和加入延迟策略,最终实现了一个30秒内的事务执行,满足了MySQL的事务等待超时限制。
摘要由CSDN通过智能技术生成

情景:一个定时任务,每天凌晨同步某一张a表数据,其需要查询b表和调用其他平台接口,其同步的数据有将近3w条,此时写在一个事务中就出现了问题

且  MYSQL的事务超时时间没法改(其他项目也用,且因为一个功能就改数据库配置感觉不合理)

 

我的解决方法:

把查询的逻辑和删除插入的逻辑分别写在2个方法中 : sheducleDealBuildingRiskLevel 和  insertBafcBuildingRiskLevelList

@Transactional(rollbackFor = Exception.class)
public Boolean sheducleDealBuildingRiskLevel() 
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
private Boolean insertBafcBuildingRiskLevelList(List<BafcBuildingRiskLevel> bafcBuildingRiskLevelList){

//清空bafc_building_risk_level表
log.info("<<<<<<<<<<<<<<<<<<<清空bafc_building_risk_level表<<<<<<<<<<<<<<<<<<<<<<<<<<<");
delete(new EntityWra
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值