数据库新增了数据,但是查询不到

导读:本篇文章讲解 数据库新增了数据,但是查询不到,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

问题

当我们再执行插入操作的时候,马上去查询数据库导致没有查询到数据(我这边插入的2000条数据批量插入)

原因

究其原因,是 数据库事务在作怪,也怪我当初学习的时候只是背了概念,没有深刻的去理解它。当时代码上面有有一个注解@Transactional,看了它的源码,不声明隔离级别时,它是使用数据库默认的隔离级别。我们知道mysql默认的隔离级别时“可重复读” (读未提交——读已提交——可重复读——串行化)。所以就清楚了,当收到第三方的MQ之后,由于之前的事务没有提交,所以当然查不到数据了。

我的这个问题就是事务未提交,但是mysql事务隔离级别是可重复读(那么就是读不到未提交的事务)当我们数据量比较大的时候比较容易出现这个请求,因为事务比较大

解决方案

  1. 改事务隔离级别为读未提交(不太科学)
  2. 随机睡眠一会儿(不需要睡太久,一般批量插入2000条比较合适,然后时间大概就在几百毫秒)在这里插入图片描述
  3. 优化代码逻辑,为啥插入了还要读取(业务控制,实在控制不了方法2比较可取)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96088.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!