在資料庫管理系統中,交易(Transaction)是資料庫的邏輯工作單元,包含一組操作,這些操作必須全部成功或全部失敗。交易的四個基本特性統稱為ACID特性,它們分別是原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。以下是這四個特性的詳細說明:
原子性確保交易中的所有操作要麼全部完成,要麼全部不完成。這意味著,對於一個交易中的所有操作,資料庫系統保證它們要麼完全應用於資料庫,要麼在失敗時對資料庫沒有任何影響。
假設在銀行轉帳交易中,從帳戶A轉移資金到帳戶B。這涉及兩個操作:從帳戶A扣款和向帳戶B存款。原子性確保這兩個操作要麼都成功,要麼都失敗。如果扣款成功但存款失敗,則整個交易會被回滾,帳戶A的資金不會減少。
一致性確保交易在執行前後,資料庫始終處於一致的狀態。這意味著交易的執行不會違反資料庫的完整性約束。任何交易的完成都必須保證資料庫從一個有效狀態轉換到另一個有效狀態。
假設資料庫中有一個約束條件,要求每個帳戶的餘額不能為負。一致性確保在進行任何交易後,帳戶餘額仍然遵守這個約束條件。如果某個交易試圖將某個帳戶的餘額設置為負數,這個交易將被拒絕,並且資料庫狀態保持不變。
隔離性確保同一時間執行的多個交易互不干擾,每個交易都應該看作是獨立執行的。這意味著,一個交易的中間狀態對其他交易是不可見的,直到這個交易完成。
假設有兩個同時進行的交易,交易1將從帳戶A轉帳到帳戶B,交易2將從帳戶C轉帳到帳戶D。隔離性確保交易1的中間狀態(如只完成扣款而未完成存款)對交易2不可見。交易2將不會讀取到交易1的中間狀態,從而確保每個交易的獨立性。
持久性確保一旦交易提交(commit),其對資料庫的變更是永久的,即使系統發生故障(如斷電或崩潰),這些變更也不會丟失。
假設交易將一筆資金從帳戶A轉移到帳戶B,並提交了這個交易。持久性確保即使在交易提交後立即發生系統崩潰,這個轉帳操作仍然會在系統恢復後保持有效,帳戶A的資金減少而帳戶B的資金增加。
ACID特性是確保資料庫交易處理正確性和可靠性的關鍵。原子性確保交易的全部操作要麼成功要麼失敗,一致性確保交易前後資料庫處於一致狀態,隔離性確保交易之間互不干擾,持久性確保交易提交後變更是永久的。了解和實現這些特性有助於設計穩健可靠的資料庫應用系統。