數據庫-第3篇實現chapter_第1頁
數據庫-第3篇實現chapter_第2頁
數據庫-第3篇實現chapter_第3頁
數據庫-第3篇實現chapter_第4頁
數據庫-第3篇實現chapter_第5頁
免費預覽已結束,剩余21頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第13章事務處理技術之二:數據庫恢復技術

數據庫恢復技術數據庫恢復機制是數據庫管理系統的重要組成部分。數據庫恢復機制用來進行事務終止后的善后處理和系統故障恢復處理,確保系統發生故障以后,數據庫能夠恢復到正確的狀態。13.1數據庫恢復的必要性數據庫系統的數據庫恢復機制的目的:

保證事務的原子性

當系統發生故障后,數據庫能夠恢復到正確狀態破壞事務原子性和引起系統故障的原因主要有以下幾種:

(1)計算機系統故障

(2)事務或系統故障

(3)事務的強行終止

(4)磁盤故障

(5)其他原因13.1數據庫恢復的必要性數據庫的存儲設備按其存取速度、容量和故障可恢復性分為三種:

(1)非永久存儲器

(2)永久存儲器

(3)永恒存儲器本章討論的數據庫恢復技術以上述三種存儲器為基礎。同時,這些技術僅適用于如下4種類型的故障:

13.1數據庫恢復的必要性(1)邏輯錯誤由事務內部的錯誤引起的事務無法正常運行(2)系統錯誤系統進入異常狀態引起的事務不能正常運行,如死鎖等(3)硬件故障硬件發生故障,但外存信息保持完整(4)磁盤故障由磁盤硬件故障引起的磁盤信息的丟失13.2使用日志的數據庫恢復技術當系統恢復正常以后,可能選擇如下的兩種方法之一進行數據庫恢復:

(1)重新運行事務T。

(2)不再運行事務T。為了保證事務的原子性,在執行一個數據庫更新操作時,可以首先把描述更新操作的信息寫入永恒存儲器,而不修改數據庫本身。當事務提交時,在使用永恒存儲器中存儲的更新操組信息實現數據庫的更新。13.2使用日志的數據庫恢復技術13.2.1數據庫系統日志記錄有關事務的數據庫操作信息的存儲結構是數據庫系統日志,簡稱日志。每個日志記錄描述一個數據庫寫操作,與WRITE(Q)對應的日志記錄具有如下的數據域:(1)事務名執行WRITE(Q)操作的事務名(2)數據項名Q的唯一名字(3)原始值Q在執行WRITE(Q)之前的值(4)新值Q在執行WRITE(Q)之后的值13.2使用日志的數據庫恢復技術日志中還包含其他結構的記錄,記載事務處理過程中的重要事件。以后將使用如下的表示法表示各種總類型的日志記錄:(1)<T,start>事務T已經開始。(2)<T,X,V1,V2>事務T在數據項X上執行寫操作。X在執行寫操作之前的值為V1,執行寫操作之后的值為V2。(3)<mit>事務T已經提交。當一個事務執行完一個寫操作WRITE(Q)時,就應該在數據庫被修改之前建立起描述這個寫操作的日志記錄。13.2使用日志的數據庫恢復技術為了保證日志在系統和磁盤發生故障時仍可使用,必須將它存儲在永恒存儲器上。13.2.2推遲更新技術為了保證事務的原子性,在每個事務運行期間,推遲更新技術在日志記錄這個事務對數據庫的所有更新操作,把所有數據庫更新操作推遲到該事務提交時執行。推遲更新技術必須遵循下述推遲更新協議:13.2使用日志的數據庫恢復技術(1)每個事務在到達提交點之前不能更新數據庫。(2)在一個事務的所有更新操作對應的日志記錄寫入永恒存儲器之前,該事務不能到達提交點。數據庫恢復機制中使用日志,可以處理任何導致非永久存儲器的信息丟失問題。當系統故障發生后,數據庫恢復機制將考察日志,確定需要重做的事務T。事務T需要重做當且僅當日志包含記錄<T,starts>和<mits>.13.2使用日志的數據庫恢復技術如果系統在事務T成功完成之后發生故障,日志中有關T的信息將被用來將數據庫恢復到正確狀態。每當系統發生故障后,數據庫恢復機制都要調用這個過程實現數據庫的恢復。這個過程定義如下:(1)從后向前掃描日志記錄,建立兩個事務表。一個表稱為提交事務表,包含全部具有日志記錄<mits>的事務T,即已提交的事務;另一個表稱為未提交事務表,包括全部具有日志記錄<T,starts>,但不具有日志記錄<mits>的事務T,即尚未提交的事務。13.2使用日志的數據庫恢復技術(2)對于提交事務表中的每個事務T,執行REDO(T)。(3)對于未提交的事務表中的每個事務,刪除所有T的日志記錄,放棄T,待以后重新啟動執行。13.2.3即時更新技術即時更新技術允許事務直接更新數據庫。處于活動狀態的事務直接在數據庫上實施的更新稱為非提交更新。任何即時更新技術都必須遵循如下的即時更新協議:13.2使用日志的數據庫恢復技術(1)在所有<T,X,V1,V2>型日志記錄安全地存儲到永恒存儲器之前,事務T不能更新數據庫。(2)在所有<T,X,V1,V2>型日志記錄安全地存儲到永恒存儲器之前,不允許事務T提交。即時更新技術需要如下兩個操作:(1)UNDO(T)FOR日志中每個形如<T,X,V1,V2>的記錄DO把數據庫中數據項X的值改為V1;ENDFOR

13.2使用日志的數據庫恢復技術(2)REDO(T)FOR日志中每個形如<T,X,V1,V2>的記錄DO把數據庫中數據項X的值改為V2;ENDFORUNDO和REDO操作必須是冪等的,即執行多次和執行一次的效果相同。這個要求保證在數據庫恢復過程中發生故障時,數據庫恢復機制仍能確保數據庫的正確性。13.2使用日志的數據庫恢復技術系統發生故障后,即時更新技術將調用如下的過程進行數據庫的恢復處理:(1)從后向前掃描日志記錄,建立兩個事務表。(2)對于未提交事務表中的每個事務T,執行UNDO(T),從日志中刪除T的信息。(3)對于提交事務表中的每個事務T,執行REDO(T)。13.3緩沖技術13.3.1日志緩沖技術為了保證事務的原子性,必須在前面介紹的數據庫恢復協議上增加如下規則:(1)任何事務T必須在日志記錄<mits>已經寫入永恒存儲器以后才可以進入提交狀態。(2)任何事務T的非<mits>型日志記錄必須在日志記錄<mits>已經寫入永恒存儲器之前寫入永恒存儲器。13.3緩沖技術(3)主存緩沖區中的數據庫數據必須在所有與這些數據有關的日志記錄被寫入永恒存儲器之后才可以寫入永久存儲器中的數據庫。數據庫通常都存儲在永久存儲器上,需要時將數據以塊為單位讀入主存。為了減少系統開銷,數據庫的讀寫也需要使用緩沖技術。13.4檢測點當系統故障發生后,數據庫恢復機制必須搜索日志,確定哪些事務需要REDO,那些事務需要UNDO。一般來說,需要檢查所有日志記錄。這樣做有關兩個問題:一是搜索整個日志將耗費大量的時間,二是很多需要REDO處理的事務已經將他們的更新操作結果寫道數據庫中了,然而算法有重新執行了這些操作,浪費了大量時間。為了解決這些問題,引入檢測點方法。這種方法使系統在執行期間動態地維護系統日志,并且在日志中增加一類新的記錄。13.4檢測點數據庫恢復機制定期地執行如下操作,保存數據庫狀態,建立檢測點:

(1)將目前主存中的所有日志記錄輸出到永恒存儲器。

(2)將所有緩沖區中被修改的數據庫的數據塊寫入磁盤。

(3)把日志記錄寫入永恒存儲器。13.5影子頁面技術影子頁面技術把數據庫劃分為許多鼎昌的數據塊,稱之為頁。當一個事務開始運行時,頁映像表生成兩個副本,分別稱為當前頁表和影子頁表。事務運行期間,英資頁表被存儲在磁盤上,并保持不變,留待進行數據庫恢復時使用。當系統發生故障時,恢復機制只需釋放所有數據庫頁面副本所占用的磁盤塊,放棄當前頁表,把數據庫頁面映像恢復為影子頁表。13.5影子頁面技術使用影子頁面技術,在一個事務進入提交狀態時,恢復機制需要完成如下工作:(1)保證主存緩沖區中被更新的數據庫頁面寫入磁盤。(2)把當前頁表輸出到磁盤,但不可重寫影子頁表,因為進行提交處理時仍然可能發生系統故障。(3)用當前頁的磁盤地址代替永恒存儲器中影子頁表的磁盤地址。13.5影子頁面技術影子頁面技術的不足:(1)由于在數據庫頁面更新是改變了磁盤位置,數據庫頁面將離散地分布在磁盤上,需要復雜的物理存儲管理機制。(2)當頁面表很大時,建立和存取頁映像表的開銷將會很大。13.6永久存儲其中信息丟失后的數據庫恢復數據庫副本復制過程定期地產生數據庫的副本并復制到永恒存儲器上,這個數據庫副本是調用復制過程是數據庫的狀態。當系統故障引起永久存儲器中數據庫信息的丟失時,用永恒存儲器中最近的數據庫副本恢復永久存儲器中的數據庫。數據庫副本復制過程在沒有活動事務時才能執行,主要完成以下幾項任務:13.6永久存儲其中信息丟失后的數據庫恢復(1)把主存中的所有日志記錄寫入永恒存儲器(2)把所有主存緩沖區中被更新的數據庫信息寫入磁盤(3)把數據庫復制到永恒存儲器(4)建立一個日志記錄并寫入永恒存儲器13.7數據庫恢復與并發控制技術的結合13.7.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論