資料庫事務2

2021-04-08 15:48:45 字數 569 閱讀 2152

事務場景是這樣的:對於同乙個銀行帳戶a內有200元,甲進行提款操作100元,乙進行轉帳操作100元到b帳戶。如果事務沒有進行隔離可能會

併發如下問題:

1、第一類丟失更新:首先甲提款時帳戶內有200元,同時乙轉帳也是200元,然後甲乙同時操作,甲操作成功取走100元,乙操作失敗回滾,帳戶內最終為200元,這樣甲的操作被覆蓋掉了,銀行損失100元。

2、髒讀:甲取款100元未提交,乙進行轉帳查到帳戶內剩有100元,這是甲放棄操作回滾,乙正常操作提交,帳戶內最終為0元,乙讀取了甲的髒資料,客戶損失100元。

4、不可重複讀:甲乙同時開始都查到帳戶內為200元,甲先開始取款100元提交,這時乙在準備最後更新的時候又進行了一次查詢,發現結果是100元,這時乙就會很困惑,不知道該將帳戶改為100還是0。

和髒讀的區別是,髒讀是讀取前一事務未提交的髒資料,不可重複讀是重新讀取了前一事務已提交的資料。

5、第二類丟失更新:是不可重複讀的一種特例,如上,乙不做第二次查詢而是直接操作完成,帳戶內最終為100元,甲的操作被覆蓋掉了,銀行損失100元。

感覺和第一類丟失更新類似。

資料庫是通過鎖來避免這些併發問題的。 

資料庫事務2

事務場景是這樣的 對於同乙個銀行帳戶a內有200元,甲進行提款操作100元,乙進行轉帳操作100元到b帳戶。如果事務沒有進行隔離可能會 併發如下問題 1 第一類丟失更新 首先甲提款時帳戶內有200元,同時乙轉帳也是200元,然後甲乙同時操作,甲操作成功取走100元,乙操作失敗回滾,帳戶內最終為200...

資料庫事務(2)資料庫的隔離級別

以上的4種問題 更新丟失 髒讀 不可重複讀 幻讀 都和事務的隔離級別有關。通過設定事務的隔離級別,可以避免上述問題的發生。以操作同一行資料為前提,讀事務 允許 其他讀事務和寫事務,未提交的寫事務 禁止 其他寫事務 但允許其他讀事務 此隔離級別可以防止 更新丟失 但不能防止 髒讀 不可重複讀 幻讀 此...

資料庫事務

事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...