mysql-read uncommitted 未提交读-脏读实例场景

read uncommitted 未提交读:就是一个事务可以读取另一个未提交事务的数据。

打开两个mysql会话,分别设置成为read uncommitted 未提交读的隔离级别

mysql> set session transaction isolation level read uncommitted;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@session.transaction_isolation;
+---------------------------------+
| @@session.transaction_isolation |
+---------------------------------+
| READ-UNCOMMITTED |
+---------------------------------+
1 row in set (0.00 sec)

mysql>

1)事务A,只修改sid = 4 的version,并不commit;

 

 2)事务B,先后两次查询software表 两次结果不同,第二次select得到的结果是,事务A没有commit的数据。

 

总结:事务B,先后两次查询software表 两次结果不同,第二次select得到的结果是,事务A没有commit的数据,此时如果事务A发生回滚了,就会造成数据的不准确,不一致!

此时可能就出现了脏读,事务B获取到的sid = 4 的 version = 4 一旦事务A发生了回滚,sid=4的version实际会变为44,此时的事务B得到的sid=4的version = 4就是脏读!

 

posted @ 2019-10-13 21:02  浮梦云烟  阅读(1465)  评论(1编辑  收藏  举报