資料庫中的丟失更新,髒讀,不可重複讀,幻讀

2021-09-28 18:17:42 字數 928 閱讀 7634

a事務撤銷時,把已經提交的b事務的更新資料覆蓋了。

髒讀發生在乙個事務a讀取了被另乙個事務b修改,但是還未提交的資料。

假如b回退,則事務a讀取的是無效的資料。

指在乙個事務a內,多次讀同乙個資料,但是事務a沒有結束時,另外乙個事務b則修改了該資料。

那麼事務a在 b事務修改資料之後再次讀取該資料, a事務讀到的資料可能和第一次讀到的資料不一樣。

這就發生了在乙個事務內兩次讀到的資料不一樣,這就被稱作不可重複讀。

幻讀發生在當兩個完全相同的查詢執行時,第二次查詢所返回的結果集跟第乙個查詢不相同。

read uncommitted(讀未提交)- 解決丟失更新

最低的隔離級別。乙個事務可以讀取另乙個事務並未提交的更新結果。

read committed(讀提交)- 解決丟失更新,髒讀

大部分資料庫採用的預設隔離級別。乙個事務的更新操作結果只有在該事務提交之後,另乙個事務才可以的讀取到同一筆資料更新後的結果。

repeatable read(重複讀)- 解決丟失更新,髒讀,不可重複讀

mysql的預設級別。整個事務過程中,對同一筆資料的讀取結果是相同的,不管其他事務是否在對共享資料進行更新,也不管更新提交與否。

serializable(序列化)- 解決丟失更新,髒讀,不可重複讀,幻讀

最高隔離級別。所有事務操作依次順序執行。注意這會導致併發度下降,效能最差。通常會用其他併發級別加上相應的併發鎖機制來取代它。

髒讀,不可重複讀,幻讀,丟失更新

資料庫事務 簡稱 事務 是資料庫管理系統執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。當多個使用者併發運算元據庫時,資料庫為每乙個使用者開啟不同的事務。這些事務如果不加以隔離,會產生一些問題。看下面的例子 髒讀 事務a 事務b 前提amy賬戶餘額是100 時間1 b事務開始 bob給自己...

資料庫的資料的不可讀,髒讀,幻讀和丟失更新

1.出現的原因 之所以出現更新丟失,髒讀,和不可重複讀,幻讀,是因為當兩個事務同時進行的時候,兩者之間互相不知道對方的存在,對自身所處的環境過分樂觀,從而沒有對操作的資料做一定的保護處理,最終導致一些問題的出現。丟失更新問題 上圖中,由於事務a與事務b互相不知道對方的存在,因此導致了悲劇的發生。如果...

資料庫中的 髒讀,幻讀,不可重複讀

資料庫帶來的併發問題包括 1.丟失或覆蓋更新。幻像讀 2.未確認的相關性 髒讀 3.不一致的分析 非重複讀 詳細描述如下 當兩個或多個事務選擇同一行,然後基於最初選定的值更新該行時,會發生丟失更新問題。每個事務都不知道其它事務的存在。最後的更新將重寫由其它事務所做的更新,這將導致資料丟失。e.g.事...