- 原子性 :一個事務(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環(huán)節(jié)。事務在執(zhí)行過程中發(fā)生錯誤,會被回滾(Rollback)到事務開始前的狀態(tài),就像這個事務從來沒有執(zhí)行過一樣。
- 一致性 :在事務開始之前和事務結束以后,數(shù)據(jù)庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的默認規(guī)則,這包含資料的精確度、串聯(lián)性以及后續(xù)數(shù)據(jù)庫可以自發(fā)性地完成預定的工作。
- 隔離性 :當兩個或者多個事務并發(fā)訪問(此處訪問指查詢和修改的操作)數(shù)據(jù)庫的同一數(shù)據(jù)時所表現(xiàn)出的相互關系。事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)。
- 持久性 :在事務完成以后,該事務對數(shù)據(jù)庫所作的更改便持久地保存在數(shù)據(jù)庫之中,并且是完全的。
由于一項操作通常會包含許多子操作,而這些子操作可能會因為硬件的損壞或其他因素產(chǎn)生問題,要正確實現(xiàn)ACID并不容易。ACID建議數(shù)據(jù)庫將所有需要更新以及修改的資料一次操作完畢,但實際上并不可行。
目前主要有兩種方式實現(xiàn)ACID:第一種是Write ahead logging,也就是日志式的方式。第二種是Shadow paging。
以上規(guī)則的結果:
1、如果一條日志記錄未被存入硬盤,則它可以被忽略,因為該日志中包含的改動一定屬于未提交的事務。此外,這樣的日志不能反映已持久化在數(shù)據(jù)庫中的改動;
2、日志記錄按順序記錄系統(tǒng)的改動。加鎖協(xié)議(latch protocol)保證如果有對于同一頁改動的兩條日志記錄,則兩條記錄的順序反映對頁發(fā)生改變的順序。
Shadow paging(影子分頁):
http://www.oocities.org/swarooppavi/ShadowPag.pdf
?
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
