定義: 所謂事務(wù),它是一個操作序列暮刃,這些操作要么都執(zhí)行垫桂,要么都不執(zhí)行,它是一個不可分割的工作單位
** ACID: **是指在可靠數(shù)據(jù)庫管理系統(tǒng)(DBMS)中专控,事務(wù)(transaction)所應(yīng)該具有的四個特性:原子性(Atomicity)抹凳、一致性(Consistency)、隔離性(Isolation)伦腐、持久性(Durability).這是可靠數(shù)據(jù)庫所應(yīng)具備的幾個特性.
1.原子性
原子性是指事務(wù)是一個不可再分割的工作單位赢底,事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生柏蘑。
在事務(wù)中的扣款和加款兩條語句幸冻,要么都執(zhí)行,要么就都不執(zhí)行咳焚。否則如果只執(zhí)行了扣款語句洽损,就提交了,此時如果突然斷電革半,A賬號已經(jīng)發(fā)生了扣款碑定,B賬號卻沒收到加款流码,在生活中就會引起糾紛
2.一致性
一致性是指在事務(wù)開始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫的完整性約束沒有被破壞延刘。這是說數(shù)據(jù)庫事務(wù)不能破壞
關(guān)系數(shù)據(jù)的完整性以及業(yè)務(wù)邏輯上的一致性漫试。
對銀行轉(zhuǎn)帳事務(wù),不管事務(wù)成功還是失敗碘赖,應(yīng)該保證事務(wù)結(jié)束后ACCOUNT表中aaa和bbb的存款總額為2000元
3.隔離性
多個事務(wù)并發(fā)訪問時驾荣,事務(wù)之間是隔離的,一個事務(wù)不應(yīng)該影響其它事務(wù)運行效果普泡。
這指的是在并發(fā)環(huán)境中播掷,當(dāng)不同的事務(wù)同時操縱相同的數(shù)據(jù)時,每個事務(wù)都有各自的完整數(shù)據(jù)空間撼班。由并發(fā)事務(wù)所做的修改必須與任何其他并發(fā)事務(wù)所做的修改隔離歧匈。事務(wù)查看數(shù)據(jù)更新時权烧,數(shù)據(jù)所處的狀態(tài)要么是另一事務(wù)修改它之前的狀態(tài)般码,要么是另一事務(wù)修改它之后的狀態(tài)宫静,事務(wù)不會查看到中間狀態(tài)的數(shù)據(jù)孤里。
事務(wù)之間的相互影響
事務(wù)之間的相互影響分為幾種,分別為:臟讀,不可重復(fù)讀霍衫,幻讀敦跌,丟失更新
(1)臟讀
臟讀意味著一個事務(wù)讀取了另一個事務(wù)未提交的數(shù)據(jù)麸俘,而這個數(shù)據(jù)是有可能回滾的
(2)不可重復(fù)讀
不可重復(fù)讀意味著搂誉,在數(shù)據(jù)庫訪問中并级,一個事務(wù)范圍內(nèi)兩個相同的查詢卻返回了不同數(shù)據(jù)。這是由于查詢時系統(tǒng)中其他事務(wù)修改的提交而引起的。如下案例履婉,事務(wù)1必然會變得糊涂,不知道發(fā)生了什么。
(3)幻讀(虛讀)
幻讀,是指當(dāng)事務(wù)不是獨立執(zhí)行時發(fā)生的一種現(xiàn)象涨颜,例如第一個事務(wù)對一個表中的數(shù)據(jù)進行了修改星持,這種修改涉及到表中的全部數(shù)據(jù)行。同時饥努,第二個事務(wù)也修改這個表中的數(shù)據(jù)缠诅,這種修改是向表中插入一行新數(shù)據(jù)褥伴。那么谅将,以后就會發(fā)生操作第一個事務(wù)的用戶發(fā)現(xiàn)表中還有沒有修改的數(shù)據(jù)行,就好象發(fā)生了幻覺一樣.
(4)丟失更新
兩個事務(wù)同時讀取同一條記錄重慢,A先修改記錄饥臂,B也修改記錄(B是不知道A修改過),B提交數(shù)據(jù)后B的修改結(jié)果覆蓋了A的修改結(jié)果伤锚。
4.持久性
持久性擅笔,意味著在事務(wù)完成以后,該事務(wù)所對數(shù)據(jù)庫所作的更改便持久的保存在數(shù)據(jù)庫之中屯援,并不會被回滾猛们。
即使出現(xiàn)了任何事故比如斷電等,事務(wù)一旦提交狞洋,則持久化保存在數(shù)據(jù)庫中