一、事務概念
概念:在資料庫中事務是工作的邏輯單元,一個事務是由一個或多個完成一組的相關行為的SQL語句組成,通過事務機制確保這一組SQL語句所作的操作要麼完全成功執行,完成整個工作單元操作,要麼一點也不執行。
二、事物的特性
a) 主要特性:確保資料庫的完整性。
b) 事務的ACID特性
i. 原子性(Atomicity)
事務的原子性是指事務中包含的所有操作要麼全做,要麼不做,也就是說所有的活動在資料庫中要麼全部反映,要麼全部不反映,以保證資料庫的一致性。
ii. 一致性(Consistency)
事務的一致性是指資料庫在事務操作前和交易處理後,其中資料必須滿足業務的規則約束。
iii. 隔離性(Isolation)
隔離性是指資料庫允許多個並發的事務同時對其中的資料進行讀或修改的能力,隔離性可以防止多個事務的並發執行時,由於它們的操作命令交叉執行而導致資料的不一致性。
iv. 持久性(durability)
事務的持久性是指在交易處理結束後,它對資料的修改應該是永久的。即便是系統在遇到故障的情況下也不會丟失,這是資料的重要性決定的。
三、資料異常
a) 事務的隔離性定義了一個事務與其它事務的隔離程度.為了更好的理解隔離層,首先討論一下並發事務對同一個資料庫進行訪問可能發生的情況.在並發事務中總體來說會發生
i. 錯讀 |髒讀
錯讀|髒讀:當一個事務修改資料時,另一事務讀取了該資料,但是第一事務由於某種原因取消對資料修改,使資料返回了原狀態,這是第二個事務讀取的資料與資料庫中資料不一致.這就叫錯讀。
ii. 非重複讀取|不可重複讀取
非重複讀取:是指一個事務讀取資料庫中的資料後,另一個事務則更新了資料,當第一個事務再次讀取其中的資料時,就會探索資料已經發生了改變,這就是非重複讀取。非重複讀取所導致的結果就是一個事務前後兩次讀取的資料不相同。
iii. 假讀|幻讀
假讀:如果一個事務基於某個條件讀取資料後,另一個事務則更新了同一個表中的資料,這時第一個事務再次讀取資料時,根據搜尋的條件返回了不同的行,這就是假讀。
b) 事務中遇到的這些異常與事務的隔離性設定有關,事務的隔離性設定越多,異常就出現的越少,但並發效果就越低,事務的隔離性設定越少,異常出現的越多,並發效果越高。