事務(wù)的持續(xù)性是指事務(wù)一旦提交,對數(shù)據(jù)庫的修改就是永遠的。數(shù)據(jù)庫管理系統(tǒng)中要求數(shù)據(jù)庫系統(tǒng)需維護其原子性、一致性、隔離性和持久性等事務(wù)特性。其中持久性就是指在事務(wù)完成以后,該事務(wù)所對數(shù)據(jù)庫所作的更改便持久的保存在數(shù)據(jù)庫之中,并不會被回滾。
一、事務(wù)機制
事務(wù)機制是數(shù)據(jù)庫特有的術(shù)語,單個邏輯工作單元執(zhí)行的一系列操作,同步發(fā)生數(shù)據(jù)更新時,防止數(shù)據(jù)的不一致。簡單來說,數(shù)據(jù)庫事務(wù)就是用來保證這種情況下交易的平穩(wěn)性和可預(yù)測性的技術(shù)。
二、ACID屬性
(1) 原子性
事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。通常,與某個事務(wù)關(guān)聯(lián)的操作具有共同的目標,并且是相互依賴的。如果系統(tǒng)只執(zhí)行這些操作的一個子集,則可能會破壞事務(wù)的總體目標。原子性消除了系統(tǒng)處理操作子集的可能性。
(2) 一致性
事務(wù)在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時,所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如 B 樹索引或雙向鏈表)都必須是正確的。某些維護一致性的責任由應(yīng)用程序開發(fā)人員承擔,他們必須確保應(yīng)用程序已強制所有已知的完整性約束。例如,當開發(fā)用于轉(zhuǎn)帳的應(yīng)用程序時,應(yīng)避免在轉(zhuǎn)帳過程中任意移動小數(shù)點。
(3) 隔離性
由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因為它能夠重新裝載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。當事務(wù)可序列化時將獲得最高的隔離級別。在此級別上,從一組可并行執(zhí)行的事務(wù)獲得的結(jié)果與通過連續(xù)運行每個事務(wù)所獲得的結(jié)果相同。由于高度隔離會限制可并行執(zhí)行的事務(wù)數(shù),所以一些應(yīng)用程序降低隔離級別以換取更大的吞吐量。
(4) 持久性
事務(wù)完成之后,它對于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)致命的系統(tǒng)故障也將一直保持。