更新時(shí)間:2024-01-10 來(lái)源:黑馬程序員 瀏覽量:
事務(wù)隔離級(jí)別指在同一個(gè)數(shù)據(jù)的多個(gè)事務(wù)中,當(dāng)前事務(wù)何時(shí)能看到其他事務(wù)對(duì)數(shù)據(jù)修改的結(jié)果。MySQL有4種事務(wù)隔離級(jí)別,分別如下:
1.Serializable:串行化,一個(gè)事務(wù)一個(gè)事務(wù)執(zhí)行,并發(fā)行低。
2.Repeatable read:可重復(fù)讀,無(wú)論其他事務(wù)是否修改并提交了數(shù)據(jù),在這個(gè)事務(wù)中看到的數(shù)據(jù)始終不受其他事務(wù)的影響。這是MySQL的默認(rèn)事務(wù)隔離級(jí)別。
3.Read committed:讀取已提交,其他事務(wù)提交了對(duì)數(shù)據(jù)的修改后,本事務(wù)就能讀取到修改后的數(shù)據(jù)值。
4.Read uncommitted:讀取未提交,其他事務(wù)只要修改了數(shù)據(jù),即使未提交,本事務(wù)也能讀取到修改后的數(shù)據(jù)值。
MySQL默認(rèn)的事務(wù)隔離級(jí)別為Repeatable read,這會(huì)導(dǎo)致多位用戶同時(shí)購(gòu)買同一商品時(shí)數(shù)據(jù)讀取不及時(shí)。例如,一位用戶這邊的事務(wù)已經(jīng)提交了數(shù)據(jù)的修改,但因?yàn)榫W(wǎng)絡(luò)延遲或其他原因,事務(wù)尚未結(jié)束,此時(shí)其他用戶的事務(wù)查詢到的最新數(shù)據(jù)就會(huì)延遲。為了解決這一問(wèn)題,應(yīng)將數(shù)據(jù)庫(kù)的隔離級(jí)別修改為Read committed,如此只要一個(gè)事務(wù)提交了數(shù)據(jù)的修改,其他事務(wù)便能及時(shí)查詢到修改后的數(shù)據(jù)。
打開(kāi)MySQL命令,修改全局或當(dāng)前session的事務(wù)隔離級(jí)別為Readcommitted的命令如下:
mysql> set [globale | session] transaction isolation level Read committed:
本文版權(quán)歸黑馬程序員Python培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員Python培訓(xùn)學(xué)院
首發(fā):https://python.itheima.com