ACID今膊,是指在數(shù)據(jù)庫管理系統(tǒng)(DBMS)中事務(wù)所具有的四個特性:原子性(Atomicity)、一致性(Consistency)蝶糯、隔離性(Isolation乐疆,又稱獨立性)划乖、持久性(Durability)。
在數(shù)據(jù)庫系統(tǒng)中挤土,一個事務(wù)是指由一系列數(shù)據(jù)庫操作組成的一個完整的邏輯過程琴庵。例如銀行轉(zhuǎn)帳,從原賬戶扣除金額仰美,以及向目標(biāo)賬戶添加金額迷殿,這兩個數(shù)據(jù)庫操作的總和構(gòu)成一個完整的邏輯過程,不可拆分咖杂。這個過程被稱為一個事務(wù)庆寺,具有ACID特性。
原子性
整個事務(wù)中的所有操作诉字,要么全部完成懦尝,要么全部不完成,不可能停滯在中間某個環(huán)節(jié)壤圃。事務(wù)在執(zhí)行過程中發(fā)生錯誤陵霉,會被回滾(Rollback)到事務(wù)開始前的狀態(tài),就像這個事務(wù)從來沒有執(zhí)行過一樣伍绳。
一致性
在事務(wù)開始之前和事務(wù)結(jié)束以后踊挠,數(shù)據(jù)庫的完整性約束沒有被破壞。
隔離性
兩個事務(wù)的執(zhí)行是互不干擾的冲杀,一個事務(wù)不可能看到其他事務(wù)運行時效床,中間某一時刻的數(shù)據(jù)。
持久性
在事務(wù)完成以后权谁,該事務(wù)所對數(shù)據(jù)庫所作的更改便持久的保存在數(shù)據(jù)庫之中剩檀,并不會被回滾。
由于一項操作通常會包含許多子操作旺芽,而這些子操作可能會因為硬件的損壞或其他因素產(chǎn)生問題谨朝,要正確實現(xiàn)ACID并不容易卤妒。ACID建議數(shù)據(jù)庫將所有需要更新以及修改的資料一次操作完畢,但實際上并不可行字币。
目前主要有兩種方式實現(xiàn)ACID:第一種是Write ahead logging,也就是日志式的方式共缕。第二種是Shadow paging洗出。