烟男总结的事务隔离机制

文章总结来自孤独烟,打杂的ZRJ,顺便盗几个图

事务隔离分四级:分别为

  1:读未提交:就是一个事务检索的数据被另一个未提交的事务修改了,就是说检索数据时不可靠的,会被另一个还没提交的事务修改了数据————>出现脏读的可能

  2:读已提交:就是一个事务检索的数据被另一个已经提交了的事务修改了,也叫做不可重复读,这里说的数据更是指主键索引没改,但是主键索引指向的数据内容变了,

        如果是增加或者删除一条数据,则不属于不可重复读--------------->出现不可重复读的可能    

        可以看得出发生脏读是不可重复读的子集,发生脏读必然不可重复读也发生了,所以读未提交会产生脏读,不可重复读的可能,也就是说读未提交会产生不可重复读

  3:可重复读:对幻读的解释:基于不可重复读,一个事务对检索的数据,被另一个已经提交的事务修改了,而这中修改是对行的修改,增加或者删除,这种就属于幻读

        所以就可以看出,不可重复读是幻读的子集,就是说发生不可重复读属于幻读的一种,就是说幻读除了是对数据行的增加或者减少,

        还可能是对某个索引值的内容的改变

      但是,dance,可重复读不能解决幻读的情况

      要解决幻读需要在REPEtable read 隔离级别下,该隔离级别可以保证不出现不可重复读和读脏的情况,弹药保证幻读还需要加锁lock next-key

      就是要在查询是加上select * from tableA lock in share mode

  4:而序列化就简单了,就是在可重复读的情况下加上lock in share mode

                                    放图震慑

隔离级别脏读不可重复读幻读
读未提交
不可重复读
可重复读
串行化
原文地址:https://www.cnblogs.com/ali-guili/p/9966610.html