溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL的事務(wù)隔離級別可以解決什么問題

發(fā)布時間:2020-05-21 16:33:21 來源:網(wǎng)絡(luò) 閱讀:368 作者:三月 欄目:MySQL數(shù)據(jù)庫

下面講講關(guān)于MySQL的事務(wù)隔離級別可以解決什么問題,文字的奧妙在于貼近主題相關(guān)。所以,閑話就不談了,我們直接看下文吧,相信看完MySQL的事務(wù)隔離級別可以解決什么問題這篇文章你一定會有所受益。 

一、事務(wù)的原則

事務(wù)要滿足ACID原則,也就是:

1.原子性(Atomicity):事務(wù)開始后所有操作,要么全部做完,要么全部不做,不可能停滯在中間環(huán)節(jié)。事務(wù)執(zhí)行過程中出錯,會回滾到事務(wù)開始前的狀態(tài),所有的操作就像沒有發(fā)生一樣。也就是說事務(wù)是一個不可分割的整體。


2.一致性(Consistency):事務(wù)開始前和結(jié)束后,數(shù)據(jù)庫的完整性約束沒有被破壞 。比如A向B轉(zhuǎn)賬,不能出現(xiàn)A扣了錢,B卻沒收到。


3.隔離性(Isolation):同一時間,只允許一個事務(wù)請求同一數(shù)據(jù),不同的事務(wù)之間彼此沒有任何干擾。比如A正在從一張銀行卡中取錢,在A取錢的過程結(jié)束前,B不能向這張卡轉(zhuǎn)賬。


4.持久性(Durability):事務(wù)完成后,事務(wù)對數(shù)據(jù)庫的所有更新將被保存到數(shù)據(jù)庫,不能回滾。


二、事務(wù)并發(fā)造成的問題

1.臟讀:事務(wù)A讀取了事務(wù)B更新的數(shù)據(jù),然后B回滾操作,那么A讀取到的數(shù)據(jù)是臟數(shù)據(jù)。比如:

事務(wù)B把用戶的年齡更新成22歲,但是事務(wù)還未提交。此時事務(wù)A來讀用戶的年齡,讀到了22歲,然后去做自己的處理。之后事務(wù)B把用戶的年齡回滾到21歲。這個例子中事務(wù)A讀到的22歲就是臟數(shù)據(jù)。http://www.chacha8.cn/detail/1132398235.html


2.不可重復(fù)讀:事務(wù) A 多次讀取同一數(shù)據(jù),事務(wù) B 在事務(wù)A多次讀取的過程中,對數(shù)據(jù)作了更新并提交,導(dǎo)致事務(wù)A多次讀取同一數(shù)據(jù)時,結(jié)果不一致。比如:

事務(wù)B先把用戶的余額更新為100元,事務(wù)A來讀的時候讀到的是100元,然后事務(wù)B又把余額更新為90元,此時事務(wù)A來讀的時候讀到的就是90元,也就是事務(wù)A讀到的數(shù)據(jù)前后不一致。


3.幻讀:事務(wù)A對表中的數(shù)據(jù)進(jìn)行了修改,涉及到表中的全部行。同時,事務(wù)B也修改這個表中的數(shù)據(jù),向表中插入一行新數(shù)據(jù)。那么,事務(wù)A發(fā)現(xiàn)表中還有自己沒有修改的行,就好象發(fā)生了幻覺一樣。比如:

A先把所有人的余額清零,同時,B往表中插入了一條余額為100的數(shù)據(jù)。A提交以后,發(fā)現(xiàn)竟然還有100的。就好像發(fā)生了幻覺一樣,這就叫幻讀。


三、MySQL的事務(wù)隔離級別

MySQL的事務(wù)隔離級別有四種:

1.讀未提交(read-uncommitted):能讀到未提交的數(shù)據(jù)。會出現(xiàn)臟讀、不可重復(fù)讀、幻讀。


2.讀已提交(read-committed):讀已提交的數(shù)據(jù)。會出現(xiàn)不可重復(fù)讀和幻讀。


3.可重復(fù)讀(repeatable-read):mysql默認(rèn)的事務(wù)隔離級別,查詢的都是事務(wù)開始時的數(shù)據(jù)。只會出現(xiàn)幻讀。


4.串行讀(serializable):完全串行化讀,每次都會鎖表,讀寫互相阻塞。最高隔離級別,不會出現(xiàn)臟讀,不可重復(fù)讀,幻讀。但會大大影響系統(tǒng)的性能,一般不用。

對于以上MySQL的事務(wù)隔離級別可以解決什么問題相關(guān)內(nèi)容,大家還有什么不明白的地方嗎?或者想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI