更新時間:2020-07-31 15:36:14 來源:動力節點 瀏覽2045次
并發事務引起的問題
1.更新丟失(Lost Update)
兩個事務都同時更新一行數據,但是第二個事務卻中途失敗退出,導致對數據的兩個修改都失效了。這是因為系統沒有執行任何的鎖操作,因此并發事務并沒有被隔離開來。
2.臟讀(Dirty Read)
又稱無效數據讀出。一個事務讀取另外一個事務還沒有提交的數據叫臟讀。
例如:事務T1修改了一行數據,但是還沒有提交,這時候事務T2讀取了被事務T1修改后的數據,之后事務T1因為某種原因Rollback了,那么事務T2讀取的數據就是臟的。
3.不可重復讀(Non-Repeatable Read)
是指在一個事務中兩次讀同一行數據,可是這兩次讀到的數據不一樣。
例如:事務T1讀取某一數據,事務T2讀取并修改了該數據,T1為了對讀取值進行檢驗而再次讀取該數據,便得到了不同的結果。
4.幻讀
事務在操作過程中進行兩次查詢,第二次查詢的結果包含了第一次查詢中未出現的數據或者缺少了第一次查詢中出現的數據
例如:系統管理員A將數據庫中所有學生的成績從具體分數改為ABCDE等級,但是系統管理員B就在這個時候插入了一條具體分數的記錄,當系統管理員A改結束后發現還有一條記錄沒有改過來,就好像發生了幻覺一樣。這就叫幻讀。
不可重復讀重點在于update和delete,而幻讀的重點在于insert。所以說不可重復讀和幻讀最大的區別,就在于如何通過鎖機制來解決他們產生的問題。
以上就是動力節點java培訓機構的小編針對“Java數據庫基礎視頻,并發事務”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習