資料庫系統必須維護事務的以下特性(簡稱acid):
原子性(atomicity)
一致性(consistency)
隔離性(isolation)
永續性(durability)
原子性(atomicity)
事務中的所有操作要麼全部執行,要麼都不執行;
如果事務沒有原子性的保證,那麼在發生系統
故障的情況下,資料庫就有可能處於不一致狀
態。原子性(atomicity)
如果故障發生在write(a)和read(b)之間,則將
有可能造成帳戶a的餘額已經減去50元錢,而
帳戶b的餘額卻沒有改變,憑空就少了50元錢。
值得注意的是,即使沒有故障發生,系統在某
一時刻也會處於不一致狀態。原子性的要求就
是這種不一致狀態除了在事務執行當中出現
外,在其他任何時刻都是不可見的。保證原子
性是dbms的責任:即事務管理器和恢復管理
器的責任。
一致性(consistency)
主要強調的是,如果在執行事務之前資料庫是
一致的,那麼在執行事務之後資料庫也還是一
致的;所謂一致性簡單地說就是資料庫中資料的完整
性,包括它們的正確性。
對於圖中的事務ti來說,一致性要求就是事務
的執行不改變帳戶a和帳戶b的和。否則的話
事務就會創造或銷毀錢!
單個事務的一致性是由對該事務進行編鍵的應
用程式設計師的責任,但是在某些情況下利用
dbms中完整性約束(如觸發器)的自動檢查功
能有助於一致性的維護。
隔離性(isolation)
即使多個事務併發(同時)執行,每個事務都
感覺不到系統中有其他的事務在執行,因而也
就能保證資料庫的一致性;
事情的起因:
即使每個事務都能保持一致性和原子性,但如
果幾個事務併發執行,且訪問相同的資料項,
則它們的操作會以人們所不希望的某種方式交
叉執行,結果導致不一致的狀態!
訪問相同資料項的兩個事務併發執行
解決辦法:
如果幾個事務要訪問相同的資料項,為了保證
資料庫的一致性,可以讓這幾個事務:
①序列執行:即乙個接著乙個地執行事務;
②併發執行:即同時執行多個事務,但用併發
控制機制來解決不同事務間的相互影響。
隔離性的保證:
事務的隔離性能夠確保事務併發執行後的系統
狀態與這些事務按某種次序序列執行後的狀態
是等價的。保證隔離性也是dbms的責任:即
併發控制管理器的責任。
永續性(durability)
事務成功執行後它對資料庫的修改是永久的,
即使系統出現故障也不受影響。
永續性的含義是說:一旦事務成功執行之後,
它對資料庫的更新是永久的。可以用以下兩種
方式中的任何一種來達到永續性的目的:
以犧牲應用系統的效能為代價
以多占用磁碟空間為代價
以犧牲應用系統的效能為代價:要求事務對資料庫系
統所做的更新在事務結束前已經寫入磁碟;
以多占用磁碟空間為代價:要求事務已經執行的和已
寫到磁碟的、對資料庫進行更新的資訊是充分的(例
如,資料庫日誌的資訊就足夠的多),使得dbms在
系統出現故障後重新啟動系統時,能夠(根據日誌)重
新構造更新。保證永續性也是dbms的責任:即恢復
管理器的責任。
事物的狀態有如下幾種:
⑴中止事務:執行中發生故障、不能執行完成的
事務;⑵事務回滾:將中止事務對資料庫的更新撤消
掉;⑶已提交事務:成功執行完成的事務。
系統的恢復步驟是:
1、反向掃瞄檔案日誌(即從最後向前掃瞄日誌檔案),查詢該事務
的更新操作。
2、對該事務的更新操作執行逆操作。即將日誌記錄「更新前的值」寫
入資料庫。這樣,如果記錄中是插入操作,則相當於做刪除操
作;若記錄中是刪除操作,則做插入操作;若是修改操作,則相
當於用修改前的值代替修改後的值。
3、繼續反向掃瞄日誌檔案,查詢該事務的其他更新操作,並做和2
一樣的同樣處理。
4、如此處理下去,直至讀到此事務的開始標記,事務的故障恢復就
完成了。
事務的隔離級別
隔離級別定義了事務與事務之間的隔離程度。
隔離級別與併發性是互為矛盾的:隔離程度越
高,資料庫的併發性越差;隔離程度越低,數
據庫的併發性越好。
ansi/iso sql92標準定義了一些資料庫操作的隔離級別
未提交讀(read uncommitted)
提交讀(read committed)
重複讀(repeatable read)
序列讀(serializable)
隔離級別的效果
更新丟失(lost update):當系統允許兩個事務同時
更新同一資料是,發生更新丟失。
髒讀(dirty read):當乙個事務讀取另乙個事務尚未
提交的修改時,產生髒讀。
不可重複讀取(nonrepeatableread):同一查詢在
同一事務中多次進行,由於其他提交事務所做的修改
或刪除,每次返回不同的結果集,此時發生不可重複
讀取。幻像(phantom read):同一查詢在同一事務中多次
進行,由於其他提交事務所做的插入操作,每次返回
不同的結果集,此時發生幻像讀。
隔離級別及其對應現象
事務特性(ACID)
原子性 是指事務乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。不能夠單獨執行。把一組操作放入事務中 一致性 事務的執行的前後,資料的完整性要得到保證。隔離性 強調的是多個使用者併發訪問資料庫的時候,乙個使用者事務不能被其他使用者的事務所干擾到,多個併發事務之間的資料要相互隔離。解決多...
事務ACID特性
所謂事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。例如,銀行轉帳工作 從乙個帳號扣款並使另乙個帳號增款,這兩個操作要麼都執行,要麼都不執行。資料庫事務必須具備acid特性,acid是atomic 原子性 consistency 一致性 isolation 隔離...
事務ACID特性
所謂事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。例如,銀行轉帳工作 從乙個帳號扣款並使另乙個帳號增款,這兩個操作要麼都執行,要麼都不執行。資料庫事務必須具備acid特性,acid是atomic 原子性 consistency 一致性 isolation 隔離...