資料庫總結 05事務管理

2021-10-02 16:36:21 字數 3145 閱讀 9064

1.事務---乙個資料庫操作序列,是資料庫應用程式的基本邏輯單元。這些操作要麼都做,要麼都不做,是乙個不可分割的執行單位。

2.事務應具有的性質

3.故障種類

4.恢復的實現技術

資料庫恢復的基本原理-----冗餘

資料庫恢復的機制

建立冗餘資料(常用技術:資料轉儲,登記日誌檔案)

利用冗餘資料實施資料庫恢復

資料轉儲與恢復

轉儲:dba定期將整個資料庫複製到磁帶或另乙個磁碟上儲存起來的過程

轉儲的狀態:

靜態轉儲--轉儲期間不允許對資料庫進行操作

動態轉儲--轉儲期間允許對資料庫操作

轉儲方式:海量轉儲(每次轉儲全部資料庫),增量轉儲(只轉儲上次轉儲後更新過的資料)

恢復:當資料庫被破壞後可將後備副本重新裝入,並重新執行轉儲以後的所有更新事務

日誌檔案和恢復

日誌--用來記錄對資料庫的更新操作的檔案

日誌檔案的作用

靜態轉儲:資料庫毀壞後,重灌後援副本,根據日誌檔案,重做已完成的事務,並撤銷未完成的事務

動態轉儲:用後援副本和日誌檔案綜合起來恢復資料庫

登記日誌檔案原則:嚴格按併發事務執行的時間次序登記,先寫日誌檔案,後寫資料庫

5.恢復策略(利用日誌檔案進行恢復)

基本策略:對於尚未提交的事務,執行撤銷處理(undo)。對於已經提交的事務,執行重做處理(redo)

基本方法:掃瞄日誌檔案,確定所有已經開始但尚未提交的事務(對它們需undo),再確定所有已提交的事務(對它們需redo)

事務故障恢復:事務故障是指事務被非正常終止,應根據日誌檔案對未完成事務做undo處理,步驟如下:

(1)反向掃瞄日誌檔案,查詢未完成事務的更新操作;

(2)對該事務的更新操作執行逆操作;

(3)繼續反向掃瞄日誌檔案,對遇到的更新操作做同樣處理;

(4)當遇到某事務的開始標記時,停止對該事務的處理。

系統故障恢復:系統故障造成資料庫不一致的原因,一是未完成事務對資料庫的更新已寫入資料庫,二是已提交事務的結果

在故障發生前留在緩衝區沒來得及寫入資料庫。恢復操作是撤消未完成事務,重做已完成事務。步驟如下:

(1)正向掃瞄日誌檔案,找出在故障發生前己提交的事務,將它們記入重做(redo)佇列,同時找出故

障發生前尚未完成的事務,將它們記入撤消(undo)佇列。

(2)反向掃瞄日誌檔案,對undo佇列的每個事務執行逆操作,即做撤消處理。

(3)正向掃瞄日誌檔案,對redo佇列中的每個事務重新執行日誌檔案登記的操作。

介質故障恢復:介質故障發生後,磁碟上的資料檔案和日誌檔案均被破壞,恢復的方法是重灌資料庫和日誌檔案,然後重做

自轉儲以來已完成的事務。步驟如下:

(1)裝入最近轉儲的資料庫後援副本,若是動態轉儲,則還應裝入轉儲期間的日誌檔案,將資料庫恢復到一致性狀態。

(2)裝入轉儲結束後的日誌副本,重做已完成的事務。

6.具有檢查點的恢復技術

具有檢查點的恢復演算法

7.資料庫映象--將整個資料庫或其中的關鍵資料同時存放在兩個分離的物理磁碟上。每當主資料庫更新時,dbms自動把更新後的資料複製到另乙個磁碟上,從而自動保證主資料庫與映象資料庫的一致性。

資料庫映象的優點:可提高資料庫的可用性。在介質故障時,不需關閉系統和重灌後援副本,保證「不間斷」地恢復;便於併發操作,當主資料庫的某個物件被加排它鎖時,其它應用可以讀映象資料庫。

在多使用者資料庫系統中,當多個使用者併發訪問資料庫時就會產生多個事務同時訪問同一資料的情形。若不加控制,可能會訪問和儲存不正確的資料,造成資料庫的不一致性。

併發操作帶來的資料不一致性包括三類

(1)事務t1讀取某一資料後,事務t2對其做了修改,事務t1再次讀取該資料時,發現與前次不同;

(2)事務t1按一定條件讀取了某些資料記錄後,事務t2刪除了其中的部分記錄,事務t1再次按相同條件讀取記錄時,發現有些記錄不存在;

(3)事務t1按一定條件讀取了某些資料記錄後,事務t2插入了一些記錄,事務t1再次按相同條件讀取記錄時,發現多了一些記錄。

併發控制的技術---封鎖(事務在修改某個物件前,先鎖住該物件,不允許其他事務讀取或者修改該物件,修改完畢或事務完成之後再將鎖開啟)

封鎖型別

封鎖協議

2級封鎖協議--1級封鎖協議+事務t在讀取資料物件r之前必須先對其加s鎖,讀完即釋放s鎖。

3級封鎖協議--1級封鎖協議+事務t在讀取資料物件r之前必須先對其加s鎖,s鎖也是直到事務結束才釋放。

活鎖--資料物件不斷處於上鎖、開鎖的交替狀態,某個事務有可能為該物件上鎖,但始終沒有得到上鎖機會而永久等待下去的情形。

避免活鎖--如採用先來先服務策略

死鎖--多個事務因封鎖衝突(競爭資源)而永遠等待下去的情形

死鎖問題的解決方法

預防死鎖--一次封鎖法(每個事務必須將所要求的資料物件全部上鎖後才能執行讀寫操作,否則釋放占用的資源),順序封鎖法(對所有資料物件規定乙個封鎖順序,所有事務均按這個順序實行封鎖)

診斷死鎖並解除--超時法(當乙個事務的等待時間超過了規定的時限,就認為發生了死鎖),等待圖法(用乙個有向圖表示事務等待的情況。圖中節點表示事務,邊表示事務間的等待關係。併發控制子系統定時檢查此圖,若發現有迴路,則產生死鎖)

可序列化排程--多個事務的併發執行是正確的,當且僅當其結果與按某一次序序列地執行這些這些事務時的結果相同

兩段鎖協議

(1)在對任何資料進行讀、寫操作之前,事務首先要申請並獲得對該資料的封鎖(讀時s鎖,寫時x鎖)

(2)在釋放乙個封鎖之後,事務不再申請和獲得新的封鎖。

資料庫事務管理相關總結

mysql資料庫的事務隔離級別如下 隔離級別 更新丟失 髒讀取 重複讀取 幻讀 讀取未提交 n y y y 讀取已提交 n n y y 可重複讀取 n n n y 序列化 n n n n spring的事務傳播機制 事務傳播行為型別 說明propagation required 如果當前沒有事務,就...

資料庫事務管理

一 事務的特性 acid 二 3個問題 幻讀和不可重複讀看起來一樣,但鎖的機制不同,幻讀對應insert和delete 操作,不可重複讀對應update操作 具體說就是不可重複讀鎖定一行資料,是行鎖,幻讀鎖定整個條件區域,是序列鎖。三 樂觀鎖和悲觀所 以上說的鎖,通過資料庫的鎖機制控制,鎖定後其他操...

Spring資料庫事務管理

事務 transaction 是併發控制的基本單位。所謂的事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。例如,銀行轉賬工作 從乙個賬號扣款並使另乙個賬號增款,這兩個操作要麼都執行,要麼都不執行,在關聯式資料庫中,乙個事務可以是一條sql語句 一組sql語句或整...