做學(xué)問(wèn)馬虎不得啊。
ACID Properties
ACID屬性
事務(wù)可以由四個(gè)基本性質(zhì)來(lái)定義,簡(jiǎn)記為首字母縮寫:ACID(原子性? atomicity、一致性? consistency、隔離性? isolation、持久性 durability)。
Atomicity
原子性
原子性保證了要么所有更新都已完成,要么全部都未發(fā)生。由于事務(wù)保證的原子性,你不需要親自編寫代碼來(lái)處理諸如一些已更新完成,其他卻失敗了的狀況。
對(duì)照剛才的關(guān)于課程安排的例子,如果從第一個(gè)課程的名單里移除此學(xué)生成功,但是添加他到第二個(gè)課程的名單時(shí)失敗,那么事務(wù)就會(huì)中止,并且此學(xué)生最終不會(huì)被從第一個(gè)課程中的名單移除。
Consistency
一致性
一致性意味著事務(wù)結(jié)束后系統(tǒng)的數(shù)據(jù)依然保證一致。在事務(wù)開(kāi)始之前,數(shù)據(jù)保持有效的狀態(tài),事務(wù)結(jié)束后也如此。
一致性可以用討論原子性時(shí)的同樣情形,即把一個(gè)學(xué)生從一個(gè)課程轉(zhuǎn)移到另一個(gè)來(lái)描述。如果把學(xué)生從第一個(gè)課程移除失敗,但是添加到第二個(gè)課程成功,那么這個(gè)學(xué)生將被同時(shí)登記在兩個(gè)課程上。這是不合法的情形,數(shù)據(jù)庫(kù)的數(shù)據(jù)將不能保持一致。一致性表
示,事務(wù)的結(jié)果必須使數(shù)據(jù)庫(kù)仍保持?jǐn)?shù)據(jù)一致的狀態(tài)。所以事務(wù)的部分操作失敗的話,所有其他部分也要回到原先的狀態(tài),就象什么都沒(méi)發(fā)生一樣。
Isolation
隔離性
多個(gè)用戶可能同時(shí)對(duì)同一個(gè)數(shù)據(jù)庫(kù)進(jìn)行操作。隔離性保證了在事務(wù)完成之前,該事務(wù)外部不能看到事務(wù)里的數(shù)據(jù)的改變。也不能訪問(wèn)一些中間狀態(tài),因?yàn)榧偃缡聞?wù)終止的話,這些狀態(tài)將永遠(yuǎn)不會(huì)發(fā)生。
如果你做一個(gè)查詢來(lái)獲取所有課程的學(xué)生名單,與此同時(shí),一個(gè)事務(wù)正在運(yùn)行,把一個(gè)學(xué)生從一個(gè)課程轉(zhuǎn)移到另外一個(gè),那么兩個(gè)課程的名單上都不會(huì)出現(xiàn)這個(gè)學(xué)生。隔離性保證了事務(wù)外無(wú)法看到事務(wù)內(nèi)的任何中間狀態(tài)或結(jié)果。
Durability
持久性
持久性意味著即便是系統(tǒng)當(dāng)機(jī)也能保證一致性的狀態(tài)。如果一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)當(dāng)機(jī),它必須保證已完成的事務(wù)確實(shí)已經(jīng)寫入數(shù)據(jù)庫(kù)。
---面試前腦子中還迸出這個(gè)問(wèn)題,結(jié)果人家真的問(wèn)到了,運(yùn)氣好,運(yùn)氣差。