哈工大數(shù)據(jù)庫(kù)系統(tǒng)概論-系統(tǒng)篇_第1頁(yè)
哈工大數(shù)據(jù)庫(kù)系統(tǒng)概論-系統(tǒng)篇_第2頁(yè)
哈工大數(shù)據(jù)庫(kù)系統(tǒng)概論-系統(tǒng)篇_第3頁(yè)
哈工大數(shù)據(jù)庫(kù)系統(tǒng)概論-系統(tǒng)篇_第4頁(yè)
哈工大數(shù)據(jù)庫(kù)系統(tǒng)概論-系統(tǒng)篇_第5頁(yè)
已閱讀5頁(yè),還剩100頁(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、第七章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù)Introduction To Database SystemChapter 077.1事務(wù)的基基本概念念事務(wù)(Transcation):用戶定義義的一個(gè)個(gè)數(shù)據(jù)庫(kù)庫(kù)操作序序列,這這些操作作要么全全做要么么全不做做,是一一個(gè)不可可分割的的工作單單位。在關(guān)系數(shù)數(shù)據(jù)庫(kù)中中,一個(gè)個(gè)事務(wù)可可以是一一條SQL語(yǔ)句,也也可以是是一組SQL語(yǔ)句或者者整個(gè)程程序。注意:事事務(wù)和程程序是兩兩個(gè)不同同的概念念。通常常,一個(gè)個(gè)程序中中會(huì)包含含有多個(gè)個(gè)事務(wù)。事務(wù)的開開始與結(jié)結(jié)束可以以由用戶戶顯示控控制,如如果沒(méi)有有顯示地地定義事事務(wù),則則由DBMS按照缺省省規(guī)定自自動(dòng)劃分分事務(wù)。SQL中定義事事務(wù)

2、的語(yǔ)語(yǔ)句在SQL-92規(guī)范中,定義事事務(wù)的三三條語(yǔ)句句如下:BEGINTRANSACTIONCOMMITROLLBACK在SQLServer 2000中,定義義事務(wù)的的相關(guān)語(yǔ)語(yǔ)句如下下:BEGINTRAN(事物名)COMMITTRAN(事物名)ROLLBACKTRAN(事物名)在SQLServer2000中,也支支持SQL-92規(guī)范中的的說(shuō)明方方式。關(guān)于事務(wù)務(wù)定義的的幾點(diǎn)說(shuō)說(shuō)明事務(wù)通常常是以BEGINTRANSACTION開始,以以COMMIT或ROLLBACK結(jié)束。其中,COMMIT表示提交事務(wù)的所所有操作作,即:將事事務(wù)中所所有對(duì)數(shù)數(shù)據(jù)庫(kù)的的更新寫寫回到磁磁盤上的的物理數(shù)數(shù)據(jù)庫(kù)中中去,事事

3、物才算算正常結(jié)結(jié)束。ROLLBACK表示回滾,即在事事務(wù)運(yùn)行行的過(guò)程程中發(fā)生生了某種種故障,事務(wù)不不能繼續(xù)續(xù)執(zhí)行,系統(tǒng)將將事務(wù)中中對(duì)數(shù)據(jù)據(jù)庫(kù)的所所有已完完成的操操作(指指更新操操作)全全部撤銷銷,回滾滾到事務(wù)務(wù)開始時(shí)時(shí)的狀態(tài)態(tài)。事務(wù)的ACID特性事務(wù)的ACID特性是指指:任何何一個(gè)事事務(wù)都具具有如下下的四個(gè)個(gè)基本特特點(diǎn):原子性(Atomicity);一致性(Consistency);隔離性(Isolation);持續(xù)性(Durability);原子性和和一致性性原子性:事務(wù)是數(shù)數(shù)據(jù)庫(kù)的的邏輯工工作單位位,事務(wù)務(wù)中包括括的相關(guān)關(guān)操作要要么都做做,要么么都不做做。一致性:事務(wù)執(zhí)行行的結(jié)果果必須使使

4、數(shù)據(jù)庫(kù)庫(kù)從一個(gè)個(gè)一致性性狀態(tài)變變到另一一個(gè)一致致性狀態(tài)態(tài)。因此此,當(dāng)數(shù)數(shù)據(jù)庫(kù)只只包含成成功事務(wù)務(wù)提交的的結(jié)果時(shí)時(shí),就認(rèn)認(rèn)為數(shù)據(jù)據(jù)庫(kù)是處處于一致致性狀態(tài)態(tài)的。如如果數(shù)據(jù)據(jù)庫(kù)系統(tǒng)統(tǒng)運(yùn)行過(guò)過(guò)程中發(fā)發(fā)生故障障,有些些事務(wù)尚尚未完成成就中斷斷,這些些未完成成的事務(wù)務(wù)對(duì)數(shù)據(jù)據(jù)庫(kù)所做做的修改改有一部部分已寫寫入物理理數(shù)據(jù)庫(kù)庫(kù),這時(shí)時(shí)就認(rèn)為為數(shù)據(jù)庫(kù)庫(kù)處于一一種不正正確的狀狀態(tài),或或者說(shuō)是是不一致致的狀態(tài)態(tài)。(請(qǐng)參考考教材中中249給出的關(guān)關(guān)于銀行行轉(zhuǎn)賬的的實(shí)例)隔離性和和持續(xù)性性隔離性:一個(gè)事務(wù)務(wù)的執(zhí)行行不能被被其他事事務(wù)干擾擾。即一一個(gè)事務(wù)務(wù)內(nèi)部的的操作及及使用的的數(shù)據(jù)對(duì)對(duì)其他并并發(fā)事務(wù)務(wù)是相隔隔離的,并發(fā)

5、執(zhí)執(zhí)行的各各個(gè)事務(wù)務(wù)之間不不能互相相干擾。持續(xù)性(又稱為為永久性性):一個(gè)事務(wù)務(wù)一旦提提交,它它對(duì)數(shù)據(jù)據(jù)庫(kù)中數(shù)數(shù)據(jù)的改改變就是是永久性性的。后后續(xù)的其其他操作作或者故故障不應(yīng)應(yīng)該對(duì)該該事務(wù)的的執(zhí)行結(jié)結(jié)果有任任何影響響。關(guān)于事務(wù)務(wù)的幾點(diǎn)點(diǎn)說(shuō)明事務(wù)是數(shù)數(shù)據(jù)庫(kù)恢恢復(fù)和并并發(fā)控制制的基本本單位。保證事事務(wù)的ACID特性是事事務(wù)處理理的重要要任務(wù)。事務(wù)ACID特性可能能遭到破破壞的因因素有:(1)多個(gè)事務(wù)務(wù)并發(fā)運(yùn)運(yùn)行時(shí),不同事事務(wù)的操操作交叉叉執(zhí)行;(2)事務(wù)在運(yùn)運(yùn)行過(guò)程程中被停停止。在第一種種情況下下,DBMS必須保證證多個(gè)事事務(wù)的交交叉執(zhí)行行不影響響這些事事務(wù)的原原子性。在第二種種情況下下,DBMS

6、必須保證證被停止止的事務(wù)務(wù)對(duì)數(shù)據(jù)據(jù)庫(kù)和其其他事務(wù)務(wù)沒(méi)有任任何影響響。7.2數(shù)據(jù)庫(kù)恢恢復(fù)概述述盡管數(shù)據(jù)據(jù)庫(kù)系統(tǒng)統(tǒng)中采取取了各種種保護(hù)措措施來(lái)防防止數(shù)據(jù)據(jù)庫(kù)的安安全性和和完整性性被破壞壞,保證證并發(fā)事事務(wù)的正正確執(zhí)行行,但是是計(jì)算機(jī)機(jī)系統(tǒng)中中硬件的的故障、軟件的的錯(cuò)誤、操作員員的失誤誤以及惡惡意的破破壞仍是是不可避避免的,這些故故障可能能造成運(yùn)運(yùn)行事務(wù)務(wù)非正常常中斷,影響數(shù)數(shù)據(jù)庫(kù)中中數(shù)據(jù)的的正確性性,嚴(yán)重重時(shí)可能能破壞數(shù)數(shù)據(jù)庫(kù),使數(shù)據(jù)據(jù)庫(kù)中全全部或部部分?jǐn)?shù)據(jù)據(jù)丟失,因此DBMS必須具有有把數(shù)據(jù)據(jù)庫(kù)從錯(cuò)錯(cuò)誤狀態(tài)態(tài)恢復(fù)到到某一已已知的正正確狀態(tài)態(tài)(指一致致狀態(tài)或或完整狀狀態(tài))的功能,這就是是數(shù)據(jù)庫(kù)庫(kù)的

7、恢復(fù)復(fù)。數(shù)據(jù)庫(kù)系系統(tǒng)采用用的恢復(fù)復(fù)技術(shù)是是否有效效,將直直接決定定系統(tǒng)的的可靠性性,而且且還將影影響系統(tǒng)統(tǒng)的運(yùn)行行效率。是衡量量系統(tǒng)性性能的重重要指標(biāo)標(biāo)。7.3故障的種種類數(shù)據(jù)庫(kù)系系統(tǒng)中可可能發(fā)生生各種各各樣的故故障,大大致可以以分為以以下幾類類:事務(wù)內(nèi)部部的故障障;系統(tǒng)故障障;介質(zhì)故障障;計(jì)算機(jī)病病毒故障障;事務(wù)內(nèi)部部的故障障事務(wù)內(nèi)部部的故障障有的是是可以通通過(guò)事務(wù)務(wù)程序本本身發(fā)現(xiàn)現(xiàn)的,有有的卻是是非預(yù)期期的,不不能由事事務(wù)程序序處理:例:銀行行轉(zhuǎn)賬事事務(wù):將將一筆資資金從一一個(gè)賬戶戶轉(zhuǎn)賬到到另一個(gè)個(gè)賬戶。注意:我們通過(guò)過(guò)SQLServer2000中實(shí)現(xiàn)該該轉(zhuǎn)賬事事務(wù)。實(shí)實(shí)現(xiàn)方法法是:首首先

8、定義義一個(gè)存存儲(chǔ)過(guò)程程,然后后在存儲(chǔ)儲(chǔ)過(guò)程中中實(shí)現(xiàn)轉(zhuǎn)轉(zhuǎn)賬事務(wù)務(wù)。提供供三個(gè)輸輸入?yún)?shù)數(shù),如:轉(zhuǎn)出和和轉(zhuǎn)入賬賬號(hào),轉(zhuǎn)轉(zhuǎn)出的資資金額。BEGINTRANSACTION讀賬戶甲甲的余額額BALANCE;BALANCE=BALANCE-AMOUNT(AMOUNT為轉(zhuǎn)賬賬金額)IF(BALANCE0)THEN打印“金額不不足,不不能轉(zhuǎn)帳帳”;ROLLBACK;(撤撤銷該事事務(wù))ELSE寫回BALANCE;讀賬戶戶乙的余余額BALANCE1;BALANCE1=BALANCE1+AMOUNT;寫回BALANCE1;COMMIT;事務(wù)內(nèi)部部的故障障(續(xù))事務(wù)內(nèi)部部更多的的故障都都是非預(yù)預(yù)期的,是不能能由應(yīng)用用

9、程序處處理的。如:運(yùn)運(yùn)算溢出出、并發(fā)發(fā)事務(wù)發(fā)發(fā)生死鎖鎖而被選選中撤銷銷該事務(wù)務(wù)、違反反了某些些完整性性限制等等。事務(wù)故障障:指事務(wù)沒(méi)沒(méi)有達(dá)到到預(yù)期的的終點(diǎn)(即COMMIT或者顯示示的ROLLBACK)。當(dāng)發(fā)生事事務(wù)故障障時(shí),數(shù)數(shù)據(jù)庫(kù)可可能處于于不正確確狀態(tài)。恢復(fù)程程序要在在不影響響其他事事務(wù)運(yùn)行行的情況況下,強(qiáng)強(qiáng)行回滾滾該事務(wù)務(wù),即撤撤銷該事事務(wù)已經(jīng)經(jīng)做出的的任何對(duì)對(duì)數(shù)據(jù)庫(kù)庫(kù)的修改改,使得得該事務(wù)務(wù)好像根根本就沒(méi)沒(méi)有被執(zhí)執(zhí)行過(guò)一一樣。我我們把這這類恢復(fù)復(fù)操作稱稱之為事事務(wù)撤銷銷(UNDO)。系統(tǒng)故障障系統(tǒng)故障障是指造造成系統(tǒng)統(tǒng)停止運(yùn)運(yùn)轉(zhuǎn)的任任何事件件,使得得系統(tǒng)要要重新啟啟動(dòng)。如如:特定定類型

10、的的硬件故故障、操操作系統(tǒng)統(tǒng)故障、DBMS代碼錯(cuò)誤誤、突然然停電等等。這類類故障影影響正在在運(yùn)行的的所有事事務(wù),但但是不破破壞數(shù)據(jù)據(jù)庫(kù)。在這種情情況下,一些尚尚未完成成的事務(wù)務(wù)的結(jié)果果可能已已送入物物理數(shù)據(jù)據(jù)庫(kù),從從而造成成數(shù)據(jù)庫(kù)庫(kù)可能處處于不正正確的狀狀態(tài)。為為保證數(shù)數(shù)據(jù)的一一致性,需要清清除這些些事務(wù)對(duì)對(duì)數(shù)據(jù)庫(kù)庫(kù)的所有有修改?;謴?fù)子系系統(tǒng)必須須在系統(tǒng)統(tǒng)重新啟啟動(dòng)時(shí),讓所有有非正常常終止的的事務(wù)回回滾,強(qiáng)強(qiáng)行撤銷銷所有未未完成的的事務(wù),或者重重做所有有已提交交的事務(wù)務(wù)。從而而使數(shù)據(jù)據(jù)庫(kù)真正正恢復(fù)到到一致性性狀態(tài)。介質(zhì)故障障與計(jì)算算機(jī)病毒毒故障介質(zhì)故障障是指外外存故障障,如:磁盤損損壞、磁磁頭

11、碰撞撞、瞬時(shí)時(shí)強(qiáng)磁場(chǎng)場(chǎng)干擾等等。這類故障障將破壞壞數(shù)據(jù)庫(kù)庫(kù)或部分分?jǐn)?shù)據(jù)庫(kù)庫(kù),并影影響正在在存取這這部分?jǐn)?shù)數(shù)據(jù)的所所有事務(wù)務(wù)。它的的破壞性性是最大大的。甚甚至是不不可恢復(fù)復(fù)的。計(jì)算機(jī)病病毒故障障是一種種人為故故障或破破壞。它它已成為為計(jì)算機(jī)機(jī)系統(tǒng)的的主要威威脅,也也是數(shù)據(jù)據(jù)庫(kù)系統(tǒng)統(tǒng)的主要要威脅之之一。在在這種情情況下,數(shù)據(jù)庫(kù)庫(kù)一旦被被破壞,也要用用恢復(fù)技技術(shù)對(duì)數(shù)數(shù)據(jù)庫(kù)進(jìn)進(jìn)行恢復(fù)復(fù)。各種故障障小結(jié)總結(jié)各類類故障,對(duì)數(shù)據(jù)據(jù)庫(kù)的影影響有兩兩種可能能性:一一是數(shù)據(jù)據(jù)庫(kù)本身身被破壞壞;二是是數(shù)據(jù)庫(kù)庫(kù)沒(méi)有破破壞,但但是數(shù)據(jù)據(jù)庫(kù)中的的數(shù)據(jù)不不正確?;謴?fù)的基基本原理理十分簡(jiǎn)簡(jiǎn)單,那那就是:數(shù)據(jù)庫(kù)庫(kù)中任何何已部分

12、分被破壞壞的或者者不正確確的數(shù)據(jù)據(jù)可以根根據(jù)存儲(chǔ)儲(chǔ)在系統(tǒng)統(tǒng)別處的的冗余數(shù)數(shù)據(jù)來(lái)重重建。7.4恢復(fù)的實(shí)實(shí)現(xiàn)技術(shù)術(shù)數(shù)據(jù)庫(kù)的的恢復(fù)機(jī)機(jī)制中涉涉及兩個(gè)個(gè)關(guān)鍵問(wèn)問(wèn)題,它它們分別別是:第一、如如何建立立冗余數(shù)數(shù)據(jù);第二、如如何利用用冗余數(shù)數(shù)據(jù)實(shí)施施數(shù)據(jù)庫(kù)庫(kù)恢復(fù);建立冗余余數(shù)據(jù)最最常用的的技術(shù)是是數(shù)據(jù)轉(zhuǎn)儲(chǔ)儲(chǔ)和登錄日志志文件。在應(yīng)用用系統(tǒng)中中,通常常是兩種種方法都都采用。7.4.1數(shù)據(jù)轉(zhuǎn)儲(chǔ)儲(chǔ)數(shù)據(jù)轉(zhuǎn)儲(chǔ)儲(chǔ)是數(shù)據(jù)據(jù)庫(kù)恢復(fù)復(fù)技術(shù)中中采用的的基本技技術(shù)。轉(zhuǎn)轉(zhuǎn)儲(chǔ)是指指DBA定期地將將整個(gè)數(shù)數(shù)據(jù)庫(kù)復(fù)復(fù)制到磁磁帶或者者另一個(gè)個(gè)磁盤上上保存起起來(lái)的過(guò)過(guò)程。稱稱這些備備用的數(shù)數(shù)據(jù)文本本為后備備副本。當(dāng)數(shù)據(jù)庫(kù)庫(kù)遭到破破壞后可可以將

13、后后備副本本重新裝裝入,但但重裝后后備副本本只能將將數(shù)據(jù)庫(kù)庫(kù)恢復(fù)到到轉(zhuǎn)儲(chǔ)時(shí)時(shí)的狀態(tài)態(tài),要想恢復(fù)復(fù)到故障障發(fā)生時(shí)時(shí)的狀態(tài)態(tài),必須須重新運(yùn)運(yùn)行自轉(zhuǎn)轉(zhuǎn)儲(chǔ)以后后的所有有更新事事務(wù)。轉(zhuǎn)儲(chǔ)十分分耗費(fèi)時(shí)時(shí)間和資資源,不不能頻繁繁的進(jìn)行行,因此此DBA應(yīng)該根據(jù)據(jù)數(shù)據(jù)庫(kù)庫(kù)使用情情況確定定一個(gè)適適當(dāng)?shù)霓D(zhuǎn)轉(zhuǎn)儲(chǔ)周期期。轉(zhuǎn)儲(chǔ)可分分為靜態(tài)態(tài)轉(zhuǎn)儲(chǔ)和和動(dòng)態(tài)轉(zhuǎn)轉(zhuǎn)儲(chǔ)兩種種。靜態(tài)轉(zhuǎn)儲(chǔ)儲(chǔ)靜態(tài)轉(zhuǎn)儲(chǔ)儲(chǔ):它是在系系統(tǒng)中無(wú)無(wú)運(yùn)行事事務(wù)時(shí)進(jìn)進(jìn)行的轉(zhuǎn)轉(zhuǎn)儲(chǔ)操作作。即:轉(zhuǎn)儲(chǔ)操操作開始始的時(shí)刻刻,數(shù)據(jù)據(jù)庫(kù)處于于一致性性狀態(tài),而轉(zhuǎn)儲(chǔ)儲(chǔ)期間不不允許(或不存存在)對(duì)數(shù)據(jù)庫(kù)庫(kù)的任何何存取、修改活活動(dòng)。因因此,靜態(tài)轉(zhuǎn)儲(chǔ)儲(chǔ)得到的的一定是是一個(gè)數(shù)數(shù)據(jù)一致致性的副副

14、本。靜態(tài)轉(zhuǎn)儲(chǔ)儲(chǔ)相對(duì)簡(jiǎn)簡(jiǎn)單,但但是轉(zhuǎn)儲(chǔ)儲(chǔ)必須等等待正在在運(yùn)行的的用戶事事務(wù)結(jié)束束才能進(jìn)進(jìn)行,同同樣,新新的事務(wù)務(wù)必須等等待轉(zhuǎn)儲(chǔ)儲(chǔ)結(jié)束后后才能執(zhí)執(zhí)行。因因此,靜態(tài)轉(zhuǎn)儲(chǔ)儲(chǔ)將會(huì)降降低數(shù)據(jù)據(jù)庫(kù)系統(tǒng)統(tǒng)的可用用性。那么,能能不能有有一種可可以方法法,可以以使得轉(zhuǎn)轉(zhuǎn)儲(chǔ)過(guò)程程中,同同時(shí)還能能執(zhí)行事事務(wù)呢?這就是是動(dòng)態(tài)轉(zhuǎn)轉(zhuǎn)儲(chǔ)。動(dòng)態(tài)轉(zhuǎn)儲(chǔ)儲(chǔ)動(dòng)態(tài)轉(zhuǎn)儲(chǔ)儲(chǔ):轉(zhuǎn)儲(chǔ)期間間允許對(duì)對(duì)數(shù)據(jù)庫(kù)庫(kù)進(jìn)行存存取或者者修改。即轉(zhuǎn)儲(chǔ)儲(chǔ)和用戶戶事務(wù)可可以并發(fā)發(fā)執(zhí)行。因此,動(dòng)動(dòng)態(tài)轉(zhuǎn)儲(chǔ)儲(chǔ)可以克克服靜態(tài)態(tài)轉(zhuǎn)儲(chǔ)的的缺點(diǎn),它不用用等待正正在運(yùn)行行的用戶戶事務(wù)結(jié)結(jié)束,也也不會(huì)影影響新事事務(wù)的允允許,但但是轉(zhuǎn)儲(chǔ)儲(chǔ)結(jié)束時(shí)時(shí)得到的的后備副副本上的的數(shù)據(jù)并并不能保保

15、證正確確有效。所以必須把轉(zhuǎn)轉(zhuǎn)儲(chǔ)期間間各事務(wù)務(wù)對(duì)數(shù)據(jù)據(jù)庫(kù)的修修改活動(dòng)動(dòng)登記下下來(lái),建建立日志志文件。這樣,后備副本本加上日日志文件件就能把把數(shù)據(jù)庫(kù)庫(kù)恢復(fù)到到某一時(shí)時(shí)刻的正正確狀態(tài)態(tài)。數(shù)據(jù)轉(zhuǎn)儲(chǔ)儲(chǔ)(續(xù))數(shù)據(jù)轉(zhuǎn)儲(chǔ)儲(chǔ)還可以以分為海量轉(zhuǎn)儲(chǔ)儲(chǔ)和增量轉(zhuǎn)儲(chǔ)儲(chǔ)兩種。海海量轉(zhuǎn)儲(chǔ)儲(chǔ)是指每每次轉(zhuǎn)儲(chǔ)儲(chǔ)全部數(shù)數(shù)據(jù)庫(kù)。增量轉(zhuǎn)轉(zhuǎn)儲(chǔ)是指指每次只只轉(zhuǎn)儲(chǔ)上上一次轉(zhuǎn)轉(zhuǎn)儲(chǔ)后更更新過(guò)的的數(shù)據(jù)。從恢復(fù)角角度來(lái)看看,利用用海量轉(zhuǎn)轉(zhuǎn)儲(chǔ)得到到的后備備副本進(jìn)進(jìn)行恢復(fù)復(fù)是會(huì)比比較方便便一些,但是如如果數(shù)據(jù)據(jù)庫(kù)很大大,事務(wù)務(wù)處理又又十分頻頻繁,則則增量轉(zhuǎn)轉(zhuǎn)儲(chǔ)方式式更實(shí)用用、更有有效。綜上所述述,數(shù)據(jù)據(jù)轉(zhuǎn)儲(chǔ)有有兩種方式式,分別可可以在兩種狀態(tài)態(tài)下進(jìn)行,因

16、此,數(shù)據(jù)轉(zhuǎn)轉(zhuǎn)儲(chǔ)方法法可以分分為四類類:動(dòng)態(tài)海量量轉(zhuǎn)儲(chǔ)、動(dòng)態(tài)增量量轉(zhuǎn)儲(chǔ)、靜態(tài)海量量轉(zhuǎn)儲(chǔ)和靜態(tài)增量量轉(zhuǎn)儲(chǔ)。7.4.2登記日志志文件日志文件件:是用來(lái)記記錄事務(wù)務(wù)對(duì)數(shù)據(jù)據(jù)庫(kù)的更更新操作作的文件件。常用的日日志文件件格式有有兩種:以記錄為單位的的日志文文件;以數(shù)據(jù)塊為單位的的日志文文件;以記錄為為單位的的日志文文件的內(nèi)內(nèi)容對(duì)于以記記錄為單單位的日日志文件件,日志志文件中中需要登登記的內(nèi)內(nèi)容包括括:各個(gè)事務(wù)務(wù)的開始始標(biāo)記;各個(gè)事務(wù)務(wù)的結(jié)束束標(biāo)記;各個(gè)事務(wù)務(wù)的所有有更新操操作。每個(gè)事務(wù)務(wù)的開始始標(biāo)記、結(jié)束標(biāo)標(biāo)記和每每個(gè)更新操作均均作為日日志文件件中的一一個(gè)日志記錄錄。日志文文件中的的一個(gè)日日志記錄錄的內(nèi)容

17、容主要包包括:事務(wù)標(biāo)識(shí)識(shí)(標(biāo)明明是哪一一個(gè)事務(wù)務(wù));操作的類類型(插插入、刪刪除或修修改);操作對(duì)象象(記錄錄內(nèi)部標(biāo)標(biāo)識(shí));更新前數(shù)數(shù)據(jù)的舊舊值(對(duì)對(duì)插入操操作,值值為空);更新后數(shù)數(shù)據(jù)的新新值(對(duì)對(duì)刪除操操作,值值為空);以數(shù)據(jù)塊塊為單位位的日志志文件對(duì)于以數(shù)數(shù)據(jù)塊為為單位的的日志文文件,日日志記錄錄的內(nèi)容容包括事事務(wù)標(biāo)識(shí)識(shí)和被更更新的數(shù)數(shù)據(jù)塊。由于將將更新前前的整個(gè)個(gè)塊和更更新后的的整個(gè)塊塊都放入入日志文文件中,操作的的類型和和操作對(duì)對(duì)象等信信息就不不必放入入日志記記錄中。日志文件件的作用用日志文件件在數(shù)據(jù)據(jù)庫(kù)的恢恢復(fù)中有有著非常常重大的的作用??梢杂糜脕?lái)進(jìn)行行事務(wù)故障障恢復(fù)和系統(tǒng)故障障恢

18、復(fù),并協(xié)助助后備副副本進(jìn)行行介質(zhì)故障障恢復(fù)。日志文件件的具體體作用是:事務(wù)故障障恢復(fù)和和系統(tǒng)故故障恢復(fù)復(fù)必須用用日志文文件。在動(dòng)態(tài)轉(zhuǎn)轉(zhuǎn)儲(chǔ)方式式中必須須建立日日志文件件,后援援副本和和日志文文件綜合合起來(lái)才才能有效效地恢復(fù)復(fù)數(shù)據(jù)庫(kù)庫(kù)。在靜態(tài)轉(zhuǎn)轉(zhuǎn)儲(chǔ)方式式中,也也可以建建立日志志文件。當(dāng)數(shù)據(jù)庫(kù)庫(kù)毀壞后后可重新新裝入后后援副本本把數(shù)據(jù)據(jù)庫(kù)恢復(fù)復(fù)到轉(zhuǎn)儲(chǔ)儲(chǔ)結(jié)束時(shí)時(shí)刻的正正確狀態(tài)態(tài),然后后利用日日志文件件,把已已完成的的事務(wù)進(jìn)進(jìn)行重做做處理,對(duì)故障障發(fā)生時(shí)時(shí)尚未完完成的事事務(wù)進(jìn)行行撤消處處理。這這樣不必必重新運(yùn)運(yùn)行那些些已完成成的事務(wù)務(wù)程序就就可把數(shù)數(shù)據(jù)庫(kù)恢恢復(fù)到故故障前某某一時(shí)刻刻的正確確狀態(tài)。登記日志志

19、文件為保證數(shù)數(shù)據(jù)庫(kù)是是可恢復(fù)復(fù)的,登登記日志志文件時(shí)時(shí)必須遵遵循兩條條原則:登記的次次序嚴(yán)格格按并發(fā)發(fā)事務(wù)執(zhí)執(zhí)行的時(shí)時(shí)間次序序;必須先寫寫日志文文件,后后寫數(shù)據(jù)據(jù)庫(kù)。把對(duì)數(shù)據(jù)據(jù)的修改改寫到數(shù)數(shù)據(jù)庫(kù)中中和把表表示這個(gè)個(gè)修改的的日志記記錄寫到到日志文文件中是是兩個(gè)不不同的操操作。有有可能在在這兩個(gè)個(gè)操作之之間發(fā)生生故障,即這兩兩個(gè)寫操操作只完完成了一一個(gè)。如果先寫寫了數(shù)據(jù)據(jù)庫(kù)修改改,而在在運(yùn)行記記錄中沒(méi)沒(méi)有登記記這個(gè)修修改,則則以后就就無(wú)法恢恢復(fù)這個(gè)個(gè)修改了了。如果果先寫日日志,但但沒(méi)有修修改數(shù)據(jù)據(jù)庫(kù),按按日志文文件恢復(fù)復(fù)時(shí)只不不過(guò)是多多執(zhí)行一一次不必必要的撤撤消操作作,并不不會(huì)影響響數(shù)據(jù)庫(kù)庫(kù)的正

20、確確性。所以為了安全全,一定定要先寫寫日志文文件,即即首先把把日志記記錄寫到到日志文文件中,然后寫寫數(shù)據(jù)庫(kù)庫(kù)的修改改。7.5.1事務(wù)故障障的恢復(fù)復(fù)事務(wù)故障障是指事事務(wù)在運(yùn)運(yùn)行至正正常終止止點(diǎn)前被被終止,這時(shí)恢恢復(fù)子系系統(tǒng)應(yīng)利用日志志文件撤撤銷此事事務(wù)已對(duì)對(duì)數(shù)據(jù)庫(kù)庫(kù)進(jìn)行的的修改。事務(wù)故障障的恢復(fù)復(fù)是由系系統(tǒng)自動(dòng)動(dòng)完成的的,對(duì)于用用戶來(lái)說(shuō)說(shuō)是透明明的。系統(tǒng)的恢恢復(fù)步驟驟請(qǐng)同學(xué)學(xué)們參考考P255。(略)7.5.2系統(tǒng)故障障的恢復(fù)復(fù)系統(tǒng)故障障造成數(shù)數(shù)據(jù)庫(kù)不不一致的的原因有有:一、未完完成事務(wù)務(wù)對(duì)數(shù)據(jù)據(jù)庫(kù)的更更新可能能己寫入入數(shù)據(jù)庫(kù)庫(kù);二、己提提交事務(wù)務(wù)對(duì)數(shù)據(jù)據(jù)庫(kù)的更更新可能能還留在在緩沖區(qū)區(qū)沒(méi)來(lái)得得及

21、寫入入數(shù)據(jù)庫(kù)庫(kù)。因此,系系統(tǒng)故障障的恢復(fù)復(fù)操作就就是要撤撤銷故障障發(fā)生時(shí)時(shí)未完成成的事務(wù)務(wù),重做做己完成成的事務(wù)務(wù)。系統(tǒng)故障障的恢復(fù)復(fù)是由系統(tǒng)統(tǒng)在重新新啟動(dòng)時(shí)時(shí)完成的的,不需要用用戶干預(yù)預(yù)。具體的恢恢復(fù)步驟驟,請(qǐng)同同學(xué)們參參考P255。(略)7.5.3介質(zhì)故障障的恢復(fù)復(fù)發(fā)生介質(zhì)質(zhì)故障后后,磁盤盤上的物物理數(shù)據(jù)據(jù)和日志志文件被被破壞,這是最最嚴(yán)重的的一種故故障,恢復(fù)方法法是重裝裝數(shù)據(jù)庫(kù)庫(kù),然后后重做已已完成的的事務(wù)。(恢復(fù)復(fù)時(shí),需需要有DBA的介入,才能完完成數(shù)據(jù)據(jù)庫(kù)的恢恢復(fù)。)更具體的的解釋,請(qǐng)同學(xué)學(xué)們參考考P256。(略)7.6具有檢查查點(diǎn)的恢恢復(fù)技術(shù)術(shù)利用日志志技術(shù)進(jìn)進(jìn)行數(shù)據(jù)據(jù)庫(kù)恢復(fù)復(fù)時(shí),

22、恢恢復(fù)子系系統(tǒng)必須須搜索日日志,確確定哪些些事務(wù)需需要重做做,哪些些事務(wù)需需要撤銷銷。一般般來(lái)說(shuō),需要檢檢查所有有日志記記錄。這這樣做存存在兩個(gè)個(gè)弊端:一、搜索索整個(gè)日日志將耗耗費(fèi)大量量的時(shí)間間;二、很多多需要重重做處理理的事務(wù)務(wù)已經(jīng)將將它們的的更新操操作結(jié)果果寫倒數(shù)數(shù)據(jù)庫(kù)中中了,然然而恢復(fù)復(fù)子系統(tǒng)統(tǒng)又將重重新執(zhí)行行這些操操作,這這浪費(fèi)了了大量時(shí)時(shí)間。為了最大大限度地地減少數(shù)數(shù)據(jù)庫(kù)完完全恢復(fù)復(fù)時(shí)所必必須執(zhí)行行的日志志部分,SQL-92提出了具具有檢查查點(diǎn)的恢恢復(fù)技術(shù)術(shù)。這種種技術(shù)將將在日志文件件中增加一一類新的的紀(jì)錄檢查點(diǎn)記記錄,增加一一個(gè)重新新開始文文件,并并讓恢復(fù)復(fù)子系統(tǒng)統(tǒng)在登錄錄日志文文

23、件期間間動(dòng)態(tài)地地維護(hù)日日志。關(guān)于檢查查點(diǎn)的其其他內(nèi)容容,我們們不再詳詳細(xì)介紹紹,留給給同學(xué)們們自學(xué)。7.7數(shù)據(jù)庫(kù)的的鏡像為了避免免磁盤介介質(zhì)出現(xiàn)現(xiàn)故障影影響數(shù)據(jù)據(jù)庫(kù)的可可用性,許多數(shù)數(shù)據(jù)庫(kù)管管理系統(tǒng)統(tǒng)提供了了數(shù)據(jù)庫(kù)鏡鏡像功能用于于數(shù)據(jù)庫(kù)庫(kù)恢復(fù)。即根據(jù)據(jù)DBA的要求,自自動(dòng)把整整個(gè)數(shù)據(jù)據(jù)庫(kù)或其其中的關(guān)關(guān)鍵數(shù)據(jù)據(jù)復(fù)制到到另一個(gè)個(gè)磁盤上上。每當(dāng)當(dāng)主數(shù)據(jù)據(jù)庫(kù)更新新時(shí),DBMS自動(dòng)把更更新后的的數(shù)據(jù)復(fù)復(fù)制過(guò)去去,即DBMS自動(dòng)保證證鏡像數(shù)數(shù)據(jù)與主主數(shù)據(jù)的的一致性性。這樣樣,一旦旦出現(xiàn)介介質(zhì)故障障,可由由鏡像磁磁盤繼續(xù)續(xù)提供使使用,同同時(shí)DBMS自動(dòng)利用用鏡像磁磁盤數(shù)據(jù)據(jù)進(jìn)行數(shù)數(shù)據(jù)庫(kù)的的恢復(fù),不需要要關(guān)閉

24、系系統(tǒng)和沖沖撞數(shù)據(jù)據(jù)庫(kù)副本本。在沒(méi)沒(méi)有出現(xiàn)現(xiàn)故障時(shí)時(shí),數(shù)據(jù)據(jù)庫(kù)鏡像像還可以以用于并并發(fā)操作作。實(shí)際應(yīng)用用中,往往往只選選擇對(duì)關(guān)關(guān)鍵數(shù)據(jù)據(jù)和日志志文件鏡鏡像,而而不是對(duì)對(duì)整個(gè)數(shù)數(shù)據(jù)庫(kù)進(jìn)進(jìn)行鏡像像。7.8小結(jié)保證數(shù)據(jù)據(jù)的一致致性是對(duì)對(duì)數(shù)據(jù)庫(kù)庫(kù)的最基基本要求求。事務(wù)務(wù)是數(shù)據(jù)據(jù)庫(kù)的邏邏輯工作作單位,只要DBMS能夠保證證系統(tǒng)中中一切事事務(wù)的ACID特性,也也就保證證了數(shù)據(jù)據(jù)庫(kù)處于于一致狀狀態(tài)。為為了保證證事務(wù)的的ACID特性,DBMS必須對(duì)事事務(wù)故障障、系統(tǒng)統(tǒng)故障和和介質(zhì)故故障進(jìn)行行恢復(fù)。數(shù)據(jù)庫(kù)庫(kù)轉(zhuǎn)儲(chǔ)和和登記日日志文件件是恢復(fù)復(fù)中最經(jīng)經(jīng)常使用用的技術(shù)術(shù)。恢復(fù)復(fù)的基本本原理就就是利用存儲(chǔ)儲(chǔ)在后援援副本、

25、日志文文件和數(shù)數(shù)據(jù)庫(kù)鏡鏡像中的的冗余數(shù)數(shù)據(jù)來(lái)重重建數(shù)據(jù)據(jù)庫(kù)。事務(wù)不僅僅是恢復(fù)復(fù)的基本本單位,也是并并發(fā)控制制的基本本單位,為了保保證事務(wù)務(wù)的ACID特性,DBMS必須對(duì)并并發(fā)控制制進(jìn)行控控制。Chapter 07 is overThanksfor all!第八章并并發(fā)控控制Introduction To Database SystemChapter 08章節(jié)前言言數(shù)據(jù)庫(kù)的的特點(diǎn)之之一就是是資源共享享,可以供多多個(gè)用戶戶使用。允許多多個(gè)用戶戶同時(shí)使使用的數(shù)數(shù)據(jù)庫(kù)系系統(tǒng)稱為為多用戶戶數(shù)據(jù)庫(kù)庫(kù)系統(tǒng)。如:售售票系統(tǒng)統(tǒng)、銀行行數(shù)據(jù)庫(kù)庫(kù)系統(tǒng)等等。事務(wù)可以以一個(gè)一一個(gè)地串行執(zhí)行,即即每個(gè)時(shí)時(shí)刻只有有一個(gè)事事

26、務(wù)運(yùn)行行,其他他事物必必須等到到這個(gè)事事務(wù)結(jié)束束以后方方能運(yùn)行行。然而而,如果果事務(wù)串串行執(zhí)行行,則許許多系統(tǒng)統(tǒng)資源將將處于空空閑狀態(tài)態(tài)。因此此,為了充分分利用系系統(tǒng)資源源,發(fā)揮揮數(shù)據(jù)庫(kù)庫(kù)共享資資源的特特點(diǎn),應(yīng)應(yīng)該允許許多個(gè)事事務(wù)并行地執(zhí)行。章節(jié)前言言(續(xù))在單處理理機(jī)系統(tǒng)統(tǒng)中,事務(wù)的并行執(zhí)行是這這些并行行事務(wù)的的操作輪輪流交叉叉執(zhí)行。這種并并行執(zhí)行行方式稱稱為交叉并發(fā)發(fā)方式(InterleavedConcurrency)。盡管沒(méi)有有真正地地并行運(yùn)運(yùn)行,但但是減少少了處理理機(jī)的空空閑時(shí)間間,提高高了系統(tǒng)統(tǒng)的效率率。在多處理理機(jī)系統(tǒng)統(tǒng)中,每個(gè)處理理機(jī)可以以運(yùn)行一一個(gè)事務(wù)務(wù),多個(gè)個(gè)處理機(jī)機(jī)可以同同

27、時(shí)允許許多個(gè)事事務(wù),實(shí)實(shí)現(xiàn)多個(gè)個(gè)事務(wù)真真正的并并行運(yùn)行行。這種種并行執(zhí)執(zhí)行方式式稱為同時(shí)并發(fā)發(fā)方式(SimultaneousConcurrency)。下面,我我們將以以單處理理機(jī)系統(tǒng)統(tǒng)中的交叉并發(fā)發(fā)事務(wù)處理理為基礎(chǔ)礎(chǔ)介紹并并發(fā)控制制的相關(guān)關(guān)技術(shù)。當(dāng)多個(gè)用用戶并發(fā)發(fā)地存取取數(shù)據(jù)庫(kù)庫(kù)時(shí)就會(huì)會(huì)產(chǎn)生多多個(gè)事務(wù)務(wù)同時(shí)存存取同一一數(shù)據(jù)的的情況。如果對(duì)對(duì)并發(fā)操操作控制制不當(dāng),就會(huì)造造成存取取和存儲(chǔ)儲(chǔ)不正確確的數(shù)據(jù)據(jù),從而而破壞數(shù)數(shù)據(jù)庫(kù)的的一致性性。所以以,DBMS必須提供供并發(fā)控控制機(jī)制制。它是是衡量DBMS性能的重重要標(biāo)志志之一。8.1并發(fā)控制制概述事務(wù)是并并發(fā)控制制的基本本單位,保證事事務(wù)的ACID特性

28、是事事務(wù)處理理的重要要任務(wù),而事務(wù)務(wù)ACID特性可能能遭到破破壞的原原因之一一是多個(gè)個(gè)事務(wù)對(duì)對(duì)數(shù)據(jù)庫(kù)庫(kù)的并發(fā)發(fā)操作造造成的。為了保保證事務(wù)務(wù)的隔離離性更一一般,為為了保證數(shù)據(jù)據(jù)庫(kù)的一一致性,DBMS需要對(duì)并發(fā)操操作進(jìn)行行正確的的調(diào)度。這就是是DBMS中數(shù)據(jù)庫(kù)庫(kù)并發(fā)控控制機(jī)制制的責(zé)任任。并發(fā)操作作實(shí)例考慮飛機(jī)機(jī)訂票系系統(tǒng)中的的一個(gè)活活動(dòng)序列列:甲售票點(diǎn)點(diǎn)(甲事事務(wù))讀出某航航班的機(jī)機(jī)票余額額A,設(shè)A=16;乙售票點(diǎn)(乙事務(wù)務(wù))讀出同一一航班的的機(jī)票余余額A,也有A=16;甲售票點(diǎn)點(diǎn)賣出一一張機(jī)票票,修改改余額后后A為15,把A寫回?cái)?shù)據(jù)據(jù)庫(kù);乙售票點(diǎn)點(diǎn)也賣出出一張機(jī)機(jī)票,修修改余額額后A為15,把

29、A寫回?cái)?shù)據(jù)據(jù)庫(kù);顯然,數(shù)數(shù)據(jù)庫(kù)中中剩下的的機(jī)票數(shù)數(shù)應(yīng)該為為14,但按照照上述活活動(dòng)序列列,機(jī)票票數(shù)為15,因此,該活動(dòng)動(dòng)序列造造成了數(shù)數(shù)據(jù)庫(kù)的的不一致致性。常見的三三類數(shù)據(jù)據(jù)不一致致性從并發(fā)操操作帶來(lái)來(lái)的數(shù)據(jù)據(jù)不一致致性主要要可以分分為三類類,它們們分別是是:丟失修改改;不可重復(fù)復(fù)讀;讀“臟”數(shù)據(jù)。下面,我我們將詳詳細(xì)介紹紹這三種種數(shù)據(jù)不不一致性性。丟失修改改(Lost Update)丟失修改改:兩個(gè)事務(wù)務(wù)T1和T2讀入同一一數(shù)據(jù)并并修改,T2提交的結(jié)結(jié)果破壞壞了T1提交的結(jié)結(jié)果,導(dǎo)導(dǎo)致T1的修改被丟丟失。如下圖圖所示:T1T2(1) 讀入A = 16(2)讀入A = 16(3) A= A -

30、 1 寫回A = 15(4)A= A - 1寫回A = 15不可重復(fù)復(fù)讀(Non-RepeatableRead)不可重復(fù)復(fù)讀:事務(wù)T1讀取數(shù)據(jù)據(jù)后,事事務(wù)T2執(zhí)行更新新操作,使T1無(wú)法再現(xiàn)現(xiàn)前一次次讀取結(jié)結(jié)果。包括三三種情況況:(1)T1讀取某一一數(shù)據(jù)后后,T2對(duì)其做了了修改,當(dāng)T1再次讀取取數(shù)據(jù)時(shí)時(shí),得到到與前一一次不同同的值。(2)T1按照一定定條件從從數(shù)據(jù)庫(kù)庫(kù)中讀取取了某些些數(shù)據(jù)記記錄后,T2刪除了其其中的部部分記錄錄,當(dāng)T1再次按照照相同條條件讀取取數(shù)據(jù)時(shí)時(shí),發(fā)現(xiàn)現(xiàn)某些記記錄已經(jīng)經(jīng)不存在在。(3)T1按一定條條件從數(shù)數(shù)據(jù)庫(kù)中中讀取某某些數(shù)據(jù)據(jù)記錄后后,T2插入了一一些記錄錄,當(dāng)T1再次

31、按相相同條件件讀取數(shù)數(shù)據(jù)時(shí),發(fā)現(xiàn)多多了一些些記錄。稱后面的的兩種不不可重復(fù)復(fù)讀為幻影現(xiàn)象象(Phantom Row)。不可重復(fù)復(fù)讀舉例例T1T2(1) 讀入A = 50讀入B = 100求和 = 150(2)讀入B = 100 B = B * 2寫回 B = 200(3) 讀入A = 50 讀B = 200 和 = 250讀“臟”數(shù)據(jù)(DirtyRead)讀“臟”數(shù)據(jù):事務(wù)T1修改某一一數(shù)據(jù),并將其其寫回磁磁盤,事事務(wù)T2讀取同一一數(shù)據(jù)后后,T1由于某種種原因被被撤銷,這時(shí)T1已修改過(guò)過(guò)的數(shù)據(jù)據(jù)恢復(fù)原原值,T2讀到的數(shù)數(shù)據(jù)就與與數(shù)據(jù)庫(kù)庫(kù)中的數(shù)數(shù)據(jù)不一一致,則則T2讀到的數(shù)數(shù)據(jù)就是是“臟”數(shù)據(jù),

32、即數(shù)據(jù)據(jù)不正確確。T1 T2(1) 讀入C = 100 C = C * 2 寫回C(2)讀入C = 200(3) RollBack C恢復(fù)為100對(duì)數(shù)據(jù)不一一致性的的幾點(diǎn)補(bǔ)補(bǔ)充說(shuō)明明產(chǎn)生上面面提到的的三種數(shù)數(shù)據(jù)不一一致性的的主要原原因是:并發(fā)操操作破壞壞了事務(wù)務(wù)的隔離離性,并并發(fā)控制制就是要要用正確確的方式式調(diào)度并并發(fā)操作作,使一一個(gè)用戶戶事務(wù)的的執(zhí)行不不受其他他事務(wù)的的干擾,從而避避免造成成數(shù)據(jù)的的不一致致性。另一方面面,對(duì)數(shù)數(shù)據(jù)庫(kù)的的應(yīng)用優(yōu)優(yōu)勢(shì)允許許某些不不一致性性,這時(shí)時(shí)可以降降低對(duì)一一致性的的要求,從而減減少系統(tǒng)統(tǒng)的開銷銷。并發(fā)控制制的主要要技術(shù)是是封鎖。下面,我們將將詳細(xì)介介紹這個(gè)個(gè)

33、概念。8.2封鎖(Locking)封鎖:就是事務(wù)務(wù)T在對(duì)某個(gè)個(gè)數(shù)據(jù)對(duì)對(duì)象(如如表、記記錄等)操作之之前,先先向系統(tǒng)統(tǒng)發(fā)出請(qǐng)請(qǐng)求,對(duì)對(duì)其加鎖鎖。加鎖鎖后事務(wù)務(wù)T就對(duì)該數(shù)據(jù)對(duì)對(duì)象有了了一定的的控制,在事務(wù)務(wù)T釋放它上上面的鎖鎖之前,其他的的事務(wù)不不能更新新此數(shù)據(jù)據(jù)對(duì)象。基本的封封鎖類型型有兩種種:排他鎖和共享鎖排它鎖(ExclusiveLocks)排它鎖,也稱為為寫鎖(簡(jiǎn)稱為為X鎖)。定定義如下下:若事務(wù)T對(duì)數(shù)據(jù)對(duì)對(duì)象A加上了排排它鎖,則只允允許T讀取和修改A,其他任何何事務(wù)都都不能再再對(duì)A加任何類型型的鎖,直到T釋放A上的鎖。排它鎖保保證了其他在事事務(wù)T釋放A上的鎖之之前不能能再讀取取和修改改A

34、。共享鎖(ShareLocks)共享鎖又又稱為讀讀鎖(簡(jiǎn)簡(jiǎn)稱S鎖),定定義如下下:若事務(wù)T對(duì)數(shù)據(jù)對(duì)對(duì)象A加上S鎖,則事事務(wù)T可以讀取取A但是不能能修改A,其他事務(wù)務(wù)只能再再對(duì)A加S鎖,而不不能加X(jué)鎖,直到到T釋放A上的S鎖。共享享鎖保證證了其他他事務(wù)可可以讀A,但在T釋放A上的S鎖之前不不能對(duì)A做任何修改改。排它鎖與共享鎖的控制方方式可以以用相容容矩陣來(lái)來(lái)描述,請(qǐng)同學(xué)學(xué)們自學(xué)學(xué)參考。8.3封鎖協(xié)議議封鎖協(xié)議議(Locking Protocol):在運(yùn)用X鎖和S鎖這兩種基本本封鎖對(duì)對(duì)數(shù)據(jù)對(duì)對(duì)象加鎖鎖時(shí),對(duì)對(duì)鎖約定定的一些些基本規(guī)規(guī)則:如如何時(shí)申申請(qǐng)X鎖或S鎖、持鎖鎖時(shí)間、何時(shí)釋釋放等。對(duì)封鎖協(xié)協(xié)

35、議定義義不同的的規(guī)則,就形成成了各種種不同的的封鎖協(xié)協(xié)議。針對(duì)并發(fā)發(fā)操作的的正確調(diào)調(diào)度可能能帶來(lái)的的丟失修改改、不可重復(fù)復(fù)讀和讀“臟”數(shù)據(jù)等不一致致性問(wèn)題題,提出出了三級(jí)封鎖鎖協(xié)議,它們分分別在一定程程度上解解決了這這些問(wèn)題題,為并并發(fā)操作作的正確確調(diào)度提提供了一一定的保保證。一級(jí)封鎖鎖協(xié)議一級(jí)封鎖鎖協(xié)議是是:事務(wù)T在修改數(shù)數(shù)據(jù)R之前必須須先對(duì)R加X(jué)鎖,直到到事務(wù)T結(jié)束才釋釋放。事事務(wù)結(jié)束束包括正正常結(jié)束束(Commit)和非正常結(jié)結(jié)束(Rollback)。一級(jí)封鎖鎖協(xié)議的的特點(diǎn):可防止丟丟失修改改,并保保證事務(wù)務(wù)T是可恢復(fù)的的。不足:在在一級(jí)級(jí)封鎖協(xié)協(xié)議中,如果僅僅僅是讀讀數(shù)據(jù)而而不對(duì)其其進(jìn)

36、行修修改,是是不需要要加鎖的的,因此此,它不不能保證證可重復(fù)復(fù)讀和不不讀“臟臟”數(shù)據(jù)據(jù)。請(qǐng)參考教教材中關(guān)關(guān)于圖8.3(a)事務(wù)T1加X(jué)鎖的例子。二級(jí)封鎖協(xié)協(xié)議二級(jí)封鎖鎖協(xié)議是是:一級(jí)封鎖鎖協(xié)議加加上事務(wù)務(wù)T在讀取數(shù)數(shù)據(jù)R之前必須須先對(duì)R加S鎖,讀完完后即可可釋放S鎖。二級(jí)封鎖鎖協(xié)議的的特點(diǎn):除防止了了丟失修修改,還還防止了了讀“臟臟”數(shù)據(jù)據(jù)。不足:在在二級(jí)級(jí)封鎖協(xié)協(xié)議中,由于讀讀完數(shù)據(jù)據(jù)后即可可釋放S鎖,所以以它不能能保證可可重復(fù)讀讀。請(qǐng)參考教教材中關(guān)關(guān)于圖8.3(c)事務(wù)加X(jué)鎖和S鎖的例子子。三級(jí)封鎖鎖協(xié)議三級(jí)封鎖鎖協(xié)議是是:一級(jí)封鎖鎖協(xié)議加加上事務(wù)務(wù)T在讀取數(shù)數(shù)據(jù)R之前必須須先對(duì)其其加S鎖

37、,直到到事務(wù)結(jié)結(jié)束才釋釋放。三級(jí)封鎖鎖協(xié)議的的特點(diǎn):除防止了了丟失修修改和不不讀“臟臟”數(shù)據(jù)據(jù)外,還還進(jìn)一步步防止了了不可重重復(fù)讀。請(qǐng)參考教教材中關(guān)關(guān)于圖8.3(b)事務(wù)加X(jué)鎖和S鎖的例子子。三級(jí)封鎖鎖協(xié)議小小結(jié)三級(jí)封鎖鎖協(xié)議的的主要區(qū)區(qū)別是:什么操作作需要申申請(qǐng)封鎖鎖,以及及何時(shí)釋釋放鎖(即持鎖鎖時(shí)間)。不同級(jí)別的封鎖協(xié)議X鎖S鎖一致性保證操作結(jié)束釋放事務(wù)結(jié)束釋放操作結(jié)束釋放事務(wù)結(jié)束釋放不丟失修改不讀“臟”數(shù)據(jù)可重復(fù)讀一級(jí)封鎖協(xié)議二級(jí)封鎖協(xié)議三級(jí)封鎖協(xié)議8.4活鎖活鎖:如果事務(wù)務(wù)T1封鎖了數(shù)數(shù)據(jù)R,事務(wù)T2又請(qǐng)求封鎖鎖R,于是T2等待。T3也請(qǐng)求封鎖鎖R,當(dāng)T1釋放了R上的封鎖鎖之后系系統(tǒng)首

38、先先批準(zhǔn)了了T3的請(qǐng)求,于于是T2仍然是等等待。然然后T4又請(qǐng)求封鎖鎖R,T2有可能永永遠(yuǎn)等待待,這就就是活鎖鎖。避免活鎖鎖的方法法:(隊(duì)列策略略)采用先來(lái)先服服務(wù)的策略。當(dāng)多個(gè)個(gè)事務(wù)請(qǐng)請(qǐng)求封鎖鎖同一數(shù)數(shù)據(jù)對(duì)象象時(shí),封封鎖子系系統(tǒng)按照照請(qǐng)求封封鎖的先先后次序序?qū)κ聞?wù)務(wù)排隊(duì),數(shù)據(jù)對(duì)對(duì)象上的的鎖一旦旦釋放就就批準(zhǔn)申申請(qǐng)隊(duì)列列中第1個(gè)事務(wù)獲獲得鎖。死鎖死鎖:如果事務(wù)務(wù)T1封鎖了數(shù)數(shù)據(jù)R1,T2封鎖了數(shù)數(shù)據(jù)R2,然后T1又請(qǐng)求封封鎖R2,因T2已封鎖了了R2,于是T1等待釋放放R2上的鎖,接著T2又申請(qǐng)封封鎖R1,因T1已封鎖了了R1,T2也只能等等待T1釋放R1上的鎖。這樣就就會(huì)出現(xiàn)現(xiàn)T1在等待T2

39、,而T2又在等待T1的局面,T1和T2兩個(gè)事務(wù)務(wù)永遠(yuǎn)不不能結(jié)束束,形成成死鎖。數(shù)據(jù)庫(kù)中中解決死死鎖問(wèn)題題,主要要有兩類類方法:一類方法法是采取取一定措措施來(lái)預(yù)防死鎖鎖的發(fā)生;另一類方方法是允許發(fā)生生死鎖,采用一一定手段段定期診斷系統(tǒng)統(tǒng)中有無(wú)無(wú)死鎖,若有則則解除。死鎖的預(yù)預(yù)防數(shù)據(jù)庫(kù)中中產(chǎn)生死死鎖的原原因:兩個(gè)或多多個(gè)事務(wù)務(wù)都已封封鎖了一一些數(shù)據(jù)據(jù)對(duì)象,然后又又都請(qǐng)求求對(duì)已為為其他事事務(wù)封鎖鎖的數(shù)據(jù)據(jù)對(duì)象加加鎖,從從而出現(xiàn)現(xiàn)死等待待。因此此,防止止死鎖的的發(fā)生就就是要破破壞產(chǎn)生生死鎖的的條件。預(yù)防死鎖鎖發(fā)生,通常有有兩種方方法:一次封鎖鎖法;順序封鎖鎖法。一次封鎖鎖法一次封鎖鎖法要求求每個(gè)事事務(wù)必

40、須須一次將將所有要要使用的的數(shù)據(jù)全全部加鎖鎖,否則則就不能能繼續(xù)執(zhí)執(zhí)行。一次封鎖鎖法雖然然可以有有效地防防止死鎖鎖的發(fā)生生,但也也如下存存在問(wèn)題題:第一、一一次就將將以后要要用到的的全部數(shù)數(shù)據(jù)加鎖鎖,因此此擴(kuò)大了了封鎖的的范圍,從而降降低了系系統(tǒng)的并并發(fā)度。第二、數(shù)數(shù)據(jù)庫(kù)中中數(shù)據(jù)是是不斷變變化的,原來(lái)不不要求封封鎖的數(shù)數(shù)據(jù),在在執(zhí)行過(guò)過(guò)程中可可能會(huì)變變成封鎖鎖對(duì)象,所以很很難事先先精確地地確定每每個(gè)事務(wù)務(wù)所要封封鎖的數(shù)數(shù)據(jù)對(duì)象象,因此此只能擴(kuò)擴(kuò)大封鎖鎖范圍,將事務(wù)務(wù)在執(zhí)行行過(guò)程中中可能要要封鎖的的數(shù)據(jù)對(duì)對(duì)象全部部加鎖,所以,這將降降低系統(tǒng)統(tǒng)的并發(fā)發(fā)度。順序封鎖鎖法順序封鎖鎖法是預(yù)預(yù)先對(duì)數(shù)數(shù)據(jù)對(duì)

41、象象規(guī)定一一個(gè)封鎖鎖順序,所有事事務(wù)都按按這個(gè)順順序?qū)嵭行蟹怄i。順序封鎖鎖法可以以有效地地防止死死鎖,但但也存在在如下問(wèn)問(wèn)題:第一、數(shù)據(jù)庫(kù)系系統(tǒng)中封封鎖的數(shù)數(shù)據(jù)對(duì)象象很多,并且隨隨數(shù)據(jù)的的插入、刪除等等操作而而不斷變變化,要要維護(hù)這這些資源源的封鎖鎖順序非非常困難難,成本本很高。第二、事務(wù)的封封鎖請(qǐng)求求可以隨隨著事務(wù)務(wù)的執(zhí)行行而動(dòng)態(tài)態(tài)地決定定,很難難實(shí)現(xiàn)確確定每一一個(gè)事務(wù)務(wù)要封鎖鎖哪些對(duì)對(duì)象,因因此也很很難按規(guī)規(guī)定的順順序去施施加封鎖鎖。由以上可可知,在在數(shù)據(jù)庫(kù)庫(kù)系統(tǒng)中中預(yù)防死死鎖的策策略不是是很適合合,為此此,DBMS通常提供供診斷并并解除死死鎖的方方法來(lái)避避免死鎖鎖的發(fā)生生。死鎖的兩兩種診

42、斷斷方法數(shù)據(jù)庫(kù)系系統(tǒng)中診斷死鎖鎖的方法法一般有:超時(shí)法和事務(wù)等待待圖法。一、超時(shí)時(shí)法:如果一個(gè)個(gè)事務(wù)的的等待時(shí)時(shí)間超過(guò)過(guò)了規(guī)定定的時(shí)限限,就認(rèn)認(rèn)為發(fā)生生了死鎖鎖。缺點(diǎn):(1)可能誤判判死鎖;(2)時(shí)限若設(shè)設(shè)置太長(zhǎng)長(zhǎng),死鎖鎖發(fā)生后后不能及及時(shí)發(fā)現(xiàn)現(xiàn)。二、事務(wù)務(wù)等待圖圖法:事務(wù)等待待圖是一一個(gè)有向向圖G=(T,U),其中T為節(jié)點(diǎn)的集集合,每每個(gè)節(jié)點(diǎn)點(diǎn)表示正正運(yùn)行的的事務(wù);U表示邊的的集合,每條邊邊表示事事務(wù)等待待的情況況。若T1等待T2,則從T1到T2有一條有有向邊。事務(wù)等等待圖動(dòng)動(dòng)態(tài)地反反映了所所有事務(wù)務(wù)的等待待情況。并發(fā)控控制子系系統(tǒng)周期期性地檢檢測(cè)事務(wù)務(wù)等待圖圖,如果果發(fā)現(xiàn)存存在回路路,則表

43、表示系統(tǒng)統(tǒng)已經(jīng)發(fā)發(fā)生了死死鎖。死鎖的解解除方法法DBMS的并發(fā)控控制子系系統(tǒng)一旦旦檢測(cè)到到系統(tǒng)中中存在死死鎖,就就要設(shè)法法解除。通常采采用的方方法是選選擇一個(gè)個(gè)處理死死鎖代價(jià)價(jià)最小的的事務(wù),將其撤撤銷,釋釋放此事事務(wù)持有有的所有有的鎖,使其他他事務(wù)得得以繼續(xù)續(xù)運(yùn)行下下去。當(dāng)當(dāng)然,對(duì)撤銷的的事務(wù)所所執(zhí)行的的數(shù)據(jù)修修改操作作必須加加以恢復(fù)復(fù)。SQLServer2000中的死鎖鎖檢測(cè)檢測(cè)和結(jié)結(jié)束死鎖鎖在MicrosoftSQLServer2000中,單個(gè)個(gè)用戶會(huì)會(huì)話可能能有一個(gè)個(gè)或多個(gè)個(gè)代表它它運(yùn)行的的線程。每個(gè)線線程可能能獲取或或等待獲獲取各種種資源,如:鎖。與并行查查詢執(zhí)行行相關(guān)的的資源(與交換

44、換端口相相關(guān)聯(lián)的處理理協(xié)調(diào)器器、發(fā)生生器和使使用者線線程)。線程。內(nèi)存。上述這些些資源除除內(nèi)存外外都參與與SQLServer檢測(cè)方案案。對(duì)于于內(nèi)存,SQLServer使用基于于超時(shí)的的機(jī)制來(lái)來(lái)檢測(cè)。SQLServer2000中的死鎖鎖檢測(cè)-續(xù)在SQLServer 2000中,死鎖鎖檢測(cè)由由一個(gè)稱稱為鎖監(jiān)視器器線程的單獨(dú)的的線程執(zhí)執(zhí)行。在在出現(xiàn)下下列任一一情況時(shí)時(shí),鎖監(jiān)監(jiān)視器線線程對(duì)特特定線程程啟動(dòng)死死鎖搜索索:線程已經(jīng)經(jīng)為同一一資源等等待了一一段指定定的時(shí)間間。鎖監(jiān)視器器線程定定期醒來(lái)來(lái)并識(shí)別別所有等等待某個(gè)個(gè)資源的的線程。如果鎖鎖監(jiān)視器器再次醒醒來(lái)時(shí)這這些線程程仍在等等待同一一資源,則它將將

45、對(duì)等待待線程啟啟動(dòng)鎖搜搜索。線程等待待資源并并啟動(dòng)急急切的死死鎖搜索索。注意:SQLServer通常只執(zhí)執(zhí)行定期期死鎖檢檢測(cè),而而不使用用急切模模式。因因?yàn)橄到y(tǒng)統(tǒng)中遇到到的死鎖鎖數(shù)通常常很少,定期死鎖鎖檢測(cè)有有助于減減少系統(tǒng)統(tǒng)中死鎖鎖檢測(cè)的的開銷。SQLServer2000中的死鎖鎖檢測(cè)-續(xù)當(dāng)鎖監(jiān)視視器對(duì)特特定線程程啟動(dòng)死死鎖檢測(cè)測(cè)時(shí),它它識(shí)別線線程正在在等待的的資源。然后,鎖監(jiān)視視器查找找特定資資源的擁?yè)碛姓?,并遞歸歸地繼續(xù)續(xù)執(zhí)行對(duì)對(duì)那些線線程的死死鎖搜索索,直到到找到一一個(gè)循環(huán)環(huán)。用這種方方式識(shí)別別的循環(huán)環(huán)形成一一個(gè)死鎖鎖。在識(shí)別死死鎖后,系統(tǒng)自自動(dòng)選擇擇可以打打破死鎖鎖的線程程(死鎖鎖犧

46、牲品品)來(lái)結(jié)結(jié)束死鎖鎖。SQLServer回滾作為為死鎖犧犧牲品的的事務(wù),通知線程程的應(yīng)用用程序取取消線程程的當(dāng)前前請(qǐng)求,然后允允許不間間斷線程程的事務(wù)務(wù)繼續(xù)進(jìn)進(jìn)行。SQLServer通常選擇運(yùn)行行撤消時(shí)時(shí)花費(fèi)最最少的事事務(wù)的線線程作為為死鎖犧犧牲品。另外,用用戶可以以使用SET語(yǔ)句將會(huì)會(huì)話的DEADLOCK_PRIORITY設(shè)置為L(zhǎng)OW。DEADLOCK_PRIORITY選項(xiàng)控制制在死鎖鎖情況下下如何衡衡量會(huì)話話的重要要性。如如果會(huì)話話的設(shè)置置為L(zhǎng)OW,則當(dāng)會(huì)話話陷入死死鎖情況況時(shí)將成成為首選選犧牲品品。8.5并發(fā)調(diào)度度的可串串行性計(jì)算機(jī)系系統(tǒng)對(duì)并并發(fā)事務(wù)務(wù)中并發(fā)發(fā)操作的的調(diào)度是是隨機(jī)的的,

47、而不不同的調(diào)調(diào)度可能能會(huì)產(chǎn)生生不同的的結(jié)果,那么哪哪個(gè)結(jié)果果是正確確的,哪哪個(gè)是錯(cuò)錯(cuò)誤的呢呢?如果一個(gè)個(gè)事務(wù)在在運(yùn)行過(guò)過(guò)程中沒(méi)沒(méi)有其他他事務(wù)同同時(shí)運(yùn)行行,也就就是說(shuō)它它沒(méi)有受受到其他他事務(wù)的的干擾,那么就就可以認(rèn)認(rèn)為該事事務(wù)的運(yùn)運(yùn)行結(jié)果果是正常常的或可可預(yù)想的的。因此將所有事事務(wù)串行行起來(lái)的的調(diào)度策策略一定定是正確確的調(diào)度度策略。雖然以以不同的的順序串串行執(zhí)行行事務(wù)可可能會(huì)產(chǎn)產(chǎn)生不同同的結(jié)果果,但由由于不會(huì)會(huì)將數(shù)據(jù)據(jù)庫(kù)置于于不一致致狀態(tài),所以就就運(yùn)行本本身和數(shù)數(shù)據(jù)的一一致性而而言都是是正確的的。可串行化化調(diào)度DEF:多個(gè)事務(wù)務(wù)的并發(fā)發(fā)執(zhí)行是是正確的的,當(dāng)且且僅當(dāng)其其結(jié)果與與按照某某一次序序串行

48、地地執(zhí)行它它們時(shí)的的結(jié)果相相同,那那么我們們就稱這這種調(diào)度度策略是是可串行化化地調(diào)度度??纱行孕允遣l(fā)發(fā)事務(wù)正正確性的的準(zhǔn)則。一個(gè)給定定的并發(fā)發(fā)調(diào)度當(dāng)當(dāng)且僅當(dāng)當(dāng)它是可可串行化化的,才才認(rèn)為是是正確調(diào)調(diào)度??纱谢睦幼雨P(guān)于可串串行化的的并發(fā)事事務(wù)調(diào)度度的實(shí)例例,請(qǐng)同同學(xué)們參參考教材材P272P273。(留給同學(xué)學(xué)們自學(xué)學(xué))結(jié)論:判斷某個(gè)個(gè)并發(fā)事事務(wù)的調(diào)調(diào)度策略略是否是是正確的的,可以以將該并并發(fā)調(diào)度度的結(jié)果果與某一一個(gè)串行行化執(zhí)行行的結(jié)果果相比較較,如果果相同,則該并并發(fā)調(diào)度度策略是是正確的的。DBMS保證調(diào)度度正確的的策略為了保證證并發(fā)操操作的正正確性,DBMS的并發(fā)控制制機(jī)制必必須提

49、供供一定的的手段來(lái)來(lái)保證調(diào)調(diào)度是可可串行化化的。從理論上上講,在某一一事務(wù)執(zhí)執(zhí)行時(shí)禁禁止其他他事務(wù)執(zhí)執(zhí)行的調(diào)調(diào)度策略略一定是是可串行行化的調(diào)調(diào)度,這這是最簡(jiǎn)單的的調(diào)度策策略。但實(shí)際際上是不不可取的的。因?yàn)橛脩魬舨荒艹涑浞值墓补蚕頂?shù)據(jù)據(jù)庫(kù)資源源。所以,DBMS必須能夠夠提供某某種策略略來(lái)實(shí)現(xiàn)現(xiàn)并發(fā)操操作調(diào)度度的可串串行性,從而保保證調(diào)度度的正確確性。兩段鎖協(xié)協(xié)議就是保證證并發(fā)調(diào)調(diào)度可串串行化的的封鎖協(xié)協(xié)議。當(dāng)當(dāng)然,還還有其他他一些方方法,如如時(shí)標(biāo)方法法等。8.6兩段鎖協(xié)協(xié)議兩段鎖協(xié)協(xié)議指的的是:所有事務(wù)務(wù)必須分分兩個(gè)階階段對(duì)數(shù)數(shù)據(jù)項(xiàng)加加鎖和解解鎖。這兩個(gè)個(gè)階段分分別是:(1)在對(duì)任任何數(shù)據(jù)據(jù)進(jìn)行

50、讀讀、寫操操作之前前,首先先要申請(qǐng)請(qǐng)并獲得得對(duì)該數(shù)數(shù)據(jù)的封封鎖;(2)在釋放放一個(gè)封封鎖之后后,事務(wù)務(wù)不再申申請(qǐng)和獲獲得任何何其他封封鎖。對(duì)兩段鎖鎖協(xié)議的的理解“兩段”鎖是指指:事務(wù)在鎖鎖的處理理上分為為兩個(gè)階階段:第一階段段是獲得封鎖鎖,也稱為為擴(kuò)展階階段。在在這階段段,事務(wù)務(wù)可以申申請(qǐng)獲得得任何數(shù)數(shù)據(jù)項(xiàng)上上的任何何類型的的鎖,但但是不能能釋放任任何鎖。第二階段段是釋放封鎖鎖,也稱為為收縮階階段。在在這階段段,事務(wù)務(wù)可以釋釋放任何何數(shù)據(jù)項(xiàng)項(xiàng)上的任任何類型型的鎖,但是不不能再申申請(qǐng)任何何鎖。若并發(fā)執(zhí)執(zhí)行的所所有事務(wù)務(wù)均遵守守兩段鎖鎖協(xié)議,則對(duì)這這些事務(wù)務(wù)的任何何并發(fā)調(diào)調(diào)度策略略都是可可串行化化

51、的。( 證明明部分,留給同同學(xué)們思思考。)可串行調(diào)調(diào)度與兩兩段鎖協(xié)協(xié)議的聯(lián)聯(lián)系事務(wù)遵守守兩段鎖鎖協(xié)議是是可串行行化調(diào)度度的充分分條件,而不是是充要條條件。也也就是說(shuō)說(shuō),若并并發(fā)事務(wù)務(wù)都遵守守兩段鎖鎖協(xié)以,則對(duì)這這些事務(wù)務(wù)的任何何并發(fā)調(diào)調(diào)度策略略都是可可串行化化的;若若對(duì)并發(fā)發(fā)事務(wù)的的一個(gè)調(diào)調(diào)度是可可串行化化的,不不一定所所有事務(wù)務(wù)都符合合兩段鎖鎖協(xié)議。關(guān)于兩段段鎖協(xié)議議與可串串行化調(diào)調(diào)度的關(guān)關(guān)系的實(shí)實(shí)例,同同學(xué)們可可以參考考教材P275的圖8.6。(留做做自學(xué))兩段鎖協(xié)協(xié)議與一一次封鎖鎖法的異異同一次封鎖鎖法要求求每個(gè)事事務(wù)必須須一次將將所有要要使用的的數(shù)據(jù)全全部加鎖鎖,否則則就不能能繼續(xù)執(zhí)執(zhí)

52、行,因因此,一次封鎖鎖法是遵遵守兩段段鎖協(xié)議議的;但是兩段段鎖協(xié)議議并不要要求事務(wù)務(wù)必須一一次將所所有要使使用的數(shù)數(shù)據(jù)全部部加鎖,因此遵守兩段段鎖協(xié)議議的事務(wù)務(wù)仍然可可能發(fā)生生死鎖。(請(qǐng)參參考教材P275的圖8.7。)8.7封鎖的粒粒度封鎖對(duì)象象的大小小稱為封鎖粒度度。封鎖對(duì)象象可以是是邏輯單單元,也也可以是是物理單單元。以關(guān)系數(shù)數(shù)據(jù)庫(kù)為為例,封封鎖對(duì)象象可以是是這樣一一些邏輯輯單元:屬性值值、屬性性值的集集合、元元組、關(guān)關(guān)系、索索引項(xiàng)、整個(gè)索索引甚至至整個(gè)數(shù)數(shù)據(jù)庫(kù),也可以以是這樣一些物物理單元元:頁(yè)(數(shù)據(jù)頁(yè)頁(yè)或索引引頁(yè))、塊等。封鎖粒度度與系統(tǒng)統(tǒng)的并發(fā)發(fā)度和并并發(fā)控制制的開銷銷密切相相關(guān)。直

53、觀地看看,封鎖鎖的粒度度越大,數(shù)據(jù)庫(kù)庫(kù)所能夠夠封鎖的的數(shù)據(jù)單單元就越越少,并并發(fā)度就就越小,系統(tǒng)開開銷也越越??;反反之,封封鎖的粒粒度越小小,并發(fā)發(fā)度較高高,但系系統(tǒng)開銷銷也就越越大。(請(qǐng)參考教材材P276中關(guān)于封封鎖粒度度與系統(tǒng)統(tǒng)的并發(fā)發(fā)度和并并發(fā)控制制的關(guān)系系的實(shí)例例)多粒度封封鎖由上面的的討論可可知,如如果在一一個(gè)系統(tǒng)統(tǒng)中同時(shí)時(shí)支持多多種封鎖鎖粒度供供不同的的事務(wù)選選擇是比比較理想想的,這這種封鎖鎖方法稱稱為多粒度封封鎖。選擇封封鎖粒度度時(shí)應(yīng)該該同時(shí)考考慮封鎖鎖開銷和和并發(fā)度度這兩個(gè)個(gè)因素,適當(dāng)選選擇封鎖鎖粒度以以求得最最優(yōu)的效效果。一般的選選擇原則則如下:需要處處理大量量元組的的事務(wù)可

54、可選擇關(guān)關(guān)系為封封鎖粒度度;需要要處理多多個(gè)關(guān)系系的大量量元組的的事務(wù)可可選擇數(shù)數(shù)據(jù)庫(kù)為為封鎖粒粒度;而而對(duì)于一一個(gè)處理理少量元元組的用用戶事務(wù)務(wù),應(yīng)該該選擇以以元組為為封鎖粒粒度比較較合適。多粒度樹樹、多粒粒度封鎖鎖協(xié)議、意向鎖鎖關(guān)于多粒粒度樹、多粒度度封鎖協(xié)協(xié)議及意意向鎖等等內(nèi)容,留給同同學(xué)們自自學(xué),不不作為必必修內(nèi)容容。8.8本章小結(jié)結(jié)并發(fā)控制制主要涉涉及保證證各個(gè)事事務(wù)本身身正確的的問(wèn)題。所謂事務(wù)務(wù)就是對(duì)對(duì)數(shù)據(jù)庫(kù)庫(kù)等操作作或運(yùn)算算的一組組命令。數(shù)據(jù)庫(kù)系系統(tǒng)是多多用戶共共享的系系統(tǒng),對(duì)對(duì)數(shù)據(jù)庫(kù)庫(kù)的存取取可能是是并行的的,所以以,即使使單個(gè)事事務(wù)執(zhí)行行時(shí)所有有的事務(wù)務(wù)都是正正確的,在并發(fā)發(fā)

55、的情況況下,因因?yàn)槭聞?wù)務(wù)之間的的互相干干擾,仍仍然可能能使最后后的總的的結(jié)果不不正確。并發(fā)控制制就是以以正確的的方式調(diào)調(diào)度并發(fā)發(fā)事務(wù)。使一個(gè)個(gè)事務(wù)的的執(zhí)行不不受其他他事務(wù)的的干擾。在數(shù)據(jù)據(jù)庫(kù)環(huán)境境下,并并發(fā)控制制的主要要方式是是封鎖機(jī)機(jī)制。即即加鎖?;镜牡逆i類型型有兩類類:排它它鎖和共共享鎖。本章小結(jié)結(jié)(續(xù))排它鎖:如果事務(wù)務(wù)T對(duì)某個(gè)目目標(biāo)建立立了排它它鎖,則則不再允允許任何何事務(wù)對(duì)對(duì)這個(gè)目目標(biāo)再加加任何類類型的鎖鎖,直至至T釋放其鎖鎖為止。共享鎖:如果事務(wù)務(wù)T對(duì)某個(gè)目目標(biāo)建立立了共享享鎖,則則另一個(gè)個(gè)不同的的事務(wù)T也可以對(duì)對(duì)這個(gè)目目標(biāo)取得得共享鎖鎖,但不不能取得得排它鎖鎖,直到到對(duì)它的的所

56、有共共事鎖部部釋放為為止。本章小結(jié)結(jié)(續(xù))死鎖:死鎖發(fā)生生時(shí),其其中兩個(gè)個(gè)或多個(gè)個(gè)事務(wù)同同時(shí)處于于等待狀狀態(tài),其其中的每每一個(gè)在在它能夠夠進(jìn)行之之前都等等待另一一個(gè)釋放放鎖。在數(shù)據(jù)庫(kù)庫(kù)中解決決死鎖的的常用方方法有:(1)要求每每個(gè)事務(wù)務(wù)一次就就將所有有要使用用的數(shù)據(jù)據(jù)全部加加鎖,否否則就不不能執(zhí)行行。(2)預(yù)先規(guī)規(guī)定一個(gè)個(gè)封鎖順順序,所所有的事事務(wù)部必必須按這這個(gè)順序序?qū)?shù)據(jù)據(jù)執(zhí)行封封鎖。(3)不采取取任何措措施來(lái)預(yù)預(yù)防死鎖鎖的發(fā)生生,而是是采用某某種方法法診斷系系統(tǒng)中是是否有死死鎖。Chapter 08 is overThanksfor all!第九章數(shù)數(shù)據(jù)庫(kù)庫(kù)安全性性Introductio

57、n To Database SystemChapter 099.1計(jì)算機(jī)安安全性概概論數(shù)據(jù)庫(kù)的的安全性性:指保護(hù)數(shù)據(jù)庫(kù)以以防止不不合法的的使用所所造成的的數(shù)據(jù)泄泄漏、更更改或破破壞。由于數(shù)據(jù)據(jù)庫(kù)系統(tǒng)統(tǒng)中大量量數(shù)據(jù)集集中存放放,而且且許多最最終用戶戶可以直直接共享享這些數(shù)數(shù)據(jù),因因此,在在數(shù)據(jù)庫(kù)庫(kù)系統(tǒng)中中安全性性問(wèn)題是是最為突突出的。系統(tǒng)安安全性保保護(hù)措施施是否有有效是衡衡量數(shù)據(jù)據(jù)庫(kù)系統(tǒng)統(tǒng)的主要要指標(biāo)之之一。9.1.1計(jì)算機(jī)系系統(tǒng)的三三類安全全性問(wèn)題題計(jì)算機(jī)系系統(tǒng)安全全性:是指為計(jì)計(jì)算機(jī)系系統(tǒng)建立立和采取取的各種種安全保保護(hù)措施施,以保保護(hù)計(jì)算算機(jī)系統(tǒng)統(tǒng)中的硬硬件、軟軟件及數(shù)數(shù)據(jù),防防止其因因?yàn)?/p>

58、偶然然或惡意意的原因因使系統(tǒng)統(tǒng)遭到破破壞,數(shù)數(shù)據(jù)遭到到更改或或刪除等等。概括起來(lái)來(lái),計(jì)算算機(jī)系統(tǒng)統(tǒng)的安全全性問(wèn)題題可以分分為三大大類:技術(shù)安全全類;管理安全全類;政策法律律類。三類計(jì)算算機(jī)安全全問(wèn)題技術(shù)安全全:計(jì)算機(jī)系系統(tǒng)中采采用具有有一定安安全性的的硬件、軟件來(lái)實(shí)現(xiàn)對(duì)對(duì)計(jì)算機(jī)機(jī)系統(tǒng)及及其所存存數(shù)據(jù)的的安全保保護(hù),當(dāng)當(dāng)計(jì)算機(jī)機(jī)系統(tǒng)受受到無(wú)疑疑或惡意意的攻擊擊時(shí)仍能能保證系系統(tǒng)的正正常運(yùn)行行,保證證系統(tǒng)內(nèi)內(nèi)的數(shù)據(jù)據(jù)不增加加、不丟丟失、不不泄漏。管理安全全:指軟硬件件故障、場(chǎng)地的的意外事事故、管管理不善善導(dǎo)致的的計(jì)算機(jī)機(jī)設(shè)備和和數(shù)據(jù)介介質(zhì)的物物理破壞壞、丟失失等安全全問(wèn)題。政策法律律類安全全:指政

59、府部部門建立立的有關(guān)關(guān)計(jì)算機(jī)機(jī)犯罪、數(shù)據(jù)安安全保密密的法律律道德準(zhǔn)準(zhǔn)則和政政策法規(guī)規(guī)、法令令等。9.1.2可信計(jì)算算機(jī)系統(tǒng)統(tǒng)評(píng)測(cè)標(biāo)標(biāo)準(zhǔn)隨著計(jì)算算機(jī)資源源共享和和網(wǎng)絡(luò)技技術(shù)的應(yīng)應(yīng)用日益益廣泛和和深入,特別是是Internet技術(shù)的發(fā)發(fā)展,計(jì)計(jì)算機(jī)安安全性問(wèn)問(wèn)題越來(lái)來(lái)越得到到人們的的重視。對(duì)各種種計(jì)算機(jī)機(jī)及其相相關(guān)產(chǎn)品品、信息息系統(tǒng)的的安全性性要求越越來(lái)越高高。為此此,在計(jì)計(jì)算機(jī)安安全技術(shù)術(shù)方面逐逐步發(fā)展展并建立立了一套套可信計(jì)計(jì)算機(jī)系系統(tǒng)的概概念和標(biāo)標(biāo)準(zhǔn),以以此規(guī)范范和指導(dǎo)導(dǎo)安全計(jì)計(jì)算機(jī)系系統(tǒng)部件件的生產(chǎn)產(chǎn),測(cè)定定產(chǎn)品的的安全性性能指標(biāo)標(biāo)等。關(guān)于可信信計(jì)算機(jī)機(jī)系統(tǒng)評(píng)評(píng)測(cè)標(biāo)準(zhǔn)準(zhǔn),留給給同學(xué)們們自學(xué)

60、。9.2數(shù)據(jù)庫(kù)安安全性控控制計(jì)算機(jī)系系統(tǒng)的安安全模型型:用戶用戶標(biāo)簽和鑒別DBMS存取控制OS操作系統(tǒng)安全保護(hù)DB數(shù)據(jù)密碼存儲(chǔ)對(duì)上述安安全模型型的解釋釋:用戶要求求進(jìn)入計(jì)計(jì)算機(jī)系系統(tǒng)時(shí),系統(tǒng)首首先根據(jù)據(jù)輸入的的用戶表表示進(jìn)行行用戶身身份鑒定定,只有有合法的的用戶才才可進(jìn)入入計(jì)算機(jī)機(jī)系統(tǒng)。對(duì)已進(jìn)進(jìn)入系統(tǒng)統(tǒng)的用戶戶,DBMS還要進(jìn)行行存取控控制,只只允許用用戶執(zhí)行行合法的的操作。操作系系統(tǒng)也將將提供自自己的保保護(hù)措施施。數(shù)據(jù)據(jù)最后還還可以以以密碼形形式存儲(chǔ)儲(chǔ)到數(shù)據(jù)據(jù)庫(kù)中。9.2.1用戶標(biāo)簽簽與識(shí)別別用戶表識(shí)識(shí)和鑒別別是系統(tǒng)統(tǒng)提供的的最外層層安全保保護(hù)措施施。即:由系統(tǒng)統(tǒng)提供一一定的方方式讓用用戶標(biāo)

溫馨提示

  • 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)論