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就是臟讀!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM