1. 程式人生 > 其它 >事務的隔離級別詳解

事務的隔離級別詳解

四種隔離級別:

  • READ-UNCOMMITTED(讀取未提交): 最低的隔離級別,允許讀取尚未提交的資料變更,** 可能會導致髒讀、幻讀或不可重複讀** 。

  • READ-COMMITTED(讀取已提交): 允許讀取併發事務已經提交的資料, 可以阻止髒讀,但是幻讀或不可重複讀仍有可能發生

  • REPEATABLE-READ(可重複讀): 對同一欄位的多次讀取結果都是一致的,除非資料是被本身事務自己所修改, 可以阻止髒讀和不可重複讀,但幻讀仍有可能發生

  • SERIALIZABLE(可序列化): 最高的隔離級別,完全服從ACID的隔離級別。所有的事務依次逐個執行,這樣事務之間就完全不可能產生干擾,也就是說,該級別可以防止髒讀、不可重複讀以及幻讀


  • 1、 髒讀:A,B兩事務,A事務會讀取到B事務未提交的資料,然後B因為某些原因回滾資料,所以A就讀取了B沒有提交的資料,也稱髒資料。

  • 2、 不可重複讀:在A事務中對同一資料兩次查詢不一致,可能原因是在A事務提交之前B事務對該資料進行了操作

  • 3、 幻讀:當某個事務在讀取某個範圍內的記錄時,另外一個事務又在該範圍內插入了新的記錄,當之前的事務再次讀取該範圍的記錄時,會產生幻行,就像產生幻覺一樣,這就是發生了幻讀。

  • 不可重複讀和髒讀的區別 是,髒讀是某一事務讀取了另一個事務未提交的髒資料,而不可重複讀則是讀取了前一事務提交的資料。

  • 幻讀和不可重複讀都是讀取了另一條已經提交的事務,不同的是不可重複讀的重點是修改,幻讀的重點在於新增或者刪除。

  • 事務隔離就是為了解決上面提到的髒讀、不可重複讀、幻讀這幾個問題。