資料庫管理系統在確保資料庫運作正確性方面,交易(transaction)應具備 ACID 特性。除了 Atomicity(單元性)和 Consistency(一致性)之外,另兩項特性為:
1. Isolation(隔離性)
定義:
隔離性確保同時進行的交易彼此之間不會互相干擾。每個交易在未完成之前對其他交易是不可見的。這樣可以防止多個交易並發執行時數據的不一致性。
作用:
避免競爭條件: 隔離性防止了多個交易並發訪問同一數據時出現競爭條件,確保每個交易執行的結果是獨立的。
提供一致性視圖: 隔離性保證每個交易在執行過程中看到的數據是一致且獨立的,即使其他交易正在修改這些數據。
實現方法:
鎖機制(Locking Mechanisms): 使用共享鎖(Shared Lock)和排他鎖(Exclusive Lock)來控制對數據的並發訪問。
多版本控制(Multi-Version Concurrency Control, MVCC): 每次修改數據都創建數據的新版本,讓每個交易讀取自己一致性視圖的數據版本。
2. Durability(持久性)
定義:
持久性確保一旦交易提交,對數據的修改將永久保存,即使系統崩潰或電源故障,數據依然可以恢復。這保證了提交的交易結果在任何情況下都不會丟失。
作用:
數據安全性: 持久性確保提交的數據修改在系統故障後依然存在,防止數據丟失。
恢復能力: 系統崩潰後,通過重做(Redo)日誌恢復交易結果,確保數據庫狀態一致。
實現方法:
事務日誌(Transaction Logs): 記錄所有對數據的修改操作。在交易提交之前,所有修改都會寫入日誌。系統崩潰後,可以通過日誌恢復已提交的交易。
寫前日誌(Write-Ahead Logging, WAL): 在數據真正寫入數據庫之前,先將修改操作寫入日誌,確保日誌先行於數據。
這兩項特性(Isolation 和 Durability)與 Atomicity 和 Consistency 一起,構成了 ACID 特性,保證了交易處理的可靠性和數據庫系統的穩定性。