事務(wù)的ACID原則
atomic原子性,事務(wù)包含一批讀寫(xiě)操作要么都提交,要不都回滾,在并發(fā)狀態(tài)下另一個(gè)線(xiàn)程看到的這個(gè)線(xiàn)程操作的事務(wù)一定是完整的,要不都沒(méi)看見(jiàn),要么都看見(jiàn),不存在看見(jiàn)一半的情況。
consiste一致性,對(duì)數(shù)字的一組特定的約束條件必須成立,例如轉(zhuǎn)賬業(yè)務(wù)中的進(jìn)賬和出賬必須能相抵。但是,一致性的這種概念取決于應(yīng)用程序?qū)Σ蛔兞康睦斫猓瑧?yīng)用程序負(fù)責(zé)正確定義它的事務(wù),并保持一致性。這并不是數(shù)據(jù)庫(kù)可以保證的事情:如果你寫(xiě)入違反不變量的臟數(shù)據(jù),數(shù)據(jù)庫(kù)也無(wú)法阻止你。
isolation隔離性,隔離性意味著,同時(shí)執(zhí)行的事務(wù)是相互隔離的:它們不能相互冒犯。在事務(wù)執(zhí)行時(shí)不可避免被多個(gè)線(xiàn)程同時(shí)操作一條數(shù)據(jù),例如一個(gè)值做加法,A拿到42,進(jìn)行加一,在加的過(guò)程中B也拿到了42,也進(jìn)行加一操作,這是A把結(jié)果43更新,B也把結(jié)果43更新,因?yàn)榘l(fā)生了兩次增長(zhǎng),值應(yīng)該從42增至44;但由于競(jìng)態(tài)條件,實(shí)際上只增至 43,如下圖 。

傳統(tǒng)的數(shù)據(jù)庫(kù)教科書(shū)將隔離性形式化為可串行化(Serializability),數(shù)據(jù)庫(kù)確保當(dāng)多個(gè)事務(wù)被提交時(shí),結(jié)果需要與它們串行運(yùn)行(一個(gè)接一個(gè))是一樣的。
durabulity持久性,事務(wù)的完成條件需要包括持久化,也就是在存儲(chǔ)中保存,即一旦事務(wù)成功完成,即使發(fā)生硬件故障或數(shù)據(jù)庫(kù)崩潰,寫(xiě)入的任何數(shù)據(jù)也不會(huì)丟失。當(dāng)然,完美的持久性是不存在的 :如果所有硬盤(pán)和所有備份同時(shí)被銷(xiāo)毀,那顯然沒(méi)有任何數(shù)據(jù)庫(kù)能救得了你。
浙公網(wǎng)安備 33010602011771號(hào)