事務(wù)具有4個(gè)特征,分別是原子性漓骚、一致性蝌衔、隔離性和持久性榛泛,簡(jiǎn)稱(chēng)事務(wù)的ACID特性蝌蹂;
一、原子性(atomicity)
一個(gè)事務(wù)要么全部提交成功曹锨,要么全部失敗回滾孤个,不能只執(zhí)行其中的一部分操作,這就是事務(wù)的原子性
二沛简、一致性(consistency)
事務(wù)的執(zhí)行不能破壞數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性和一致性齐鲤,一個(gè)事務(wù)在執(zhí)行之前和執(zhí)行之后,數(shù)據(jù)庫(kù)都必須處于一致性狀態(tài)椒楣。
如果數(shù)據(jù)庫(kù)系統(tǒng)在運(yùn)行過(guò)程中發(fā)生故障给郊,有些事務(wù)尚未完成就被迫中斷,這些未完成的事務(wù)對(duì)數(shù)據(jù)庫(kù)所作的修改有一部分已寫(xiě)入物理數(shù)據(jù)庫(kù)捧灰,這是數(shù)據(jù)庫(kù)就處于一種不正確的狀態(tài)淆九,也就是不一致的狀態(tài)
三、隔離性(isolation)
事務(wù)的隔離性是指在并發(fā)環(huán)境中毛俏,并發(fā)的事務(wù)時(shí)相互隔離的炭庙,一個(gè)事務(wù)的執(zhí)行不能不被其他事務(wù)干擾。不同的事務(wù)并發(fā)操作相同的數(shù)據(jù)時(shí)煌寇,每個(gè)事務(wù)都有各自完成的數(shù)據(jù)空間焕蹄,即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)其他并發(fā)事務(wù)時(shí)隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能相互干擾阀溶。
在標(biāo)準(zhǔn)SQL規(guī)范中腻脏,定義了4個(gè)事務(wù)隔離級(jí)別鸦泳,不同的隔離級(jí)別對(duì)事務(wù)的處理不同,分別是:未授權(quán)讀取永品,授權(quán)讀取辽故,可重復(fù)讀取和串行化
1、讀未提交(Read Uncommited)腐碱,該隔離級(jí)別允許臟讀取誊垢,其隔離級(jí)別最低;比如事務(wù)A和事務(wù)B同時(shí)進(jìn)行症见,事務(wù)A在整個(gè)執(zhí)行階段喂走,會(huì)將某數(shù)據(jù)的值從1開(kāi)始一直加到10,然后進(jìn)行事務(wù)提交谋作,此時(shí)芋肠,事務(wù)B能夠看到這個(gè)數(shù)據(jù)項(xiàng)在事務(wù)A操作過(guò)程中的所有中間值(如1變成2,2變成3等)遵蚜,而對(duì)這一系列的中間值的讀取就是未授權(quán)讀取
2帖池、授權(quán)讀取也稱(chēng)為已提交讀(Read Commited),授權(quán)讀取只允許獲取已經(jīng)提交的數(shù)據(jù)吭净。比如事務(wù)A和事務(wù)B同時(shí)進(jìn)行睡汹,事務(wù)A進(jìn)行+1操作,此時(shí)寂殉,事務(wù)B無(wú)法看到這個(gè)數(shù)據(jù)項(xiàng)在事務(wù)A操作過(guò)程中的所有中間值囚巴,只能看到最終的10。另外友扰,如果說(shuō)有一個(gè)事務(wù)C彤叉,和事務(wù)A進(jìn)行非常類(lèi)似的操作,只是事務(wù)C是將數(shù)據(jù)項(xiàng)從10加到20村怪,此時(shí)事務(wù)B也同樣可以讀取到20秽浇,即授權(quán)讀取允許不可重復(fù)讀取。
3甚负、可重復(fù)讀(Repeatable Read)
就是保證在事務(wù)處理過(guò)程中柬焕,多次讀取同一個(gè)數(shù)據(jù)時(shí),其值都和事務(wù)開(kāi)始時(shí)刻是一致的腊敲,因此該事務(wù)級(jí)別禁止不可重復(fù)讀取和臟讀取击喂,但是有可能出現(xiàn)幻影數(shù)據(jù)。所謂幻影數(shù)據(jù)碰辅,就是指同樣的事務(wù)操作懂昂,在前后兩個(gè)時(shí)間段內(nèi)執(zhí)行對(duì)同一個(gè)數(shù)據(jù)項(xiàng)的讀取,可能出現(xiàn)不一致的結(jié)果没宾。在上面的例子中凌彬,可重復(fù)讀取隔離級(jí)別能夠保證事務(wù)B在第一次事務(wù)操作過(guò)程中沸柔,始終對(duì)數(shù)據(jù)項(xiàng)讀取到1,但是在下一次事務(wù)操作中铲敛,即使事務(wù)B(注意褐澎,事務(wù)名字雖然相同,但是指的是另一個(gè)事務(wù)操作)采用同樣的查詢方式伐蒋,就可能讀取到10或20工三;
4、串行化
是最嚴(yán)格的事務(wù)隔離級(jí)別先鱼,它要求所有事務(wù)被串行執(zhí)行俭正,即事務(wù)只能一個(gè)接一個(gè)的進(jìn)行處理,不能并發(fā)執(zhí)行焙畔。
四掸读、持久性(durability)
一旦事務(wù)提交,那么它對(duì)數(shù)據(jù)庫(kù)中的對(duì)應(yīng)數(shù)據(jù)的狀態(tài)的變更就會(huì)永久保存到數(shù)據(jù)庫(kù)中宏多。--即使發(fā)生系統(tǒng)崩潰或機(jī)器宕機(jī)等故障儿惫,只要數(shù)據(jù)庫(kù)能夠重新啟動(dòng),那么一定能夠?qū)⑵浠謴?fù)到事務(wù)成功結(jié)束的狀態(tài)伸但。
轉(zhuǎn)載于:http://www.reibang.com/p/fc8a654f2205