1、髒讀(diety read)
①定義:a事務讀取b事務尚未提交的更改資料,並在這個資料的基礎上操作。如果恰巧b事務回滾,那麼a事務讀到的資料根本是不被承認的。
② 舉個例子
在這個場景中,b希望取款500元但又撤銷,而a往賬戶中轉入100元,就因為a事務讀取b事務尚未提交的資料,賬戶白白丟失了500元。
2、不可重複讀(unrepeatable read)
①定義:a事務讀取了b事務已經提交的更改資料。
②舉個例子
在事務a中,t4和t7時間點讀取賬戶餘額不一樣。
3、幻讀(phantom read)
①定義:a事務讀取b事務提交的新增資料。(注意區分不可重複讀,這裡的資料是更改後的資料,比如更改/刪除處理後的資料)
②舉個例子
在乙個事務中,兩次統計存款賬戶的總金額,但是在兩次統計的過程中,新增了乙個賬戶,並且存入100元,就會導致兩次統計的總金額不一樣。
如果新增的資料剛好滿足事務的查詢條件(例如查詢總金額),這個新資料就會進入事務的視野,因為產生了統計不一樣的狀況。
4、第一類丟失更新
①定義:a事務撤銷時,把已經提交的b事務的更新資料覆蓋了。
②舉個例子
a事務在撤銷時,將b事務已經轉入賬戶的金額給抹去了。
5.第二類丟失更新
①定義:a事務覆蓋b事務已經提交的資料。
②舉個例子
事務a覆蓋了事務b對存款餘額所做的更新,導致銀行最後損失了100元。
相反的,如果事務a先提交,那麼使用者賬戶將損失100元。
總結不可重複讀的和幻讀很容易混淆,不可重複讀側重於修改,幻讀側重於新增或刪除。解決不可重複讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表。
資料庫事務隔離
資料庫事務的四大特性 acid atomicity 原子性 乙個事務必須被視為乙個不可分割的最小工作單元。consistency 一致性 資料庫總是從乙個一致性狀態轉移到另乙個一致性狀態。isolation 隔離性 乙個事務所做的修改在最終提交以前,對於其他事務是不可見的。durability 永續...
資料庫事務隔離級別
資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...
資料庫事務隔離級別
資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...