原子性:整個(gè)事務(wù)中的所有操作嗜闻,要么全部完成斩芭,要么全部不完成乏冀,不可能停滯在中間某個(gè)環(huán)節(jié)蝶糯。事務(wù)在執(zhí)行過(guò)程中發(fā)生錯(cuò)誤,會(huì)被回滾(Rollback)到事務(wù)開(kāi)始前的狀態(tài)辆沦,就像這個(gè)事務(wù)從來(lái)沒(méi)有執(zhí)行過(guò)一樣昼捍。
一致性:一個(gè)事務(wù)可以封裝狀態(tài)改變(除非它是一個(gè)只讀的)。事務(wù)必須始終保持系統(tǒng)處于一致的狀態(tài)肢扯,不管在任何給定的時(shí)間并發(fā)事務(wù)有多少妒茬。也就是說(shuō):如果事務(wù)是并發(fā)多個(gè),系統(tǒng)也必須如同串行事務(wù)一樣操作蔚晨。其主要特征是保護(hù)性和不變性(Preserving an Invariant)乍钻,以轉(zhuǎn)賬案例為例,假設(shè)有五個(gè)賬戶(hù)铭腕,每個(gè)賬戶(hù)余額是100元银择,那么五個(gè)賬戶(hù)總額是500元,如果在這個(gè)5個(gè)賬戶(hù)之間同時(shí)發(fā)生多個(gè)轉(zhuǎn)賬谨履,無(wú)論并發(fā)多少個(gè)欢摄,比如在A(yíng)與B賬戶(hù)之間轉(zhuǎn)賬5元,在C與D賬戶(hù)之間轉(zhuǎn)賬10元笋粟,在B與E之間轉(zhuǎn)賬15元怀挠,五個(gè)賬戶(hù)總額也應(yīng)該還是500元,這就是保護(hù)性和不變性害捕。
隔離性:隔離狀態(tài)執(zhí)行事務(wù)绿淋,使它們好像是系統(tǒng)在給定時(shí)間內(nèi)執(zhí)行的唯一操作。如果有兩個(gè)事務(wù)尝盼,運(yùn)行在相同的時(shí)間內(nèi)吞滞,執(zhí)行相同的功能,事務(wù)的隔離性將確保每一事務(wù)在系統(tǒng)中認(rèn)為只有該事務(wù)在使用系統(tǒng)。這種屬性有時(shí)稱(chēng)為串行化裁赠,為了防止事務(wù)操作間的混淆殿漠,必須串行化或序列化請(qǐng)求,使得在同一時(shí)間僅有一個(gè)請(qǐng)求用于同一數(shù)據(jù)佩捞。
持久性:在事務(wù)完成以后绞幌,該事務(wù)對(duì)數(shù)據(jù)庫(kù)所作的更改便持久的保存在數(shù)據(jù)庫(kù)之中,并不會(huì)被回滾一忱。由于一項(xiàng)操作通常會(huì)包含許多子操作莲蜘,而這些子操作可能會(huì)因?yàn)橛布膿p壞或其他因素產(chǎn)生問(wèn)題。