声明: 此文章仅限于记录学习之用 , 受限于自身水平和理解能力 , 因此结论可能是不正确的.
相关概念
脏读
在此次事务中读取到了其他事务中未提交的内容.
幻读
同一次查询,执行两次 得到的结果集是不一致的(侧重数量增多或者减少).
原因: 其他事务对数据进行了 insert 或者 delete操作
不可重复读
在一个事务内条件相同的查询,执行两次, 得到的结果是不一致的. (侧重行结果)
原因: 其他事务对数据进行了update操作.
可重复读
在一个事务内条件相同的查询得到的结果是一致的.
情景展示
脏读
幻读
不可重复读
可重复读
隔离级别
读未提交(READ UNCOMMITTED)
解释:没有加限制.
读已提交(READ COMMITTED)
解释:读取commit之后的数据.
作用: 解决了脏读.
可重复读 (REPEATABLE READ)
解释: 事务读取不受其他事务影响. 即使其他事务改掉了数据.
原理: 采用MVVC(多版本并发控制)的方法. 简单来说就是在事务开始时生成一次快照, 本次事务中的数据从快照中获取,
串行化(SERIALIZABLE)
解释:事务按照顺序执行, 相当于单线程. 必须等一个事务完成后,才能开始另一个事务
参考文章
https://zhuanlan.zhihu.com/p/117476959