Back to Blog

資料庫交易的 ACID 原則

在資料庫管理系統中,交易 (Transaction) 是一系列作為單一邏輯工作單元執行的操作。一個交易中的所有操作,要麼全部成功,要麼全部失敗。為了確保交易的正確性,資料庫系統必須遵循 ACID 原則。

#ACID 原則

ACID 是四個單字的縮寫:

  • 原子性 (Atomicity): 交易中的所有操作,要麼全部完成,要麼全部不完成。如果交易在執行的過程中發生錯誤,系統會將資料還原到交易開始前的狀態。
  • 一致性 (Consistency): 交易必須讓資料庫從一個一致的狀態轉移到另一個一致的狀態。交易的執行不能破壞資料庫的完整性約束。
  • 隔離性 (Isolation): 多個交易並行執行時,一個交易的執行不應該被其他交易干擾。每個交易都應該感覺不到其他交易的存在。
  • 持久性 (Durability): 一旦交易成功提交,它對資料庫的修改就應該是永久的,即使系統發生故障也不會遺失。

#範例

假設我們要從 A 帳戶轉帳 100 元到 B 帳戶。這個轉帳操作可以被視為一個交易,它包含了兩個操作:

  1. 從 A 帳戶中扣除 100 元。
  2. 在 B 帳戶中增加 100 元。
  • 原子性: 這兩個操作必須要麼全部成功,要麼全部失敗。不能發生 A 帳戶扣了錢,但 B 帳戶沒收到錢的情況。
  • 一致性: 在交易開始前和結束後,A 和 B 帳戶的總金額應該要保持不變。
  • 隔離性: 如果同時有另一個交易也要對 A 或 B 帳戶進行操作,這兩個交易不應該互相干擾。
  • 持久性: 一旦轉帳成功,這個結果就應該被永久地儲存在資料庫中。