天天看點

資料庫事務的ACID特性

什麼是事務

事務就是一組原子性的SQL操作,或者說是一個獨立的工作單元。如果資料庫引擎能夠成功的對資料庫應用該組查詢的全部語句,那麼就執行該組查詢。如果其中有任何一條語句因為崩潰或其他原因無法執行,那麼剩餘沒有執行的所有語句都不會執行,執行過的語句復原(rollback),恢複到這個SQL語句單元未執行前的狀态。換句話說,事務内的語句,要麼全部執行成功,要麼全部執行失敗。

什麼是ACID

ACID表示原子性(atomicity)、一緻性(consistency)、隔離性(isolation)和持久性(durability)。一個運作良好的事務處理系統,必須具備這些标準特征。

原子性(atomicity)

一個事務必須被視為一個不可分割的最小工作單元,整個事務中的所有操作要麼全部送出成功,要麼全部失敗復原,對于一個事務來說,不可能隻執行其中的一部分操作,這就是事務的原子性。

一緻性(consistency)

資料庫總是從一個一緻性的狀态轉換到另外一個一緻性的狀态。當SQL語句執行過程中某一條語句執行失敗,最終也不會出現業務異常的情況,因為事務最終沒有送出,是以事務中所做的修改也不會儲存到資料庫中。

隔離性(isolation)

一般來說,一個事務所做的修改在最終送出以前,對其他事務是不可見的。即目前事務對資料庫做了修改,但是沒有送出,則此時對于另外一個事務來說,資料庫的狀态沒有改變。

持久性(durability)

一旦事務送出,則其所做的修改就會永久儲存到資料庫中。此時即使系統崩潰,修改的資料也不會丢失。