事務的特性(ACID)轉

2021-05-24 12:58:57 字數 2770 閱讀 4852

資料庫系統必須維護事務的以下特性(簡稱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 隔離...