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就是脏读!