首頁常見問題正文

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

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

IT培訓(xùn)班

  事務(wù)隔離級別指在同一個(gè)數(shù)據(jù)的多個(gè)事務(wù)中,當(dāng)前事務(wù)何時(shí)能看到其他事務(wù)對數(shù)據(jù)修改的結(jié)果。MySQL有4種事務(wù)隔離級別,分別如下:

  1.Serializable:串行化,一個(gè)事務(wù)一個(gè)事務(wù)執(zhí)行,并發(fā)行低。

  2.Repeatable read:可重復(fù)讀,無論其他事務(wù)是否修改并提交了數(shù)據(jù),在這個(gè)事務(wù)中看到的數(shù)據(jù)始終不受其他事務(wù)的影響。這是MySQL的默認(rèn)事務(wù)隔離級別。

  3.Read committed:讀取已提交,其他事務(wù)提交了對數(shù)據(jù)的修改后,本事務(wù)就能讀取到修改后的數(shù)據(jù)值。

  4.Read uncommitted:讀取未提交,其他事務(wù)只要修改了數(shù)據(jù),即使未提交,本事務(wù)也能讀取到修改后的數(shù)據(jù)值。

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

  打開MySQL命令,修改全局或當(dāng)前session的事務(wù)隔離級別為Readcommitted的命令如下:

mysql> set [globale | session] transaction isolation level Read committed:


  本文版權(quán)歸黑馬程序員Python培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!

  作者:黑馬程序員Python培訓(xùn)學(xué)院

  首發(fā):https://python.itheima.com

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!