數(shù)據(jù)庫事務(wù)概念
什么是數(shù)據(jù)庫事務(wù)?
事務(wù)(transaction)是由指邏輯上對數(shù)據(jù)的的一組操作, 這組操作要么一次全部成功,如果這組操作全部失敗,是不可分割的一個(gè)工作單位。
數(shù)據(jù)庫事務(wù)的四個(gè)基本性質(zhì)(ACID)
1. 原子性(Atomicity)
事務(wù)的原子性是指事務(wù)是一個(gè)不可分割的工作單位,這組操作要么全部發(fā)生,否則全部不發(fā)生。
2. 一致性(Consistency)
在事務(wù)開始以前,被操作的數(shù)據(jù)的完整性處于一致性的狀態(tài),事務(wù)結(jié)束后,被操作的數(shù)據(jù)的完整性也必須處于一致性狀態(tài)。
拿銀行轉(zhuǎn)賬來說,一致性要求事務(wù)的執(zhí)行不應(yīng)改變A、B 兩個(gè)賬戶的金額總和。如果沒有這種一致性要求,轉(zhuǎn)賬過程中就會發(fā)生錢無中生有,或者不翼而飛的現(xiàn)象。事務(wù)應(yīng)該把數(shù)據(jù)庫從一個(gè)一致性狀態(tài)轉(zhuǎn)換到另外一個(gè)一致性狀態(tài)。
3. 隔離性(Isolation)
事務(wù)隔離性要求系統(tǒng)必須保證事務(wù)不受其他并發(fā)執(zhí)行的事務(wù)的影響,也即要達(dá)到這樣一種效果:對于任何一對事務(wù)T1 和 T2,在事務(wù) T1 看來,T2 要么在 T1 開始之前已經(jīng)結(jié)束,要么在 T1 完成之后才開始執(zhí)行。這樣,每個(gè)事務(wù)都感覺不到系統(tǒng)中有其他事務(wù)在并發(fā)地執(zhí)行。
4. 持久性(Durability)
一個(gè)事務(wù)一旦成功提交,它對數(shù)據(jù)庫的改變必須是永久的,即便是數(shù)據(jù)庫發(fā)生故障也應(yīng)該不回對其產(chǎn)生任何影響。