MYSQL事件隔離級別以及復讀,幻讀,髒讀的理解

一.mysql事件隔離級別

1未提交讀(READUNCOMMITTED)

另外一個事務修改了數據,但還沒有提交,而本事務中的SELECT會讀到這些未被提交的數據(髒讀)( 隔離級別最低,併發性能高 )mysql

2..提交讀(READCOMMITTED)

本事務讀取到的是最新的數據(其餘事務提交後的)。問題是,在同一個事務裏,先後兩次相同的SELECT會讀到不一樣的結果(不重複讀)。會出現不可重複讀、幻讀問題(鎖定正在讀取的行)sql

3.可重複讀(REPEATABLEREAD)

在同一個事務裏,SELECT的結果是事務開始時時間點的狀態,所以,一樣的SELECT操做讀到的結果會是一致的。可是,會有幻讀現象(稍後解釋)。會出幻讀(鎖定所讀取的全部行)併發

4.串行化(SERIALIZABLE)

讀操做會隱式獲取共享鎖,能夠保證不一樣事務間的互斥(鎖表)性能

二.髒讀、不可重複讀、幻讀、復讀

1.髒讀

當前事務讀到的數據是別的事務想要修改爲爲的可是沒有修改爲功的數據code

2.不可重複讀

當前事務先進行了一次數據讀取,而後再次讀取到的數據是別的事務修改爲功的數據,致使兩次讀取到的數據不匹配,也就照應了不可重複讀的語義事件

3.幻讀

當前事務讀第一次取到的數據比後來讀取到數據條目少或者增長,針對數據的刪與增事務

4.復讀

當前事務先進行了一次數據讀取,而後再次讀取到的數據是別的事務修改以前的數據,兩次數據相同it

相關文章
相關標籤/搜索