MySQL是一種強(qiáng)大的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),支持四種不同類型的隔離級(jí)別。每個(gè)隔離級(jí)別都有不同的優(yōu)點(diǎn)和限制,并且在不同的應(yīng)用程序中使用不同的隔離級(jí)別。
下面是MySQL中的四種隔離級(jí)別:
1. READ UNCOMMITTED:在該級(jí)別下,一個(gè)事務(wù)中的修改可以被其他事務(wù)立即看到,即未確認(rèn)的(“臟”)讀取。由于這個(gè)隔離級(jí)別會(huì)導(dǎo)致許多問(wèn)題,因此建議不要在生產(chǎn)中使用。
2. READ COMMITTED:在該級(jí)別下,一個(gè)事務(wù)只能看到已經(jīng)提交的事務(wù)所做的修改,從而避免了“臟”讀取。但由于隔離程度較低,因此允許出現(xiàn)不可重復(fù)讀和虛擬讀(phantom read)的問(wèn)題。
3. REPEATABLE READ:在該級(jí)別下,事務(wù)只能看到在事務(wù)開(kāi)始時(shí)已經(jīng)存在的數(shù)據(jù),可以避免不可重復(fù)讀、虛擬讀以及臟讀等問(wèn)題。但在該級(jí)別下,可能會(huì)出現(xiàn)幻象問(wèn)題,即當(dāng)一行符合WHERE子句的條件被插入(或刪除)時(shí),操作一個(gè)另一行的事務(wù)可能會(huì)看到相符的行。
4. SERIALIZABLE:在該級(jí)別下,事務(wù)像是在一個(gè)單一的線程中執(zhí)行,即事務(wù)會(huì)依次執(zhí)行而不用擔(dān)心幻象問(wèn)題。但缺點(diǎn)是該級(jí)別下的并發(fā)性很低,因此需要注意性能問(wèn)題。