iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0

ACID 是指關聯式數據庫管理系統(RDBMS)寫入、更新的過程中,為了保證交易( transaction )是正確可靠的,所需具備的四個特性。

  • 原子性(Atomicity):

原子性確保了交易的所有操作,要麼全部完成,要麼全部失敗。如果一個交易包含多個操作(例如新增、更新、刪除數據),當中任何一個操作失敗時,整個交易都應該被回滾(Rollback),即所有操作都被撤銷,不會對數據庫狀態造成影響,確保了交易的完整性。

  • 一致性(Consistency):

一致性確保了交易開始前、結束後資料庫的完整性並沒有被破壞。這表示交易在執行前後必須滿足所有前提和約束。如果一個交易違反了一致性規則,則該交易應該被回滾,以保持數據庫的一致性。

  • 隔離性(Isolation):

資料庫允許多個交易同時對數據進行讀寫、修改,隔離性可以防止多個交易交叉執行而導致數據的不一致。這意味著每個交易都處於隔離狀態,互不干擾。隔離性可分為四個級別:

  1. Read uncommitted: 沒有隔離效果。代表此交易可以讀取到其他交易尚未 commit 的資料。若讀取到其他尚未 commit 的資料稱為 Dirty Read。
  2. Read committed: 不允許讀取尚未 commit 的資料。
  3. Repeatable Read: 查詢中的資料會被鎖定,被免被其他使用者更改或刪除,保證交易中每次都可以讀到相同的資料。但仍然允許其他使用者新增資料。
  4. Serializable: 最高隔離級別,它要求交易之間彼此完全隔離。這意味著任何交易都不能在其他交易執行時修改或讀取相同的數據。這確保了最高的數據一致性,但可能會導致性能下降,因為它限制了同時執行的交易數量。
  • 持久性(Durability):

持久性確保一旦交易成功提交,其結果將永久保存在數據庫中,即使數據庫系統發生故障也不應該丟失。

ACID 特性確保了數據庫系統處理交易時的可靠性和一致性,這對於需要高度信任和數據完整性的應用程序(如銀行系統、訂單處理系統等)至關重要。然而,ACID 特性的實現通常會導致性能開銷,因此在某些情況下,可以考慮使用較寬鬆的交易模型(例如 BASE)來實現更高的性能。

資料來源: wiki


上一篇
CAP 定理? Day21
下一篇
HTTP Method? Day23
系列文
從餐飲業轉職成小白工程師的所見所學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言