首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經(jīng)濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務(wù)師
注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復(fù)習(xí)資料 > 軟件設(shè)計師 > 正文

2010年軟考軟件設(shè)計師專題講義:數(shù)據(jù)庫知識

  3.介質(zhì)故障的恢復(fù)

  發(fā)生介質(zhì)故障后,磁盤上的物理數(shù)據(jù)和日志文件被破壞,這是最嚴(yán)重的一種故障,恢復(fù)方法是重裝數(shù)據(jù)庫,然后重做已完成的事務(wù)。具體地說就是:

  ⑴. 裝入最新的數(shù)據(jù)庫后備副本(離故障發(fā)生時刻最近的轉(zhuǎn)儲副本),使數(shù)據(jù)庫恢復(fù)到最近一次轉(zhuǎn)儲時的一致性狀態(tài)。

  對于動態(tài)轉(zhuǎn)儲的數(shù)據(jù)庫副本,還須同時裝入轉(zhuǎn)儲開始時刻的日志文件副本,利用恢復(fù)系統(tǒng)故障的方法(即REDO+UNDO),才能將數(shù)據(jù)庫恢復(fù)到一致性狀態(tài)。

 �、�. 裝入相應(yīng)的日志文件副本(轉(zhuǎn)儲結(jié)束時刻的日志文件副本),重做已完成的事務(wù)。即:

  首先掃描日志文件,找出故障發(fā)生時已提交的事務(wù)的標(biāo)識,將其記入重做隊列。

  然后正向掃描日志文件,對重做隊列中的所有事務(wù)進行重做處理。即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫。

  這樣就可以將數(shù)據(jù)庫恢復(fù)至故障前某一時刻的一致狀態(tài)了。

  介質(zhì)故障的恢復(fù)需要DBA介入。但DBA只需要重裝最近轉(zhuǎn)儲的數(shù)據(jù)庫副本和有關(guān)的各日志文件副本,然后執(zhí)行系統(tǒng)提供的恢復(fù)命令即可,具體的恢復(fù)操作仍由DBMS完成。

  n 并發(fā)控制

  在多用戶共享系統(tǒng)中,許多事務(wù)可能同時對同一個數(shù)據(jù)進行操作,這時候就產(chǎn)生了并發(fā)控制的問題。DMBS的并發(fā)控制子系統(tǒng)負(fù)責(zé)協(xié)調(diào)并發(fā)事務(wù)的執(zhí)行,保證數(shù)據(jù)庫的完整性不受破壞,同時避免用戶得到不正確的數(shù)據(jù)。

  同時并發(fā)方式:在多處理系統(tǒng)中,每個處理機可以運行一個事務(wù),多個處理機可以同時運行多個事務(wù),實現(xiàn)多個事務(wù)真正的并行運行,這種并行方式稱為同時并發(fā)方式。

  并發(fā)控制機制是衡量一個數(shù)據(jù)庫管理系統(tǒng)性能的重要標(biāo)志之一。

  數(shù)據(jù)庫的并發(fā)操作通�?赡軒硪韵碌膯栴}:

  u u 丟失更新問題

  u u 不一致分析問題(讀過時的數(shù)據(jù))

  u u 依賴于未提交更新問題(讀“臟”數(shù)據(jù))

  處理并發(fā)控制的主要方法是采用封鎖技術(shù)。封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)。

  封鎖:所謂封鎖就是事務(wù)T在對某個數(shù)據(jù)對象例如表、記錄等操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對象。

  基本的封鎖類型有兩種:排它鎖(Exclusive Locks,簡記為X鎖) 和共享鎖(Share Locks,簡記為S鎖)。

  排它鎖:排它鎖又稱為寫鎖。若事務(wù)T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)都不能再對A加任何類型的鎖,直到T釋放A上的鎖。這就保證了其它事務(wù)在T釋放A上的鎖之前不能再讀取和修改A。

  共享鎖:共享鎖又稱為讀鎖。若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則事務(wù)T可以讀A,但不能修改A,其它事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證了其它事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。有兩種類型:

  uu 排他型封鎖(X封鎖)

  uu 共享型封鎖(S封鎖)

  在運用X鎖和S鎖這兩種基本封鎖,對數(shù)據(jù)對象加鎖時,還需要約定一些規(guī)則,例如應(yīng)何時申請X鎖或S鎖、持鎖時間、何時釋放等。我們稱這些規(guī)則為封鎖協(xié)議(Locking Protocol)。對封鎖方式規(guī)定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議。下面介紹三級封鎖協(xié)議。對并發(fā)操作的不正確調(diào)度可能會帶來丟失修改、不可重復(fù)讀和讀“臟”數(shù)據(jù)等不一致性問題,三級封鎖協(xié)議分別在不同程度上解決了這一問題。為并發(fā)操作的正確調(diào)度提供一定的保證。不同級別的封鎖協(xié)議達到的系統(tǒng)一致性級別是不同的。

  一級封鎖協(xié)議是:事務(wù)T在修改數(shù)據(jù)R之前必須先對其加X鎖,直到事務(wù)結(jié)束才釋放。事務(wù)結(jié)束包括正常結(jié)束(COMMIT)和非正常結(jié)束(ROLLBACK)。

  二級封鎖協(xié)議是:一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,讀完后即可釋放S鎖。二級封鎖協(xié)議除防止了丟失修改,還可進一步防止讀“臟”數(shù)據(jù)

  三級封鎖協(xié)議是:一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,直到事務(wù)結(jié)束才釋放。三級封鎖協(xié)議除防止了丟失修改和不讀‘臟’數(shù)據(jù)外,還進一步防止了不可重復(fù)讀

  和操作系統(tǒng)一樣,封鎖的方法可能引起活鎖和死鎖。

  一.活鎖

  活鎖:如果事務(wù)T1封鎖了數(shù)據(jù)R,事務(wù)T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當(dāng)T1釋放了R上的封鎖之后系統(tǒng)首先批準(zhǔn)了T3的請求,T2仍然等待。然后T4又請求封鎖R,當(dāng)T3釋放了R上的封鎖之后系統(tǒng)又批準(zhǔn)了T4的請求,......,T2有可能永遠等待,這就是活鎖的情形

  二.死鎖

  死鎖:如果事務(wù)T1封鎖了數(shù)據(jù)R1,T2封鎖了數(shù)據(jù)R2,然后T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖。接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣就出現(xiàn)了T1在等待T2,而T2又在等待T1的局面,T1和T2兩個事務(wù)永遠不能結(jié)束,形成死鎖。

  死鎖的預(yù)防:

  在數(shù)據(jù)庫中,產(chǎn)生死鎖的原因是兩個或多個事務(wù)都已封鎖了一些數(shù)據(jù)對象,然后又都請求對已被其他事務(wù)封鎖的數(shù)據(jù)對象加鎖,從而出現(xiàn)死等待。防止死鎖的發(fā)生其實就是要破壞產(chǎn)生死鎖的條件。預(yù)防死鎖通常有兩種方法:

  一次封鎖法: 一次封鎖法要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行。一次封鎖法雖然可以有效地防止死鎖的發(fā)生,但也存在問題,一次就將以后要用到的全部數(shù)據(jù)加鎖,勢必擴大了封鎖的范圍,從而降低了系統(tǒng)的并發(fā)度。

  順序封鎖法:順序封鎖法是預(yù)先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務(wù)都按這個順序?qū)嵭蟹怄i。順序封鎖法可以有效地防止死鎖,但也同樣存在問題。事務(wù)的封鎖請求可以隨著事務(wù)的執(zhí)行而動態(tài)地決定,很難事先確定每一個事務(wù)要封鎖哪些對象,因此也就很難按規(guī)定的順序去施加封鎖。

  可見,在操作系統(tǒng)中廣為采用的預(yù)防死鎖的策略并不很適合數(shù)據(jù)庫的特點,因此DBMS在解決死鎖的問題上普遍采用的是診斷并解除死鎖的方法。

上一頁  1 2 3 4 5 6 7 8 9 10  ... 下一頁  >> 
  相關(guān)推薦:推薦:2010年計算機軟件水平考試必備完美攻略
       2010年11月計算機軟件水平考試備考寶典
       2010年軟件水平考試軟件設(shè)計師專題講義匯總
       計算機軟考:軟件設(shè)計師練習(xí)試題及答案解析匯總
文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。