首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
3.介質故障的恢復
發生介質故障后,磁盤上的物理數據和日志文件被破壞,這是最嚴重的一種故障,恢復方法是重裝數據庫,然后重做已完成的事務。具體地說就是:
⑴. 裝入最新的數據庫后備副本(離故障發生時刻最近的轉儲副本),使數據庫恢復到最近一次轉儲時的一致性狀態。
對于動態轉儲的數據庫副本,還須同時裝入轉儲開始時刻的日志文件副本,利用恢復系統故障的方法(即REDO+UNDO),才能將數據庫恢復到一致性狀態。
⑵. 裝入相應的日志文件副本(轉儲結束時刻的日志文件副本),重做已完成的事務。即:
首先掃描日志文件,找出故障發生時已提交的事務的標識,將其記入重做隊列。
然后正向掃描日志文件,對重做隊列中的所有事務進行重做處理。即將日志記錄中“更新后的值”寫入數據庫。
這樣就可以將數據庫恢復至故障前某一時刻的一致狀態了。
介質故障的恢復需要DBA介入。但DBA只需要重裝最近轉儲的數據庫副本和有關的各日志文件副本,然后執行系統提供的恢復命令即可,具體的恢復操作仍由DBMS完成。
n 并發控制
在多用戶共享系統中,許多事務可能同時對同一個數據進行操作,這時候就產生了并發控制的問題。DMBS的并發控制子系統負責協調并發事務的執行,保證數據庫的完整性不受破壞,同時避免用戶得到不正確的數據。
同時并發方式:在多處理系統中,每個處理機可以運行一個事務,多個處理機可以同時運行多個事務,實現多個事務真正的并行運行,這種并行方式稱為同時并發方式。
并發控制機制是衡量一個數據庫管理系統性能的重要標志之一。
數據庫的并發操作通常可能帶來以下的問題:
u u 丟失更新問題
u u 不一致分析問題(讀過時的數據)
u u 依賴于未提交更新問題(讀“臟”數據)
處理并發控制的主要方法是采用封鎖技術。封鎖是實現并發控制的一個非常重要的技術。
封鎖:所謂封鎖就是事務T在對某個數據對象例如表、記錄等操作之前,先向系統發出請求,對其加鎖。加鎖后事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數據對象。
基本的封鎖類型有兩種:排它鎖(Exclusive Locks,簡記為X鎖) 和共享鎖(Share Locks,簡記為S鎖)。
排它鎖:排它鎖又稱為寫鎖。若事務T對數據對象A加上X鎖,則只允許T讀取和修改A,其它任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖。這就保證了其它事務在T釋放A上的鎖之前不能再讀取和修改A。
共享鎖:共享鎖又稱為讀鎖。若事務T對數據對象A加上S鎖,則事務T可以讀A,但不能修改A,其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證了其它事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。有兩種類型:
uu 排他型封鎖(X封鎖)
uu 共享型封鎖(S封鎖)
在運用X鎖和S鎖這兩種基本封鎖,對數據對象加鎖時,還需要約定一些規則,例如應何時申請X鎖或S鎖、持鎖時間、何時釋放等。我們稱這些規則為封鎖協議(Locking Protocol)。對封鎖方式規定不同的規則,就形成了各種不同的封鎖協議。下面介紹三級封鎖協議。對并發操作的不正確調度可能會帶來丟失修改、不可重復讀和讀“臟”數據等不一致性問題,三級封鎖協議分別在不同程度上解決了這一問題。為并發操作的正確調度提供一定的保證。不同級別的封鎖協議達到的系統一致性級別是不同的。
一級封鎖協議是:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。事務結束包括正常結束(COMMIT)和非正常結束(ROLLBACK)。
二級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完后即可釋放S鎖。二級封鎖協議除防止了丟失修改,還可進一步防止讀“臟”數據
三級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。三級封鎖協議除防止了丟失修改和不讀‘臟’數據外,還進一步防止了不可重復讀
和操作系統一樣,封鎖的方法可能引起活鎖和死鎖。
一.活鎖
活鎖:如果事務T1封鎖了數據R,事務T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之后系統首先批準了T3的請求,T2仍然等待。然后T4又請求封鎖R,當T3釋放了R上的封鎖之后系統又批準了T4的請求,......,T2有可能永遠等待,這就是活鎖的情形
二.死鎖
死鎖:如果事務T1封鎖了數據R1,T2封鎖了數據R2,然后T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖。接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣就出現了T1在等待T2,而T2又在等待T1的局面,T1和T2兩個事務永遠不能結束,形成死鎖。
死鎖的預防:
在數據庫中,產生死鎖的原因是兩個或多個事務都已封鎖了一些數據對象,然后又都請求對已被其他事務封鎖的數據對象加鎖,從而出現死等待。防止死鎖的發生其實就是要破壞產生死鎖的條件。預防死鎖通常有兩種方法:
一次封鎖法: 一次封鎖法要求每個事務必須一次將所有要使用的數據全部加鎖,否則就不能繼續執行。一次封鎖法雖然可以有效地防止死鎖的發生,但也存在問題,一次就將以后要用到的全部數據加鎖,勢必擴大了封鎖的范圍,從而降低了系統的并發度。
順序封鎖法:順序封鎖法是預先對數據對象規定一個封鎖順序,所有事務都按這個順序實行封鎖。順序封鎖法可以有效地防止死鎖,但也同樣存在問題。事務的封鎖請求可以隨著事務的執行而動態地決定,很難事先確定每一個事務要封鎖哪些對象,因此也就很難按規定的順序去施加封鎖。
可見,在操作系統中廣為采用的預防死鎖的策略并不很適合數據庫的特點,因此DBMS在解決死鎖的問題上普遍采用的是診斷并解除死鎖的方法。
相關推薦:推薦:2010年計算機軟件水平考試必備完美攻略北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |