0
点赞
收藏
分享

微信扫一扫

MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

钵仔糕的波波仔 2022-04-21 阅读 124
mysql

一:报错信息

MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

具体报错信息如下图:
在这里插入图片描述

二:伪代码

在这里插入图片描述

三:报错原因

通过错误日志可以看出,错误原因跟 锁、事务有关,字面意思是:锁等待超时,请尝试新的事务

其实在开发过程中并未报错,后来到了仿真环境,因为是员工端的原因,并发量略高,执行上面逻辑的第4步时,比较耗时,导致新的请求过来的时候,锁还未释放(因为无论删除、插入、还是更新、mysql都会默认加锁的),新的请求想要获取锁,等了很久也拿不到锁,就导致了锁等到超时,请尝试新的事务

四:解决方案

对于事务来说,应该都是耗时特别短的,对于频繁的长事务来说,就可能会出问题

所以这个可以控制事务的颗粒度123步放在一个事务里,把步骤4单独处理,或者异步处理

举报

相关推荐

0 条评论