事務(wù)的概念
訪問(wèn)并可能更新各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元。事務(wù)由事務(wù)開(kāi)始【begin transaction】和事務(wù)結(jié)束【end transaction】之間執(zhí)行的全部操作組成。
ACID特性
原子性(Atomicity):一個(gè)事務(wù)是一個(gè)不可分割的工作單位。整個(gè)事務(wù)中的所有操作,要么全部完成,要么全部不完成,不可能停滯在中間某個(gè)環(huán)節(jié)蝌麸。事務(wù)在執(zhí)行過(guò)程中發(fā)生錯(cuò)誤,會(huì)被回滾(Rollback)到事務(wù)開(kāi)始前的狀態(tài)艾疟,就像這個(gè)事務(wù)從來(lái)沒(méi)有執(zhí)行過(guò)一樣来吩。
一致性(Consistency):如果事務(wù)是并發(fā)多個(gè),系統(tǒng)也必須如同串行事務(wù)一樣操作蔽莱。即事務(wù)必須始終保持系統(tǒng)處于一致的狀態(tài)误褪,不管在任何給定的時(shí)間并發(fā)事務(wù)有多少。
隔離性(Isolation):如果有兩個(gè)事務(wù)碾褂,運(yùn)行在相同的時(shí)間內(nèi)兽间,執(zhí)行相同的功能,事務(wù)的隔離性將確保每一事務(wù)在系統(tǒng)中認(rèn)為只有該事務(wù)在使用系統(tǒng)正塌∴致裕【這種屬性有時(shí)稱(chēng)為串行化恤溶,為了防止事務(wù)操作間的混淆,必須串行化或序列化請(qǐng)求帜羊,使得在同一時(shí)間僅有一個(gè)請(qǐng)求用于同一數(shù)據(jù)咒程。】
持久性(Durability):在事務(wù)完成以后讼育,該事務(wù)對(duì)數(shù)據(jù)庫(kù)所作的更改便持久的保存在數(shù)據(jù)庫(kù)之中陌兑,并不會(huì)被回滾惨远。
可串行化原理
可串行化調(diào)度:多個(gè)事務(wù)的并發(fā)執(zhí)行時(shí)正確的薄翅,并且僅當(dāng)其結(jié)果與按某一次串行地執(zhí)行這些事務(wù)時(shí)地結(jié)果相同伙狐。
沖突操作:指不同事務(wù)對(duì)同一個(gè)數(shù)據(jù)的讀寫(xiě)操作和寫(xiě)寫(xiě)操作。(沖突操作:讀寫(xiě)痹籍,寫(xiě)讀和寫(xiě)寫(xiě))
沖突可串行化:若調(diào)度S可與一個(gè)串行調(diào)度等價(jià)呢铆,則稱(chēng)S為沖突可串行化的。沖突可串行化可由優(yōu)先圖(有向圖)來(lái)確定蹲缠。優(yōu)先圖G=(V,E)棺克,V是頂點(diǎn)集,E是邊集线定,頂點(diǎn)集由事務(wù)組成娜谊,邊集Ti--->Tj滿足以下三個(gè)條件之一(即若滿足下列條件之一即生成有向邊Ti--->Tj):
1.寫(xiě)讀:Tj的read(Q)之前,Ti執(zhí)行write(Q)
2.讀寫(xiě):Tj的write(Q)之前斤讥,Ti執(zhí)行read(Q)
3.寫(xiě)寫(xiě):Ti的write(Q)之前纱皆,Ti執(zhí)行write(Q)
沖突可串行化調(diào)度是可串行化調(diào)度的充分條件。如圖Figure-1: