事务基本信息
一、事務的定義
事務(Transaction)是由一系列對系統(tǒng)數(shù)據(jù)進行訪問與更新的操作所組成的一個程序執(zhí)行邏輯單元(Unit),俠義上的事務特質(zhì)數(shù)據(jù)庫事務。1)當多個應用程序并發(fā)訪問數(shù)據(jù)庫時,事務可以在這些應用之間提供一個隔離方法,以防止彼此的操作互相干擾。2)事務為數(shù)據(jù)庫操作序列提供了一個從失敗中恢復到正常狀態(tài)的方法,同時提供了數(shù)據(jù)庫即使在異常狀態(tài)下仍能保持數(shù)據(jù)一致性的方法。
二、事務的四個特征(ACID)
分別是原子性(Atomicity),一致性(Consistency),隔離性(Isolation),持久性(Durability),簡稱ACID特性。
1)原子性
事務的原子性是指事務必須是一個原子的操作序列單元。事務中包含的各項操作在一次執(zhí)行過程中,只允許出現(xiàn)兩種狀態(tài)之一:①全部成功執(zhí)行。②全部不執(zhí)行。
任何一項操作失敗都將導致整個事務失敗,同時其它已經(jīng)被執(zhí)行的操作都將被撤銷并回滾,只有所有的操作全部成功,整個事務才算是成功完成。
2)一致性
事務的一致性是指事務的執(zhí)行不能破環(huán)數(shù)據(jù)庫數(shù)據(jù)的完整性和一致性,一個事務在執(zhí)行之前和執(zhí)行之后,數(shù)據(jù)庫都必須處于一致性狀態(tài)。如果數(shù)據(jù)庫系統(tǒng)在運行過程中發(fā)生故障,有些事務尚未完成就被迫中斷,這些未完成的事務對數(shù)據(jù)庫所做的修改有一部分已寫入物理數(shù)據(jù)庫,這時數(shù)據(jù)庫就處于一種不正確的狀態(tài),或者說不一致的狀態(tài)。
3)隔離性
事務的隔離性是指在并發(fā)環(huán)境中,并發(fā)的事務是相互隔離的,一個事務的執(zhí)行不能被其它事務干擾。也就是說,不同的事務并發(fā)操縱相同的數(shù)據(jù)時,每個事務都有各自完整的數(shù)據(jù)空間,即一個事務內(nèi)部的操作及使用的數(shù)據(jù)對其它并發(fā)事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能互相干擾。
標準AQL規(guī)范中定義的4個事務隔離級別,不同的隔離級別對事務的處理不同
①未授權(quán)讀取,也被稱為讀未提交,該隔離級別允許臟讀取,其隔離級別最低。事務B可以看到事務A操作過程中的數(shù)據(jù)變化。
②授權(quán)讀取,也被成為讀已提交,只允許讀取已經(jīng)被提交的數(shù)據(jù)。
③可重復讀取(Repeatable Read),就是保證在事務處理過程中,多次讀取同一個數(shù)據(jù)時,其值都和事務開始時刻是一致的。
④串行化(Serializable)是最嚴格的事務隔離級別。要求所有事務都被串行化 執(zhí)行
4)持久性
事務的持久性是指一個事務一旦提交,它對數(shù)據(jù)庫中對應數(shù)據(jù)的狀態(tài)變更就應該是永久的。
幻讀(幻影數(shù)據(jù)):指同樣的事務操作,在前后兩個時間段內(nèi)執(zhí)行對同一個數(shù)據(jù)項的讀取,可能出現(xiàn)不一致的結(jié)果。
事務隔離級別越高,就越能保證數(shù)據(jù)的完整性和一致性,但同時對并發(fā)性能的影響也就越大。通常,對于絕大多數(shù)的應用程序來說,可以優(yōu)先考慮將數(shù)據(jù)庫系統(tǒng)的隔離級別設置為授權(quán)讀取,這能夠在避免臟讀的同時保證較好的并發(fā)性能。盡管這種事務隔離級別會導致不可重復讀、虛讀等并發(fā)問題,但較為科學的做法是在可能出現(xiàn)這類問題的個別場合中,有應用程序主動采用悲觀鎖或樂觀鎖來進行事務控制。
轉(zhuǎn)載于:https://www.cnblogs.com/TheoryDance/p/7499681.html
總結(jié)
- 上一篇: 《面向对象程序设计》课程作业二
- 下一篇: luoguP1463:反素数ant(打表