數據庫系統概念》18-事務



事務是一個程序執行單元,它訪問且可能更新不一樣的數據項。事務對於實現數據庫中的數據更新是很關鍵的,只有這樣才能保證併發執行與各類故障不會致使數據庫處於不一致狀態。

1、事務具備ACID特性:即原子性、一致性、隔離性和持久性
原子性保證事務的全部影響在數據庫中要麼所有反映出來,要麼根本不反映。發生故障後數據庫不能處於事物部分執行後的狀態。
一致性保證若數據庫一開始是一致的,則事務執行後數據庫仍處於一致狀態。
隔離性保證併發執行的事務相互隔離,使得每一個事務感受不到系統中其它事務的併發執行。
持久性保證一旦一個事務提交後,它對數據庫的改變不會丟失,即便系統可能出現故障。

2、事務的併發執行提升了事務的吞吐量和系統利用率,也減小了事務的等待時間。
但多個事務在數據庫中併發執行時,可能沒法再保證數據的一致性。所以系統必須控制各併發事務之間的相互做用。
因爲事務是保持一致性的單元,因此事務的串行執行能保證一致性。串行調度是可串行化的,但若是許多事務的步驟交錯執行,則很難肯定一個調度是不是可串行化的。肯定一個事務有哪些操做、多個事務的操做如何相互做用是比較困難的。因此,一般不會考慮一個事務對某一數據項的的全部細節操做,而只考慮兩種操做:read和write。
要求事務集的併發執行所產生的任何調度的執行效果等價於由這些事務按某種串行順序執行的效果,保證這個特性的系統稱爲保證了可串行化。考慮一個調度S含有I,J兩條指令,只有I和J全爲read指令時,兩條指令的執行順序纔是可有可無的,而只要有至少一條是write指令時,I和J是衝突的。
若是調度S能夠通過一系列非衝突指令交換轉換成S1,則稱S1是S的衝突等價。存在幾種不一樣的等價概念,因此可串行化分爲了衝突可串行化和視圖可串行化。

3、事務併發執行所產生的調度的可串行化能夠經過多種併發控制機制中的一種來加以保證。給定一個調度,能夠經過爲該調度構造優先圖及搜索是否無環來斷定它是否衝突可串行化。還有更好的併發控制機制可用來保證可串行化。
調度必須是可恢復的,這樣若是事務a依賴於事務b,若是b停止時,a也要停止。調度也最好是無級聯的,這樣不會因爲一個事務的停止引發其它事務的級聯停止。無級聯性是經過只容許事務讀取已經提交的數據來保證的。

學習資料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan

 數據庫

相關文章
相關標籤/搜索