1讀未提交:(Read Uncommitted)
2讀已提交(Read Committed) 大多數(shù)數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別
3可重復(fù)讀(Repeatable-Read) mysql數(shù)據(jù)庫(kù)所默認(rèn)的級(jí)別
4序列化(serializable)
- 臟讀 dirty reads:當(dāng)事務(wù)讀取還未被提交的數(shù)據(jù)時(shí),就會(huì)發(fā)生這種事件。舉例來說:Transaction 1 修改了一行數(shù)據(jù),然后 Transaction 2 在 Transaction 1 還未提交修改操作之前讀取了被修改的行。如果 Transaction 1 回滾了修改操作,那么 Transaction 2 讀取的數(shù)據(jù)就可以看作是從未存在過的。
- 不可重復(fù)的讀 non-repeatable reads:當(dāng)事務(wù)兩次讀取同一行數(shù)據(jù),但每次得到的數(shù)據(jù)都不一樣時(shí),就會(huì)發(fā)生這種事件。舉例來說:Transaction 1 讀取一行數(shù)據(jù),然后 Transaction 2 修改或刪除該行并提交修改操作。當(dāng) Transaction 1 試圖重新讀取該行時(shí),它就會(huì)得到不同的數(shù)據(jù)值(如果該行被更新)或發(fā)現(xiàn)該行不再存在(如果該行被刪除)。
- 虛讀 phantom read:如果符合搜索條件的一行數(shù)據(jù)在后面的讀取操作中出現(xiàn),但該行數(shù)據(jù)卻不屬于最初的數(shù)據(jù),就會(huì)發(fā)生這種事件。舉例來說:Transaction 1 讀取滿足某種搜索條件的一些行,然后 Transaction 2 插入了符合 Transaction 1 的搜索條件的一個(gè)新行。如果 Transaction 1 重新執(zhí)行產(chǎn)生原來那些行的查詢,就會(huì)得到不同的行。