什么是事務?從表現上來看,事務是一個操作序列,這些操作要么都執行,要么都不執行,它是一個原子單元;從結果上看,事務是維護數據庫或對象狀態一致性的工作單位。事務的主要屬性包括有:
- 原子性(ATOMICITY): 一個事務要被完全的無二義性的做完或撤消。在任何操作出現一個錯誤的情況下,構成事務的所有操作的效果必須被撤消,數據應被回滾到以前的狀態。
- 一致性(CONSISTENCY): 一個事務應該保護所有定義在數據上的不變的屬性(例如完整性約束)。在完成了一個成功的事務時,數據應處于一致的狀態。換句話說,一個事務應該把系統從一個一致狀態轉換到另一個一致狀態。舉個例子,在關系數據庫的情況下, 一個一致的事務將保護定義在數據上的所有完整性約束。
- 隔離性(ISOLATION): 在同一個環境中可能有多個事務并發執行,而每個事務都應表現為獨立執行。串行的執行一系列事務的效果應該同于并發的執行它們。這要求兩件事:
- 在一個事務執行過程中,數據的中間的(可能不一致)狀態不應該被暴露給所有的其他事務。
- 兩個并發的事務應該不能操作同一項數據。數據庫管理系統通常使用鎖來實現這個特征。
- 持久性(DURABILITY): 一個被完成的事務的效果應該是持久的。
在任何情況下都要求應維護一個工作單元的成功或失敗,并且在失敗的情況下將所有的資源返回到失敗前的數據狀態中。這在金融、貿易、電子商業等領域是要嚴格遵守的。