【org.springframework.dao.CannotAcquireLockException异常分析】

文章描述了一个服务中的多个事务执行相同操作导致的阻塞问题。当第一个事务未提交时,后续相同事务会被阻塞。排查思路包括定位阻塞代码、检查未提交事务和删除重复操作。解决方案是全局搜索并修改重复的事务代码,以防止新的事务被阻塞。
摘要由CSDN通过智能技术生成

该问题为一个service中有多个事务执行相同操作,第一个事务未提交,造成第二个事务阻塞

(注意,问题造成原因在下图展示,实际业务逻辑可能较为复杂,代码设计多重嵌套,无法直接定位问题)

在这里插入图片描述

排查思路:

1,找到事务阻塞的代码,本代码位置 “2” 处
2,在代码 “2” 设置断点,打开数据库执行面板,执行 SHOW PROCESSLIST ,打开在执行该断点前查询数据库是否有未执行的事务

在这里插入图片描述

3,在此处引起事务超时执行之前,数据库已存在相同的修改操作,此事务未提交,新的相同的事务再次创建,造成新的事务阻塞,所以全局搜索和上图 “2” 相同的代码,只修改一次,删除重复的事务操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值