ACID數據庫事務正確執行的四個基本要素 ACID,指數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個支持事務(Transaction)的數據庫系統,必需要具有這四種特性
ACID——數據庫事務正確執行的四個基本要素
ACID,指數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個支持事務(Transaction)的數據庫系統,必需要具有這四種特性,否則在事務過程(Transaction processing)當中無法保證數據的正確性,交易過程極可能達不到交易
原子性:一個事務(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
一致性:在事務開始之前和事務結束以后,數據庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的默認規則,這包含資料的精確度、串聯性以及后續數據庫可以自發性地完成預定的工作。
隔離性:當兩個或者多個事務并發訪問(此處訪問指查詢和修改的操作)數據庫的同一數據時所表現出的相互關系。事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)。
持久性:在事務完成以后,該事務對數據庫所作的更改便持久地保存在數據庫之中,并且是完全的。
由于一項操作通常會包含許多子操作,而這些子操作可能會因為硬件的損壞或其他因素產生問題,要正確實現ACID并不容易。ACID建議數據庫將所有需要更新以及修改的資料一次操作完畢,但實際上并不可行。
目前主要有兩種方式實現ACID:第一種是Write ahead logging,也就是日志式的方式。第二種是Shadow paging。
Write ahead logging(預寫日志):
1、事務所引起的所有改動都要記錄在日志中,在事務提交完成之前,所有的這些記錄必須被寫入硬盤;
2、一個數據庫的緩沖頁直到被記入日志后才能發生修改。直到緩沖頁對應的日志被寫入磁盤之后,該緩沖頁才會存入磁盤;
3、當緩沖頁被修改和日志被更新的時候,在也上必須加上互斥鎖,以保證改動被記錄到日志中的順序與它發生的順序是一致的。
以上規則的結果:
1、如果一條日志記錄未被存入硬盤,則它可以被忽略,因為該日志中包含的改動一定屬于未提交的事務。此外,這樣的日志不能反映已持久化在數據庫中的改動;
2、日志記錄按順序記錄系統的改動。加鎖協議(latch protocol)保證如果有對于同一頁改動的兩條日志記錄,則兩條記錄的順序反映對頁發生改變的順序。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com