spring事务方法先insert 后 select 查不到数据

MySQL已经插入了一条数据,但是再查询的时候查不出来的原因_JianfeiMa的博客-CSDN博客_mysql表里有数据却查不出来

(Me:直接把这条insert数据完整信息作为参数传递下去,而不是通过id重新查出)

其他事务新增的能读呢?——是否会幻读,跟隔离级别有关,RR级别会幻读吗?本来会,但innodb通过mvcc解决了

MySQL事务(脏读,幻读,不可重复读)_意Ω外的博客-CSDN博客_mysql事务脏读

https://www.jianshu.com/p/10597feca846?ivk_sa=1024320u

认为spring mybatis insert了但离该数据实际刷到磁盘还有时间差(Me:还在mysql内存,还没落到磁盘,所以立马查查不出,存疑,我是觉得又不是异步的,肯定Mysql执行完了[存好了],mybatisplus代码才下一步的吧,比如返回数据会自动设置上主键。又说“猜测可能是事务提交后,数据还没有落到磁盘,所以无法直接从数据库mysql 表中查询”。线上这个代码没加事务,实际应该还是代码逻辑引起的,它是大量for循环去掉insert,那么另一个线程去查,可能此时for的最后几个insert还没进行呢~)

[Me:若是更新update,倒是会有x锁,所以别人读也会阻塞?而且是当前读,不存在取不到最新的可能(有x锁、两阶段锁协议,真是把事情简化了很多,砍掉了很多讨论情况)]

杂谈:mysql默认情况下@autocommit的值为1。所以只写insert也是有mysql的事务的。那么,Spring @Transaction是怎么实现把一堆默认会有事务的操作,整成一个事务使得整体原子性?我猜测该注解的原理应该包含:暂时去除自动提交,切面帮助加上事务语句。

这方法不好(睡2秒有些太傻批了),还是分开,一个加事务(变为原子性,最后commit),让另一个方法要么读不到(“服务器繁忙稍后再试”),要么能读到所有

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值