ACID數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素 ACID,指數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素的縮寫(xiě)。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個(gè)支持事務(wù)(Transaction)的數(shù)據(jù)庫(kù)系統(tǒng),必需要具有這四種特性
ACID——數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素
ACID,指數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的四個(gè)基本要素的縮寫(xiě)。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個(gè)支持事務(wù)(Transaction)的數(shù)據(jù)庫(kù)系統(tǒng),必需要具有這四種特性,否則在事務(wù)過(guò)程(Transaction processing)當(dāng)中無(wú)法保證數(shù)據(jù)的正確性,交易過(guò)程極可能達(dá)不到交易
原子性:一個(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。
Write ahead logging(預(yù)寫(xiě)日志):
1、事務(wù)所引起的所有改動(dòng)都要記錄在日志中,在事務(wù)提交完成之前,所有的這些記錄必須被寫(xiě)入硬盤(pán);
2、一個(gè)數(shù)據(jù)庫(kù)的緩沖頁(yè)直到被記入日志后才能發(fā)生修改。直到緩沖頁(yè)對(duì)應(yīng)的日志被寫(xiě)入磁盤(pán)之后,該緩沖頁(yè)才會(huì)存入磁盤(pán);
3、當(dāng)緩沖頁(yè)被修改和日志被更新的時(shí)候,在也上必須加上互斥鎖,以保證改動(dòng)被記錄到日志中的順序與它發(fā)生的順序是一致的。
以上規(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ā)生改變的順序。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com