mysql什么级别数据库_Mysql的四种隔离级别是什么
Mysql的四種隔離級別是什么
發(fā)布時(shí)間:2020-12-03 09:47:01
來源:億速云
閱讀:116
作者:小新
這篇文章給大家分享的是有關(guān)Mysql的四種隔離級別是什么的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。
mysql有4種隔離級別,分別為:讀未提交內(nèi)容、讀取提交內(nèi)容、可重復(fù)讀、可串行化。
Mysql的四種隔離級別
SQL標(biāo)準(zhǔn)定義了4類隔離級別,包括了一些具體規(guī)則,用來限定事務(wù)內(nèi)外的哪些改變是可見的,哪些是不可見的。低級別的隔離級一般支持更高的并發(fā)處理,并擁有更低的系統(tǒng)開銷?!疽曨l教程推薦:Mysql教程】
讀未提交內(nèi)容(read-uncommitted)
在該隔離級別中,所有事務(wù)都可以看到其他未提交事務(wù)的執(zhí)行結(jié)果。本隔離級別很少用于實(shí)際應(yīng)用,因?yàn)樗男阅芤膊槐绕渌墑e好多少。
該隔離級別會出現(xiàn)的問題是:臟讀(Dirty Read),即讀取到了未提交的數(shù)據(jù)。
讀取提交內(nèi)容(read-committed)
這是大多數(shù)數(shù)據(jù)庫系統(tǒng)的默認(rèn)隔離級別(但不是MySQL默認(rèn)的)。它滿足了隔離的簡單定義:一個(gè)事務(wù)只能看見已經(jīng)提交事務(wù)所做的改變。
該隔離級別會出現(xiàn)的問題是:不可重復(fù)讀(Nonrepeatable Read),即不可重復(fù)讀意味著我們在同一個(gè)事務(wù)中執(zhí)行完全相同的select語句時(shí)可能看到不一樣的結(jié)果。
導(dǎo)致這種情況的原因可能有:
1)、有一個(gè)交叉的事務(wù)有新的commit,導(dǎo)致了數(shù)據(jù)的改變;
2)、一個(gè)數(shù)據(jù)庫被多個(gè)實(shí)例操作時(shí),同一事務(wù)的其他實(shí)例在該實(shí)例處理其間可能會有新的commit
可重復(fù)讀(repeatable-read)
這是MySQL的默認(rèn)事務(wù)隔離級別,它確保同一事務(wù)的多個(gè)實(shí)例在并發(fā)讀取數(shù)據(jù)時(shí),會看到同樣的數(shù)據(jù)行。
不過理論上,這會導(dǎo)致另一個(gè)棘手的問題:幻讀 (Phantom Read)。
簡單的說,幻讀指當(dāng)用戶讀取某一范圍的數(shù)據(jù)行時(shí),另一個(gè)事務(wù)又在該范圍內(nèi)插入了新行,當(dāng)用戶再讀取該范圍的數(shù)據(jù)行時(shí),會發(fā)現(xiàn)有新的“幻影” 行。
InnoDB和Falcon存儲引擎通過多版本并發(fā)控制(MVCC,Multiversion Concurrency Control)機(jī)制解決了該問題。
可串行化(serializable)
這是最高的隔離級別,它通過強(qiáng)制事務(wù)排序,使之不可能相互沖突,從而解決幻讀問題。簡言之,它是在每個(gè)讀的數(shù)據(jù)行上加上共享鎖。在這個(gè)級別,可能導(dǎo)致大量的超時(shí)現(xiàn)象和鎖競爭。
在這個(gè)級別,可能導(dǎo)致大量的超時(shí)現(xiàn)象和鎖競爭。
感謝各位的閱讀!關(guān)于Mysql的四種隔離級別是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
總結(jié)
以上是生活随笔為你收集整理的mysql什么级别数据库_Mysql的四种隔离级别是什么的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 8 centos_CentO
- 下一篇: mysql 5.6.30 添加用户_my