事務(wù)的并發(fā)問題

事務(wù)并發(fā)可能會(huì)引起以下幾種問題
1、臟讀
事務(wù)B讀到了事務(wù)A未提交的事務(wù)。

2、幻讀


幻讀.png

新增一個(gè)用戶也會(huì)發(fā)生幻讀,同理。

3、不可重復(fù)讀


不可重復(fù)讀.png

和幻讀類似,不過是對(duì)不可重復(fù)讀是對(duì)數(shù)據(jù)的更新,而幻讀是對(duì)數(shù)據(jù)的新增或者刪除。

4、第一類丟失更新(回滾丟失)


回滾丟失.png

事務(wù)A的回滾覆蓋了事務(wù)B的修改操作,造成了數(shù)據(jù)異常。

5、第二類丟失更新(提交丟失)


提交丟失.png

事務(wù)A的提交覆蓋了事務(wù)B的修改操作,造成了數(shù)據(jù)異常。和回滾丟失很類似,不過是事務(wù)提交覆蓋了數(shù)據(jù)。

為了解決事務(wù)的并發(fā)問題,mysql提供了四種隔離級(jí)別。


隔離級(jí)別.png

Repeatable Read(可重讀):這是MySQL的默認(rèn)事務(wù)隔離級(jí)別,mysql自身解決了幻讀和第一類丟失更新的問題。所以mysql只存在提交丟失。

怎么解決提交丟失問題?
1、悲觀鎖:select ... for update

2、樂觀鎖:使用版本號(hào)機(jī)制。

存留的疑問:mysql怎樣解決的幻讀和第一類丟失更新的問題?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容