數(shù)據(jù)庫事務(wù)必須具備ACID特征,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔離性)和Durability(持久性)的英文縮寫。下面解釋這幾個(gè)特性的含義。
原子性:指整個(gè)數(shù)據(jù)庫事務(wù)是不可分割的工作單元。只有事務(wù)中所有的操作執(zhí)行成功,才算整個(gè)事務(wù)成功;事務(wù)中任何一個(gè)SQL語句執(zhí)行失敗,那么已經(jīng)執(zhí)行成功的SQL語句必須撤消,數(shù)據(jù)庫狀態(tài)應(yīng)該退回到執(zhí)行事務(wù)前的狀態(tài)。

一致性:指數(shù)據(jù)庫事務(wù)不能破壞關(guān)系數(shù)據(jù)的完整性及業(yè)務(wù)邏輯上的一致性,例如對銀行轉(zhuǎn)賬事務(wù),不管事務(wù)成功還是失敗,應(yīng)該保證事務(wù)結(jié)束后ACCOUNTS表中智多星和小不點(diǎn)的存款總額為2000元。

隔離性:指的是在并發(fā)環(huán)境中,當(dāng)不同的事務(wù)同時(shí)操作相同的數(shù)據(jù)時(shí),每個(gè)事務(wù)都有各自的完整數(shù)據(jù)空間。

持久性:指的是只要事務(wù)成功結(jié)束,它對數(shù)據(jù)庫所做的操作就必須永久保存下來。即使發(fā)生系統(tǒng)崩潰,重新啟動數(shù)據(jù)庫系統(tǒng)后,數(shù)據(jù)庫還能恢復(fù)到事務(wù)結(jié)束時(shí)的狀態(tài)。事務(wù)ACID特性是由關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS,在本書中也簡稱為數(shù)據(jù)庫系統(tǒng))來實(shí)現(xiàn)的。

數(shù)據(jù)庫管理系統(tǒng)采用日志來保證事務(wù)的原子性、一致性和持久性。日志記錄了事務(wù)對數(shù)據(jù)庫所做的更新,如果某個(gè)事務(wù)在執(zhí)行過程中發(fā)生錯(cuò)誤,就可以根據(jù)日志,撤銷事務(wù)對數(shù)據(jù)庫已做的更新,使數(shù)據(jù)庫退回到執(zhí)行事務(wù)前的初始狀態(tài)。
數(shù)據(jù)庫管理系統(tǒng)采用鎖機(jī)制來實(shí)現(xiàn)事務(wù)的隔離性。當(dāng)多個(gè)事務(wù)同時(shí)更新數(shù)據(jù)庫中相同 的數(shù)據(jù)時(shí),只允許持有鎖的事務(wù)更新該數(shù)據(jù),其他事務(wù)必須等待,直到前一個(gè)事務(wù)釋放了鎖,其他事務(wù)才有機(jī)會更新該數(shù)據(jù)。