acid,指資料庫事務正確執行的四個基本要素的縮寫。包含:原子性(atomicity)、一致性(consistency)、隔離性(isolation)、永續性(durability)。乙個支援事務(transaction)的資料庫,必須要具有這四種特性,否則在事務過程(transaction processing)當中無法保證資料的正確性,交易過程極可能達不到交易方的要求。
整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
乙個事務可以封裝狀態改變(除非它是乙個唯讀的)。事務必須始終保持系統處於一致的狀態,不管在任何給定的時間併發事務有多少。
其主要特徵是保護性和不變性(preserving an invariant),以轉賬案例為例,假設有五個賬戶,每個賬戶餘額是100元,那麼五個賬戶總額是500元,如果在這個5個賬戶之間同時發生多個轉賬,無論併發多少個,比如在a與b賬戶之間轉賬5元,在c與d賬戶之間轉賬10元,在b與e之間轉賬15元,五個賬戶總額也應該還是500元,這就是保護性和不變性。
如果有兩個事務,執行在相同的時間內,執行相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為序列化,為了防止事務操作間的混淆,必須序列化或序列化請求,使得在同一時間僅有乙個請求用於同一資料。
在事務完成以後,該事務對資料庫所作的更改便持久的儲存在資料庫之中,並不會被回滾。
目前主要有兩種方式實現acid:第一種是write ahead logging(wal),也就是日誌式的方式(現代資料庫均基於這種方式)。第二種是shadow paging。
shadow paging的缺點就是事務提交時要輸出多個塊(不同的資料檔案放到不同的位置),這使得提交的開銷很大,而且以塊為單位,很難應用到允許多個事務併發執行的情況——這是它致命的缺點。
wal 的中心思想是對資料檔案的修改必須是只能發生在這些修改已經記錄了日誌之後。在出現崩潰的情況下,每次修改操作先記錄日誌,若提交後失敗則利用日誌重新修改資料(這叫向前滾動恢復,也叫做 redo) ;修改前的資料也記錄乙份日誌,然後那些未提交的事務做的修改將被恢復成未修改前的狀態 (這叫向後滾動恢復 - undo)。
ACID 資料庫事務正確執行的四個基本要素
acid 資料庫事務正確執行的四個基本要素 acid,指資料庫事務正確執行的四個基本要素的縮寫。包含 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 乙個支援事務 transaction 的資料庫系統,必需要具有這四種特性,否則在...
ACID資料庫事務正確執行的四個基本要素的縮寫
acid,指資料庫事務正確執行的四個基本要素的縮寫。包含 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 乙個支援事務 transaction 的資料庫,必須要具有這四種特性,否則在事務過程 transaction process...
資料庫事務四個特性
如果乙個資料庫聲稱支援事務的操作,那麼該資料庫必須要具備以下四個特性 原子性 atomicity 原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影響。一致性 consistency 一致性是指事務必須使資料...