关于Spring Aop和事务记录

事务

事务的四大隔离级别(Isolation:由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。 )

七大传播行为;而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读;

下面我们就来探讨脏读,不可重读,幻读等情况;

Read uncommitted

读未提交,顾名思义,就是一个事务可以读取另一个未提交的数据。

事例:老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月,该钱已经打到程序员的户口,但是事务还没有提交,就在这时,程序员去查看自己这个月的工资,发现比往常多了3千元,以为涨工资了非常高兴。但是老板及时发现了不对,马上回滚差点就提交了的事务,将数字改成3.6万再提交。


数据库dos框,通过mysql -hlocalhost -uroot -proot,通过select @@tx_isolation;查询当前数据库隔离级别(mysql未修改时隔离级别为REPEATABLE-READ

关于Spring Aop和事务记录

通过set session transaction isolation level read uncommitted将事务隔离级别设置为读未提交。

好了,15号了  发工资了 程序员查了下卡了。恩?老板还没打钱;

关于Spring Aop和事务记录

关于Spring Aop和事务记录

老板还没提交事务,程序员就迫不及待的查工资;

关于Spring Aop和事务记录

老板发现不对劲了,咦?怎么多往这小子转钱了。赶紧回滚,将工资改为36000后提交;

分析:实际程序员这个月的工资还是3.6万,但是程序员看到的是3.9万。他看到的是老板还没提交事务时的数据。这就是脏读

那怎么解决脏读呢?Read committed!读提交,能解决脏读问题。

 

例子转至:https://blog.****.net/qq_33290787/article/details/51924963