版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)庫系統(tǒng)概論AnIntroductiontoDatabaseSystem第八章數(shù)據(jù)庫安全機制主講:莊鎖法[目的要求]掌握事務(wù)的基本概念及特性;了解故障的種類及恢復實現(xiàn)技術(shù);了解實現(xiàn)數(shù)據(jù)庫系統(tǒng)安全性的技術(shù)和方法;理解DBMS完整性實現(xiàn)的機制,包括完整性約束定義機制、完整性檢查機制和違背完整性約束條件時DBMS應(yīng)采取的動作。[基本內(nèi)容]恢復技術(shù)(見第十章);并發(fā)控制(見第十一章);加鎖協(xié)議;死鎖處理;數(shù)據(jù)庫安全(見第四章);完整性約束(見第五章)[重點難點]重點:數(shù)據(jù)庫完整性與安全性。難點:數(shù)據(jù)庫死鎖及并發(fā)控制。第十章數(shù)據(jù)庫恢復技術(shù)10.1事務(wù)的基本概念10.2數(shù)據(jù)庫恢復概述10.3故障的種類10.4恢復的實現(xiàn)技術(shù)10.5恢復策略10.6具有檢查點的恢復技術(shù)10.7數(shù)據(jù)庫鏡像10.8小結(jié)10.1事務(wù)的基本概念一、事務(wù)定義
二、事務(wù)的特性一、事務(wù)(Transaction)定義一個數(shù)據(jù)庫操作序列(這些操作要么全做要么全不做)一個不可分割的工作單位恢復和并發(fā)控制的基本單位事務(wù)和程序比較在關(guān)系數(shù)據(jù)庫中,一個事務(wù)可以是一條或多條SQL語句,也可以包含一個或多個程序。一個程序通常包含多個事務(wù)定義事務(wù)顯式定義方式
BEGINTRANSACTIONBEGINTRANSACTIONSQL語句1SQL語句1
SQL語句2SQL語句2
。。。。。。。。。。
COMMITROLLBACK隱式方式當用戶沒有顯式地定義事務(wù)時,DBMS按缺省規(guī)定自動劃分事務(wù)舉例1:隱式事務(wù)在一個sql批文件中,向數(shù)據(jù)表SC中插入數(shù)據(jù),每條SQL語句都是一個隱式事務(wù),如下圖例中第3條插入語句有錯誤(關(guān)鍵字與第2條插入語句相同),系統(tǒng)會正確插入1、2、4條語句,執(zhí)行第3條語句后發(fā)現(xiàn)錯誤,自動回滾。舉例2:顯式事務(wù)(回滾)在一個sql批文件中,若在一個顯式事務(wù)中刪除數(shù)據(jù)表SC,然后回滾事務(wù),其刪除無效。舉例3:顯式事務(wù)(提交)在一個sql批文件中,若在一個顯式事務(wù)中刪除數(shù)據(jù)表SC,然后提交事務(wù),其刪除有效。二、事務(wù)的特性(ACID特性)事務(wù)的ACID特性:原子性(Atomicity)一致性(Consistency)隔離性(Isolation)持續(xù)性(Durability)事務(wù)的原子性(Atomicity)事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。事務(wù)的一致性(Consistency)事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。因此當數(shù)據(jù)庫只包含成功事務(wù)提交的結(jié)果時,就說數(shù)據(jù)庫處于一致性狀態(tài)。如果數(shù)據(jù)庫系統(tǒng)運行中發(fā)生故障,有些事務(wù)尚未完成就被迫中斷,系統(tǒng)將事務(wù)中對數(shù)據(jù)庫的所有已完成的操作全部撤消,滾回到事務(wù)開始時的一致狀態(tài)。事務(wù)的隔離性(Isolation)一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對其他并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。持續(xù)性也稱永久性(Permanence),指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其執(zhí)行結(jié)果有任何影響。事務(wù)的持續(xù)性(Isolation)事務(wù)與恢復和并發(fā)控制的關(guān)系事務(wù)是恢復和并發(fā)控制的基本單位。保證事務(wù)ACID特性是事務(wù)處理的重要任務(wù)。事務(wù)ACID特性可能遭到破壞的因素有:1.多個事務(wù)并行運行時,不同事務(wù)的操作交叉執(zhí)行。2.事務(wù)在運行過程中被強行停止。在第一種情況下,數(shù)據(jù)庫管理系統(tǒng)必須保證多個事務(wù)的交叉運行不影響這些事務(wù)的原子性。在第二種情況下,數(shù)據(jù)庫管理系統(tǒng)必須保證被強行終止的事務(wù)對數(shù)據(jù)庫和其它事務(wù)沒有任何影響。這些就是數(shù)據(jù)庫管理系統(tǒng)中恢復機制和并發(fā)控制機制的責任第十章數(shù)據(jù)庫恢復技術(shù)10.1事務(wù)的基本概念10.2數(shù)據(jù)庫恢復概述10.3故障的種類10.4恢復的實現(xiàn)技術(shù)10.5恢復策略10.6具有檢查點的恢復技術(shù)10.7數(shù)據(jù)庫鏡像10.8小結(jié)10.2數(shù)據(jù)庫恢復概述故障是不可避免的系統(tǒng)故障:計算機軟、硬件故障人為故障:操作員的失誤、惡意的破壞等。數(shù)據(jù)庫的恢復 把數(shù)據(jù)庫從錯誤狀態(tài)恢復到某一已知的正確狀態(tài)(亦稱為一致狀態(tài)或完整狀態(tài))第十章數(shù)據(jù)庫恢復技術(shù)10.1事務(wù)的基本概念10.2數(shù)據(jù)庫恢復概述10.3故障的種類10.4恢復的實現(xiàn)技術(shù)10.5恢復策略10.6具有檢查點的恢復技術(shù)10.7數(shù)據(jù)庫鏡像10.8小結(jié)故障的種類事務(wù)內(nèi)部的故障系統(tǒng)故障介質(zhì)故障計算機病毒一、事務(wù)內(nèi)部的故障事務(wù)內(nèi)部的故障有的是可以通過事務(wù)程序本身發(fā)現(xiàn)的(見下面轉(zhuǎn)賬事務(wù)的例子)
有的是非預(yù)期的例如,銀行轉(zhuǎn)賬事務(wù),這個事務(wù)把一筆金額從一個賬戶甲轉(zhuǎn)給另一個賬戶乙。
BEGINTRANSACTION
讀賬戶甲的余額BALANCE;
BALANCE=BALANCE-AMOUNT;(AMOUNT為轉(zhuǎn)賬金額)
寫回BALANCE;
IF(BALANCE<0)THEN{
打印'金額不足,不能轉(zhuǎn)賬';
ROLLBACK;(撤銷剛才的修改,恢復事務(wù))}ELSE{
讀賬戶乙的余額BALANCE1;
BALANCE1=BALANCE1+AMOUNT;寫回BALANCE1;
COMMIT;
}這個例子所包括的兩個更新操作要么全部完成要么全部不做。否則就會使數(shù)據(jù)庫處于不一致狀態(tài),例如只把賬戶甲的余額減少了而沒有把賬戶乙的余額增加。在這段程序中若產(chǎn)生賬戶甲余額不足的情況,應(yīng)用程序可以發(fā)現(xiàn)并讓事務(wù)滾回,撤銷已作的修改,恢復數(shù)據(jù)庫到正確狀態(tài)。事務(wù)內(nèi)部的故障(續(xù))事務(wù)內(nèi)部更多的故障是非預(yù)期的,是不能由應(yīng)用程序處理的。運算溢出并發(fā)事務(wù)發(fā)生死鎖而被選中撤銷該事務(wù)違反了某些完整性限制等之后,事務(wù)故障僅指這類非預(yù)期的故障事務(wù)故障意味著事務(wù)沒有達到預(yù)期的終點(COMMIT或者顯式的ROLLBACK),因此,數(shù)據(jù)庫可能處于不正確狀態(tài)?;謴统绦蛞诓挥绊懫渌聞?wù)運行的情況下,強行回滾(ROLLBACK)該事務(wù),即撤消該事務(wù)已經(jīng)作出的任何對數(shù)據(jù)庫的修改,使得該事務(wù)好象根本沒有啟動一樣。這類恢復操作稱為事務(wù)撤消(UNDO)。事務(wù)故障的恢復:撤消事務(wù)(UNDO)二、系統(tǒng)故障系統(tǒng)故障稱為軟故障,是指造成系統(tǒng)停止運轉(zhuǎn)的任何事件,使得系統(tǒng)要重新啟動。整個系統(tǒng)的正常運行突然被破壞所有正在運行的事務(wù)都非正常終止不破壞數(shù)據(jù)庫內(nèi)存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失系統(tǒng)故障的常見原因特定類型的硬件錯誤(如CPU故障)操作系統(tǒng)故障DBMS代碼錯誤系統(tǒng)斷電系統(tǒng)故障的恢復發(fā)生系統(tǒng)故障時,事務(wù)未提交恢復策略:強行撤消(UNDO)所有未完成事務(wù)發(fā)生系統(tǒng)故障時,事務(wù)已提交,但緩沖區(qū)中的信息尚未完全寫回到磁盤上?;謴筒呗裕褐刈觯≧EDO)所有已提交的事務(wù)三、介質(zhì)故障介質(zhì)故障稱為硬故障,指外存故障磁盤損壞磁頭碰撞操作系統(tǒng)的某種潛在錯誤瞬時強磁場干擾介質(zhì)故障的恢復裝入數(shù)據(jù)庫發(fā)生介質(zhì)故障前某個時刻的數(shù)據(jù)副本重做自此時始的所有成功事務(wù),將這些事務(wù)已提交的結(jié)果重新記入數(shù)據(jù)庫四、計算機病毒計算機病毒一種人為的故障或破壞,是一些惡作劇者研制的一種計算機程序可以繁殖和傳播危害破壞、盜竊系統(tǒng)中的數(shù)據(jù)破壞系統(tǒng)文件故障小結(jié)各類故障,對數(shù)據(jù)庫的影響有兩種可能性一是數(shù)據(jù)庫本身被破壞二是數(shù)據(jù)庫沒有被破壞,但數(shù)據(jù)可能不正確,這是由于事務(wù)的運行被非正常終止造成的。第十章數(shù)據(jù)庫恢復技術(shù)10.1事務(wù)的基本概念10.2數(shù)據(jù)庫恢復概述10.3故障的種類10.4恢復的實現(xiàn)技術(shù)10.5恢復策略10.6具有檢查點的恢復技術(shù)10.7數(shù)據(jù)庫鏡像10.8小結(jié)10.4恢復的實現(xiàn)技術(shù)恢復操作的基本原理:冗余 利用存儲在系統(tǒng)其它地方的冗余數(shù)據(jù)來重建數(shù)據(jù)庫中已被破壞或不正確的那部分數(shù)據(jù)恢復機制涉及的關(guān)鍵問題:如何建立冗余數(shù)據(jù)?
數(shù)據(jù)轉(zhuǎn)儲(backup)登錄日志文件(logging)如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復?
10.4.1數(shù)據(jù)轉(zhuǎn)儲一、什么是數(shù)據(jù)轉(zhuǎn)儲二、轉(zhuǎn)儲方法一、什么是數(shù)據(jù)轉(zhuǎn)儲轉(zhuǎn)儲是指DBA將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存起來的過程,備用的數(shù)據(jù)稱為后備副本或后援副本如何使用數(shù)據(jù)庫遭到破壞后可以將后備副本重新裝入重裝后備副本只能將數(shù)據(jù)庫恢復到轉(zhuǎn)儲時的狀態(tài)二、轉(zhuǎn)儲方法1.靜態(tài)轉(zhuǎn)儲與動態(tài)轉(zhuǎn)儲(按狀態(tài)分)2.海量轉(zhuǎn)儲與增量轉(zhuǎn)儲(按方式分)
轉(zhuǎn)儲狀態(tài)動態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲轉(zhuǎn)儲方式海量轉(zhuǎn)儲動態(tài)海量轉(zhuǎn)儲靜態(tài)海量轉(zhuǎn)儲增量轉(zhuǎn)儲動態(tài)增量轉(zhuǎn)儲靜態(tài)增量轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲在系統(tǒng)中無運行事務(wù)時進行的轉(zhuǎn)儲操作轉(zhuǎn)儲開始時數(shù)據(jù)庫處于一致性狀態(tài)轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫的任何存取、修改活動得到的一定是一個數(shù)據(jù)一致性的副本優(yōu)點:實現(xiàn)簡單缺點:降低了數(shù)據(jù)庫的可用性轉(zhuǎn)儲必須等待正運行的用戶事務(wù)結(jié)束新的事務(wù)必須等轉(zhuǎn)儲結(jié)束動態(tài)轉(zhuǎn)儲轉(zhuǎn)儲操作與用戶事務(wù)并發(fā)進行轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進行存取或修改優(yōu)點不用等待正在運行的用戶事務(wù)結(jié)束不會影響新事務(wù)的運行缺點不能保證副本中的數(shù)據(jù)正確有效[例]在轉(zhuǎn)儲期間的某個時刻Tc,系統(tǒng)把數(shù)據(jù)A=100轉(zhuǎn)儲到磁帶上,而在下一時刻Td,某一事務(wù)將A改為200。轉(zhuǎn)儲結(jié)束后,后備副本上的A已是過時的數(shù)據(jù)了動態(tài)轉(zhuǎn)儲利用動態(tài)轉(zhuǎn)儲得到的副本進行故障恢復需要把動態(tài)轉(zhuǎn)儲期間各事務(wù)對數(shù)據(jù)庫的修改活動登記下來,建立日志文件后備副本加上日志文件才能把數(shù)據(jù)庫恢復到某一時刻的正確狀態(tài)2.海量轉(zhuǎn)儲與增量轉(zhuǎn)儲海量轉(zhuǎn)儲與增量轉(zhuǎn)儲比較從恢復角度看,使用海量轉(zhuǎn)儲得到的后備副本進行恢復往往更方便但如果數(shù)據(jù)庫很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲方式更實用更有效海量轉(zhuǎn)儲:每次轉(zhuǎn)儲全部數(shù)據(jù)庫增量轉(zhuǎn)儲:只轉(zhuǎn)儲上次轉(zhuǎn)儲后更新過的數(shù)據(jù)10.4恢復的實現(xiàn)技術(shù)10.4.1數(shù)據(jù)轉(zhuǎn)儲10.4.2登記日志文件10.4.2登記日志文件一、日志文件的格式和內(nèi)容二、日志文件的作用三、登記日志文件一、日志文件的格式和內(nèi)容什么是日志文件日志文件(log)是用來記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件日志文件的格式以記錄為單位的日志文件以數(shù)據(jù)塊為單位的日志文件日志文件的格式和內(nèi)容(續(xù))以記錄為單位的日志文件內(nèi)容各個事務(wù)的開始標記(BEGINTRANSACTION)各個事務(wù)的結(jié)束標記(COMMIT或ROLLBACK)各個事務(wù)的所有更新操作以上均作為日志文件中的一個日志記錄(logrecord)以記錄為單位的日志文件,每條日志記錄的內(nèi)容事務(wù)標識(標明是哪個事務(wù))操作類型(插入、刪除或修改)操作對象(記錄內(nèi)部標識)更新前數(shù)據(jù)的舊值(對插入操作而言,此項為空值)更新后數(shù)據(jù)的新值(對刪除操作而言,此項為空值)以數(shù)據(jù)塊為單位的日志文件,每條日志記錄的內(nèi)容事務(wù)標識(標明是那個事務(wù))被更新的數(shù)據(jù)塊更新前的完整數(shù)據(jù)塊更新后的完整數(shù)據(jù)塊二、日志文件的作用進行事務(wù)故障恢復進行系統(tǒng)故障恢復協(xié)助后備副本進行故障恢復利用靜態(tài)轉(zhuǎn)儲副本和日志文件進行恢復
靜態(tài)轉(zhuǎn)儲
運行事務(wù)正常運行─┼───────┼─────────────
Ta
Tb
Tf └────────────
重裝后備副本
利用日志文件恢復繼續(xù)運行恢復
─┼───────┼┈┈┈┈┈┈┈┈┼────登記日志文件↓利用動態(tài)轉(zhuǎn)儲副本和日志文件進行恢復三、登記日志文件基本原則登記的次序嚴格按并行事務(wù)執(zhí)行的時間次序必須先寫日志文件,后寫數(shù)據(jù)庫寫日志文件操作:把表示這個修改的日志記錄寫到日志文件寫數(shù)據(jù)庫操作:把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中為什么要先寫日志文件寫數(shù)據(jù)庫和寫日志文件是兩個不同的操作在這兩個操作之間可能發(fā)生故障如果先寫了數(shù)據(jù)庫修改,而在日志文件中沒有登記下這個修改,則以后就無法恢復這個修改了如果先寫日志,但沒有修改數(shù)據(jù)庫,按日志文件恢復時只不過是多執(zhí)行一次不必要的UNDO操作,并不會影響數(shù)據(jù)庫的正確性第十章數(shù)據(jù)庫恢復技術(shù)10.1事務(wù)的基本概念10.2數(shù)據(jù)庫恢復概述10.3故障的種類10.4恢復的實現(xiàn)技術(shù)10.5恢復策略10.6具有檢查點的恢復技術(shù)10.7數(shù)據(jù)庫鏡像10.8小結(jié)10.5恢復策略10.5.1事務(wù)故障的恢復10.5.2系統(tǒng)故障的恢復10.5.3介質(zhì)故障的恢復運算溢出并發(fā)事務(wù)發(fā)生死鎖而被選中撤銷該事務(wù)違反了某些完整性限制等可預(yù)料的(程序控制)不可預(yù)料的:10.5.1事務(wù)故障的恢復事務(wù)故障:事務(wù)在運行至正常終止點前被終止恢復方法由恢復子系統(tǒng)應(yīng)利用日志文件撤消(UNDO)此事務(wù)已對數(shù)據(jù)庫進行的修改事務(wù)故障的恢復由系統(tǒng)自動完成,對用戶是透明的,不需要用戶干預(yù)事務(wù)故障的恢復步驟1.反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。2.對該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫。插入操作,“更新前的值”為空,則相當于做刪除操作刪除操作,“更新后的值”為空,則相當于做插入操作若是修改操作,則相當于用修改前值代替修改后值事務(wù)故障的恢復步驟3.繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。4.如此處理下去,直至讀到此事務(wù)的開始標記,事務(wù)故障恢復就完成了。10.5恢復策略10.5.1事務(wù)故障的恢復10.5.2系統(tǒng)故障的恢復10.5.3介質(zhì)故障的恢復特定類型的硬件錯誤(如CPU故障)操作系統(tǒng)故障DBMS代碼錯誤系統(tǒng)斷電10.5.2系統(tǒng)故障的恢復系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因未完成事務(wù)對數(shù)據(jù)庫的更新已寫入數(shù)據(jù)庫已提交事務(wù)對數(shù)據(jù)庫的更新還留在緩沖區(qū)沒來得及寫入數(shù)據(jù)庫恢復方法1.Undo故障發(fā)生時未完成的事務(wù)2.Redo已完成的事務(wù)系統(tǒng)故障的恢復由系統(tǒng)在重新啟動時自動完成,不需要用戶干預(yù)系統(tǒng)故障的恢復步驟1. 正向掃描日志文件(即從頭掃描日志文件)重做(REDO)隊列:在故障發(fā)生前已經(jīng)提交的事務(wù)這些事務(wù)既有BEGINTRANSACTION記錄,也有COMMIT記錄撤銷(Undo)隊列:故障發(fā)生時尚未完成的事務(wù)
這些事務(wù)只有BEGINTRANSACTION記錄,無相應(yīng)的COMMIT記錄系統(tǒng)故障的恢復步驟
2.對撤銷(Undo)隊列事務(wù)進行撤銷(UNDO)處理反向掃描日志文件,對每個UNDO事務(wù)的更新操作執(zhí)行逆操作即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫
3.對重做(Redo)隊列事務(wù)進行重做(REDO)處理正向掃描日志文件,對每個REDO事務(wù)重新執(zhí)行登記的操作即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫10.5恢復策略10.5.1事務(wù)故障的恢復10.5.2系統(tǒng)故障的恢復10.5.3介質(zhì)故障的恢復磁盤損壞磁頭碰撞操作系統(tǒng)的某種潛在錯誤瞬時強磁場干擾10.5.3介質(zhì)故障的恢復1.重裝數(shù)據(jù)庫(數(shù)據(jù)和日志)2.重做已完成的事務(wù)介質(zhì)故障導致磁盤上的物理數(shù)據(jù)和日志文件的破壞------介質(zhì)故障恢復介質(zhì)故障的恢復(續(xù))恢復步驟1.裝入最新的后備數(shù)據(jù)庫副本(離故障發(fā)生時刻最近的轉(zhuǎn)儲副本),使數(shù)據(jù)庫恢復到最近一次轉(zhuǎn)儲時的一致性狀態(tài)。介質(zhì)故障的恢復(續(xù))2.裝入有關(guān)的日志文件副本,重做已完成的事務(wù)。首先掃描日志文件,找出故障發(fā)生時已提交的事務(wù)的標識,將其記入重做隊列。然后正向掃描日志文件,對重做隊列中的所有事務(wù)進行重做處理。即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫。介質(zhì)故障的恢復(續(xù))介質(zhì)故障的恢復需要DBA介入DBA的工作重裝最近轉(zhuǎn)儲的數(shù)據(jù)庫副本和有關(guān)的各日志文件副本執(zhí)行系統(tǒng)提供的恢復命令具體的恢復操作仍由DBMS完成第十章數(shù)據(jù)庫恢復技術(shù)10.1事務(wù)的基本概念10.2數(shù)據(jù)庫恢復概述10.3故障的種類10.4恢復的實現(xiàn)技術(shù)10.5恢復策略10.6具有檢查點的恢復技術(shù)10.7數(shù)據(jù)庫鏡像10.8小結(jié)10.6具有檢查點的恢復技術(shù)一、問題的提出二、檢查點技術(shù)三、利用檢查點的恢復策略一、問題的提出兩個問題搜索整個日志將耗費大量的時間REDO處理:重新執(zhí)行,浪費了大量時間解決方案具有檢查點(checkpoint)的恢復技術(shù)在日志文件中增加檢查點記錄(checkpoint)增加重新開始文件恢復子系統(tǒng)在登錄日志文件期間動態(tài)地維護日志二、檢查點技術(shù)檢查點記錄的內(nèi)容1.建立檢查點時刻所有正在執(zhí)行的事務(wù)清單2.這些事務(wù)最近一個日志記錄的地址重新開始文件的內(nèi)容記錄各個檢查點記錄在日志文件中的地址具有檢查點的日志文件和重新開始文件
T表示事務(wù)D表示對應(yīng)事務(wù)在日志文件中的地址動態(tài)維護日志文件的方法動態(tài)維護日志文件的方法周期性地執(zhí)行如下操作:建立檢查點,保存數(shù)據(jù)庫狀態(tài)。具體步驟是:1.將當前日志緩沖區(qū)中的所有日志記錄寫入磁盤的日志文件上2.在日志文件中寫入一個檢查點記錄3.將當前數(shù)據(jù)緩沖區(qū)的所有數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫中4.把檢查點記錄在日志文件中的地址寫入一個重新開始文件建立檢查點恢復子系統(tǒng)可以定期或不定期地建立檢查點,保存數(shù)據(jù)庫狀態(tài)定期按照預(yù)定的一個時間間隔,如每隔一小時建立一個檢查點不定期按照某種規(guī)則,如日志文件已寫滿一半建立一個檢查點三、利用檢查點的恢復策略使用檢查點方法可以改善恢復效率當事務(wù)T在一個檢查點之前提交
T對數(shù)據(jù)庫所做的修改已寫入數(shù)據(jù)庫寫入時間是在這個檢查點建立之前或在這個檢查點建立之時在進行恢復處理時,沒有必要對事務(wù)T執(zhí)行REDO操作利用檢查點的恢復策略(續(xù))Tc
(檢查點)Tf(系統(tǒng)故障)
REDOUNDOUNDO
REDOT2T3T4T5不要REDOT1系統(tǒng)出現(xiàn)故障時,恢復子系統(tǒng)將根據(jù)事務(wù)的不同狀態(tài)采取不同的恢復策略
T表示事務(wù)D表示對應(yīng)事務(wù)在日志文件中的地址T1:在檢查點之前提交T2:在檢查點之前開始執(zhí)行,在檢查點之后故障點之前提交T3:在檢查點之前開始執(zhí)行,在故障點時還未完成T4:在檢查點之后開始執(zhí)行,在故障點之前提交T5:在檢查點之后開始執(zhí)行,在故障點時還未完成恢復策略:T3和T5在故障發(fā)生時還未完成,所以予以撤銷T2和T4在檢查點之后才提交,它們對數(shù)據(jù)庫所做的修改在故障發(fā)生時可能還在緩沖區(qū)中,尚未寫入數(shù)據(jù)庫,所以要REDOT1在檢查點之前已提交,所以不必執(zhí)行REDO操作利用檢查點的恢復步驟
1.從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址,由該地址在日志文件中找到最后一個檢查點記錄利用檢查點的恢復策略(續(xù))2.由該檢查點記錄得到檢查點建立時刻所有正在執(zhí)行的事務(wù)清單ACTIVE-LIST建立兩個事務(wù)隊列UNDO-LISTREDO-LIST把ACTIVE-LIST暫時放入UNDO-LIST隊列,REDO隊列暫為空。利用檢查點的恢復策略(續(xù))3.從檢查點開始正向掃描日志文件,直到日志文件結(jié)束如有新開始的事務(wù)Ti,把Ti暫時放入UNDO-LIST隊列如有提交的事務(wù)Tj,把Tj從UNDO-LIST隊列移到REDO-LIST隊列4.對UNDO-LIST中的每個事務(wù)執(zhí)行UNDO操作
對REDO-LIST中的每個事務(wù)執(zhí)行REDO操作第十章數(shù)據(jù)庫恢復技術(shù)10.1事務(wù)的基本概念10.2數(shù)據(jù)庫恢復概述10.3故障的種類10.4恢復的實現(xiàn)技術(shù)10.5恢復策略10.6具有檢查點的恢復技術(shù)10.7數(shù)據(jù)庫鏡像10.8小結(jié)10.7數(shù)據(jù)庫鏡像介質(zhì)故障是對系統(tǒng)影響最為嚴重的一種故障,嚴重影響數(shù)據(jù)庫的可用性介質(zhì)故障恢復比較費時為預(yù)防介質(zhì)故障,DBA必須周期性地轉(zhuǎn)儲數(shù)據(jù)庫提高數(shù)據(jù)庫可用性的解決方案數(shù)據(jù)庫鏡像(Mirror)數(shù)據(jù)庫鏡像(續(xù))數(shù)據(jù)庫鏡像DBMS自動把整個數(shù)據(jù)庫或其中的關(guān)鍵數(shù)據(jù)復制到另一個磁盤上DBMS自動保證鏡像數(shù)據(jù)與主數(shù)據(jù)庫的一致性每當主數(shù)據(jù)庫更新時,DBMS自動把更新后的數(shù)據(jù)復制過去(如下圖所示)數(shù)據(jù)庫鏡像(續(xù))數(shù)據(jù)庫鏡像的用途出現(xiàn)介質(zhì)故障時可由鏡像磁盤繼續(xù)提供使用同時DBMS自動利用鏡像磁盤數(shù)據(jù)進行數(shù)據(jù)庫的恢復不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫副本(如下圖所示)數(shù)據(jù)庫鏡像(續(xù))沒有出現(xiàn)故障時可用于并發(fā)操作一個用戶對數(shù)據(jù)加排他鎖修改數(shù)據(jù),其他用戶可以讀鏡像數(shù)據(jù)庫上的數(shù)據(jù),而不必等待該用戶釋放鎖
數(shù)據(jù)庫鏡像(續(xù))頻繁地復制數(shù)據(jù)自然會降低系統(tǒng)運行效率在實際應(yīng)用中用戶往往只選擇對關(guān)鍵數(shù)據(jù)和日志文件鏡像,而不是對整個數(shù)據(jù)庫進行鏡像補充:SQLServer2000中數(shù)據(jù)庫備份與還原1.數(shù)據(jù)庫備份定時備份2.數(shù)據(jù)庫還原第十章數(shù)據(jù)庫恢復技術(shù)10.1事務(wù)的基本概念10.2數(shù)據(jù)庫恢復概述10.3故障的種類10.4恢復的實現(xiàn)技術(shù)10.5恢復策略10.6具有檢查點的恢復技術(shù)10.7數(shù)據(jù)庫鏡像10.8小結(jié)10.8小結(jié)如果數(shù)據(jù)庫只包含成功事務(wù)提交的結(jié)果,就說數(shù)據(jù)庫處于一致性狀態(tài)。保證數(shù)據(jù)一致性是對數(shù)據(jù)庫的最基本的要求。事務(wù)是數(shù)據(jù)庫的邏輯工作單位DBMS保證系統(tǒng)中一切事務(wù)的原子性、一致性、隔離性和持續(xù)性小結(jié)(續(xù))DBMS必須對事務(wù)故障、系統(tǒng)故障和介質(zhì)故障進行恢復恢復中最經(jīng)常使用的技術(shù):數(shù)據(jù)庫轉(zhuǎn)儲和登記日志文件恢復的基本原理:利用存儲在后備副本、日志文件和數(shù)據(jù)庫鏡像中的冗余數(shù)據(jù)來重建數(shù)據(jù)庫小結(jié)(續(xù))常用恢復技術(shù)事務(wù)故障的恢復UNDO系統(tǒng)故障的恢復UNDO+REDO介質(zhì)故障的恢復重裝備份并恢復到一致性狀態(tài)+REDO小結(jié)(續(xù))提高恢復效率的技術(shù)檢查點技術(shù)鏡像技術(shù)
下課了。。。休息一會兒。。。探數(shù)據(jù)庫系統(tǒng)概論AnIntroductiontoDatabaseSystem第十一章并發(fā)控制問題的產(chǎn)生多用戶數(shù)據(jù)庫系統(tǒng)的存在允許多個用戶同時使用的數(shù)據(jù)庫系統(tǒng)飛機定票數(shù)據(jù)庫系統(tǒng)銀行數(shù)據(jù)庫系統(tǒng)特點:在同一時刻并發(fā)運行的事務(wù)數(shù)可達數(shù)百個問題的產(chǎn)生(續(xù))不同的多事務(wù)執(zhí)行方式
(1)事務(wù)串行執(zhí)行每個時刻只有一個事務(wù)運行,其他事務(wù)必須等到這個事務(wù)結(jié)束以后方能運行不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享資源的特點T1T2T3事務(wù)的串行執(zhí)行方式問題的產(chǎn)生(續(xù))(2)交叉并發(fā)方式(InterleavedConcurrency)在單處理機系統(tǒng)中,事務(wù)的并行執(zhí)行是這些并行事務(wù)的并行操作輪流交叉運行單處理機系統(tǒng)中的并行事務(wù)并沒有真正地并行運行,但能夠減少處理機的空閑時間,提高系統(tǒng)的效率問題的產(chǎn)生(續(xù))事務(wù)的交叉并發(fā)執(zhí)行方式問題的產(chǎn)生(續(xù))
(3)同時并發(fā)方式(simultaneousconcurrency)多處理機系統(tǒng)中,每個處理機可以運行一個事務(wù),多個處理機可以同時運行多個事務(wù),實現(xiàn)多個事務(wù)真正的并行運行問題的產(chǎn)生(續(xù))事務(wù)并發(fā)執(zhí)行帶來的問題會產(chǎn)生多個事務(wù)同時存取同一數(shù)據(jù)的情況可能會存取和存儲不正確的數(shù)據(jù),破壞事務(wù)一致性和數(shù)據(jù)庫的一致性第十一章并發(fā)控制11.1并發(fā)控制概述11.2封鎖11.3活鎖和死鎖11.4并發(fā)調(diào)度的可串行性11.5兩段鎖協(xié)議11.6封鎖的粒度11.7小結(jié)11.1并發(fā)控制概述并發(fā)控制機制的任務(wù)對并發(fā)操作進行正確調(diào)度保證事務(wù)的隔離性保證數(shù)據(jù)庫的一致性T1的修改被T2覆蓋了!并發(fā)操作帶來數(shù)據(jù)的不一致性實例[例1]飛機訂票系統(tǒng)中的一個活動序列①甲售票點(甲事務(wù))讀出某航班的機票余額A,設(shè)A=16;②乙售票點(乙事務(wù))讀出同一航班的機票余額A,也為16;③甲售票點賣出一張機票,修改余額A←A-1,所以A為15,把A寫回數(shù)據(jù)庫;④乙售票點也賣出一張機票,修改余額A←A-1,所以A為15,把A寫回數(shù)據(jù)庫結(jié)果明明賣出兩張機票,數(shù)據(jù)庫中機票余額只減少1T1T2①
R(A)=16②R(A)=16③A←A-1
W(A)=15④A←A-1W(A)=15甲乙并發(fā)控制概述(續(xù))這種情況稱為數(shù)據(jù)庫的不一致性,是由并發(fā)操作引起的。在并發(fā)操作情況下,對甲、乙兩個事務(wù)的操作序列的調(diào)度是隨機的。若按上面的調(diào)度序列執(zhí)行,甲事務(wù)的修改就被丟失。原因:第4步中乙事務(wù)修改A并寫回后覆蓋了甲事務(wù)的修改并發(fā)控制概述(續(xù))并發(fā)操作帶來的數(shù)據(jù)不一致性丟失修改(LostUpdate)不可重復讀(Non-repeatableRead)讀“臟”數(shù)據(jù)(DirtyRead)記號R(x):讀數(shù)據(jù)xW(x):寫數(shù)據(jù)x
1.丟失修改兩個事務(wù)T1和T2讀入同一數(shù)據(jù)并修改,T2的提交結(jié)果破壞了T1提交的結(jié)果,導致T1的修改被丟失。上面飛機訂票例子就屬此類
丟失修改(續(xù))T1T2①
R(A)=16②R(A)=16③A←A-1
W(A)=15W④A←A-1W(A)=15丟失修改2.不可重復讀不可重復讀是指事務(wù)T1讀取數(shù)據(jù)后,事務(wù)T2
執(zhí)行更新操作,使T1無法再現(xiàn)前一次讀取結(jié)果。不可重復讀(續(xù))不可重復讀包括三種情況:(1)事務(wù)T1讀取某一數(shù)據(jù)后,事務(wù)T2對其做了修改,當事務(wù)T1再次讀該數(shù)據(jù)時,得到與前一次不同的值
T1讀取B=100進行運算T2讀取同一數(shù)據(jù)B,對其進行修改后將B=200寫回數(shù)據(jù)庫。T1為了對讀取值校對重讀B,B已為200,與第一次讀取值不一致T1T2①
R(A)=50
R(B)=100求和=150②R(B)=100B←B*2(B)=200③
R(A)=50R(B)=200和=250(驗算不對)不可重復讀
例如:不可重復讀(續(xù))(2)事務(wù)T1按一定條件從數(shù)據(jù)庫中讀取了某些數(shù)據(jù)記錄后,事務(wù)T2刪除了其中部分記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄消失了
(3)事務(wù)T1按一定條件從數(shù)據(jù)庫中讀取某些數(shù)據(jù)記錄后,事務(wù)T2插入了一些記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了一些記錄。后兩種不可重復讀有時也稱為幻影現(xiàn)象3.讀“臟”數(shù)據(jù)讀“臟”數(shù)據(jù)是指:事務(wù)T1修改某一數(shù)據(jù),并將其寫回磁盤事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷這時T1已修改過的數(shù)據(jù)恢復原值,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)讀“臟”數(shù)據(jù)(續(xù))T1T2①
R(C)=100
C←C*2
W(C)=200②R(C)=200③ROLLBACK
C恢復為100例如讀“臟”數(shù)據(jù)
T1將C值修改為200,T2讀到C為200T1由于某種原因撤銷,其修改作廢,C恢復原值100這時T2讀到的C為200,與數(shù)據(jù)庫內(nèi)容不一致,就是“臟”數(shù)據(jù)
并發(fā)控制概述(續(xù))數(shù)據(jù)不一致性:由于并發(fā)操作破壞了事務(wù)的隔離性并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操作,使一個用戶事務(wù)的執(zhí)行不受其他事務(wù)的干擾,從而避免造成數(shù)據(jù)的不一致性
并發(fā)控制概述(續(xù))并發(fā)控制的主要技術(shù)有封鎖(Locking)時間戳(Timestamp)樂觀控制法商用的DBMS一般都采用封鎖方法
第十一章并發(fā)控制11.1并發(fā)控制概述11.2封鎖11.3活鎖和死鎖11.4并發(fā)調(diào)度的可串行性11.5兩段鎖協(xié)議11.6封鎖的粒度11.7小結(jié)11.2封鎖什么是封鎖基本封鎖類型鎖的相容矩陣什么是封鎖封鎖就是事務(wù)T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對象?;痉怄i類型一個事務(wù)對某個數(shù)據(jù)對象加鎖后究竟擁有什么樣的控制由封鎖的類型決定?;痉怄i類型排它鎖(ExclusiveLocks,簡記為X鎖)共享鎖(ShareLocks,簡記為S鎖)排它鎖(ExclusiveLocks,簡記為X鎖)排它鎖又稱為寫鎖若事務(wù)T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)都不能再對A加任何類型的鎖,直到T釋放A上的鎖保證其他事務(wù)在T釋放A上的鎖之前不能再讀取和修改A
共享鎖共享鎖又稱為讀鎖若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則其它事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖保證其他事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改
鎖的相容矩陣Y=Yes,相容的請求N=No,不相容的請求
T1T2XS-XNNYSNYY-YYY鎖的相容矩陣(續(xù))在鎖的相容矩陣中:最左邊一列表示事務(wù)T1已經(jīng)獲得的數(shù)據(jù)對象上的鎖的類型,其中橫線表示沒有加鎖。最上面一行表示另一事務(wù)T2對同一數(shù)據(jù)對象發(fā)出的封鎖請求。T2的封鎖請求能否被滿足用矩陣中的Y和N表示Y表示事務(wù)T2的封鎖要求與T1已持有的鎖相容,封鎖請求可以滿足N表示T2的封鎖請求與T1已持有的鎖沖突,T2的請求被拒絕使用封鎖機制解決丟失修改問題T1T2①
XlockA②
R(A)=16XlockA③
A←A-1等待
W(A)=15等待
Commit等待
UnlockA等待④獲得XlockAR(A)=15A←A-1⑤W(A)=14CommitUnlockA例:事務(wù)T1在讀A進行修改之前先對A加X鎖當T2再請求對A加X鎖時被拒絕T2只能等待T1釋放A上的鎖后T2獲得對A的X鎖這時T2讀到的A已經(jīng)是T1更新過的值15T2按此新的A值進行運算,并將結(jié)果值A(chǔ)=14送回到磁盤。避免了丟失T1的更新。沒有丟失修改使用封鎖機制解決不可重復讀問題T1T2①
SlockASlockBR(A)=50R(B)=100求和=150②XlockB等待等待③
R(A)=50等待R(B)=100等待求和=150等待Commit等待UnlockA等待UnlockB等待④獲得XlockBR(B)=100B←B*2⑤W(B)=200CommitUnlockB事務(wù)T1在讀A,B之前,先對A,B加S鎖其他事務(wù)只能再對A,B加S鎖,而不能加X鎖,即其他事務(wù)只能讀A,B,而不能修改當T2為修改B而申請對B的X鎖時被拒絕只能等待T1釋放B上的鎖T1為驗算再讀A,B,這時讀出的B仍是100,求和結(jié)果仍為150,即可重復讀T1結(jié)束才釋放A,B上的S鎖。T2才獲得對B的X鎖使用封鎖機制解決讀“臟”數(shù)據(jù)問題T1T2①
XlockCR(C)=100C←C*2W(C)=200②SlockC等待③
ROLLBACK等待(C恢復為100)等待UnlockC等待④獲得SlockCR(C)=100⑤CommitCUnlockC例事務(wù)T1在對C進行修改之前,先對C加X鎖,修改其值后寫回磁盤T2請求在C上加S鎖,因T1已在C上加了X鎖,T2只能等待T1因某種原因被撤銷,C恢復為原值100T1釋放C上的X鎖后T2獲得C上的S鎖,讀C=100。避免了T2讀“臟”數(shù)據(jù)不讀“臟”數(shù)據(jù)
第十一章并發(fā)控制11.1并發(fā)控制概述11.2封鎖11.3活鎖和死鎖11.4并發(fā)調(diào)度的可串行性11.5兩段鎖協(xié)議11.6封鎖的粒度11.7小結(jié)11.3活鎖和死鎖封鎖技術(shù)可以有效地解決并行操作的一致性問題,但也帶來一些新的問題死鎖活鎖11.3.1活鎖活鎖活鎖(續(xù))事務(wù)T1封鎖了數(shù)據(jù)R事務(wù)T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之后系統(tǒng)首先批準了T3的請求,T2仍然等待。T4又請求封鎖R,當T3釋放了R上的封鎖之后系統(tǒng)又批準了T4的請求……T2有可能永遠等待,這就是活鎖的情形
活鎖(續(xù))避免活鎖:采用先來先服務(wù)的策略當多個事務(wù)請求封鎖同一數(shù)據(jù)對象時按請求封鎖的先后次序?qū)@些事務(wù)排隊該數(shù)據(jù)對象上的鎖一旦釋放,首先批準申請隊列中第一個事務(wù)獲得鎖T1T2lockR1??LockR2??LockR2.?等待?等待LockR1等待等待等待等待?死鎖11.3.2死鎖事務(wù)T1封鎖了數(shù)據(jù)R1T2封鎖了數(shù)據(jù)R2T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖這樣T1在等待T2,而T2又在等待T1,T1和T2兩個事務(wù)永遠不能結(jié)束,形成死鎖
死鎖(續(xù))解決死鎖的方法兩類方法1.預(yù)防死鎖2.死鎖的診斷與解除1.死鎖的預(yù)防產(chǎn)生死鎖的原因是兩個或多個事務(wù)都已封鎖了一些數(shù)據(jù)對象,然后又都請求對已經(jīng)被其他事務(wù)封鎖的數(shù)據(jù)對象加鎖,從而出現(xiàn)死等待。預(yù)防死鎖的發(fā)生就是要破壞產(chǎn)生死鎖的條件死鎖的預(yù)防(續(xù))預(yù)防死鎖的方法一次封鎖法順序封鎖法(1)一次封鎖法要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行存在的問題降低系統(tǒng)并發(fā)度難于事先精確確定封鎖對象(2)順序封鎖法順序封鎖法是預(yù)先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務(wù)都按這個順序?qū)嵭蟹怄i。順序封鎖法存在的問題維護成本數(shù)據(jù)庫系統(tǒng)中封鎖的數(shù)據(jù)對象極多,并且在不斷地變化。難以實現(xiàn):很難事先確定每一個事務(wù)要封鎖哪些對象死鎖的預(yù)防(續(xù))結(jié)論在操作系統(tǒng)中廣為采用的預(yù)防死鎖的策略并不很適合數(shù)據(jù)庫的特點DBMS在解決死鎖的問題上更普遍采用的是診斷并解除死鎖的方法2.死鎖的診斷與解除死鎖的診斷超時法事務(wù)等待圖法(1)超時法如果一個事務(wù)的等待時間超過了規(guī)定的時限,就認為發(fā)生了死鎖優(yōu)點:實現(xiàn)簡單缺點有可能誤判死鎖時限若設(shè)置得太長,死鎖發(fā)生后不能及時發(fā)現(xiàn)(2)等待圖法用事務(wù)等待圖動態(tài)反映所有事務(wù)的等待情況事務(wù)等待圖是一個有向圖G=(T,U)T為結(jié)點的集合,每個結(jié)點表示正運行的事務(wù)U為邊的集合,每條邊表示事務(wù)等待的情況若T1等待T2,則T1,T2之間劃一條有向邊,從T1指向T2等待圖法(續(xù))事務(wù)等待圖圖(a)中,事務(wù)T1等待T2,T2等待T1,產(chǎn)生了死鎖圖(b)中,事務(wù)T1等待T2,T2等待T3,T3等待T4,T4又等待T1,產(chǎn)生了死鎖圖(b)中,事務(wù)T3可能還等待T2,在大回路中又有小的回路
等待圖法(續(xù))并發(fā)控制子系統(tǒng)周期性地(比如每隔數(shù)秒)生成事務(wù)等待圖,檢測事務(wù)。如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖。死鎖的診斷與解除(續(xù))解除死鎖選擇一個處理死鎖代價最小的事務(wù),將其撤消釋放此事務(wù)持有的所有的鎖,使其它事務(wù)能繼續(xù)運行下去第十一章并發(fā)控制11.1并發(fā)控制概述11.2封鎖11.3活鎖和死鎖11.4并發(fā)調(diào)度的可串行性11.5兩段鎖協(xié)議11.6封鎖的粒度11.7小結(jié)11.4并發(fā)調(diào)度的可串行性DBMS對并發(fā)事務(wù)不同的調(diào)度可能會產(chǎn)生不同的結(jié)果什么樣的調(diào)度是正確的?
11.4.1可串行化調(diào)度可串行化(Serializable)調(diào)度多個事務(wù)的并發(fā)執(zhí)行是正確的,當且僅當其結(jié)果與按某一次序串行地執(zhí)行這些事務(wù)時的結(jié)果相同可串行性(Serializability)是并發(fā)事務(wù)正確調(diào)度的準則一個給定的并發(fā)調(diào)度,當且僅當它是可串行化的,才認為是正確調(diào)度可串行化調(diào)度(續(xù))[例]現(xiàn)在有兩個事務(wù),分別包含下列操作:事務(wù)T1:讀B;A=B+1;寫回A事務(wù)T2:讀A;B=A+1;寫回B現(xiàn)給出對這兩個事務(wù)不同的調(diào)度策略串行化調(diào)度,正確的調(diào)度T1T2SlockBY=R(B)=2UnlockBXlockAA=Y+1=3W(A)UnlockASlockAX=R(A)=3UnlockAXlockBB=X+1=4W(B)UnlockB串行調(diào)度(a)假設(shè)A、B的初值均為2。按T1→T2次序執(zhí)行結(jié)果為A=3,B=4串行調(diào)度策略,正確的調(diào)度T1T2SlockAX=R(A)=2UnlockAXlockBB=X+1=3W(B)UnlockBSlockBY=R(B)=3UnlockBXlockAA=Y+1=4W(A)UnlockA串行調(diào)度(b)假設(shè)A、B的初值均為2。T2→T1次序執(zhí)行結(jié)果為B=3,A=4
串行調(diào)度策略,正確的調(diào)度不可串行化調(diào)度,錯誤的調(diào)度T1T2SlockBY=R(B)=2SlockAX=R(A)=2UnlockBUnlockAXlockAA=Y+1=3W(A)XlockBB=X+1=3W(B)UnlockAUnlockB不可串行化的調(diào)度
執(zhí)行結(jié)果與(a)、(b)的結(jié)果都不同是錯誤的調(diào)度可串行化調(diào)度,正確的調(diào)度T1T2SlockBY=R(B)=2UnlockBXlockASlockAA=Y+1=3等待W(A)等待UnlockA等待X=R(A)=3UnlockAXlockBB=X+1=4W(B)UnlockB可串行化的調(diào)度
執(zhí)行結(jié)果與串行調(diào)度(a)的執(zhí)行結(jié)果相同是正確的調(diào)度11.4.2沖突可串行化調(diào)度如何判斷一個調(diào)度是可串行化調(diào)度呢?沖突可串行化調(diào)度可串行化調(diào)度充分條件沖突操作沖突操作是指不同的事務(wù)對同一個數(shù)據(jù)的讀寫操作和寫寫操作Ri(x)與Wj(x) /*事務(wù)Ti讀x,Tj寫x*/Wi(x)與Wj(x) /*事務(wù)Ti寫x,Tj寫x*/其他操作是不沖突操作注意:不同事務(wù)的沖突操作和同一事務(wù)的兩個操作不能交換(Swap)可串行化調(diào)度的充分條件一個調(diào)度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務(wù)不沖突操作的次序得到另一個調(diào)度Sc‘,如果Sc’是串行的,稱調(diào)度Sc為沖突可串行化的調(diào)度一個調(diào)度是沖突可串行化,一定是可串行化的調(diào)度沖突可串行化調(diào)度(續(xù))[例]今有調(diào)度調(diào)度SC1SC1是沖突可串行化調(diào)度調(diào)度SC1調(diào)度SC2調(diào)度SC3[例]今有調(diào)度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)把w2(A)與r1(B)w1(B)交換,得到:
r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)再把r2(A)與r1(B)w1(B)交換:
Sc2=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等價于一個串行調(diào)度T1,T2,Sc1沖突可串行化的調(diào)度調(diào)度最終結(jié)果:A的值決定與T3B的值決定與T2調(diào)度最終結(jié)果:A的值決定與T3B的值決定與T2可串行化調(diào)度不是沖突可串行化調(diào)度串行調(diào)度例如:沖突可串行化調(diào)度可串行化調(diào)度充分條件沖突可串行化調(diào)度是可串行化調(diào)度的充分條件,不是必要條件。還有不滿足沖突可串行化條件的可串行化調(diào)度。
[例]有3個事務(wù)
T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X)調(diào)度L1=W1(Y)W1(X)W2(Y)W2(X)W3(X)是一個串行調(diào)度。調(diào)度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不滿足沖突可串行化。但是調(diào)度L2是可串行化的,因為L2執(zhí)行的結(jié)果與調(diào)度L1相同,Y的值都等于T2的值,X的值都等于T3的值第十一章并發(fā)控制11.1并發(fā)控制概述11.2封鎖11.3活鎖和死鎖11.4并發(fā)調(diào)度的可串行性11.5兩段鎖協(xié)議11.6封鎖的粒度11.7小結(jié)11.5兩段鎖協(xié)議封鎖協(xié)議運用封鎖方法時,對數(shù)據(jù)對象加鎖時需要約定一些規(guī)則何時申請封鎖持鎖時間何時釋放封鎖等兩段封鎖協(xié)議(Two-PhaseLocking,簡稱2PL)是最常用的一種封鎖協(xié)議,理論上證明使用兩段封鎖協(xié)議產(chǎn)生的是可串行化調(diào)度兩段鎖協(xié)議(續(xù))兩段鎖協(xié)議指所有事務(wù)必須分兩個階段對數(shù)據(jù)項加鎖和解鎖
在對任何數(shù)據(jù)進行讀、寫操作之前,事務(wù)首先要獲得對該數(shù)據(jù)的封鎖
在釋放一個封鎖之后,事務(wù)不再申請和獲得任何其他封鎖兩段鎖協(xié)議(續(xù))“兩段”鎖的含義事務(wù)分為兩個階段第一階段是獲得封鎖,也稱為擴展階段事務(wù)可以申請獲得任何數(shù)據(jù)項上的任何類型的鎖,但是不能釋放任何鎖第二階段是釋放封鎖,也稱為收縮階段事務(wù)可以釋放任何數(shù)據(jù)項上的任何類型的鎖,但是不能再申請任何鎖兩段鎖協(xié)議(續(xù))例:事務(wù)Ti遵守兩段鎖協(xié)議,其封鎖序列是
:SlockASlockBXlockCUnlockBUnlockAUnlockC;|← 擴展階段 →| |← 收縮階段→|事務(wù)Tj不遵守兩段鎖協(xié)議,其封鎖序列是:
SlockAUnlockASlockBXlockCUnlockCUnlockB;事務(wù)T1事務(wù)T2Slock(A)R(A=260)Slock(C)R(C=300)Xlock(A)W(A=160)Xlock(C)W(C=250)Slock(A)Slock(B)等待R(B=1000)等待Xlock(B)等待W(B=1100)等待Unlock(A)等待R(A=160)Xlock(A)Unlock(B)W(A=210)Unlock(C)Unlock(A)遵守兩段鎖協(xié)議的可串行化調(diào)度加鎖階段解鎖階段因此一定是一個可串行化調(diào)度。事務(wù)T1事務(wù)T2Slock(A)R(A=260)Slock(C)R(C=300)Xlock(A)W(A=160)Xlock(C)W(C=250)Slock(A)Slock(B)等待R(B=1000)等待Xlock(B)等待W(B=1100)等待Unlock(A)等待R(A=160)Xlock(A)Unlock(B)W(A=210)Unlock(C)Unlock(A)因此一定是一個可串行化調(diào)度。結(jié)論:事務(wù)遵守兩段鎖協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件。例如:P299圖11.7(d)若并發(fā)事務(wù)都遵守兩段鎖協(xié)議,則對這些事務(wù)的任何并發(fā)調(diào)度策略都是可串行化的若并發(fā)事務(wù)的一個調(diào)度是可串行化的,不一定所有事務(wù)都符合兩段鎖協(xié)議
事務(wù)遵守兩段鎖協(xié)議事物是可串行化調(diào)度兩段鎖協(xié)議與防止死鎖的一次封鎖法的區(qū)別與聯(lián)系一次封鎖法要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議但是兩段鎖協(xié)議并不要求事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務(wù)可能發(fā)生死鎖[例]遵守兩段鎖協(xié)議的事務(wù)發(fā)生死鎖T1SlockBR(B)=2
XlockA等待等待T2
SlockAR(A)=2
XlockB等待第十一章并發(fā)控制11.1并發(fā)控制概述11.2封鎖11.3活鎖和死鎖11.4并發(fā)調(diào)度的可串行性11.5兩段鎖協(xié)議11.6封鎖的粒度11.7小結(jié)封鎖粒度封鎖對象的大小稱為封鎖粒度(Granularity)封鎖的對象:邏輯單元,物理單元例:在關(guān)系數(shù)據(jù)庫中,封鎖對象:邏輯單元:屬性值、屬性值集合、元組、關(guān)系、索引項、整個索引、整個數(shù)據(jù)庫等物理單元:頁(數(shù)據(jù)頁或索引頁)、物理記錄等選擇封鎖粒度原則封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開銷密切相關(guān)。封鎖的粒度越大,數(shù)據(jù)庫所能夠封鎖的數(shù)據(jù)單元就越少,并發(fā)度就越小,系統(tǒng)開銷也越??;封鎖的粒度越小,并發(fā)度較高,但系統(tǒng)開銷也就越大選擇封鎖粒度的原則(續(xù))例若封鎖粒度是數(shù)據(jù)頁,事務(wù)T1需要修改元組L1,則T1必須對包含L1的整個數(shù)據(jù)頁A加鎖。如果T1對A加鎖后事務(wù)T2要修改A中元組L2,則T2被迫等待,直到T1釋放A。如果封鎖粒度是元組,則T1和T2可以同時對L1和L2加鎖,不需要互相等待,提高了系統(tǒng)的并行度。又如,事務(wù)T需要讀取整個表,若封鎖粒度是元組,T必須對表中的每一個元組加鎖,開銷極大
選擇封鎖粒度的原則(續(xù))多粒度封鎖(MultipleGranularityLocking)
在一個系統(tǒng)中同時支持多種封鎖粒度供不同的事務(wù)選擇選擇封鎖粒度同時考慮封鎖開銷和并發(fā)度兩個因素,
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度職業(yè)技術(shù)學院入學合同示范范本3篇
- 2025年建筑施工用水用電合同3篇
- 營養(yǎng)咨詢在嬰幼兒食物過敏預(yù)防中的應(yīng)用-洞察分析
- 2025年度金融產(chǎn)品研發(fā)委托代理居間合同3篇
- 虛擬現(xiàn)實與攝影藝術(shù)的融合-洞察分析
- 天方夜譚之旅觀后感
- 2025年度鋼管腳手架內(nèi)外工程承包合同
- 需求響應(yīng)技術(shù)進步動態(tài)-洞察分析
- 美容SPA前臺工作總結(jié)
- 國慶擺花協(xié)議書
- 2024-2025學年成都高新區(qū)七上數(shù)學期末考試試卷【含答案】
- 定額〔2025〕1號文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價格水平調(diào)整的通知
- 2025年浙江杭州市西湖區(qū)專職社區(qū)招聘85人歷年高頻重點提升(共500題)附帶答案詳解
- 《數(shù)學廣角-優(yōu)化》說課稿-2024-2025學年四年級上冊數(shù)學人教版
- “懂你”(原題+解題+范文+話題+技巧+閱讀類素材)-2025年中考語文一輪復習之寫作
- 2025年景觀照明項目可行性分析報告
- 2025年江蘇南京地鐵集團招聘筆試參考題庫含答案解析
- 2025年度愛讀書學長參與的讀書項目投資合同
- 電力系統(tǒng)分析答案(吳俊勇)(已修訂)
- 一種基于STM32的智能門鎖系統(tǒng)的設(shè)計-畢業(yè)論文
- 華為經(jīng)營管理-華為經(jīng)營管理華為的IPD(6版)
評論
0/150
提交評論