數據庫--事務管理筆記

什麼是事務

事務是構成一個完成的邏輯單元的數據庫操作的集合。

事務具備以下幾個性質:

1、原子性(A)。一個事務中的所有操作都是一個完整的工作單元,這些操作要麼都發生,要不都不發生。

2、一致性(C)。一個事務單獨執行時的結果,應該保持數據庫的正確和完整,即數據不會因爲事務的執行而被破壞。

3、隔離性(I)。在多個事務併發執行時,系統應保證執行結果與這些事務按先後次序串行執行的結果一樣。

4、持久性(D)。一個事務一旦完成後,它對數據庫的改變就是永久的,即使發生故障也一樣。

事務執行的狀態

活躍狀態。初始狀態,事務在正常執行後都處於這個狀態。

部分提交狀態。在事務最後一條語句被執行之後進入這個狀態。

提交狀態。事務成功完成了,所做的更新是持久的。

失敗狀態。當出現故障無法正常執行的狀態。

中止狀態。當失敗的事務執行回滾以保證原子性,數據的內容已經恢復到開始執行前狀態的時候。

事務的併發執行

事務併發執行的好處:第一提高吞吐量,第二減少平均響應時間。

併發執行潛在的問題:更新丟失問題,讀髒數據,非一致讀和不可重複讀。

什麼是事務的調度。

是對事務的操作指令在數據庫系統中執行時間順序的一個安排,要滿足兩個條件:

一組事務的一個調度必須要包含這一組事務所有的操作。

調度必須要保持操作在各個事務中出現的次序。

可串行化調度

併發調度的可串行化。併發是爲了提高吞吐量,提高平均響應時間,串行化是爲了保持數據的一致。

衝突的定義

分別屬於不同事務的兩個操作Oi Oj,如果他們訪問相同的數據項而且其中至少有一個是write操作,責成OiOj是衝突的,否則是不衝突的,不衝突的情況只有兩個都是讀操作。

衝突等價

如果調度S可以通過一系列不衝突操作的交互而轉換爲調度S‘,則稱SS'是衝突等價的。

如果一個調度S與一個串行調度是衝突等價的,則成S是衝突可串行化的。

基本鎖類型

共享鎖,也稱S鎖,如果事務T獲得了一個數據項的共享鎖,則T可是讀但不能寫該數據項。

排他鎖,也稱X鎖,如果事務T獲得了一個數據項的排他鎖,則T即可讀也可以寫該數據項。

共享鎖與共享鎖是相容的。

兩段鎖協議

增長階段即事務開始執行處於增長階段,可以對數據項提出加鎖申請,但不能解鎖。

縮減階段,一旦事務釋放了鎖,就進入縮減階段,該階段事務可以解鎖,但是不能在加鎖。

事務的隔離級別

爲提交讀,已提交讀,可重複讀,可串行化。

死鎖

死鎖預防的方法:一次性封鎖法,順序封鎖法,基於時間戳的單向等待法,超時方法。

死鎖恢復工作的三個方面

選擇犧牲者,選擇犧牲者應該是回滾代價最小的一個。

回滾,最簡單的辦法就是對犧牲者採取全部回滾然後重啓。

避免餓死,要防止一個事務總被選爲犧牲者,可以通過在選擇犧牲者的條件上加個已經回滾的次數。

介質的分類

揮發性介質:比如cache,比如內存。

持久性介質:比如磁盤,光盤,磁帶等。

故障的分類

事務故障,邏輯錯誤,系統錯誤。

系統故障,掉電,硬件故障,軟件錯誤等造成的在揮發性介質存儲的數據都沒有了。

介質故障,由於磁頭損壞,病毒破壞等原因造成的物理數據丟失。

基於日誌的恢復

每條記錄產生後立即寫入穩定存儲服務器的日誌的尾部,這樣日誌就包含了所有數據庫活動的完整信息,可以利用日誌進行數據的恢復。

重做事務集

是在日誌中既有<T, start>又有<T,commit>的記錄的所有事務T,叫做重做事務集。

撤銷事務集

是在日誌中有<T, start> 沒有<T,commit>的記錄的所有事務T,叫做撤銷事務集。

undo(T) redo(T)

對撤銷的事務做undo(T),對重做事務集做redo(T),操作redoundo必須是等冪的,即無論操作多少次redoundo與執行一次的效果是一樣的。

數據庫備份

備份的過程:

1、將所有當前的位於內存的日誌記錄輸出到穩定存儲器當中。

2、將所有區塊輸出到磁盤上。

3、將數據庫的內容複製到穩定存儲器中。

4、將備份日誌記錄輸入到穩定存儲器的日誌文件中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章