什么是ACID?
在傳統的關系型數據庫(RDBMS)中,ACID是四個非常重要的性質。所謂的ACID性質,指的是:
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔離性(Isolation)
- 一致性(Duration)
要理解數據庫的ACID性質,我們首先要明白事務(Transaction)的概念。
事務(Transaction)
所謂的事務,指的就是一個或一些操作組成的序列。對于數據庫來說,這組操作序列要么全都執行,要么全都不執行,是數據庫的一個不可分割的工作單位。
ACID的意義
原子性
原子性指的是一個事務的操作要么全部被執行,要么全部不被執行。這個事務可以什么都不包含,也可以包含一組復雜的操作。但不論是什么樣的事務,在面對系統崩潰,忽然斷電,出現錯誤或者其他異常情形的時候,都不會出現其中的部分操作被執行而另一部分操作未被執行的情況。
一致性
一致性指的是在事務開始前和事務結束后,數據庫的完整性約束沒有破壞。也就是說,事務不能破壞關系數據的完整性及業務邏輯的一致性。
隔離性
隔離性指的是多個事務之間相互隔離。
一個事務在另一個事務完成之前不會讀到其結果。一個事務查看數據狀態時,數據要么處于另一事務修改它之前的狀態,要么處于另一事務修改它之后的狀態,而不會處于中間狀態。
如果兩個事務并發執行,每一個事務都擁有各自完整的數據空間。就好像兩個事務順序執行一樣。如果一個事務需要訪問另一個事務正在寫的數據,則這個事務需要等到另一個事務完成其操作。
持久性
持久性指的是一旦事務完成,其對數據所進行的修改便持久地存在于數據庫中(例如存儲在硬盤上)。同樣的,事務已經完成的狀態也不會再改變。