事務(wù)四大特征(ACID):
原子性
- 原子性是指事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中的操作要么都發(fā)生要么都不發(fā)生萌朱。
一致性
- 一致性是指在事務(wù)開(kāi)始之前和事務(wù)結(jié)束以后宴树,數(shù)據(jù)庫(kù)的完整性約束沒(méi)有被破壞。
隔離性
- 隔離性是指在并發(fā)操作中晶疼,不同事務(wù)之間應(yīng)該隔離開(kāi)來(lái)酒贬,使每個(gè)并發(fā)中的事務(wù)不會(huì)互相干擾。
持久性
- 持久性是指一旦事務(wù)提交成功翠霍,事務(wù)中所有的數(shù)據(jù)操作都必須被持久化保存到數(shù)據(jù)庫(kù)中锭吨,即使提交事務(wù)后,數(shù)據(jù)庫(kù)崩潰寒匙,在數(shù)據(jù)庫(kù)重啟時(shí)零如,也必須能保證通過(guò)某種機(jī)制恢復(fù)數(shù)據(jù)。
事務(wù)的隔離級(jí)別
Read uncommitted(讀未提交)
- A锄弱、B兩人考蕾。A會(huì)讀取到B正在修改的數(shù)據(jù),B如果把事務(wù)回滾会宪,A讀到的數(shù)據(jù)就是臟數(shù)據(jù)肖卧。上述情況即為臟讀。
Read committed(讀已提交)
- Oracle等大部分?jǐn)?shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別掸鹅。(不包括MySql)
- A塞帐、B兩人。場(chǎng)景:A去飯店消費(fèi)巍沙,自己的卡里有100元葵姥,就在要刷卡的一瞬間,B以迅雷不及掩耳盜鈴之勢(shì)把卡里的100元轉(zhuǎn)走了句携,A再去消費(fèi)榔幸,會(huì)發(fā)現(xiàn)自己的卡里沒(méi)錢(qián)了。上述情況即為不可重復(fù)讀
Repeatable read(可重復(fù)讀)
- MySql的默認(rèn)隔離級(jí)別矮嫉。
- A牡辽、B兩人。現(xiàn)在的情況就是在A去查詢或其他操作時(shí)敞临,B不能去更新A正在操作的數(shù)據(jù)态辛。但是B可以新添加數(shù)據(jù)。這樣在A查詢數(shù)據(jù)期間也會(huì)發(fā)生數(shù)據(jù)不一致的情況挺尿。上述情況即為幻讀奏黑。
Serizable(串行化)
- 級(jí)別最高的數(shù)據(jù)庫(kù)隔離級(jí)別炊邦,可以避免上面所說(shuō)的三種問(wèn)題,但代價(jià)就是性能極慢熟史,一般不會(huì)使用馁害。
事務(wù)隔離級(jí)別 | 臟讀 | 不可重復(fù)讀 | 幻讀 |
---|---|---|---|
Read uncommitted | 對(duì) | 對(duì) | 對(duì) |
Read committed | × | 對(duì) | 對(duì) |
Repeatable read | × | × | 對(duì) |
Serizable | × | × | × |