mysql有幾種隔離級(jí)別

mysql有4種隔離級(jí)別:1、讀未提交內(nèi)容;在該隔離級(jí)別中,所有事務(wù)都可以看到其他未提交事務(wù)的執(zhí)行結(jié)果。2、讀取提交內(nèi)容;一個(gè)事務(wù)提交之后,它修改的數(shù)據(jù)才會(huì)被別的事物看到。3、可重復(fù)讀;一個(gè)事務(wù)執(zhí)行過(guò)程中看到的數(shù)據(jù),總是和這個(gè)事務(wù)開(kāi)啟時(shí)看到的數(shù)據(jù)是一致的。4、可串行化;通過(guò)強(qiáng)制事務(wù)排序,使之不可能相互沖突,從而解決幻讀問(wèn)題。

mysql有幾種隔離級(jí)別

本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、dell g3電腦。

一個(gè)事務(wù)具有ACID特性,也就是(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔離性、持久性)。

Mysql的四種隔離級(jí)別

SQL標(biāo)準(zhǔn)定義了4類(lèi)隔離級(jí)別,包括了一些具體規(guī)則,用來(lái)限定事務(wù)內(nèi)外的哪些改變是可見(jiàn)的,哪些是不可見(jiàn)的。低級(jí)別的隔離級(jí)一般支持更高的并發(fā)處理,并擁有更低的系統(tǒng)開(kāi)銷(xiāo)。【視頻教程推薦:Mysql教程

1、讀未提交內(nèi)容(read-uncommitted)

在該隔離級(jí)別中,所有事務(wù)都可以看到其他未提交事務(wù)的執(zhí)行結(jié)果。本隔離級(jí)別很少用于實(shí)際應(yīng)用,因?yàn)樗男阅芤膊槐绕渌?jí)別好多少。

該隔離級(jí)別會(huì)出現(xiàn)的問(wèn)題是:臟讀(Dirty Read),即讀取到了未提交的數(shù)據(jù)。

2、讀取提交內(nèi)容(read-committed)

這是大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)的默認(rèn)隔離級(jí)別(但不是MySQL默認(rèn)的)。它滿足了隔離的簡(jiǎn)單定義:一個(gè)事務(wù)只能看見(jiàn)已經(jīng)提交事務(wù)所做的改變。

該隔離級(jí)別會(huì)出現(xiàn)的問(wèn)題是:不可重復(fù)讀(Nonrepeatable Read),即不可重復(fù)讀意味著我們?cè)谕粋€(gè)事務(wù)中執(zhí)行完全相同的select語(yǔ)句時(shí)可能看到不一樣的結(jié)果。

導(dǎo)致這種情況的原因可能有:

1)、有一個(gè)交叉的事務(wù)有新的commit,導(dǎo)致了數(shù)據(jù)的改變;

2)、一個(gè)數(shù)據(jù)庫(kù)被多個(gè)實(shí)例操作時(shí),同一事務(wù)的其他實(shí)例在該實(shí)例處理其間可能會(huì)有新的commit

3、可重復(fù)讀(repeatable-read)

這是MySQL的默認(rèn)事務(wù)隔離級(jí)別,它確保同一事務(wù)的多個(gè)實(shí)例在并發(fā)讀取數(shù)據(jù)時(shí),會(huì)看到同樣的數(shù)據(jù)行。

不過(guò)理論上,這會(huì)導(dǎo)致另一個(gè)棘手的問(wèn)題:幻讀 (Phantom Read)。

簡(jiǎn)單的說(shuō),幻讀指當(dāng)用戶讀取某一范圍的數(shù)據(jù)行時(shí),另一個(gè)事務(wù)又在該范圍內(nèi)插入了新行,當(dāng)用戶再讀取該范圍的數(shù)據(jù)行時(shí),會(huì)發(fā)現(xiàn)有新的“幻影” 行。

InnoDB和Falcon存儲(chǔ)引擎通過(guò)多版本并發(fā)控制(MVCC,Multiversion Concurrency Control)機(jī)制解決了該問(wèn)題。

4、可串行化(serializable)

這是最高的隔離級(jí)別,它通過(guò)強(qiáng)制事務(wù)排序,使之不可能相互沖突,從而解決幻讀問(wèn)題。簡(jiǎn)言之,它是在每個(gè)讀的數(shù)據(jù)行上加上共享鎖。在這個(gè)級(jí)別,可能導(dǎo)致大量的超時(shí)現(xiàn)象和鎖競(jìng)爭(zhēng)。

在這個(gè)級(jí)別,可能導(dǎo)致大量的超時(shí)現(xiàn)象和鎖競(jìng)爭(zhēng)。

推薦學(xué)習(xí):Mysql教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享