




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第13章數(shù)據(jù)庫恢復(fù)技術(shù)13.1恢復(fù)的基本概念13.2數(shù)據(jù)庫故障的種類13.3數(shù)據(jù)庫恢復(fù)的類型13.4恢復(fù)技術(shù)13.5緩沖區(qū)管理*1概述計算機同其他任何設(shè)備一樣,都有可能發(fā)生故障。這種情況一旦發(fā)生,就有可能造成數(shù)據(jù)丟失。數(shù)據(jù)庫系統(tǒng)必須采取必要的措施,以保證不會或盡可能減少數(shù)據(jù)丟失。數(shù)據(jù)庫恢復(fù)是DBMS必須提供的功能。*213.1恢復(fù)的基本概念數(shù)據(jù)庫恢復(fù)是指當數(shù)據(jù)庫發(fā)生故障時,將數(shù)據(jù)庫恢復(fù)到正確(一致性)狀態(tài)的過程。數(shù)據(jù)庫恢復(fù)是基于事務(wù)的原子性特性。數(shù)據(jù)庫恢復(fù)過程通常遵循一個可預(yù)測的方案?;謴?fù)機制有兩個關(guān)鍵問題:如何建立備份數(shù)據(jù);如何利用備份數(shù)據(jù)進行恢復(fù)。*3數(shù)據(jù)轉(zhuǎn)儲數(shù)據(jù)庫恢復(fù)采用的基本技術(shù):數(shù)據(jù)轉(zhuǎn)儲(也稱為數(shù)據(jù)庫備份)。轉(zhuǎn)儲就是定期地將整個數(shù)據(jù)庫復(fù)制到輔助存儲設(shè)備上,比如磁帶、磁盤。數(shù)據(jù)轉(zhuǎn)儲只能將數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲時的狀態(tài)。如果想恢復(fù)到故障發(fā)生時的狀態(tài),則必須利用轉(zhuǎn)儲之后的事務(wù)日志。*4轉(zhuǎn)儲分類靜態(tài)轉(zhuǎn)儲在系統(tǒng)中無運行事務(wù)時進行。在轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫進行任何操作。動態(tài)轉(zhuǎn)儲不用等待正在運行的事務(wù)結(jié)束。在轉(zhuǎn)儲期間允許運行新的事務(wù)。*5靜態(tài)與動態(tài)轉(zhuǎn)儲比較靜態(tài)轉(zhuǎn)儲實現(xiàn)簡單,靜態(tài)轉(zhuǎn)儲得到的一定是數(shù)據(jù)庫的一個一致性副本。轉(zhuǎn)儲期間但會降低數(shù)據(jù)庫的可用性。動態(tài)轉(zhuǎn)儲不能保證轉(zhuǎn)儲結(jié)束后的數(shù)據(jù)庫副本是正確的必須利用日志將數(shù)據(jù)庫恢復(fù)到一致性狀態(tài)轉(zhuǎn)儲期間不會降低數(shù)據(jù)庫的可用性。*6轉(zhuǎn)儲內(nèi)容分類海量轉(zhuǎn)儲:每次轉(zhuǎn)儲全部數(shù)據(jù)庫,增量轉(zhuǎn)儲:每次只轉(zhuǎn)儲上一次轉(zhuǎn)儲之后修改過的數(shù)據(jù)。從恢復(fù)的角度看,用海量轉(zhuǎn)儲的數(shù)據(jù)庫副本進行恢復(fù)更方便,但如果數(shù)據(jù)量很大,事務(wù)處理又比較頻繁,則增量轉(zhuǎn)儲會更有效。海量轉(zhuǎn)儲和增量轉(zhuǎn)儲可以是動態(tài)的,也可以是靜態(tài)的。*713.2數(shù)據(jù)庫故障的種類數(shù)據(jù)庫故障是指導(dǎo)致數(shù)據(jù)庫值出現(xiàn)錯誤描述狀態(tài)的情況,影響數(shù)據(jù)庫運行的故障有多種:事務(wù)內(nèi)部的故障系統(tǒng)故障其它故障*8事務(wù)內(nèi)部的故障可預(yù)期的這類故障可通過事務(wù)程序本身發(fā)現(xiàn)。如銀行轉(zhuǎn)賬事務(wù)中,如果A賬戶金額不足,則不能進行轉(zhuǎn)賬。非預(yù)期性的這類故障不能由應(yīng)用程序來處理。如運算溢出或因死鎖而被撤銷的事務(wù)。*9事務(wù)故障事務(wù)故障意味著事務(wù)沒有達到終點,數(shù)據(jù)庫可能處于不正確的狀態(tài)。數(shù)據(jù)庫的恢復(fù)機制要在不影響其他事務(wù)運行的情況下,強行撤銷該事務(wù)中的全部操作,使該事務(wù)就像沒發(fā)生過一樣。這類恢復(fù)操作稱為事務(wù)撤銷(UNDO)。*10系統(tǒng)故障是指造成系統(tǒng)停止運轉(zhuǎn)、系統(tǒng)要重啟的故障。例如:硬件錯誤(CPU故障)操作系統(tǒng)故障突然停電等。這類故障會影響正在運行的所有事務(wù),但不破壞數(shù)據(jù)庫。*11系統(tǒng)故障產(chǎn)生的結(jié)果一些未完成事務(wù)的結(jié)果可能已經(jīng)送入物理數(shù)據(jù)庫中,從而造成數(shù)據(jù)庫可能處于不正確狀態(tài);有些已經(jīng)提交的事務(wù)可能有一部分結(jié)果還保留在緩沖區(qū)中,尚未寫到物理數(shù)據(jù)庫中,因此會丟失這些事務(wù)對數(shù)據(jù)的修改,使數(shù)據(jù)庫處于不一致狀態(tài)。*12系統(tǒng)故障恢復(fù)方法恢復(fù)子系統(tǒng)在系統(tǒng)重新啟動時必須:撤銷所有未完成的事務(wù)重做所有已提交的事務(wù)從而保證將數(shù)據(jù)庫恢復(fù)到一致狀態(tài)。*13其他故障介質(zhì)故障或由計算機病毒引起的故障或破壞,均歸為其他故障。介質(zhì)故障指外存故障,如磁盤損壞等。這類故障會對數(shù)據(jù)庫造成破壞,并影響正在操作的數(shù)據(jù)庫的所有事務(wù)。這類故障雖然發(fā)生的可能性很小,但破壞性很大。計算機病毒的破壞性很大,而且極易傳播,它也可以對數(shù)據(jù)庫造成毀滅性的破壞。*14故障對數(shù)據(jù)庫的影響有兩種可能性:一種是數(shù)據(jù)庫本身的破壞;另一種是數(shù)據(jù)庫沒有破壞,但數(shù)據(jù)可能不正確(因事務(wù)非正常終止)。數(shù)據(jù)庫恢復(fù)就是保證數(shù)據(jù)庫的正確和一致,其原理是:冗余。即數(shù)據(jù)庫中任何一部分被破壞的或不正確的數(shù)據(jù)均可根據(jù)冗余數(shù)據(jù)來重建?;謴?fù)的原理很簡單,但實現(xiàn)的技術(shù)細節(jié)卻很復(fù)雜*1513.3數(shù)據(jù)庫恢復(fù)的類型無論出現(xiàn)何種類型的故障,都必須終止或提交事務(wù),以維護數(shù)據(jù)完整性。事務(wù)的恢復(fù)類型:向前恢復(fù)。向后恢復(fù)。介質(zhì)故障恢復(fù)。*1613.3.1向前恢復(fù)也稱為重做(REDO)用于物理損壞情形的恢復(fù)過程。如:磁盤損壞向數(shù)據(jù)庫緩沖區(qū)寫入數(shù)據(jù)時的故障將緩沖區(qū)中的信息傳輸?shù)酱疟P時出現(xiàn)的故障*17永久生效的更新事務(wù)的中間結(jié)果被寫入到數(shù)據(jù)庫緩沖區(qū)中,數(shù)據(jù)在緩沖區(qū)和數(shù)據(jù)庫的物理存儲之間進行傳輸。當緩沖區(qū)的數(shù)據(jù)被傳輸?shù)轿锢泶鎯ζ骱?,更新操作才是永久性的?18緩沖區(qū)√重做事務(wù)如果在寫入緩沖區(qū)和傳輸緩沖數(shù)據(jù)到物理存儲器過程中發(fā)生故障,則恢復(fù)管理器必須確定故障發(fā)生時執(zhí)行WRITE操作的事務(wù)的狀態(tài):如果事務(wù)已經(jīng)執(zhí)行了COMMIT語句,則恢復(fù)管理器將重做(也稱為前滾)事務(wù)的操作并將事務(wù)的更新結(jié)果保存到數(shù)據(jù)庫中。向前恢復(fù)保證了事務(wù)的持久性。*19向前恢復(fù)過程首先讀取最新的數(shù)據(jù)庫轉(zhuǎn)儲和修改數(shù)據(jù)的事務(wù)日志。然后讀取日志記錄,從數(shù)據(jù)庫轉(zhuǎn)儲之后的第一個記錄開始,一直讀到物理損壞前的最后一次記錄。(從后向前讀)對于每一條日志記錄,把數(shù)據(jù)庫轉(zhuǎn)儲中相關(guān)的數(shù)據(jù)值修改為日志記錄中修改后的值,使數(shù)據(jù)庫中的值是事務(wù)執(zhí)行完成后的最終結(jié)果。*20重做示意圖*2113.3.2向后恢復(fù)向后恢復(fù)(也稱為撤銷,UNDO)用于數(shù)據(jù)庫正常操作過程中發(fā)生錯誤時的恢復(fù)過程。這種錯誤可能是人為鍵入的數(shù)據(jù),或是程序異常結(jié)束而留下的未完成的數(shù)據(jù)庫修改。*22向后恢復(fù)(續(xù))如果在故障發(fā)生時事務(wù)尚未提交,則將導(dǎo)致數(shù)據(jù)庫的不一致性。因此恢復(fù)管理器必須撤銷(回滾)事務(wù)對數(shù)據(jù)庫的所有影響。向后恢復(fù)保證了事務(wù)的原子性。*23向后恢復(fù)過程從數(shù)據(jù)庫的當前狀態(tài)和事務(wù)日志的最后一條記錄開始,按從前向后的順序讀取日志,將數(shù)據(jù)庫中已更新的數(shù)據(jù)值改為記錄在日志中的更新前的值(前像),直至錯誤發(fā)生點。*24回滾示意圖*25示例1*26撤銷撤銷重做重做重做重做示例2有事務(wù)操作歷史及相應(yīng)的日志記錄:時間事務(wù)操作日志記錄說明時刻1R1(A,50)(S,1)啟動事務(wù)T1的日志記錄,無需在日志中記錄讀操作,但這個操作表示事務(wù)T1的開始時刻2W1(A,20)(W,1,A,50,20)將事務(wù)T1修改A的操作記入日志。A修改前的值是50,修改后的值是20時刻3R2(C,100)(S,2)啟動事務(wù)T2的日志記錄時刻4W2(C,50)(W,2,C,100,50)將事務(wù)T2修改C的操作記入日志。C修改前的值是100,修改后的值是50時刻5C2(C,2)提交T2(將日志緩沖區(qū)中的信息寫入日志文件)時刻6R1(B,50)沒有日志項時刻7W1(B,80)(W,1,B,50,80)將事務(wù)T1修改B的操作記入日志。B修改前的值是50,修改后的值是80時刻8C1(C,1)提交T1(將日志緩沖區(qū)中的信息寫入日志文件)恢復(fù)完成之后:A=50,B=50,C=50系統(tǒng)崩潰X故障恢復(fù)過程在發(fā)生故障的系統(tǒng)被重啟后,數(shù)據(jù)庫的恢復(fù)經(jīng)歷了兩個階段:撤銷:按逆向順序讀取日志文件中的記錄直至第一條記錄;重做:順序向前讀取日志文件中的記錄直到最后一條記錄。大多數(shù)商業(yè)DBMS都是先進行撤銷,再進行重做。*28在W1(B,80)之后發(fā)生故障的事務(wù)操作撤銷過程*29序號日志記錄完成的撤銷操作1(C,2)將事務(wù)T2放入事務(wù)提交列表2(W,2,C,100,50)由于事務(wù)T2在提交列表,因此不進行任何操作3(S,2)記錄事務(wù)T2不再活動4(W,1,A,50,20)事務(wù)T1還未提交。最后一部是寫操作,因此系統(tǒng)執(zhí)行撤銷操作,把A改為修改前的值(50)。將事務(wù)T1放入未提交事務(wù)列表5(S,1)到達事務(wù)T1的開始點,現(xiàn)在沒有可撤銷的活動了,因此撤銷階段結(jié)束在W1(B,80)之后發(fā)生故障的事務(wù)操作重做過程*30序號日志記錄重做操作6(S,1)無動作7(W,1,A,50,20)事務(wù)T1未提交,無動作8(S,2)無動作9(W,2,C,100,50)由于事務(wù)T2已提交,因此重做該修改,即把C的值改為5010(C,2)無動作,恢復(fù)結(jié)束13.3.3介質(zhì)故障恢復(fù)當發(fā)生介質(zhì)故障時,磁盤上的物理數(shù)據(jù)和日志文件均遭到破壞,這是破壞最嚴重的一種故障。要從介質(zhì)故障中恢復(fù)數(shù)據(jù)庫,必須在故障前對數(shù)據(jù)庫進行定期轉(zhuǎn)儲。在介質(zhì)正常后,再利用轉(zhuǎn)儲恢復(fù)數(shù)據(jù)庫。*3113.4恢復(fù)技術(shù)恢復(fù)技術(shù)依賴于數(shù)據(jù)庫損壞的類型和程度?;驹瓌t是事務(wù)的所有操作必須作為一個邏輯工作單元來對待,并且要保證數(shù)據(jù)庫的一致性。數(shù)據(jù)庫損壞的類型:物理損壞非物理或事務(wù)故障*32物理損壞需要利用數(shù)據(jù)庫的最新轉(zhuǎn)儲進行恢復(fù)。如果事務(wù)日志文件沒有損壞,還可利用事務(wù)日志重新執(zhí)行已提交事務(wù)的更新操作。*33事務(wù)故障需要撤銷(回滾)引起不一致的修改。為確保更新已到達物理存儲設(shè)備,有必要重做(前滾)一些事務(wù)。通過使用事務(wù)日志文件中更新前的值(前像)和更新后的值(后像),使數(shù)據(jù)庫恢復(fù)到一致性狀態(tài)。這種技術(shù)也稱為基于日志的恢復(fù)技術(shù)。有兩種:延遲更新立即更新*3413.4.1延遲更新技術(shù)只有到達事務(wù)的提交點,更新才被寫入數(shù)據(jù)庫。即:數(shù)據(jù)庫的更新要延遲到事務(wù)執(zhí)行成功并提交時。在事務(wù)執(zhí)行過程中,更新只被記錄在事務(wù)日志和緩沖區(qū)中。當事務(wù)提交后,更新被記錄到數(shù)據(jù)庫。*35延遲更新技術(shù)(續(xù))如果一個事務(wù)在到達提交點之前出現(xiàn)故障,將不會修改數(shù)據(jù)庫,因此沒必要進行撤銷操作。但如果發(fā)生故障時事務(wù)的更新還未寫入到數(shù)據(jù)庫,則必須重做已提交事務(wù)的更新。*36延遲更新技術(shù)的日志內(nèi)容當事務(wù)T啟動時,將“事務(wù)開始”(或<T,BEGIN>)記錄寫入事務(wù)日志文件。在事務(wù)T執(zhí)行期間,寫入一條包含所有之前指定的日志數(shù)據(jù)的日志記錄,例如,為屬性A賦新值ai,則用<WRITE(A,ai)>表示。當事務(wù)T的所有活動都成功提交時,將記錄<T,COMMIT>寫入事務(wù)日志,并將該事務(wù)的所有日志記錄寫到磁盤上,然后提交該事務(wù)。如果事務(wù)T被撤銷了,則忽略該事務(wù)的事務(wù)日志,并且不執(zhí)行寫操作。*37注意是在事務(wù)真正提交之前將日志記錄寫到磁盤因此,如果在數(shù)據(jù)庫的真正更新過程中發(fā)生了故障,日志記錄不會受損。當故障發(fā)生時,檢查日志文件,找到故障發(fā)生時正在執(zhí)行的所有事務(wù)。從日志文件的最后一個入口開始,回滾到最近的一個檢查點(13.4.4介紹)記錄。*38恢復(fù)過程所有出現(xiàn)了事務(wù)開始和事務(wù)提交日志記錄的事務(wù)必須被重做。重做的順序是日志記錄被寫入日志的順序。如果在故障發(fā)生前已經(jīng)執(zhí)行了寫操作,由于該寫操作對數(shù)據(jù)項沒有影響,因此即使再次寫該數(shù)據(jù)也不會有問題。這種方法保證了一定會更新所有在故障發(fā)生前沒有被正確更新的數(shù)據(jù)項。*39恢復(fù)過程(續(xù))對所有出現(xiàn)了事務(wù)開始和事務(wù)撤銷的日志記錄的事務(wù),不進行特別的操作,因為它們實際上并沒有寫數(shù)據(jù)庫。如果在恢復(fù)過程中又發(fā)生了系統(tǒng)崩潰,則可以再次使用日志記錄來恢復(fù)數(shù)據(jù)庫。*40轉(zhuǎn)賬示例賬戶A轉(zhuǎn)賬給賬戶B2000元,假設(shè)賬戶A現(xiàn)余額10000元,賬戶B現(xiàn)余額3000元。轉(zhuǎn)賬事務(wù)T的正常執(zhí)行過程:*41時間事務(wù)步驟動作時刻1READ(A,a1)讀取賬戶A的當前余額時刻2a1=a1-2000將賬戶A的余額減去2000時刻3WRITE(A,a1)將新的余額寫入到賬戶表中時刻4READ(B,b1)讀取賬戶B的當前余額時刻5b1=b1+2000將賬戶B的余額加上2000時刻6WRITE(B,b1)將新的余額寫入到賬戶表中立即更新轉(zhuǎn)賬示例(續(xù))轉(zhuǎn)賬事務(wù)T的延時更新日志記錄*42時間日志記錄數(shù)據(jù)庫存儲的值事務(wù)開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,8000>時刻3<T,B,5000>時刻4<T,COMMIT>事務(wù)執(zhí)行之后A=8000B=5000轉(zhuǎn)賬示例(續(xù))在<T,COMMIT>記錄被寫入事務(wù)日志之后、更新記錄被寫入數(shù)據(jù)庫之前發(fā)生故障時,事務(wù)T的延時更新日志記錄:*43時間日志記錄數(shù)據(jù)庫存儲的值事務(wù)開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,8000>時刻3<T,B,5000>時刻4<T,COMMIT>當系統(tǒng)進行恢復(fù)時,重做事務(wù)T的操作,賬戶A和B的新值8000和5000被寫入到數(shù)據(jù)庫中。轉(zhuǎn)賬示例(續(xù))在WRITE(B,b1)操作執(zhí)行之前發(fā)生故障的事務(wù)日志。事務(wù)T的延時更新日志記錄:*44時間日志記錄數(shù)據(jù)庫存儲的值事務(wù)開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,8000>時刻3<T,B,5000>當系統(tǒng)進行恢復(fù)時,無需執(zhí)行任何操作。數(shù)據(jù)庫中賬戶A和B的值仍為10000和3000。13.4.2立即更新技術(shù)更新一旦發(fā)生即被施加到數(shù)據(jù)庫中,而無需等到事務(wù)提交點以及所有的更改被保存在事務(wù)日志時。除了需要重做故障之前已提交的事務(wù)所做的更改外,還需要撤銷當故障發(fā)生時仍未提交的事務(wù)所造成的影響。*45立即更新技術(shù)的日志內(nèi)容當事務(wù)T開始時,“事務(wù)開始”(或<T,BEGIN>)被寫入事務(wù)日志文件。當執(zhí)行寫操作時,向日志文件中寫入一條包含必要數(shù)據(jù)的記錄。一旦寫入了事務(wù)日志記錄,就對數(shù)據(jù)庫緩沖區(qū)進行寫更新。當緩沖區(qū)數(shù)據(jù)被轉(zhuǎn)入輔存時,寫入對數(shù)據(jù)庫的更新讀數(shù)據(jù)庫自身的更新在緩沖區(qū)下一次被刷新到輔存時進行。當事務(wù)T提交時,“事務(wù)提交”(<T,COMMIT>)記錄被寫入事務(wù)日志。*46說明日志記錄是在對應(yīng)的寫操作施加到數(shù)據(jù)庫之前被寫入的,這稱為“先寫日志協(xié)議”。通過使用先寫日志協(xié)議,恢復(fù)管理器可以大膽假設(shè),如果在日志文件中不存在某個事務(wù)的提交記錄,則該事務(wù)在故障發(fā)生時一定處于活動狀態(tài),因此必須被撤銷。*47說明如果事務(wù)被撤銷,則可利用日志撤銷事務(wù)所做的修改,因為日志中包含了所有被更新字段的原始值(前像)。由于一個事務(wù)可能對一個數(shù)據(jù)項進行過多次更改,因此對寫的撤銷應(yīng)按逆序進行。無論事務(wù)的寫操作是否被施加到了數(shù)據(jù)庫,寫入數(shù)據(jù)項的前像保證了數(shù)據(jù)庫被恢復(fù)到事務(wù)開始前的狀態(tài)。*48恢復(fù)過程對于任何在日志中同時有“事務(wù)開始”和“事務(wù)提交”記錄的事務(wù),用日志記錄來重做,按日志記錄的方式寫入更新字段的后像值。對于任何在日志中只有“事務(wù)開始”記錄而沒有“事務(wù)提交”記錄的事務(wù),必須撤銷它。這里使用日志記錄得到被修改字段的前像值,并將前像值寫入數(shù)據(jù)庫,從而將數(shù)據(jù)庫恢復(fù)到事務(wù)開始之前的狀態(tài)。撤銷操作按它們被寫入日志的逆序進行。*49立即更新日志示例轉(zhuǎn)賬事務(wù)T的立即更新日志記錄:*50時間日志記錄數(shù)據(jù)庫存儲的值事務(wù)開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,10000,8000>時刻3A=8000時刻4<T,B,3000,5000>時刻5B=5000時刻6<T,COMMIT>轉(zhuǎn)賬事務(wù)立即更新示例(續(xù))寫操作WRITE(B,b1)執(zhí)行之前發(fā)生故障時的事務(wù)日志:*51時間日志記錄數(shù)據(jù)庫存儲的值事務(wù)開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,10000,8000>時刻3A=8000事務(wù)T必須被撤銷,因此執(zhí)行UNDO(T)操作,使A的值恢復(fù)為10000,且事務(wù)T需要重新開始。立即更新示例(續(xù))當<T,COMMIT>被寫入事務(wù)日志之后,但新值被寫入數(shù)據(jù)庫之前發(fā)生故障時的事務(wù)日志:時間日志記錄數(shù)據(jù)庫存儲的值事務(wù)開始之前A=10000B=3000時刻1<T,BEGIN>時刻2<T,A,10000,8000>時刻3A=8000時刻4<T,B,3000,5000>時刻5B=5000時刻6<T,COMMIT>當系統(tǒng)恢復(fù)時,執(zhí)行REDO(T)操作,A和B的值分別為8000和5000。13.4.3鏡像頁技術(shù)在鏡像頁模式中,數(shù)據(jù)庫被認為是由固定大小的磁盤分區(qū)的邏輯存儲單元組成。通過頁表將頁映射到物理磁盤分區(qū),數(shù)據(jù)庫中的每個邏輯頁對應(yīng)頁表中的一條記錄。每條記錄包含頁所存儲的物理存儲的分區(qū)號。在單用戶環(huán)境下,鏡像頁技術(shù)不需要使用事務(wù)日志,在多用戶環(huán)境下可能需要事務(wù)日志來支持并發(fā)控制。*53鏡像頁技術(shù)(續(xù))鏡像頁方法在事務(wù)的生存期內(nèi),維護兩個頁表,:當前頁表、鏡像頁表。當事務(wù)剛啟動時,兩個頁表是一樣的。此后,鏡像頁表不再改變,并在系統(tǒng)故障時用于恢復(fù)數(shù)據(jù)庫。在事務(wù)執(zhí)行過程中,當前頁表被用于記錄對數(shù)據(jù)庫的所有更新。但事務(wù)結(jié)束時,當前頁表轉(zhuǎn)變成鏡像頁表。*54鏡像頁模式*55說明被事務(wù)影響的頁被復(fù)制到新的物理存儲區(qū)中,通過當前頁表,這些分區(qū)和那些沒有被修改的分區(qū)是事務(wù)可以訪問的。被更改的頁的老版本保持不變,通過鏡像頁表事務(wù)仍然可以訪問這些頁。鏡像頁表包含事務(wù)開始之前頁表中存在的記錄以及從未被事務(wù)修改的分區(qū)記錄。鏡像頁表在事務(wù)發(fā)生時保持不變,用于撤銷事務(wù)時使用。*56鏡像頁技術(shù)優(yōu)缺點優(yōu)點:消除了維護事務(wù)日志文件的開銷,而且,由于不需要對操作進行撤銷或重做,因此恢復(fù)速度非???。缺點:數(shù)據(jù)碎片或分散,需要定期進行垃圾收集以回收不能訪問的分區(qū)。*5713.4.4檢查點技術(shù)在利用日志進行數(shù)據(jù)庫恢復(fù)時,一般需要檢查所有的日志記錄。這有兩個問題:搜索整個日志將耗費大量的時間,很多需要重做的事務(wù)實際上可能已經(jīng)將它們的更新結(jié)果寫到了數(shù)據(jù)庫中,而恢復(fù)子系統(tǒng)又重新執(zhí)行這些操作,同樣浪費了大量時間。*58檢查點技術(shù)為解決上述問題,發(fā)展了具有檢查點的恢復(fù)技術(shù)。這種技術(shù)在日志文件中增加兩個新的記錄檢查點記錄重新開始記錄檢查點記錄的內(nèi)容包括:建立檢查點時刻所有正在執(zhí)行的事務(wù)列表;這些事務(wù)最近一個日志記錄的地址。*59重新開始文件用于記錄各個檢查點記錄在日志文件中的地址。圖示為建立檢查點Ci時對應(yīng)的日志文件和重新開始文件。動態(tài)維護日志文件的方法周期性地執(zhí)行建立檢查點和保存數(shù)據(jù)庫狀態(tài)的操作。具體步驟:①
將日志緩沖區(qū)中的所有日志記錄寫到磁盤日志文件上。②
在日志文件中寫入一個檢查點記錄,該記錄包含所有在檢查點運
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲禮儀服務(wù)培訓(xùn)
- 寒露氣候科普解析
- 廣東省深圳市寶安區(qū)龍華中學(xué)2022-2023學(xué)年八年級數(shù)學(xué)上學(xué)期期末模擬測試題(解析版)
- 構(gòu)建未來智慧課堂
- 2025至2030年中國軸承套圈內(nèi)圓磨床市場調(diào)查研究報告
- 2025至2030年中國腈綸專用勻染劑市場調(diào)查研究報告
- 陶瓷廠水煤氣站安全作業(yè)培訓(xùn)
- 2025至2030年中國熱風(fēng)循環(huán)烤箱市場調(diào)查研究報告
- 2025至2030年中國棉亞麻毯數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國散裝碳粉市場調(diào)查研究報告
- 2023年輔導(dǎo)員職業(yè)技能大賽試題及答案
- 2023年天津銀行招聘筆試真題
- 工程質(zhì)量控制流程圖
- 現(xiàn)代家政導(dǎo)論-課件 1.2.2認識現(xiàn)代家政的特點和功能
- 日語翻譯崗位招聘面試題與參考回答2025年
- 副總經(jīng)理招聘面試題及回答建議(某大型國企)
- 浙江省寧波市九校2023-2024學(xué)年高二下學(xué)期期末聯(lián)考數(shù)學(xué)試題
- SOAP病例書寫規(guī)范
- 《智慧科技點亮夢想》演講課件
- 2024年高中語文課內(nèi)文言文《齊桓晉文之事》探究性閱讀練習(xí)含答案解析翻譯
- 2019-2023歷年高考真題分類專題06 立體幾何(解答題)(原卷版)
評論
0/150
提交評論