【摘要】集中式數據庫系統由一個處理器、與它相關聯的數據存儲設備以及其他外圍設備組成,它被物理地定義到單個位置。系統提供數據處理能力,用戶可以在同樣的站點上操作,也可以在地理位置隔開的其他站點上通過遠程終端來操作,系統及其數據管理被某個或中心站點集中控制,本文探討了集中式數據庫的事務恢復機制。
【關鍵詞】集中式數據庫;事務恢復;機制
一、事務恢復
事務是數據庫管理系統(DBMS)的執行單位,事務應滿足ACID(原子性,一致性,隔離性,持久性)準則。保證事務在故障時滿足ACID準則的技術稱為恢復。要恢復丟失的數據,數據必須有后備的復本。對于恢復,數據冗余是必需的。恢復技術大致分為下列三種:一是單純以后備復本為基礎的恢復技術。即周期性地把磁盤上的數據庫轉儲(dump)到磁帶上,磁帶上的數據庫復本稱為后備復本。二是以后備復本和運行記錄(log或journal)為基礎的恢復技術。運行記錄是供恢復用的數據庫運行情況的記錄。三是基于多復本的恢復技術。如果系統中有多個數據庫復本,而且這些復本具有獨立的失效模式(指各個復本不致因同一故障而一起失效),則可利用這些復本互為備份,用于恢復。近來由于硬件價格下降,在某些可靠性要求高的系統中,采用鏡像磁盤技術,即數據庫以雙復本的形式存于兩個獨立的磁盤系統中。由于第二種恢復技術在數據庫系統中用得最多,大部分商品化的DBMS都支持這種恢復技術,以下我們對這種恢復技術進行詳細介紹。
二、基于運行記錄的恢復技術
運行記錄是供恢復用的數據庫運行情況的記錄。一般包括下列三個內容:一是前像(before image,BI)。當數據庫被一個事務更新時,所涉及的物理塊更新前的映像(image)稱為該事務的前像。前像以物理塊為單位。有了前像,如果需要,可以使數據庫恢復到更新前的狀態,即撤消更新,這種操作在恢復技術中稱為撤消(undo)。二是后像(after image,AI)。當數據庫被一個事務更新時,所涉及的物理塊更新后的映像(image)稱為該事務的后像。后像以物理塊為單位。有了后像,即使更新的數據丟失了,仍可以使數據庫恢復到更新后的狀態,相當于重做一次更新,這種操作在恢復技術中稱為重做(redo)。三是事務狀態。記錄每個事務的狀態,以便在恢復時做不同的處理。每個事務從交付DBMS到結束為止,每個事務有兩種可能的結局:一是經提交(commit)而結束,這標志著事務已成功地執行(這相當于all),只有在事務提交后,事務對數據庫的更新才能被其它事務訪問;另一結局是由于事務本身或外部的原因,事務失敗,要消除事務對數據庫的影響(這相當于nothing)。對事務的這種處理稱為卷回(rollback或abort)。對恢復來說,不必記每個狀態,但是至少要區分出一個事務是提交的,還是未提交的。當數據庫失效時,可取出最近后備復本,然后根據運行記錄,對未提交的事務用前像卷回,這叫向后恢復(backward recovery);對已提交的事務,必要時用后像重做,這叫向前恢復(forward recovery)。用這種恢復技術,必須有運行記錄。
三、運行記錄的結構
下面列出運行記錄中的一些基本內容,實際DBMS的運行記錄還可能包括若干其它細節,具體結構也不一定相同:其一,活動事務表。活動事務表(active transaction list,簡稱為ATL)記錄所有正在執行,尚未提交的事務的標識符(transaction identifier,簡稱TID)。其二,提交事務表。提交事務表(committed transaction list,簡稱CTL)記錄所有已提交的事務的標識符。如果先從活動事務表中刪除TID,再將TID加入提交事務表,則可能冒如下的危險:即TID剛從活動事務表中刪除后,該事務的狀態在系統中將無任何記錄。其三,前像文件。前像文件可以看成一個堆文件,每個物理塊有個塊標識符(block identifier,簡稱BID)。設BID由TID、關系名和邏輯塊號所組成,其中TID表示執行更新操作的事務,關系名表示被更新的關系,邏輯塊號表示該塊是關系中哪塊的前像。邏輯塊號在關系中是唯一的,即使一個塊被刪除了,它的邏輯塊號也不允許重新使用。必須注意:undo操作是滿足冪等(idempotent)性的,即undo(undo(undo…(x)))=undo(x)。因此,即使數據庫中的某塊還沒有來得及更新,在恢復時對它做一次undo操作也無妨,無非在這一塊上寫入同樣的內容而已。其四,后像文件。結構與前像文件相仿,不過其中記的是后像。在恢復時,可按提交事務表中的事務次序,按邏輯塊號寫入其后像。這相當于按提交的次序,重做各個事務。Redo操作也滿足冪等性。
參 考 文 獻
[1]簡云松.數據庫恢復技術探討[J].軟件導刊.2008(8)
[2]林烈青.基于事務日志的數據庫恢復機制研究[J].現代計算機(專業版).2009(8)
[3]陳菲.數據庫復制系統的設計與實現[J].科協論壇(下半月).2010(1)
[4]鮑曉娟.淺談數據庫恢復技術[J].赤峰學院學報(自然科學版).2011(4)