---------- 20190626 https://zh.wikipedia.org/wiki/ACID ACID,是指資料庫管理系統(DBMS)在寫入或更新資料的過程中,為保證事務(transaction)是正確可靠的,所必須具備的四個特性:原子性(atomicity,或稱不可分割性)、一致性(consistency)、隔離性(isolation,又稱獨立性)、持久性(durability)。 在資料庫系統中,一個事務是指:由一系列資料庫操作組成的一個完整的邏輯過程。例如銀行轉帳,從原帳戶扣除金額,以及向目標帳戶添加金額,這兩個資料庫操作的總和,構成一個完整的邏輯過程,不可拆分。這個過程被稱為一個事務,具有ACID特性。ACID的概念在ISO/IEC 10026-1:1992文件的第四段內有所說明。 Atomicity(原子性): 資料處理結果, 應該是完成 或是 未完成, 不會有介於兩者之間的狀態. 完成代表(全部完成). 未完成代表(回到開始處理前的狀態, 就像沒有開始處理過一樣). 一個事務(transaction)中的所有操作,或者全部完成,或者全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。即,事務不可分割、不可約簡。 Consistency(一致性): 資料處理前後, 資料庫應維持完整一致. 在事務開始之前和事務結束以後,資料庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設約束、觸發器、級聯回滾等。 Isolation(隔離性): 資料處理方式, 應允許同時隔離讀寫. 資料庫允許多個並發事務同時對其數據進行讀寫和修改的能力,隔離性可以防止多個事務並發執行時由於交叉執行而導致數據的不一致。事務隔離分為不同級別,包括未提交讀(Read uncommitted)、提交讀(read committed)、可重複讀(repeatable read)和串行化(Serializable)。 Durability(持久性): 資料處理後就是持續的保存結果, 不會丟失. 事務處理結束後,對數據的修改就是永久的,即便系統故障也不會丟失。