记一个mysql死锁问题,在并发情况下导致的数据库更新超时

1、问题:

在执行mysql数据库更新操作,根据条件更新其中一列的值,具体的更新语句类似如下:

update people set name = 'zhangsan' where id = 1 a  and age = 24;

但是在Java中使用

parallelStream().foreach(a->{

//sql更新操作

})

并发流就会出现问题,导致有的更新会失败,报如下错误:

MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

2、解决:

主要是在并发流执行过程中,sql根据条件进行更新会对表中的行进行锁定,导致出现死锁,而死锁就会导致后边再来的更新语句无法获取到锁进行执行而超时,所以遇到更新的语句时,还是需要按顺序就行更新,不要使用并发流

posted @   烟花火的人生  阅读(191)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示