2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Databases protection,數(shù)據(jù)庫保護:排除和防止各種對數(shù)據(jù)庫的干擾破壞,確保數(shù)據(jù)安全可靠,以及在數(shù)據(jù)庫遭到破壞后盡快地恢復數(shù)據(jù)庫保護通過四個方面來實現(xiàn)數(shù)據(jù)庫的恢復技術Deal with failure并發(fā)控制技術Deal with data sharing完整性控制技術Enable constraints安全性控制技術Authorization and authentication,主要內(nèi)容,數(shù)據(jù)庫的一

2、致性事務的狀態(tài)及原語操作數(shù)據(jù)庫系統(tǒng)故障分析Undo日志Redo日志Undo/Redo日志Checkpoint,一、數(shù)據(jù)庫的一致性,Integrity or consistency constraints,Predicates data must satisfyExamples:- x is key of relation R- x ? y holds in R- Domain(x) = {Red, Blue, Gre

3、en},一、數(shù)據(jù)庫的一致性,Consistent state: satisfies all integrity constraintsConsistent DB: DB in consistent state,一、數(shù)據(jù)庫的一致性,DB will not always satisfy constraints,Example: a1 + a2 +…. an = TOT (constraint)Transaction: Deposit $

4、100 in a2: a2 ? a2 + 100 TOT ? TOT + 100,一、數(shù)據(jù)庫的一致性,事務的ACID性質(zhì)Atomicity, Consistency, Isolation, Durability,consistency of transaction,二、事務的狀態(tài)及原語操作,事務(transaction)一個不可分割的操作序列,其中的操作要么都做,

5、要么都不做,1、事務,事務的例子銀行轉(zhuǎn)帳:A帳戶轉(zhuǎn)帳到B帳戶100元。該處理包括了兩個更新步驟A=A-100B=B+100這兩個操作是不可分的:要么都做,要么都不作,1、事務,事務的ACID性質(zhì)原子性 atomicity一致性 consistency隔離性 Isolation持久性 Durability,2、事務的狀態(tài) [in logs],Transaction T has startedT has finishe

6、d successfully and all modifications are all reflected to disksT has been terminated and all modifications have been canceled,3、事務的原語操作,Input (x): disk block with x ? memoryOutput (x): buffer block with x ? disk,Rea

7、d (x,t): do input(x) if necessary t ? value of x in bufferWrite (x,t): do input(x) if necessary value of x in buffer ? t,4、事務例子,T1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;W

8、rite (B,t);Output (A);Output (B);,A bank transfer,三、數(shù)據(jù)庫系統(tǒng)故障分析,Consistency of DB 可能由于故障而被破壞事務故障介質(zhì)故障系統(tǒng)故障,1、事務故障,發(fā)生在單個事務內(nèi)部的故障可預期的事務故障:即應用程序可以發(fā)現(xiàn)的故障,如轉(zhuǎn)帳時余額不足。由應用程序處理非預期的事務故障:如運算溢出、死鎖等,導致事務被異常中止。應用程序無法處理此類故障,由系統(tǒng)進行處理,可

9、預期的事務故障,,-- 從A轉(zhuǎn)帳到B100Declare a Number:=0;Begin Update account Set balance=balance+100 Where ID=‘B’; Select balance Into a From accounts where ID=‘A’; If a<100 then --若A余額不足則Rollback Rollbac

10、k; Else Update account Set balance=balance-100 where ID=‘A’; End If Commit;End;,2、介質(zhì)故障,硬故障(Hard Crash),一般指磁盤損壞導致磁盤數(shù)據(jù)丟失,破壞整個數(shù)據(jù)庫,3、系統(tǒng)故障,系統(tǒng)故障:軟故障(Soft Crash),由于OS、DBMS軟件問題或斷電等問題導致內(nèi)存數(shù)據(jù)丟失,但磁盤數(shù)據(jù)仍在影響所有正

11、在運行的事務,破壞事務狀態(tài),但不破壞整個數(shù)據(jù)庫,4、數(shù)據(jù)庫系統(tǒng)故障恢復策略,目的恢復DB到一致狀態(tài)基本原則冗余(Redundancy)實現(xiàn)方法定期轉(zhuǎn)儲整個數(shù)據(jù)庫 建立事務日志 (log)通過備份和日志進行恢復,4、數(shù)據(jù)庫系統(tǒng)故障恢復策略,當發(fā)生故障時:(1)若是介質(zhì)故障,則首先重裝副本(2)利用日志進行事務故障恢復和系統(tǒng)故障恢復,一直恢復到故障發(fā)生點,The recovery process,四、Undo日志,事務日志

12、記錄了所有更新操作的具體細節(jié)Undo日志、Redo日志、Undo/Redo日志日志文件的登記嚴格按事務執(zhí)行的時間次序Undo日志文件中的內(nèi)容事務的開始標記()事務的結(jié)束標記(或)事務的更新操作記錄,一般包括以下內(nèi)容執(zhí)行操作的事務標識操作對象更新前值(插入為空),1、Undo日志規(guī)則,事務的每一個修改操作都生成一個日志記錄 在x被寫到磁盤之前,對應該修改的日志記錄必須已被寫到磁盤上當事務的所有修改結(jié)果都已寫入磁盤后,

13、將 日志記錄寫到磁盤上,先寫日志原則,把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中和把表示該修改的日志記錄寫道日志文件中是兩個不同的操作有可能在這兩個操作之間發(fā)生故障,即兩個寫操作只完成了一個為了保證數(shù)據(jù)庫的可恢復,必須先把更新記錄寫到日志文件中,然后再寫數(shù)據(jù)庫修改,先寫日志,設T1將A修改為900時發(fā)生故障。設此時900已寫到數(shù)據(jù)庫,但還未來得及寫到日志中。根據(jù)恢復策略,T1在恢復應UNDO,但此時由于后寫日志,A的更新操作在日志中沒有記錄,

14、因此無法將A恢復到1000如果先寫日志,則即使沒有寫到數(shù)據(jù)庫中,也只不過多執(zhí)行一次UNDO操作,不會影響數(shù)據(jù)庫的一致性。,后寫日志,1、Undo日志規(guī)則,T1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush Log,

15、,Log,,,,Initial:A=1000B=2000,1、Undo日志規(guī)則,T1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush Log,,Fail here,1、Undo日志規(guī)則,T1:

16、Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush Log,,Fail here,1、Undo日志規(guī)則,T1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);

17、t ? t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush Log,Fail here,,1、Undo日志規(guī)則,T1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput (A);Outp

18、ut (B);Flush Log,Success!,,2、基于Undo日志的恢復,The recovery process,,Recovery Here,,2、基于Undo日志的恢復,從頭掃描日志,找出所有沒有或的所有事務,放入一個事務列表L中從尾部開始掃描日志記錄,如果T? L,則 write (X, v) output (X)For each T? L dowrite to log,2、基于Undo日志的恢復,T

19、1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush Log,,Fail here,無須恢復!,2、基于Undo日志的恢復,T1:Read (A,t); t ? t -100;Write (A,t);

20、Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput (A);Output (B);Flush Log,,Fail here,Write(B,2000)Output(B)Write(A,1000)Output(A),2、基于Undo日志的恢復,,恢復后的Undo日志,3、Undo日志總結(jié),記錄修改前的舊值寫入之前必須先將數(shù)據(jù)寫入磁盤恢復時忽略

21、已提交事務,只撤銷未提交事務有的事務肯定已寫回磁盤,五、Redo日志,在x被寫到磁盤之前,對應該修改的Redo日志記錄必須已被寫到磁盤上 (WAL)在數(shù)據(jù)寫回磁盤前先寫日志記錄日志中的數(shù)據(jù)修改記錄 - - Now v is the new value,1、Redo日志規(guī)則,T1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;

22、Write (B,t);Flush LogOutput (A);Output (B);,,Log,,,,Initial:A=1000B=2000,1、Redo日志規(guī)則,T1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput (A);Out

23、put (B);,,Fail here,1、Redo日志規(guī)則,T1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput (A);Output (B);,,Fail here,1、Redo日志規(guī)則,T1:Read (A,t); t ? t -100;Wr

24、ite (A,t);Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput (A);Output (B);,,Fail here,1、Redo日志規(guī)則,T1:Read (A,t); t ? t -100;Write (A,t);Read (B,t);t ? t + 100;Write (B,t);Flush LogOutput

25、 (A);Output (B);,,Fail here,2、基于Redo日志的恢復,從頭掃描日志,找出所有有的事務,放入一個事務列表L中從首部開始掃描日志記錄,如果T? L,則 write (X, v) output (X)For each T? L dowrite to log,,2、基于Redo日志的恢復,恢復的基礎沒有記錄的操作必定沒有改寫磁盤數(shù)據(jù),因此在恢復時可以不理會Differ from Undo log

26、ging有記錄的結(jié)果可能還未寫回磁盤,因此在恢復時要RedoStill differ from Undo logging,六、Undo/Redo日志,在x被寫到磁盤之前,對應該修改的日志記錄必須已被寫到磁盤上 (WAL)日志中的數(shù)據(jù)修改記錄 - - v is the old value, w is the new value,1、基于Undo/Redo日志的恢復,正向掃描日志,將的事務放入Redo列表中,將沒有結(jié)束的事務放入

27、Undo列表反向掃描日志,對于,若T在Undo列表中,則Write(x,v); Output(x)正向掃描日志,對于,若T在Redo列表中,則Write(x,w); Output(x)對于Undo列表中的T,寫入,1、基于Undo/Redo日志的恢復,發(fā)生故障時的日志,Undo列表 {T3,T4}; Redo {T1,T2}UndoT4: D=1000T3: B=1900T3: C=3000Re

28、doT1:B=1900T2:A=900Write log,1、基于Undo/Redo日志的恢復,先Undo后Redo,發(fā)生故障時的日志,T1要UNDO,T2要REDO如果先REDO,則A=1100;然后在UNDO,A=1000。不正確先UNDO,A=1000;然后REDO,A=1100。正確,七、檢查點(checkpoint),當系統(tǒng)故障發(fā)生時,必須掃描日志。需要搜索整個日志來確定UNDO列表和REDO列表搜

29、索過程太耗時,因為日志文件增長很快會導致最后產(chǎn)生的REDO列表很大,使恢復過程變得很長,1、simple checkpoint,Periodically:(1) Do not accept new transactions(2) Wait until all transactions finish (commit/abort)(3) Flush all log records to disk (log)(4) Flush al

30、l buffers to disk (DB) (5) Write “checkpoint” record on disk (log)(6) Resume transaction processing,2、checkpoint-based recovery,,,,,t0,t1,t2,檢查點,運行事務,故障發(fā)生點,,,,掃描t0開始的日志文件進行恢復,無檢查點時,,,,,掃描檢查點開始的日志文件進行恢復,基于檢查點的恢復,檢查點技術保證

31、檢查點之前的所有commit操作的結(jié)果已寫回數(shù)據(jù)庫,在恢復時不需REDO,2、checkpoint-based recovery,,,,,,T1T2T3T4T5,,,Start CHPT,ts te,,tf,故障點,時間,恢復時:UNDO={T5}, REDO={T4}T1和T3由于在檢查點之前已Commit,因此不需要REDO,,End CHPT,,,……………………,Log,本章小結(jié)

溫馨提示

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

評論

0/150

提交評論