隔離性產(chǎn)生的相關(guān)問題
1、丟失更新
? ? ? 多個事務(wù)同時修改某行數(shù)據(jù)鳖孤,以致于一些事務(wù)的修改被丟失
2岗憋、臟讀
? ? ? 事務(wù)A讀了事務(wù)B未提交的數(shù)據(jù)
3、不可重復(fù)讀
? ? ? 事務(wù)A讀取數(shù)據(jù)剑按,還沒來得及提交疾就,在這個過程中事務(wù)B修改了此數(shù)據(jù)并且已經(jīng)提交,導(dǎo)致此數(shù)據(jù)與之前事務(wù)A讀取的不一致艺蝴,產(chǎn)生不可重復(fù)讀猬腰。即事務(wù)A在兩次讀數(shù)據(jù)中間有其他的事務(wù)修改了此數(shù)據(jù)
4、幻讀
? ? ?事務(wù)A讀某范圍的數(shù)據(jù)記錄猜敢,兩次讀之間的時間里有其他事務(wù)在這個范圍內(nèi)插入了新的記錄姑荷,導(dǎo)致事務(wù)A讀取數(shù)據(jù)的過程中出現(xiàn)"幻行"
隔離性解決相關(guān)的問題
1盒延、不能解決任何問題的隔離級別(讀未提交:read uncommitted)
? ? ?最低的隔離級別,不會解決臟讀鼠冕、不可重復(fù)的添寺、幻讀的問題
2、解決臟讀的隔離級別(讀提交:read committed)
? ? ?事務(wù)B未提交的數(shù)據(jù)對其他事務(wù)是不可見的懈费,所以就不會出現(xiàn)事務(wù)A讀取了事務(wù)B未提交的數(shù)據(jù)计露,解決了臟讀的問題,但是還會產(chǎn)生不可重復(fù)讀和幻讀的問題
3憎乙、解決不可重復(fù)讀的隔離級別(可重復(fù)讀:repeatable read)
? ? ?事務(wù)A讀取數(shù)據(jù)的時候票罐,看不到事務(wù)B修改提交的數(shù)據(jù),但是可以看到事務(wù)A新增的數(shù)據(jù)泞边。解決的不可重復(fù)讀该押,但是還是沒有解決幻讀,mysql默認的隔離級別
4阵谚、解決幻讀的隔離級別(可串行化:serializable)
? ? 任何事務(wù)都是串行執(zhí)行