开发者社区> 问答> 正文

Spring事务多线程并发问题,求解@_@?报错

现有一业务方法,其中会对某张表先进行查询,然后修改数据,最后将数据更新进数据库,当然还会有对其他表的插入操作。

我在方法上使用默认的READ_COMMITTED事务隔离级别,Jmeter多线程并发请求,会出现脏读,最后数据异常,然后我使用REPEATABLE_READ的隔离级别,多线程并发请求,始终只有一个请求会成功,后台报错“交易 (處理序識別碼 91) 在 鎖定 資源上被另一個處理序鎖死並已被選擇作為死結的犧牲者。請重新執行該交易。”(台企,使用的繁体。。。),数据库数据正常。

怎样才能使所有并发请求顺利执行完,而不是读到加锁数据时报错?

展开
收起
爱吃鱼的程序员 2020-06-14 20:42:38 517 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    数据库使用了<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">READ_COMMITTED隔离级别,还出现脏读?不可能吧回复<aclass='referer'target='_blank'>@吾同树:en按你说的是幻读,不是你提问里面的脏读,根据我的想法要么用乐观锁控制,要么在升级下数据库隔离级别(迫不得已)幻读?大概就那个意思,反正就是都读取了那行数据,然后都做修改,再提交,后提交的覆盖了前面提交的更改

    2020-06-14 20:42:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多