資料庫事務的4大隔離級別
阿新 • • 發佈:2020-08-04
資料庫事務的4大隔離級別
資料庫事務的4大隔離級別按照從低到高排序為:未提交讀、已提交讀、可重複讀、序列化。
事務隔離級別以及各級別下的併發訪問問題:
pic-1596534022836.png
並不是說事務隔離級別越高越高,雖然事務隔離級別越高越安全,但是這樣限制了資料庫的併發度。
Oracle資料庫的預設事務隔離級別是第二等的已提交讀(readcommit);而Mysql資料庫的預設事務隔離級別是第三等的可重複讀(repeatable read)。單從事務隔離級別來看Oracle資料庫的併發度比Mysql好,但是Mysql比Oracle更安全。
上述所講的四個併發訪問問題:更新丟失、髒讀、不可重複讀、幻讀的概念如下。
(1)更新丟失:邏輯上已經完成更新的資料,但是由於某些原因實際上並沒有完成更新。
pic-1596534022837.png
(2)髒讀:一個事務讀取到另一個事務未提交的資料。(未提交的資料也就是髒資料)
pic-1596534022838.png
(3)不可重複讀:一個事務讀取到另一個事務已提交的更新資料。(與幻讀不同的是:這裡的事務是對已有的資料更新)
pic-1596534022839.png
(4)幻讀(虛讀):一個事務讀取到另一個事務所做的新增或刪除資料。
pic-1596534022840.png
不可重複讀和幻讀的區別: 不可重複讀是一個事務重複讀到另一個事務對已有資料的更新操作結果。 幻讀是一個事務重複讀到另一個事務的新增、刪除操作結果。