(一)可讀取未確認(Read uncommitted)數據庫
寫事務阻止其餘寫事務,避免了更新遺失。可是沒有阻止其餘讀事務。併發
存在的問題:髒讀。即讀取到不正確的數據,由於另外一個事務可能還沒提交最終數據,這個讀事務就讀取了中途的數據,這個數據多是不正確的。事務
解決辦法就是下面的「可讀取確認」。it
(二)可讀取確認(Read committed)table
寫事務會阻止其餘讀寫事務。讀事務不會阻止其餘任何事務。數據
存在的問題:不可重複讀。即在一次事務之間,進行了兩次讀取,可是結果不同,可能第一次id爲1的人叫「李三」,第二次讀id爲1的人就叫了「李四」。由於讀取操做不會阻止其餘事務。tab
解決辦法就是下面的「可重複讀」。co
(三)可重複讀(Repeatable read)錯誤
存在的問題:幻讀。當事務開啓的時候,默認讀的是此時數據庫中的數據。假設讀到了10條,而後進行更新操做了10條,驚奇的發現更新了20條。是由於其餘地方插入了10條數據,致使了事務中的幻讀,覺得只更新了讀到了10條。實則他更新了數據庫中的全部知足數據。ab
(四)可串行化(Serializable)
讀加共享鎖,寫加排他鎖。這樣讀取事務能夠併發,可是讀寫,寫寫事務之間都是互斥的,基本上就是一個個執行事務,因此叫串行化。
如有錯誤,懇請指正,萬分感謝!!!