MVCC实际开发中导致的问题

问题情景

今天开发过程中遇到个很奇怪的问题,打断点的情况下,Java代码执行到getById的时候,查询出来为null,但是用sql语句去查可以查出数据

解决方案

这个当时排除了很久,也排除了缓存,Mabits的二级缓存的相关原因,一直找不到头绪,后来再仔细阅读了源码,发现重点就在前面我执行了一个remove把所有的数据都删除了。

那为什么代码里删除了,数据库里却显示还在呢

这就是MVCC导致的问题,因为Mysql的默认隔离是读已提交,但是代码在执行的过程中事务还未完全走完。导致代码执行时的readview和数据库里可以看到的view是不一样的,从而导致了本次问题的产生,具体可以查看博客内对CSDN对MVCC的具体介绍

看一遍就理解:MVCC原理详解-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值