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

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