資料庫事物併發有可能出現的問題

2021-09-13 10:05:14 字數 1429 閱讀 9925

之前對資料庫事物的很多知識都很零散,今天有時間整理整理這些知識。

第乙個事物更新某條記錄,第二個事物也更新同一條記錄,第乙個事物正常提交了,但是第二個事物卻回滾了,造成第乙個事物更新失效

我的銀行賬號有1000元,我某天去銀行想給我的賬號存500元,我女朋友也想給我的賬號存100元

我和我女朋友都是同時(併發事物)開始辦理業務的,這時候我的500元成功存入了,賬戶餘額變成了1500元,我很開心

但是,我女朋友在存錢的過程中突然後悔了,她不想存了,拿著她的100元走了,於是銀行櫃檯給將我的賬戶餘額回滾到之前的餘額1000元 ! ! !

第二個事物讀取到第乙個事物未提交的更新資料,然後第二個事物繼續依據這個結果進行業務操作,但是第乙個事物卻將資料進行了回滾

我的銀行賬號有1000元,我某天去銀行想給我的賬號存990元,我女朋友想給我湊個整數,她準備再給我存10元

我和我女朋友都是同時開始辦理業務的,開始的時候我存入了990元,賬號餘額變成了1990元,我的女朋友看到我的賬號餘額變1990元了,然後給我湊整存入了10元,但是我突然覺得銀行利息太低了,將我的交易進行了回滾,拿走了我存入的990元,但是我女朋友辦理完業務後,賬戶餘額變為了2000元,這樣銀行就損失了990元。

乙個事物讀取到了另乙個事物新插入的資料(多次讀取總記錄)

我這個月花了10000元,我女朋友覺得花的有些多,她打算查查我的銀行流水記錄,看看有沒有大額轉賬,但是我不知道她在查我的帳,我繼續花著卡里的錢

她第一次查詢我的詳細賬單時,發現有1000比交易,沒有大額轉賬記錄,她放心了,但是又怕自己沒看仔細,又準備看一遍賬單,但是與此同時我又新產生了一筆消費(插入了一條記錄),這時候發現有1001比交易了,她開始懷疑自己眼花了,第一次1000比交易,第二次1001交易,這就是出現了幻讀

乙個事物讀取到了另乙個事物已提交的記錄(多次讀取同一條記錄)

我準備去銀行存100元,我女朋友在查詢我的賬號餘額,她第一查詢發現賬號中有2000元,當我存完後,她再次查詢餘額變成了2100元,這就是不可重複讀

多個事物基於最初的查詢結果更新同一條記錄

我的賬戶有2100元,我和我女朋友去銀行同時辦理業務,我準備存入500元,她準備取出600元

但是我們是同時開始辦理業務的,如果我先辦理完業務那麼我的賬戶餘額變為2100+600元

她再辦理完業務餘額變為2100-600元,最後餘額變為1500元,我的錢變少了,我存錢的更新記錄丟失了

資料庫事務併發有關問題

多個事務同時訪問資料庫時候,會發生下列5類問題,包括3類資料讀問題 髒讀,不可重複讀,幻讀 2類資料更新問題 第一類丟失更新,第二類丟失更新 1,髒讀 dirty read a事務讀取b事務尚未提交的更改資料,並在這個資料基礎上操作。如果b事務回滾,那麼a事務讀到的資料根本不是合法的,稱為髒讀。在o...

資料庫事務併發有關問題

多個事務同時訪問資料庫時候,會發生下列5類問題,包括3類資料讀問題 髒讀,不可重複讀,幻讀 2類資料更新問題 第一類丟失更新,第二類丟失更新 1,髒讀 dirty read a事務讀取b事務尚未提交的更改資料,並在這個資料基礎上操作。如果b事務回滾,那麼a事務讀到的資料根本不是合法的,稱為髒讀。在o...

laravel連線資料庫可能出現的小問題

針對群體主要是使用了整合的環境一鍵安裝了lamp或者lnmp的程式設計師,那麼如果php沒有定義到系統變數或者沒有乙個軟連線,那麼在安裝composer的時候就會提醒你安裝php5 cli,之後便會引起衝突 pdoexception could not find driver 這時候不要像原生的ph...