MySQL5.7 Read Committed事務隔離級別的研究-出現幻讀

事務隔離級別爲Read Committed的情況下:

事務2不執行commit,可以讀取到事務1新添加的記錄。此處說明出現了幻讀。

當事務隔離級別改爲REPEATABLE-READ後,能夠解決該問題即解決幻讀。

幻讀定義:一個事務按相同的查詢條件重新讀取以前檢索過的數據,卻發現其他事務插入了滿足其查詢條件的新數據。



session1執行事務1:只插入和提交

mysql> select @@global.tx_isolation;select @@tx_isolation;

+-----------------------+

| @@global.tx_isolation |

+-----------------------+

| READ-COMMITTED        |

+-----------------------+

1 row in set (0.01 sec)


+----------------+

| @@tx_isolation |

+----------------+

| READ-COMMITTED |

+----------------+

1 row in set (0.00 sec)


mysql> start transaction;

Query OK, 0 rows affected (0.00 sec)


mysql> select * from sun;

+--------+------+

| name   | age  |

+--------+------+

| summer |   26 |

+--------+------+

1 row in set (0.00 sec)


mysql> insert into sun values('aa','88');

Query OK, 1 row affected (0.00 sec)


mysql> commit;


session2執行事務2:只查詢

mysql> select @@global.tx_isolation;select @@tx_isolation;

+-----------------------+

| @@global.tx_isolation |

+-----------------------+

| READ-COMMITTED        |

+-----------------------+

1 row in set (0.00 sec)


+----------------+

| @@tx_isolation |

+----------------+

| READ-COMMITTED |

+----------------+

1 row in set (0.00 sec)


mysql> start transaction;

Query OK, 0 rows affected (0.00 sec)


mysql> select * from sun;

+--------+------+

| name   | age  |

+--------+------+

| summer |   26 |

| aa     |   88 |

+--------+------+





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章