全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)常見(jiàn)問(wèn)題正文

Python Mysql技能學(xué)習(xí):事務(wù)隔離級(jí)別

更新時(shí)間:2024-01-10 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  事務(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)致多位用戶(hù)同時(shí)購(gòu)買(mǎi)同一商品時(shí)數(shù)據(jù)讀取不及時(shí)。例如,一位用戶(hù)這邊的事務(wù)已經(jīng)提交了數(shù)據(jù)的修改,但因?yàn)榫W(wǎng)絡(luò)延遲或其他原因,事務(wù)尚未結(jié)束,此時(shí)其他用戶(hù)的事務(wù)查詢(xún)到的最新數(shù)據(jù)就會(huì)延遲。為了解決這一問(wèn)題,應(yīng)將數(shù)據(jù)庫(kù)的隔離級(jí)別修改為Read committed,如此只要一個(gè)事務(wù)提交了數(shù)據(jù)的修改,其他事務(wù)便能及時(shí)查詢(xún)到修改后的數(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

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!