【Spring学习及总结24】演示事务的隔离级别
1.事务的隔离级别
1.读未提交(read uncommitted)
首先先利用DOS窗口开启一个事务1,并设置此会话的事务隔离级别为读未提交
读未提交:当前事务能够读取到另一个事务没有提交的数据
利用DOS窗口再次开启一个事务2,对数据price进行修改
利用事务1再次查询price,发现事务1读到了事务2没有提交的数据,造成脏读。
2.读已提交(read committed)
首先开启一个事务1,设置事务的隔离级别为读已提交
读已提交:能够读取到其他事务已经提交的数据
现在开启另一个事务2,修改price的值,但是不提交
当事务2没有提交时,事务1读取不到事务2更改后的数据
当事务2的事务提交以后,事务1能够读取到事务2更改后的数据:
由读取到的数据可以看出,每次读取到的数据不同,造成不可重复读。
3.可重复读( repeatable read)
首先开启一个事务1,mysql默认的事务隔离级别为可重复读
可重复读:即使事务2更改了数据,并且提交了,事务1也读取不到,读取到的仍然是原来的数据。
开启另一个事务2,事务3将price更改为400,当时未提交,此时事务1,可以避免脏读
将事务2提交,此时事务1可以避免可重复读