哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題《數(shù)據(jù)庫(kù)原理》_第1頁(yè)
哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題《數(shù)據(jù)庫(kù)原理》_第2頁(yè)
哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題《數(shù)據(jù)庫(kù)原理》_第3頁(yè)
哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題《數(shù)據(jù)庫(kù)原理》_第4頁(yè)
哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題《數(shù)據(jù)庫(kù)原理》_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、哈爾濱工業(yè)大學(xué)2010年春博士入學(xué)考試數(shù)據(jù)庫(kù)原理試卷一、名詞解釋(15分,每小題3分) (1)無(wú)損聯(lián)接(P122)稱這個(gè)分解是滿足函數(shù)依賴集的無(wú)損連接(2)函數(shù)的邏輯蘊(yùn)含(3)多值依賴(4)函數(shù)依賴集F的閉包F+設(shè)R是一個(gè)具有屬性集合U的關(guān)系模式,F(xiàn)是給定的函數(shù)依賴集合,由F推導(dǎo)出的所有函數(shù)依賴的集合,稱為F的閉包,記作F+。(5)簡(jiǎn)要分析關(guān)系規(guī)范化的利弊關(guān)系模式規(guī)范化:把一個(gè)給定關(guān)系模式轉(zhuǎn)化為某種范式的過(guò)程稱為關(guān)系模式的規(guī)范化過(guò)程,簡(jiǎn)稱規(guī)范化。關(guān)系模式規(guī)范化的主要方法是關(guān)系模式的分解,即把一個(gè)低一級(jí)范式的關(guān)系模式分解為若干個(gè)高一級(jí)范式的子關(guān)系模式,使這些子模式具有指定的某種范式。關(guān)系規(guī)范化的

2、目的是解決關(guān)系模式中存在的數(shù)據(jù)冗余、插入和刪除異常、更新不一致等問(wèn)題。規(guī)范化的程度越高,數(shù)據(jù)的冗余和更新異常相對(duì)減少,但由于聯(lián)接運(yùn)算費(fèi)時(shí),查詢時(shí)所花的時(shí)間也就越多。因此,規(guī)范化的程度不是越高越好,而取決于關(guān)系運(yùn)算的實(shí)際需求。在實(shí)際工作中,應(yīng)根據(jù)具體情況權(quán)衡利弊,適可而止。一般來(lái)說(shuō),靜態(tài)關(guān)系模式(數(shù)據(jù)加載之后,用戶在這個(gè)關(guān)系上僅運(yùn)行查詢操作,不再進(jìn)行更新、插入和刪除等操作)只需具有第一范式形式,動(dòng)態(tài)關(guān)系模式(用戶經(jīng)常在這個(gè)關(guān)系上進(jìn)行更新、插入和刪除等操作)至少具有第三范式形式。二、已知關(guān)系模式R的屬性集合U=A,B,C,D,E,函數(shù)依賴集合F=AC,BC,CD,DEC,CEA,分解=R1(A,D

3、),R2(A,B),R3(B,E),R4(C,D,E),R5(A,E),請(qǐng)驗(yàn)試是否具有無(wú)損聯(lián)接性(15分)解:的無(wú)損聯(lián)接性判斷表結(jié)果如下表示RiABCDEADa1b12b31a4b15ABa1a2b31a4b25BEa1a2a3a4a5CDEa1b42a3a4a5AEa1b52a3a4a5由于表中不存在值為a1,a2,a3,a4,a5的行,所以分解具有無(wú)損聯(lián)接性。三、什么是故障點(diǎn)、檢查點(diǎn)、轉(zhuǎn)儲(chǔ)點(diǎn)?請(qǐng)按某次完整的故障恢復(fù)過(guò)程,描述這三者在故障恢復(fù)過(guò)程中的使用(10分)1. 數(shù)據(jù)庫(kù)故障的種類及其恢復(fù)策略數(shù)據(jù)庫(kù)系統(tǒng)可能發(fā)生的故障主要分為四類:事務(wù)故障、系統(tǒng)故障、介質(zhì)故障和計(jì)算機(jī)病毒。(1)事務(wù)故障事

4、務(wù)故障是指事務(wù)在運(yùn)行過(guò)程中由于種種原因未能運(yùn)行到正常結(jié)束點(diǎn)前而被終止,通常分為:可預(yù)期的事務(wù)故障:應(yīng)用程序可以發(fā)現(xiàn)并讓事務(wù)回滾,撤銷已做的修改操作,恢復(fù)數(shù)據(jù)庫(kù)到正確狀態(tài)。非預(yù)期的事務(wù)故障:這些事務(wù)故障不能由事務(wù)程序處理,如并發(fā)事務(wù)發(fā)生死鎖而被撤銷等。事務(wù)故障的恢復(fù)方法:恢復(fù)到事務(wù)未執(zhí)行時(shí)的狀態(tài)。反向閱讀日志文件,找出該事務(wù)的所有更新操作,對(duì)每一項(xiàng)更新操作做它的逆操作,即強(qiáng)行回滾(ROLLBACK)該事務(wù),這類恢復(fù)操作稱為事務(wù)撤銷(UNDO)。(2)系統(tǒng)故障系統(tǒng)故障是指造成數(shù)據(jù)庫(kù)系統(tǒng)停止運(yùn)行的任何事件,如操作系統(tǒng)、DBMS、硬件故障或突然斷電等,使得系統(tǒng)需要重新啟動(dòng),通常稱為軟故障(Soft C

5、rash)。系統(tǒng)故障影響正在運(yùn)行的所有事務(wù),但不破壞數(shù)據(jù)庫(kù)。發(fā)生系統(tǒng)故障時(shí)主存內(nèi)容,尤其是數(shù)據(jù)庫(kù)緩沖區(qū)(在內(nèi)存)中的內(nèi)容都被丟失,所有運(yùn)行事務(wù)都非正常終止。發(fā)生系統(tǒng)故障時(shí),一些尚未完成的事務(wù)的結(jié)果可能己送入物理數(shù)據(jù)庫(kù),從而造成數(shù)據(jù)庫(kù)可能處于不正確的狀態(tài)。為保證數(shù)據(jù)一致性,需要清除這些事務(wù)對(duì)數(shù)據(jù)庫(kù)的所有修改?;謴?fù)子系統(tǒng)必須在系統(tǒng)重新啟動(dòng)時(shí)讓所有非正常終止的事務(wù)回滾,強(qiáng)行撤銷(UNDO)所有未完成事務(wù)。另一方面,發(fā)生系統(tǒng)故障時(shí),有些己完成的事務(wù)可能有一部分甚至全部留在緩沖區(qū),尚未寫(xiě)回到磁盤(pán)上的物理數(shù)據(jù)庫(kù)中,系統(tǒng)故障使得這些事務(wù)對(duì)數(shù)據(jù)庫(kù)的修改部分或全部丟失,這也會(huì)使數(shù)據(jù)庫(kù)處于不一致?tīng)顟B(tài),因此應(yīng)將這些

6、事務(wù)己提交的結(jié)果重新寫(xiě)入數(shù)據(jù)庫(kù)。所以系統(tǒng)重新啟動(dòng)后,恢復(fù)子系統(tǒng)除需要撤銷所有未完成事務(wù)外,還需要重做(REDO)所有己提交的事務(wù),以將數(shù)據(jù)庫(kù)真正恢復(fù)到一致?tīng)顟B(tài)。系統(tǒng)故障的恢復(fù)方法:對(duì)未完成的事務(wù)進(jìn)行回滾,強(qiáng)行撤銷(UNDO)所有未完成的事務(wù);對(duì)已完成的事務(wù)提交,結(jié)果仍在緩沖區(qū)的事務(wù)重新提交。(3)介質(zhì)故障介質(zhì)故障稱為硬故障(Hard Crash),是指外存故障,如磁盤(pán)損壞、磁頭碰撞,瞬時(shí)強(qiáng)磁場(chǎng)干擾等。這類故障將破壞數(shù)據(jù)庫(kù)或部分?jǐn)?shù)據(jù)庫(kù),并影響正在存取這部分?jǐn)?shù)據(jù)的所有事務(wù)。這類故障比前兩類故障發(fā)生的可能性小得多,但破壞性最大。發(fā)生介質(zhì)故障后,磁盤(pán)上的物理數(shù)據(jù)和日志文件被破壞,恢復(fù)策略是重裝數(shù)據(jù)庫(kù),

7、然后重做已完成的事務(wù)。介質(zhì)故障的恢復(fù)方法:首先,裝入最新的數(shù)據(jù)庫(kù)后備副本,使數(shù)據(jù)庫(kù)恢復(fù)到最近一次轉(zhuǎn)儲(chǔ)時(shí)的一致性狀態(tài);對(duì)于動(dòng)態(tài)轉(zhuǎn)儲(chǔ)的副本,還須同時(shí)裝入轉(zhuǎn)儲(chǔ)開(kāi)始時(shí)的日志文件副本,利用恢復(fù)系統(tǒng)故障的方法(重做REDO+撤銷UNDO)將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài)。其次,裝入相應(yīng)的日志文件副本,重做已完成的事務(wù)。最后,從故障開(kāi)始點(diǎn)反向讀日志文件,使數(shù)據(jù)庫(kù)恢復(fù)到故障前那一刻的狀態(tài)。(4)計(jì)算機(jī)病毒計(jì)算機(jī)病毒是一種人為的故障或破壞,是一些惡作劇者研制的一種計(jì)算機(jī)程序?;謴?fù)方法與介質(zhì)故障的恢復(fù)方法相同。2. 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)數(shù)據(jù)庫(kù)恢復(fù)的基本單位是事務(wù)。數(shù)據(jù)庫(kù)恢復(fù)的基本策略是數(shù)據(jù)冗余和事務(wù)恢復(fù),其中數(shù)據(jù)冗余是指數(shù)據(jù)備

8、用副本和日志文件,事務(wù)恢復(fù)是利用事務(wù)作為操作單位進(jìn)行恢復(fù)。數(shù)據(jù)庫(kù)恢復(fù)的基本思想:數(shù)據(jù)庫(kù)系統(tǒng)通過(guò)記錄日志和數(shù)據(jù)轉(zhuǎn)儲(chǔ)來(lái)建立冗余數(shù)據(jù)。日志記錄了數(shù)據(jù)庫(kù)的所有更新操作信息,所有故障的恢復(fù)都需要它。數(shù)據(jù)轉(zhuǎn)儲(chǔ)制作數(shù)據(jù)庫(kù)的后備副本,這些副本與日志配合使用,用來(lái)實(shí)現(xiàn)介質(zhì)故障恢復(fù)。數(shù)據(jù)庫(kù)鏡像在不同的存儲(chǔ)介質(zhì)上維護(hù)數(shù)據(jù)庫(kù)的同步副本,也是建立冗余數(shù)據(jù)的一種方法。使用數(shù)據(jù)庫(kù)鏡像可以簡(jiǎn)化介質(zhì)故障的恢復(fù),但需要附加的存儲(chǔ)設(shè)備。數(shù)據(jù)恢復(fù)可分兩個(gè)方面:一是事務(wù)或系統(tǒng)故障的恢復(fù);另一個(gè)是存儲(chǔ)介質(zhì)故障的恢復(fù)。對(duì)于事務(wù)和系統(tǒng)故障涉及的存儲(chǔ)器主要是主存儲(chǔ)器和高速緩沖存儲(chǔ)器, 這兩個(gè)存儲(chǔ)器屬臨時(shí)存儲(chǔ)器。當(dāng)事務(wù)或系統(tǒng)發(fā)生故障時(shí),臨時(shí)存儲(chǔ)

9、器上的數(shù)據(jù)要么被破壞,要么全部丟失。介質(zhì)故障涉及的存儲(chǔ)器主要是硬盤(pán)、軟盤(pán)、磁帶等 永久存儲(chǔ)器。不管哪種故障恢復(fù)都必須借助日志文件,日志文件必須存放于理論上永遠(yuǎn)不會(huì)損壞的存儲(chǔ)器上,稱為永恒存儲(chǔ)器。數(shù)據(jù)庫(kù)恢復(fù)的基本方法有:定期備份數(shù)據(jù)庫(kù)、建立日志文件、針對(duì)不同故障類型分別恢復(fù)。(1)基于日志的恢復(fù)技術(shù)日志是數(shù)據(jù)庫(kù)管理系統(tǒng)用來(lái)記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)相關(guān)歷史操作的文件,是日志記錄的序列,記錄了每個(gè)事務(wù)的開(kāi)始標(biāo)記、結(jié)束標(biāo)記和所有更新操作。不同的數(shù)據(jù)庫(kù)系統(tǒng)采用不同的日志文件,這些日志文件主要包括以記錄為單位的日志文件和以數(shù)據(jù)塊為單位的日志文件兩種。n 以記錄為單位的日志文件登錄的內(nèi)容: 各事務(wù)的開(kāi)始標(biāo)記,用&l

10、t;T,start>表示。 各事務(wù)的結(jié)束標(biāo)記,用<T,commit>表示事務(wù)已經(jīng)提交。 各事務(wù)的所有更新操作。用<T,X,V1,V2>表示T事務(wù)在數(shù)據(jù)對(duì)象X上執(zhí)行的操作,其中V1、V2表示更新前后數(shù)據(jù)對(duì)象的值。n 以數(shù)據(jù)塊為單位的日志文件登記的內(nèi)容包括: 事務(wù)標(biāo)識(shí) 被更新的數(shù)據(jù)塊。日志文件的作用除進(jìn)行事務(wù)故障的恢復(fù)和系統(tǒng)故障的恢復(fù)外,還用于存儲(chǔ)介質(zhì)故障的恢復(fù)。事務(wù)故障和系統(tǒng)故障都不破壞存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)庫(kù),可以使用日志進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)。日志除可以用來(lái)進(jìn)行事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù)外,還可協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù)。當(dāng)數(shù)據(jù)庫(kù)被破壞后,可重新裝入后備副本把數(shù)據(jù)庫(kù)恢復(fù)到

11、轉(zhuǎn)儲(chǔ)結(jié)束時(shí)的正確狀態(tài),然后利用日志文件,把已完成的事務(wù)進(jìn)行重做,對(duì)故障發(fā)生時(shí)候未完成的事務(wù)進(jìn)行撤銷處理。因此,利用日志文件恢復(fù)數(shù)據(jù)庫(kù)的方法如下圖所示。圖 利用日志文件恢復(fù)數(shù)據(jù)庫(kù)說(shuō)明:其中TaTb為靜態(tài)轉(zhuǎn)儲(chǔ)階段,從Ta時(shí)刻開(kāi)始轉(zhuǎn)儲(chǔ),到Tb時(shí)刻轉(zhuǎn)儲(chǔ)完畢。若Tf時(shí)刻發(fā)生故障,則重裝后備副本,只能恢復(fù)到轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻,其后的事務(wù)必須重做。Ta為轉(zhuǎn)儲(chǔ)點(diǎn),Tb為檢查點(diǎn),Tf為故障點(diǎn),(2)基于檢查點(diǎn)的恢復(fù)技術(shù)利用日志技術(shù)進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)時(shí),恢復(fù)子系統(tǒng)必須搜索日志,確定哪些事務(wù)需要重做(REDO),哪些事務(wù)需要撤銷(UNDO)。一般需要檢查所有日志記錄,這樣就帶來(lái)兩個(gè)問(wèn)題:一是搜索整個(gè)日志將耗費(fèi)大量的時(shí)間,二是

12、很多需要重做(REDO)處理的事務(wù)實(shí)際上已經(jīng)將它們的更新操作結(jié)果寫(xiě)到了數(shù)據(jù)庫(kù)中了,然而恢復(fù)子系統(tǒng)又重新執(zhí)行這個(gè)操作,也會(huì)浪費(fèi)大量時(shí)間。數(shù)據(jù)轉(zhuǎn)儲(chǔ):定期對(duì)數(shù)據(jù)庫(kù)進(jìn)行復(fù)制或轉(zhuǎn)儲(chǔ)(Dump)。注意幾個(gè)概念:靜態(tài)轉(zhuǎn)儲(chǔ)、動(dòng)態(tài)轉(zhuǎn)儲(chǔ)、海量轉(zhuǎn)儲(chǔ)和增量轉(zhuǎn)儲(chǔ)。轉(zhuǎn)儲(chǔ)是指DBA定期將整個(gè)數(shù)據(jù)庫(kù)復(fù)制到永久存儲(chǔ)器的過(guò)程,這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。一旦系統(tǒng)發(fā)生介質(zhì)故障,數(shù)據(jù)庫(kù)就遭到破壞,可以將后備副本重新裝入,但重裝后備副本只能將數(shù)據(jù)庫(kù)恢復(fù)到轉(zhuǎn)儲(chǔ)時(shí)的狀態(tài),要想恢復(fù)到故障發(fā)生時(shí)的狀態(tài),還必須重新運(yùn)行自轉(zhuǎn)儲(chǔ)以后的所有更新事務(wù)。轉(zhuǎn)儲(chǔ)按照轉(zhuǎn)儲(chǔ)時(shí)的狀態(tài)分為靜態(tài)轉(zhuǎn)儲(chǔ)和動(dòng)態(tài)轉(zhuǎn)儲(chǔ)。靜態(tài)轉(zhuǎn)儲(chǔ):是指在系統(tǒng)中無(wú)運(yùn)行事務(wù)時(shí)進(jìn)行的轉(zhuǎn)儲(chǔ)

13、操作,轉(zhuǎn)儲(chǔ)操作開(kāi)始時(shí),數(shù)據(jù)庫(kù)處于一致性狀態(tài),轉(zhuǎn)儲(chǔ)期間不允許對(duì)數(shù)據(jù)庫(kù)的任何存取和修改,得到的是一個(gè)數(shù)據(jù)一致性的副本。動(dòng)態(tài)轉(zhuǎn)儲(chǔ):是指轉(zhuǎn)儲(chǔ)期間允許對(duì)數(shù)據(jù)庫(kù)進(jìn)行存取或修改操作,即轉(zhuǎn)儲(chǔ)和用戶事務(wù)可以并發(fā)執(zhí)行。它不用等待正在運(yùn)行的用戶事務(wù)結(jié)束,必須把轉(zhuǎn)儲(chǔ)期間各事務(wù)對(duì)數(shù)據(jù)庫(kù)的修改記下來(lái),建立日志文件。這樣,后備副本加上日志文件就能把數(shù)據(jù)庫(kù)恢復(fù)到某一時(shí)刻的正確狀態(tài)。采用動(dòng)態(tài)轉(zhuǎn)儲(chǔ)必須借助日志文件,把轉(zhuǎn)儲(chǔ)期間的存取活動(dòng)登記下來(lái)作為后援副本,方能保證恢復(fù)到轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻的正確狀態(tài)。轉(zhuǎn)儲(chǔ)又可分為海量轉(zhuǎn)儲(chǔ)和增量轉(zhuǎn)儲(chǔ)。海量轉(zhuǎn)儲(chǔ)每次轉(zhuǎn)儲(chǔ)全部數(shù)據(jù)庫(kù);增量轉(zhuǎn)儲(chǔ)指每次只轉(zhuǎn)儲(chǔ)上次轉(zhuǎn)儲(chǔ)后更新過(guò)的數(shù)據(jù)。從恢復(fù)角度看,使用海量轉(zhuǎn)儲(chǔ)得到的后

14、備副本進(jìn)行恢復(fù)一般說(shuō)來(lái)更簡(jiǎn)單些。但如果數(shù)據(jù)庫(kù)很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲(chǔ)方式更實(shí)用更有效。完整數(shù)據(jù)庫(kù)備份:完整數(shù)據(jù)庫(kù)備份就是備份整個(gè)數(shù)據(jù)庫(kù)。它備份數(shù)據(jù)庫(kù)文件、這些文件的地址以及事務(wù)日志的某些部分(從備份開(kāi)始時(shí)所記錄的日志順序號(hào)到備份結(jié)束時(shí)的日志順序號(hào))。差異數(shù)據(jù)庫(kù)備份:差異數(shù)據(jù)庫(kù)備份是指將從最近一次完全數(shù)據(jù)庫(kù)備份以后發(fā)生改變的數(shù)據(jù)進(jìn)行備份。如果在完整備份后將某個(gè)文件添加至數(shù)據(jù)庫(kù),則下一個(gè)差異備份將會(huì)包括該新文件。這樣可以方便地備份數(shù)據(jù)庫(kù),而無(wú)須了解各個(gè)文件。事務(wù)日志備份:事務(wù)日志備份就是自從上一個(gè)事務(wù)以來(lái)已經(jīng)發(fā)生了變化的部分。事務(wù)日志備份比完整數(shù)據(jù)庫(kù)備份節(jié)省時(shí)間和空間,而且利用事務(wù)日志

15、備份進(jìn)行恢復(fù)時(shí),可以指定恢復(fù)到某一個(gè)事務(wù)。文件組備份:文件組備份就是對(duì)數(shù)據(jù)庫(kù)中的部分文件或文件組進(jìn)行備份。文件組是一種將數(shù)據(jù)庫(kù)存放在多個(gè)文件上的方法。檢查點(diǎn)(Check Point):也稱為安全點(diǎn)或恢復(fù)點(diǎn),是一個(gè)數(shù)據(jù)庫(kù)事件,它把修改數(shù)據(jù)從高速緩存中的臟緩存塊中的數(shù)據(jù)寫(xiě)入磁盤(pán)的數(shù)據(jù)文件中,并更新控制文件和數(shù)據(jù)文件。檢查點(diǎn)會(huì)創(chuàng)建一個(gè)已知的正常點(diǎn),在數(shù)據(jù)庫(kù)管理系統(tǒng)意外關(guān)閉或崩潰后進(jìn)行恢復(fù)的過(guò)程中,數(shù)據(jù)庫(kù)引擎可以從該點(diǎn)開(kāi)始應(yīng)用日志中所包含的更改。也就是說(shuō),數(shù)據(jù)庫(kù)的檢查點(diǎn)相當(dāng)于一個(gè)觸發(fā)器,當(dāng)滿足一定的條件時(shí)就會(huì)觸發(fā)這個(gè)事件,這時(shí)高速緩存中的臟緩存塊中的數(shù)據(jù)就會(huì)被寫(xiě)入到數(shù)據(jù)文件之中,合理設(shè)置檢查點(diǎn)直接關(guān)系

16、到數(shù)據(jù)的安全與數(shù)據(jù)庫(kù)系統(tǒng)的性能。檢查點(diǎn)是數(shù)據(jù)庫(kù)和事務(wù)日志之間的同步點(diǎn),在檢測(cè)點(diǎn)上DBMS:(1)拒絕接受新的事務(wù)請(qǐng)求;(2)停止正在處理的還未完成的一切事務(wù);把緩沖區(qū)寫(xiě)入磁盤(pán);(3)等待OS確認(rèn)所有對(duì)數(shù)據(jù)庫(kù)和日志的寫(xiě)請(qǐng)求都已完成(此時(shí)數(shù)據(jù)庫(kù)和日志是同步的),接著,向日志寫(xiě)入一條檢測(cè)點(diǎn)記錄。當(dāng)用戶更新或者插入數(shù)據(jù)的時(shí)候,系統(tǒng)首先會(huì)將數(shù)據(jù)保存到數(shù)據(jù)緩存中,而不是直接存儲(chǔ)到硬盤(pán)上。當(dāng)用戶更新或者插入數(shù)據(jù)的時(shí)候,數(shù)據(jù)庫(kù)系統(tǒng)首先會(huì)將數(shù)據(jù)保存到數(shù)據(jù)的緩存區(qū)域,而不是直接存儲(chǔ)到硬盤(pán)上的數(shù)據(jù)文件中。而等到滿足一定條件的時(shí)候,系統(tǒng)就會(huì)將數(shù)據(jù)緩存區(qū)中的數(shù)據(jù)保存到硬盤(pán)的數(shù)據(jù)文件中,促使將數(shù)據(jù)緩存中的信息保存到數(shù)據(jù)文

17、件中。即“檢查點(diǎn)”將當(dāng)前內(nèi)存中已修改的頁(yè)(稱為“臟頁(yè)”)和事務(wù)日志信息從內(nèi)存寫(xiě)入磁盤(pán),并記錄有關(guān)事務(wù)日志的信息。當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)執(zhí)行了一個(gè)檢查點(diǎn)之后,系統(tǒng)會(huì)將所有的已經(jīng)提交事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的全部寫(xiě)入到硬盤(pán)的數(shù)據(jù)文件中。也就是說(shuō),此時(shí)硬盤(pán)上的數(shù)據(jù)文件已經(jīng)反映了數(shù)據(jù)庫(kù)的一個(gè)完整的狀態(tài),用戶先前對(duì)數(shù)據(jù)庫(kù)所做的更改已經(jīng)全部保存到了數(shù)據(jù)文件之中。此時(shí)如果發(fā)生了什么變故,但是數(shù)據(jù)庫(kù)系統(tǒng)崩潰。由于數(shù)據(jù)庫(kù)所的變化都已經(jīng)保存到了數(shù)據(jù)文件之中,為此在進(jìn)行數(shù)據(jù)恢復(fù)時(shí)只需要將數(shù)據(jù)庫(kù)恢復(fù)到上一個(gè)檢查點(diǎn)執(zhí)行時(shí)刻即可,而不需要進(jìn)行復(fù)雜的恢復(fù)操作。所以說(shuō),如果將這個(gè)檢查點(diǎn)設(shè)置的比較短一點(diǎn),即兩個(gè)檢查點(diǎn)發(fā)生的時(shí)間比較短,那么就可以

18、減少數(shù)據(jù)庫(kù)恢復(fù)所需要的時(shí)間。但是也并不是說(shuō)檢查點(diǎn)設(shè)置的越短越好,因?yàn)閿?shù)據(jù)庫(kù)的任何更改都及時(shí)保存到數(shù)據(jù)文件中,如果檢查點(diǎn)設(shè)置得太短必然會(huì)使數(shù)據(jù)庫(kù)系統(tǒng)的性能會(huì)大打折扣?;跈z查點(diǎn)的恢復(fù)技術(shù)在日志文件中增加一類新的記錄檢查點(diǎn)記錄(檢查點(diǎn)建立時(shí)所有正在執(zhí)行的事務(wù)清單),增加一個(gè)重新開(kāi)始文件(存儲(chǔ)個(gè)檢查點(diǎn)記錄的地址),并讓恢復(fù)子系統(tǒng)在登錄日志文件期間動(dòng)態(tài)維護(hù)日志。數(shù)據(jù)庫(kù)恢復(fù)機(jī)制定期執(zhí)行如下操作,保存數(shù)據(jù)庫(kù)狀態(tài),建立檢查點(diǎn):n 將目前主存中的所有日志記錄強(qiáng)行輸出到外存儲(chǔ)器;n 將所有緩沖區(qū)中被修改的數(shù)據(jù)塊強(qiáng)行寫(xiě)入磁盤(pán);n 把日志記錄寫(xiě)入磁盤(pán)。在建立檢查點(diǎn)時(shí),不允許事務(wù)執(zhí)行任何更新操作,如寫(xiě)緩沖塊或?qū)懭罩居?/p>

19、錄。建立檢查點(diǎn)之后,所有在檢查點(diǎn)之前發(fā)生的更新操作都已經(jīng)輸出到數(shù)據(jù)庫(kù)中,尚未完成的事務(wù)都登記在檢查點(diǎn)記錄中。這樣,發(fā)生系統(tǒng)故障時(shí),只需從最近的檢查點(diǎn)記錄開(kāi)始掃描日志文件。對(duì)于事務(wù)故障,基于檢查點(diǎn)的恢復(fù)過(guò)程和不使用檢查點(diǎn)的恢復(fù)過(guò)程是相同。但對(duì)于系統(tǒng)故障,使用檢查點(diǎn)技術(shù)可縮小日志的掃描范圍,減少不必要的重做(REDO),提高系統(tǒng)故障恢復(fù)效率。當(dāng)需要進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)時(shí),只需搜索日志文件,確定在最近創(chuàng)建的檢查點(diǎn)之后開(kāi)始執(zhí)行或處于活動(dòng)狀態(tài)的事務(wù),然后對(duì)這些事務(wù)執(zhí)行重做(REDO)或撤銷(UNDO)操作。數(shù)據(jù)庫(kù)發(fā)生故障時(shí)有兩種處理方法:如數(shù)據(jù)庫(kù)已破壞,則由DBA裝入最近備份的數(shù)據(jù)庫(kù)然后利用“日志文件”執(zhí)行R

20、EDO(重做)操作;如數(shù)據(jù)庫(kù)未被損壞,但某些數(shù)據(jù)不可靠,則系統(tǒng)會(huì)自動(dòng)執(zhí)行撤銷(UNDO)操作恢復(fù)數(shù)據(jù)。事務(wù)故障的恢復(fù)事務(wù)恢復(fù)是指事務(wù)未運(yùn)行至正常終止點(diǎn)前被撤消,此時(shí)應(yīng)對(duì)該事務(wù)做撤消處理。事務(wù)故障的恢復(fù)由系統(tǒng)自動(dòng)完成。發(fā)生事務(wù)故障時(shí):(1)執(zhí)行一個(gè)中止(ABORT)并撤銷(UNDO)它對(duì)數(shù)據(jù)庫(kù)的任何改變,即進(jìn)行下面所述的“向后恢復(fù)”數(shù)據(jù)庫(kù);(2)清除它對(duì)其它事務(wù)的影響,即中止(ABORT)那些讀了它的“臟數(shù)據(jù)”的事務(wù)。這又可能進(jìn)一步引起事務(wù)的中止(ABORT),稱為串聯(lián)撤消過(guò)程;(3)撤銷(UNDO)所有被撤消的事務(wù)對(duì)數(shù)據(jù)庫(kù)所作的任何改變。系統(tǒng)故障的恢復(fù)系統(tǒng)故障的恢復(fù)由系統(tǒng)重新啟動(dòng)時(shí)自動(dòng)完成,其

21、恢復(fù)步驟如下:(1)正向掃描日志文件,找出故障發(fā)生前已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)識(shí)記入重(REDO)隊(duì)列,同時(shí)找出故障發(fā)生時(shí)尚未完成的事務(wù),將其事務(wù)標(biāo)識(shí)記入撤消(UNDO)隊(duì)列;(2)對(duì)撤消隊(duì)列中的各個(gè)事務(wù)進(jìn)行撤消(UNDO)處理;(3)對(duì)重做隊(duì)列中的各事務(wù)進(jìn)行重做(REDO)處理。介質(zhì)故障的恢復(fù)介質(zhì)故障恢復(fù)的原理是利用存儲(chǔ)在別處的冗余數(shù)據(jù)來(lái)重建數(shù)據(jù)庫(kù)。所以介質(zhì)故障的恢復(fù)涉及兩個(gè)問(wèn)題:一是如何建立冗余數(shù)據(jù);二是如何利用冗余數(shù)據(jù)恢復(fù)數(shù)據(jù)庫(kù)。最常用的技術(shù)是轉(zhuǎn)儲(chǔ)和登記日志文件。轉(zhuǎn)儲(chǔ)是DBA定期將整個(gè)數(shù)據(jù)庫(kù)復(fù)制到磁帶或另一個(gè)磁盤(pán)上保存起來(lái)。當(dāng)數(shù)據(jù)庫(kù)遭到破壞時(shí),可以利用這些數(shù)據(jù)來(lái)恢復(fù)數(shù)據(jù)庫(kù),但只能恢復(fù)到轉(zhuǎn)

22、儲(chǔ)時(shí)的狀態(tài),在這以后所運(yùn)行的事務(wù)必須重新運(yùn)行才能恢復(fù)到故障時(shí)的狀態(tài)。日志文件的作用除進(jìn)行事務(wù)故障的恢復(fù)和系統(tǒng)故障的恢復(fù)外,還用于介質(zhì)故障的恢復(fù)。在動(dòng)態(tài)轉(zhuǎn)儲(chǔ)中,后援副本必須和日志文件結(jié)合起來(lái)才能有效地恢復(fù)數(shù)據(jù)庫(kù)。在靜態(tài)轉(zhuǎn)儲(chǔ)中,若數(shù)據(jù)庫(kù)被破壞,必須先利用后備副本文件裝入到上一次轉(zhuǎn)儲(chǔ)結(jié)束前的正確狀態(tài),然后再利用日志文件把已經(jīng)完成的事務(wù)重新處理,使數(shù)據(jù)庫(kù)恢復(fù)到故障前的某一時(shí)刻的正確狀態(tài)。介質(zhì)故障的恢復(fù)方法是重裝后備數(shù)據(jù)庫(kù),然后重做已完成的事務(wù),具體步驟如下:(1)裝入最近的數(shù)據(jù)庫(kù)后備副本,即故障前最后一次轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,使數(shù)據(jù)庫(kù)恢復(fù)到最后轉(zhuǎn)儲(chǔ)時(shí)的一致性狀態(tài)。(2)打開(kāi)永恒存儲(chǔ)器中的日志文件,正向掃描

23、日志文件,找出故障發(fā)生時(shí)已經(jīng)提交的事務(wù)的標(biāo)識(shí),將其記入重做隊(duì)列,然后對(duì)重做隊(duì)列中的所有事務(wù)進(jìn)行重做。這樣便可把數(shù)據(jù)庫(kù)恢復(fù)到故障前的某一時(shí)刻的一致性狀態(tài)。不過(guò)按照這種方法進(jìn)行恢復(fù)存在著嚴(yán)重的弊端:一方面需要搜索整個(gè)日志文件,耗費(fèi)大量的時(shí)間;另一方面需要重做大量已經(jīng)成功地將其更新操作結(jié)果寫(xiě)入數(shù)據(jù)庫(kù)的事務(wù),浪費(fèi)極大。數(shù)據(jù)庫(kù)鏡像為了避免磁盤(pán)介質(zhì)故障影響數(shù)據(jù)庫(kù)的可用性,許多數(shù)據(jù)庫(kù)管理系統(tǒng)提供了數(shù)據(jù)庫(kù)鏡像功能,用于數(shù)據(jù)庫(kù)的恢復(fù)。即根據(jù)DBA的要求,DBMS自動(dòng)把整個(gè)數(shù)據(jù)庫(kù)或其中關(guān)鍵數(shù)據(jù)復(fù)制到另一個(gè)磁盤(pán)上,每當(dāng)主數(shù)據(jù)庫(kù)更新時(shí),DBMS自動(dòng)把更新后的數(shù)據(jù)復(fù)制到鏡像磁盤(pán)上。一旦發(fā)生介質(zhì)故障,系統(tǒng)自動(dòng)切換到鏡像磁

24、盤(pán)上,避免了因介質(zhì)故障而關(guān)閉系統(tǒng)。用戶應(yīng)用不用中斷,也無(wú)須重裝數(shù)據(jù)庫(kù)后備副本,更不用重做轉(zhuǎn)儲(chǔ)后已經(jīng)做過(guò)的操作。另一方面,在沒(méi)有出現(xiàn)故障的時(shí)候,數(shù)據(jù)庫(kù)鏡像還可以用于并發(fā)操作,即某一數(shù)據(jù)對(duì)象被加X(jué)鎖時(shí),其它用戶要訪問(wèn)該數(shù)據(jù)對(duì)象不用等待,可從數(shù)據(jù)庫(kù)鏡像上讀取。四、簡(jiǎn)述一級(jí)、二級(jí)、三級(jí)封鎖協(xié)議,并分析每一級(jí)封鎖協(xié)議解決了哪些數(shù)據(jù)不一致性問(wèn)題,還存在哪些數(shù)據(jù)不一致問(wèn)題(10分)(P277 范明數(shù)據(jù)庫(kù)原理教程,P166 尹為民數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用)事務(wù)的并發(fā)執(zhí)行可能帶來(lái)的數(shù)據(jù)不一致性:(1)丟失修改;(2)不可重復(fù)讀;(3)讀“臟”數(shù)據(jù)并發(fā)控制:用正確的方式調(diào)度并發(fā)操作,使一個(gè)用戶事務(wù)的執(zhí)行不受其它事務(wù)的干擾

25、,從而避免造成數(shù)據(jù)的不一致性。避免數(shù)據(jù)不一致性的方法和技術(shù)主要是并發(fā)控制,如封鎖(Locking)技術(shù)、基于時(shí)間戳的并發(fā)控制技術(shù)等。封鎖是事務(wù)T在對(duì)某個(gè)數(shù)據(jù)對(duì)象進(jìn)行操作之前,先向系統(tǒng)發(fā)出加鎖請(qǐng)求,加鎖后事務(wù)T就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制權(quán),在事務(wù)T釋放它的鎖之前,其他事務(wù)不能更新該數(shù)據(jù)對(duì)象。基本的鎖有兩種:共享鎖(S鎖)和排他鎖(X鎖)。排他鎖(X鎖):又稱寫(xiě)鎖,若事務(wù)T獲得了數(shù)據(jù)對(duì)象Q上的排他鎖,則事務(wù)T既可以讀又可以寫(xiě)(修改)數(shù)據(jù)對(duì)象Q,但在事務(wù)T釋放Q上的X鎖之前,其他事務(wù)既不能獲得Q上的S鎖,也不能獲得Q上的X鎖。共享鎖(S鎖):又稱讀鎖,若事務(wù)T獲得了數(shù)據(jù)對(duì)象Q上的共享鎖,則事務(wù)T可

26、以讀但不能寫(xiě)Q,并且在事務(wù)T釋放Q上的S鎖之前,其他事務(wù)只能獲得Q上的S鎖,而不能獲得Q上的X鎖。在事務(wù)T在數(shù)據(jù)對(duì)象Q上的排他鎖保證了在事務(wù)T釋放數(shù)據(jù)對(duì)象Q上的鎖之前,其他事務(wù)既不能讀取,也不能修改數(shù)據(jù)對(duì)象Q,即排他鎖保護(hù)數(shù)據(jù)對(duì)象不被同時(shí)讀或?qū)懀皇聞?wù)T在數(shù)據(jù)對(duì)象Q上的共享鎖(S鎖)保證了其他事務(wù)可以讀數(shù)據(jù)對(duì)象Q,但在事務(wù)T釋放Q上的S鎖之前不能對(duì)數(shù)據(jù)對(duì)象Q做任何修改,即共享鎖保護(hù)數(shù)據(jù)對(duì)象不被寫(xiě),但可以同時(shí)讀。三級(jí)封鎖協(xié)議:在運(yùn)用封鎖技術(shù)對(duì)數(shù)據(jù)對(duì)象進(jìn)行加鎖時(shí),對(duì)封鎖方式約定的一些規(guī)則稱為封鎖協(xié)議。對(duì)封鎖方式約定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議(Locking Protocol),其總共分為

27、以下三級(jí):(1)一級(jí)封鎖協(xié)議:事務(wù)T在修改數(shù)據(jù)項(xiàng)Q之前必須對(duì)其加排他鎖(X鎖),直至該事務(wù)結(jié)束才釋放。事務(wù)結(jié)束包括正常結(jié)束(COMMIT)和非正常結(jié)束(ROLLBACK)。作用:一級(jí)封鎖協(xié)議可以防止丟失修改,保證事務(wù)T是可恢復(fù)的。但由于在一級(jí)鎖協(xié)議中,如果僅僅是讀數(shù)據(jù)而不對(duì)其進(jìn)行修改,是不需要加鎖的,所以它不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)。(2)二級(jí)封鎖協(xié)議:事務(wù)T在要讀取數(shù)據(jù)項(xiàng)Q之前必須對(duì)其加S鎖,讀完后即可釋放加在數(shù)據(jù)項(xiàng)Q上的S鎖。此種封鎖方式與一級(jí)封鎖協(xié)議(事務(wù)T對(duì)要修改數(shù)據(jù)項(xiàng)Q必須先對(duì)其加X(jué)鎖,直到事務(wù)結(jié)束才釋放數(shù)據(jù)項(xiàng)Q上的X鎖)共同構(gòu)成了二級(jí)封鎖協(xié)議。作用:二級(jí)鎖協(xié)議可防止丟失修改及讀“臟”數(shù)據(jù);但在二級(jí)封鎖協(xié)議中,由于讀完數(shù)據(jù)后立即釋放S鎖,所以不能保證可重復(fù)讀。(3)三級(jí)封鎖協(xié)議:事務(wù)T在讀取數(shù)據(jù)項(xiàng)Q之前必須先對(duì)其加S鎖,在要修改數(shù)據(jù)項(xiàng)Q之前必須先對(duì)其加X(jué)鎖,直到事務(wù)結(jié)束后才釋放加在數(shù)據(jù)項(xiàng)Q上的所有鎖。此種封鎖方式與一級(jí)封鎖協(xié)議聯(lián)合構(gòu)成了三級(jí)封鎖協(xié)議。作用:在三級(jí)鎖協(xié)議中,無(wú)論是讀數(shù)據(jù)還是寫(xiě)數(shù)據(jù)都要等到事務(wù)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論