資料庫的ACID(原子性 一致性 隔離性與永續性)

2021-08-19 19:23:24 字數 1741 閱讀 2241

資料庫管理系統中事務(transaction)的四個特性(分析時根據首字母縮寫依次解釋):原子性(atomicity)、一致性(consistency)、隔離性(isolation)、永續性(durability)所謂事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。(執行單個邏輯功能的一組指令或操作稱為事務)

原子性是指事務是乙個不可再分割的工作單元,事務中的操作要麼都發生,要麼都不發生。

可採用「a向b轉賬」這個例子來說明解釋

在dbms中,預設情況下一條sql就是乙個單獨事務,事務是自動提交的。只有顯式的使用start transaction開啟乙個事務,才能將乙個**塊放在事務中執行。

一致性是指在事務開始之前和事務結束以後資料庫的完整性約束沒有被破壞。這是說資料庫事務不能破壞關係資料的完整性以及業務邏輯上的一致性

如a給b轉賬,不論轉賬的事務操作是否成功,其兩者的存款總額不變(這是業務邏輯的一致性,至於資料庫關係約束的完整性就更好理解了)。

保障機制(也從兩方面著手):資料庫層面會在乙個事務執行之前和之後,資料會符合你設定的約束唯一約束,外來鍵約束,check約束等)和觸發器設定;此外,資料庫的內部資料結構(如 b 樹索引或雙向鍊錶)都必須是正確的。業務的一致性一般由開發人員進行保證,亦可轉移至資料庫層面。

多個事務併發訪問時,事務之間是隔離的,乙個事務不應該影響其它事務執行效果。

在併發環境中,當不同的事務同時操縱相同的資料時,每個事務都有各自的完整資料空間。由併發事務所做的修改必須與任何其他併發事務所做的修改隔離。事務檢視資料更新時,資料所處的狀態要麼是另一事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會檢視到中間狀態的資料

事務最複雜問題都是由事務隔離性引起的。完全的隔離性是不現實的,完全的隔離性要求資料庫同一時間只執行一條事務,這樣會嚴重影響效能。

關於隔離性中的事務隔離等級(事務之間影響),參見相應博文

這是最好理解的乙個特性:永續性,意味著在事務完成以後,該事務所對資料庫所作的更改便持久的儲存在資料庫之中,並不會被回滾。(完成的事務是系統永久的部分,對系統的影響是永久性的,該修改即使出現致命的系統故障也將一直保持)

write ahead logging:sql server中使用了wal(write-ahead logging)技術來保證事務日誌的acid特性,在資料寫入到資料庫之前,先寫入到日誌,再將日誌記錄變更到儲存器中。

acid 事務的原子性 一致性 隔離性 永續性

原子性 多個事情組成乙個單元,要麼同時成功或失敗,不能只執行其中乙個 一致性 事務處理要將資料庫從一種狀態轉變為另一種狀態。一旦提交了修改資料,那麼其它人讀取這個資料,也是被修改後的資料 隔離性 在事務處理提交之前,事務處理的效果不能由系統中其它事務處理 多個使用者,不能同時讀寫同乙個資料,應該有先...

acid 事務的原子性 一致性 隔離性 永續性

原子性 多個事情組成乙個單元,要麼同時成功或失敗,不能只執行其中乙個 一致性 事務處理要將資料庫從一種狀態轉變為另一種狀態。一旦提交了修改資料,那麼其它人讀取這個資料,也是被修改後的資料 隔離性 在事務處理提交之前,事務處理的效果不能由系統中其它事務處理 多個使用者,不能同時讀寫同乙個資料,應該有先...

資料庫一致性

資料庫一致性 database consistency 是指事務執行的結果必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。保證資料庫一致性是指當事務完成時,必須使所有資料都具有一致的狀態。在關係型資料庫中,所有的規則必須應用到事務的修改上,以便維護所有資料的完整性。保證資料庫的一致性是資料庫管理...