事務(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怎樣解決的幻讀和第一類丟失更新的問題?