第10_11章_數(shù)據(jù)庫恢復技術(shù)及并發(fā)控制_第1頁
第10_11章_數(shù)據(jù)庫恢復技術(shù)及并發(fā)控制_第2頁
第10_11章_數(shù)據(jù)庫恢復技術(shù)及并發(fā)控制_第3頁
第10_11章_數(shù)據(jù)庫恢復技術(shù)及并發(fā)控制_第4頁
第10_11章_數(shù)據(jù)庫恢復技術(shù)及并發(fā)控制_第5頁
已閱讀5頁,還剩107頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、An Introduction to Database System 2015 數(shù)據(jù)庫原理與應用數(shù)據(jù)庫原理與應用 第十章第十章 數(shù)據(jù)庫恢復技術(shù)數(shù)據(jù)庫恢復技術(shù) 溫浩宇溫浩宇 An Introduction to Database System DBMS的數(shù)據(jù)保護的數(shù)據(jù)保護 n數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)是由DBMS統(tǒng)一管理和控制的, 為了適應數(shù)據(jù)共享的環(huán)境,DBMS必須提供數(shù)據(jù)保 護能力,以保證數(shù)據(jù)庫中數(shù)據(jù)的安全可靠和正確有 效。 n數(shù)據(jù)保護 n安全性 n完整性 n數(shù)據(jù)庫恢復 n并發(fā)控制 An Introduction to Database System 第十章第十章 數(shù)據(jù)庫恢復技術(shù)數(shù)據(jù)庫恢復技術(shù) 10

2、.1 事務的基本概念 10.2 數(shù)據(jù)庫恢復概述 10.3 故障的種類 10.4 恢復的實現(xiàn)技術(shù) 10.5 恢復策略 10.6 具有檢查點的恢復技術(shù) 10.7 數(shù)據(jù)庫鏡像 An Introduction to Database System 10.1 事務的基本概念事務的基本概念 一、什么是事務 二、如何定義事務 三、事務的特性 An Introduction to Database System 一、什么是事務一、什么是事務 n定義定義: :事務(Transaction)是用戶定義的一個數(shù)據(jù)庫 操作序列,這些操作要么全做,要么全不做,是一 個不可分割的工作單位。 n事務和程序是兩個概念 n在關(guān)

3、系數(shù)據(jù)庫中,一個事務可以是一條SQL語句,一組 SQL語句或整個程序 n一個應用程序通常包含多個事務 n事務是恢復和并發(fā)控制的基本單位 An Introduction to Database System 二、如何定義事務二、如何定義事務 n顯式定義方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 語句1 SQL 語句1 SQL 語句2 SQL 語句2 COMMIT ROLLBACK n隱式方式 當用戶沒有顯式地定義事務時, DBMS按缺省規(guī)定自動劃分事務 An Introduction to Database System 事務結(jié)束事務結(jié)束 COMMIT

4、事務正常正常結(jié)束 提交提交事務的所有操作(更新) 事務中所有對數(shù)據(jù)庫的更新永久生效 ROLLBACK 事務異常異常終止 n事務運行的過程中發(fā)生了故障,不能繼續(xù)執(zhí)行 回滾回滾事務的所有更新操作 n事務滾回到開始時的狀態(tài) An Introduction to Database System 事務舉例事務舉例 n例:將Course表“數(shù)據(jù)庫”課程的編號由1改為8。 注意:要修改兩個表注意:要修改兩個表,Course和和SC,兩個都要修改成功,要么不修改兩個都要修改成功,要么不修改 BEGIN TRANSACTION UPDATE Course Set Cno=8 Where Cno=1 UPDATE

5、 SC Set Cno=8 Where Cno=1 COMMIT An Introduction to Database System 三、事務的特性三、事務的特性(ACID特性特性) 事務的ACID特性: n原子性(Atomicity) n一致性(Consistency) n隔離性(Isolation) n持續(xù)性(Durability ) An Introduction to Database System 1. 原子性原子性 事務是數(shù)據(jù)庫的邏輯工作單位,事務中 包括的諸操作要么都做,要么都不做 。 An Introduction to Database System 2. 一致性一致性 事

6、務執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一 個一致性狀態(tài)變到另一個一致性狀態(tài)。 一致性狀態(tài): 數(shù)據(jù)庫中只包含成功事務提交的結(jié)果。 不一致狀態(tài): 數(shù)據(jù)庫中包含失敗事務的結(jié)果。 An Introduction to Database System 一致性與原子性一致性與原子性 銀行轉(zhuǎn)帳例:銀行轉(zhuǎn)帳例:從帳號A中取出一萬元,存入帳號B。 n定義一個事務,該事務包括兩個操作 n這兩個操作要么全做,要么全不做 n全做或者全不做,數(shù)據(jù)庫都處于一致性狀態(tài)。 n如果只做一個操作,數(shù)據(jù)庫就處于不一致性狀態(tài)。 B=B+10000 A=A-10000 BA An Introduction to Database System

7、3. 隔離性隔離性 對并發(fā)執(zhí)行而言 一個事務的執(zhí)行不能被其他事務干擾,即: n一個事務內(nèi)部的操作及使用的數(shù)據(jù)對其他并發(fā)事務是隔 離的。 n并發(fā)執(zhí)行的各個事務之間不能互相干擾。 An Introduction to Database System T1的修改被的修改被T2覆蓋了!覆蓋了! 讀A=16 AA-3 寫回A=13 讀A=16 AA-1 寫回A=15 T2T1 非隔離性例子非隔離性例子 An Introduction to Database System 4. 持續(xù)性持續(xù)性 n持續(xù)性也稱永久性(Permanence),是指: n一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就 應該是永久性的。

8、 n接下來的其他操作或故障不應該對其執(zhí)行結(jié)果有 任何影響。 An Introduction to Database System 事務的特性事務的特性 n保證事務ACID特性是事務處理的任務 n破壞事務破壞事務ACIDACID特性的因素特性的因素 (1)多個事務并行運行時,不同事務的操作交叉執(zhí)行。 (2)事務在運行過程中被強行停止。 An Introduction to Database System 10.2 數(shù)據(jù)庫恢復概述數(shù)據(jù)庫恢復概述 n故障是不可避免的 n計算機硬件故障 n系統(tǒng)軟件和應用軟件的錯誤 n操作員的失誤 n惡意的破壞 n故障的影響 n運行事務非正常中斷 n破壞數(shù)據(jù)庫 所以需要

9、恢復機制所以需要恢復機制 ! An Introduction to Database System 數(shù)據(jù)庫恢復概述(續(xù))數(shù)據(jù)庫恢復概述(續(xù)) n數(shù)據(jù)庫管理系統(tǒng)對故障的對策 nDBMS提供恢復子系統(tǒng) n保證故障發(fā)生后,能把數(shù)據(jù)庫中的數(shù)據(jù)從錯誤狀 態(tài)恢復到某種邏輯一致的狀態(tài) n保證事務ACID n恢復技術(shù)是衡量DBMS優(yōu)劣的重要指標 An Introduction to Database System 10.3 故障的種類故障的種類 一、事務內(nèi)部的故障 二、系統(tǒng)故障 三、介質(zhì)故障 四、計算機病毒 An Introduction to Database System 一、事務故障一、事務故障-用日志

10、文件自動恢復用日志文件自動恢復 n什么是事務故障 n某個事務在運行過程中由于種種原因未運行至正 常終止點就中斷了 n事務故障的常見原因 n輸入數(shù)據(jù)有誤 n運算溢出 n違反了某些完整性限制 n某些應用程序出錯 n并行事務發(fā)生死鎖 n An Introduction to Database System 事務故障的恢復事務故障的恢復 n發(fā)生事務故障時,中斷的事務可能已把對數(shù) 據(jù)庫的部分修改寫回磁盤 n事務故障的恢復:撤消事務(UNDO) n強行回滾(ROLLBACK)該事務 n清除該事務對數(shù)據(jù)庫的所有修改,使得這個 事務象根本沒有啟動過一樣 An Introduction to Database

11、System 例:銀行轉(zhuǎn)帳事務處理例:銀行轉(zhuǎn)帳事務處理 BEGIN TRANSACTION 讀A賬戶余額 A=A-1000 IF (A0) THEN ROLLBACK; ELSE 讀B賬戶余額; B=B+1000; 寫回B; COMMIT; An Introduction to Database System 二、系統(tǒng)故障二、系統(tǒng)故障-用日志文件自動恢復用日志文件自動恢復 n什么是系統(tǒng)故障 n整個系統(tǒng)的正常運行突然被破壞 n所有正在運行的事務都都非正常終止 n內(nèi)存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失 n外部存儲設(shè)備上的數(shù)據(jù)未受影響外部存儲設(shè)備上的數(shù)據(jù)未受影響 An Introduction to Da

12、tabase System 系統(tǒng)故障的常見原因系統(tǒng)故障的常見原因 n操作系統(tǒng)或DBMS代碼錯誤 n操作員操作失誤(例:強制重啟系統(tǒng)) n特定類型的硬件錯誤(如CPU故障) n突然停電 An Introduction to Database System 系統(tǒng)故障的恢復系統(tǒng)故障的恢復 n 清除尚未完成的事務對數(shù)據(jù)庫的所有修改 n系統(tǒng)重新啟動時,恢復程序要強行撤消(UNDO) 所有未完成事務 n將緩沖區(qū)中已完成事務提交的結(jié)果寫入數(shù)據(jù)庫寫入數(shù)據(jù)庫 n系統(tǒng)重新啟動時,恢復程序需要重做(REDO) 所有已提交的事務 日志文件日志文件 已記錄已記錄 An Introduction to Database

13、System 三、介質(zhì)故障三、介質(zhì)故障-人工恢復,用備份的數(shù)據(jù)人工恢復,用備份的數(shù)據(jù) n硬件故障使存儲在外存中的數(shù)據(jù)部分丟失或 全部丟失 n介質(zhì)故障比前兩類故障的可能性小得多,但 破壞性大得多 An Introduction to Database System 介質(zhì)故障的常見原因介質(zhì)故障的常見原因 n硬件故障 n磁盤損壞 n操作系統(tǒng)的某種潛在錯誤 n瞬時強磁場干擾 An Introduction to Database System 介質(zhì)故障的恢復介質(zhì)故障的恢復 n裝入數(shù)據(jù)庫發(fā)生介質(zhì)故障前某個時刻的數(shù)據(jù) 副本 n重做自此時開始的所有成功事務,將這些事 務已提交的結(jié)果重新記入數(shù)據(jù)庫 An In

14、troduction to Database System 四、計算機病毒四、計算機病毒-人工恢復,用備份的數(shù)據(jù)人工恢復,用備份的數(shù)據(jù) n恢復方法同介質(zhì)故障 An Introduction to Database System 數(shù)據(jù)恢復操作的基本原理數(shù)據(jù)恢復操作的基本原理 n恢復操作的基本原理:冗余 (原理很簡單原理很簡單) n利用存儲在系統(tǒng)其它地方的冗余數(shù)據(jù)來重建數(shù)據(jù) 庫中已被破壞或不正確的那部分數(shù)據(jù) n恢復的實現(xiàn)技術(shù):復雜 n一個大型數(shù)據(jù)庫產(chǎn)品,恢復子系統(tǒng)的代碼要占全 部代碼的10%以上 An Introduction to Database System 10.4 恢復的實現(xiàn)技術(shù)恢復的實

15、現(xiàn)技術(shù) 恢復機制涉及的兩個關(guān)鍵問題 1. 如何建立冗余數(shù)據(jù) n數(shù)據(jù)轉(zhuǎn)儲(backup) n登記日志文件(logging) 2. 如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復 An Introduction to Database System 10.4.1 數(shù)據(jù)轉(zhuǎn)儲數(shù)據(jù)轉(zhuǎn)儲 一、什么是轉(zhuǎn)儲 二、轉(zhuǎn)儲的用途 三、轉(zhuǎn)儲方法 An Introduction to Database System 一、什么是轉(zhuǎn)儲一、什么是轉(zhuǎn)儲 n轉(zhuǎn)儲轉(zhuǎn)儲是指DBA將整個數(shù)據(jù)庫復制到磁帶或另一個磁 盤上保存起來的過程。 n這些備用的數(shù)據(jù)文本稱為后備副本后備副本或后援副本后援副本。 An Introduction to Databa

16、se System 轉(zhuǎn)儲轉(zhuǎn)儲 故障發(fā)生點故障發(fā)生點 轉(zhuǎn)儲轉(zhuǎn)儲 運行事務運行事務 正常運行正常運行 Ta Ta Tb Tb Tf Tf 重裝后備副本重裝后備副本 重新運行事務重新運行事務 恢復恢復 An Introduction to Database System 三、轉(zhuǎn)儲方法三、轉(zhuǎn)儲方法 1靜態(tài)轉(zhuǎn)儲與動態(tài)轉(zhuǎn)儲 2海量轉(zhuǎn)儲與增量轉(zhuǎn)儲 3轉(zhuǎn)儲方法小結(jié) An Introduction to Database System 1靜態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲 n在系統(tǒng)中無運行事務時進行轉(zhuǎn)儲 n轉(zhuǎn)儲開始時數(shù)據(jù)庫處于一致性狀態(tài) n轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫進行任何存 取、修改活動 n優(yōu)點:實現(xiàn)簡單 n缺點:降低了數(shù)據(jù)庫的可

17、用性 n轉(zhuǎn)儲必須等用戶事務結(jié)束 n新的事務必須等轉(zhuǎn)儲結(jié)束才能進行 An Introduction to Database System 利用靜態(tài)轉(zhuǎn)儲副本進行恢復利用靜態(tài)轉(zhuǎn)儲副本進行恢復 (如果沒有轉(zhuǎn)儲記錄日志文件)重新運行事務。 故障發(fā)生點故障發(fā)生點 靜態(tài)靜態(tài)轉(zhuǎn)儲轉(zhuǎn)儲 運行事務運行事務 正常運行正常運行 Ta Ta Tb Tb Tf Tf 重裝后備副本重裝后備副本 恢復恢復 An Introduction to Database System 動態(tài)轉(zhuǎn)儲動態(tài)轉(zhuǎn)儲 n轉(zhuǎn)儲操作與用戶事務并發(fā)進行并發(fā)進行 n轉(zhuǎn)儲期間允許允許對數(shù)據(jù)庫進行存取或修改 n優(yōu)點 n不用等待正在運行的用戶事務結(jié)束 n不會影響新

18、事務的運行 n動態(tài)轉(zhuǎn)儲的缺點 n不能保證副本中的數(shù)據(jù)正確有效 An Introduction to Database System 動態(tài)轉(zhuǎn)儲動態(tài)轉(zhuǎn)儲 n利用動態(tài)轉(zhuǎn)儲得到的副本進行故障恢復 n需要把動態(tài)轉(zhuǎn)儲期間各事務對數(shù)據(jù)庫的修 改活動登記下來,建立日志文件 n后備副本+日志文件才能把數(shù)據(jù)庫恢復到 某一時刻的正確狀態(tài) An Introduction to Database System 利用動態(tài)轉(zhuǎn)儲副本進行恢復利用動態(tài)轉(zhuǎn)儲副本進行恢復 Ta Ta Tb Tb Tf Tf 動態(tài)動態(tài)轉(zhuǎn)儲轉(zhuǎn)儲 運行事務運行事務 故障發(fā)生點故障發(fā)生點 正常運行正常運行 登記日志文件登記日志文件 登記新日志文件登記新日志

19、文件 轉(zhuǎn)儲日志文件轉(zhuǎn)儲日志文件 重裝后備副本,然后利用轉(zhuǎn)儲的日志文件恢復重裝后備副本,然后利用轉(zhuǎn)儲的日志文件恢復 恢復到一恢復到一 致性狀態(tài)致性狀態(tài) An Introduction to Database System 2海量轉(zhuǎn)儲與增量轉(zhuǎn)儲海量轉(zhuǎn)儲與增量轉(zhuǎn)儲 n海量轉(zhuǎn)儲: 每次轉(zhuǎn)儲全部數(shù)據(jù)庫 n增量轉(zhuǎn)儲: 只轉(zhuǎn)儲上次轉(zhuǎn)儲后更新過的數(shù)據(jù) n海量轉(zhuǎn)儲與增量轉(zhuǎn)儲比較 n從恢復角度看,使用海量轉(zhuǎn)儲得到的后備副本進 行恢復往往更方便 n但如果數(shù)據(jù)庫很大,事務處理又十分頻繁,則增 量轉(zhuǎn)儲方式更實用更有效 An Introduction to Database System 3轉(zhuǎn)儲方法小結(jié)轉(zhuǎn)儲方法小結(jié) n轉(zhuǎn)

20、儲方法分類 轉(zhuǎn)儲狀態(tài)轉(zhuǎn)儲狀態(tài) 動態(tài)轉(zhuǎn)儲動態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲 轉(zhuǎn)儲轉(zhuǎn)儲 方式方式 海量轉(zhuǎn)儲海量轉(zhuǎn)儲動態(tài)海量轉(zhuǎn)儲動態(tài)海量轉(zhuǎn)儲靜態(tài)海量轉(zhuǎn)儲靜態(tài)海量轉(zhuǎn)儲 增量轉(zhuǎn)儲增量轉(zhuǎn)儲動態(tài)增量轉(zhuǎn)儲動態(tài)增量轉(zhuǎn)儲靜態(tài)增量轉(zhuǎn)儲靜態(tài)增量轉(zhuǎn)儲 An Introduction to Database System 轉(zhuǎn)儲策略轉(zhuǎn)儲策略 n應定期進行數(shù)據(jù)轉(zhuǎn)儲,制作后備副本。 n但轉(zhuǎn)儲又是十分耗費時間和資源的,不能頻繁進行。 nDBA應該根據(jù)數(shù)據(jù)庫使用情況確定適當?shù)霓D(zhuǎn)儲周期 和轉(zhuǎn)儲方法。 例如: n每天晚上進行動態(tài)增量轉(zhuǎn)儲 n每周進行一次動態(tài)海量轉(zhuǎn)儲 n每月進行一次靜態(tài)海量轉(zhuǎn)儲 An Introduction to Databas

21、e System 10.4.2 登記日志文件登記日志文件 一、日志文件的內(nèi)容 二、日志文件的用途 三、登記日志文件的原則 An Introduction to Database System 一、日志文件的內(nèi)容一、日志文件的內(nèi)容 1. 什么是日志文件 定義:定義:日志文件(log)是用來記錄事務對數(shù)據(jù)庫的 更新更新操作的文件。 2. 日志文件的格式 以記錄為單位的日志文件 以數(shù)據(jù)塊為單位的日志文件 An Introduction to Database System 日志文件的內(nèi)容(續(xù))日志文件的內(nèi)容(續(xù)) 3. 日志文件內(nèi)容 n各個事務的開始標記(BEGIN TRANSACTION) n各個

22、事務的所有更新更新操作 n各個事務的結(jié)束標記(COMMIT或ROLLBACK) 日志文件中的一個日志記錄 (log record) 每個事件的開始標記 每個更新操作均作為均作為日志文件的一個日志記錄日志記錄 每個事件的結(jié)束標記 An Introduction to Database System 4. 基于記錄的日志文件基于記錄的日志文件 每條日志記錄的內(nèi)容 n事務標識(標明是那個事務) n操作類型(插入、刪除或修改) n操作對象(記錄ID) n更新前數(shù)據(jù)的舊值(對插入操作而言,此項為空值) n更新后數(shù)據(jù)的新值(對刪除操作而言, 此項為空值) An Introduction to Databa

23、se System 5. 基于數(shù)據(jù)塊的日志文件基于數(shù)據(jù)塊的日志文件 每條日志記錄的內(nèi)容 n事務標識(標明是那個事務) n操作對象(Block NO.) n更新前前數(shù)據(jù)所在的整個數(shù)據(jù)塊的值(對插入 操作而言,此項為空值) n更新后后整個數(shù)據(jù)塊的值(對刪除操作而言, 此項為空值) An Introduction to Database System 二、日志文件的用途二、日志文件的用途 1用途 n、進行事務故障恢復 n、進行系統(tǒng)故障恢復 n、協(xié)助后備副本進行介質(zhì)故障恢復 An Introduction to Database System 日志文件的用途(續(xù))日志文件的用途(續(xù))靜態(tài)轉(zhuǎn)儲時靜態(tài)轉(zhuǎn)儲

24、時 2與靜態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲后備副本配合進行介質(zhì)故障恢復 n靜態(tài)轉(zhuǎn)儲的數(shù)據(jù)已是一致性的數(shù)據(jù) n如果靜態(tài)轉(zhuǎn)儲完成后,仍能定期轉(zhuǎn)儲日志文件仍能定期轉(zhuǎn)儲日志文件, 則在出現(xiàn)介質(zhì)故障重裝數(shù)據(jù)副本后,可以利用 這些日志文件副本對已完成的事務進行重做處 理 n這樣不必重新運行那些已完成的事務程序就可 把數(shù)據(jù)庫恢復到故障前某一時刻的正確狀態(tài) An Introduction to Database System 日志文件的用途(續(xù)日志文件的用途(續(xù))靜態(tài)轉(zhuǎn)儲時靜態(tài)轉(zhuǎn)儲時 故障發(fā)生點故障發(fā)生點 靜態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲 運行事務運行事務 正常運行正常運行 Ta Ta Tb TfTb Tf 登記日志文件登記日志文件 重裝后備

25、副本重裝后備副本 利用日志文件恢復事務利用日志文件恢復事務 繼續(xù)運行繼續(xù)運行 介質(zhì)故障恢復介質(zhì)故障恢復 登記日志文件登記日志文件 An Introduction to Database System 日志文件的用途(續(xù))日志文件的用途(續(xù))動態(tài)轉(zhuǎn)儲時動態(tài)轉(zhuǎn)儲時 3介質(zhì)故障恢復:LOG FILE + 動態(tài)轉(zhuǎn)儲后備副本 n動態(tài)轉(zhuǎn)儲數(shù)據(jù)庫:同時轉(zhuǎn)儲同一時間點的日志文件同時轉(zhuǎn)儲同一時間點的日志文件 n后備副本與該日志文件結(jié)合起來才能將數(shù)據(jù)庫恢復到 一致性狀態(tài)。 n利用這些日志文件副本進一步恢復事務,避免重新運 行事務程序。 An Introduction to Database System 三、登記

26、日志文件的原則三、登記日志文件的原則 n為保證數(shù)據(jù)庫是可恢復的,登記日志文件時必須 遵循兩條原則 1、登記的次序嚴格按并行事務執(zhí)行的時間次序 2、必須先寫日志文件先寫日志文件,后寫數(shù)據(jù)庫 n寫日志文件操作:把表示這個修改的日志記錄 寫到日志文件 n寫數(shù)據(jù)庫操作:把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中 An Introduction to Database System 登記日志文件的原則(續(xù))登記日志文件的原則(續(xù)) n為什么要先寫日志文件 n寫數(shù)據(jù)庫和寫日志文件是兩個不同的操作 n在這兩個操作之間可能發(fā)生故障 n如果先寫了數(shù)據(jù)庫修改,而在日志文件中沒有登記下 這個修改,則以后就無法恢復這個修改了 n如果

27、先寫日志,但沒有修改數(shù)據(jù)庫,按日志文件恢復 時只不過是多執(zhí)行一次不必要的UNDO操作,并不會 影響數(shù)據(jù)庫的正確性 An Introduction to Database System 10.5 恢復策略恢復策略 不同故障其恢復策略和方法也不一樣 10.5.1 事務故障的恢復 10.5.2 系統(tǒng)故障的恢復 10.5.3 介質(zhì)故障的恢復 An Introduction to Database System 10.5.1 事務故障的恢復事務故障的恢復 n事務故障:事務在運行至正常終止點前被中止 n恢復方法 n由恢復子系統(tǒng)利用日志文件撤消(撤消(UNDOUNDO)此事務 已對數(shù)據(jù)庫進行的修改 n事務故

28、障的恢復由系統(tǒng)自動完成,不需要用戶干預 An Introduction to Database System 10.5.1 事務故障的恢復步驟事務故障的恢復步驟 1. 反向掃描文件日志(即從最后向前掃描日志文件即從最后向前掃描日志文件),查找 該事務的更新操作。 2. 對該事務的更新操作執(zhí)行逆操作。即將日志記錄中“更新 前的值”(Befor Image, BI)寫入數(shù)據(jù)庫。 n插入操作, “更新前的值”為空,則相當于做刪除操作 n刪除操作,“更新后的值”為空,則相當于做插入操作 n若是修改操作,則用BI 代替 AI(After Image) 3. 繼續(xù)反向掃描日志文件,查找該事務的其他更新操作

29、,并 做同樣處理。 4. 如此處理下去,直至讀到此事務的開始標記讀到此事務的開始標記,事務故障恢 復就完成了。 An Introduction to Database System 10.5.2 系統(tǒng)故障的恢復系統(tǒng)故障的恢復 n系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因 n一些未完成事務對數(shù)據(jù)庫的更新已寫入數(shù)據(jù)庫 n一些已提交事務對數(shù)據(jù)庫的更新還留在緩沖區(qū) 沒來得及寫入數(shù)據(jù)庫 n恢復方法 n1. Undo 故障發(fā)生時未完成的事務 n2. Redo 已完成的事務 n系統(tǒng)故障的恢復由系統(tǒng)在重新啟動時自動完成, 不需要用戶干預 An Introduction to Database System 10.5.

30、2 系統(tǒng)故障的恢復系統(tǒng)故障的恢復步驟步驟 1.正向掃描日志文件(即從頭掃描日志文件),形成 nRedo隊列: 在故障發(fā)生前已經(jīng)提交的事務 (既有BEGIN TRANSACTION記錄, 也有COMMIT記錄) T1, T3, T8. nUndo隊列:故障發(fā)生時尚未完成的事務 (只有BEGIN TRANSACTION記錄, 沒有COMMIT記錄) T2, T4, T5, T6, T7, T9 . An Introduction to Database System 系統(tǒng)故障的恢復步驟系統(tǒng)故障的恢復步驟 2. 對Undo隊列事務進行UNDO處理 反向掃描日志文件,對每個UNDO事務的更 新操作執(zhí)行

31、逆操作 T2, T4, T5, T6, T7, T9 3. 對Redo隊列事務進行REDO處理 正向掃描日志文件,對每個REDO事務重新 執(zhí)行登記的操作 T1, T3, T8. An Introduction to Database System 10.5.3 介質(zhì)故障的恢復介質(zhì)故障的恢復 1. 重裝數(shù)據(jù)庫, 使數(shù)據(jù)庫恢復到一致性狀態(tài) 2. 重做(日志文件中)已完成的事務 An Introduction to Database System 10.5.3 介質(zhì)故障的恢復介質(zhì)故障的恢復 n恢復步驟 1. 裝入最新的后備數(shù)據(jù)庫副本,使數(shù)據(jù)庫恢復到 最近一次轉(zhuǎn)儲時的一致性狀態(tài)。 n對于靜態(tài)轉(zhuǎn)儲的數(shù)據(jù)

32、庫副本,裝入后數(shù)據(jù)庫 即處于一致性狀態(tài) n對于動態(tài)轉(zhuǎn)儲的數(shù)據(jù)庫副本,還須同時裝入還須同時裝入 轉(zhuǎn)儲時刻的日志文件副本,轉(zhuǎn)儲時刻的日志文件副本,利用與恢復系統(tǒng) 故障相同的方法(即REDO+UNDO),才能 將數(shù)據(jù)庫恢復到一致性狀態(tài)。 An Introduction to Database System 利用靜態(tài)轉(zhuǎn)儲副本將數(shù)據(jù)庫恢復到一致性狀態(tài)利用靜態(tài)轉(zhuǎn)儲副本將數(shù)據(jù)庫恢復到一致性狀態(tài) 故障發(fā)生點故障發(fā)生點 靜態(tài)靜態(tài)轉(zhuǎn)儲轉(zhuǎn)儲 運行事務運行事務 正常運行正常運行 Ta Ta Tb Tb Tf Tf 登記日志文件登記日志文件 重裝后備副本重裝后備副本 恢復恢復 An Introduction to Da

33、tabase System 利用動態(tài)轉(zhuǎn)儲副本將數(shù)據(jù)庫恢復到一致性狀態(tài)利用動態(tài)轉(zhuǎn)儲副本將數(shù)據(jù)庫恢復到一致性狀態(tài) Ta Ta Tb Tb Tf Tf 動態(tài)動態(tài)轉(zhuǎn)儲轉(zhuǎn)儲 運行事務運行事務 故障發(fā)生點故障發(fā)生點 正常運行正常運行 登記日志文件登記日志文件 登記新日志文件登記新日志文件 轉(zhuǎn)儲日志文件轉(zhuǎn)儲日志文件 重裝后備副本,然后利用轉(zhuǎn)儲的日志文件恢復重裝后備副本,然后利用轉(zhuǎn)儲的日志文件恢復 恢復到一恢復到一 致性狀態(tài)致性狀態(tài) An Introduction to Database System 介質(zhì)故障的恢復(續(xù))介質(zhì)故障的恢復(續(xù)) 2. 裝入有關(guān)的日志文件副本,重做已完成的事務。 n首先掃描日志文

34、件,找出故障發(fā)生時已提交的 事務的標識,將其記入重做隊列。 n然后正向掃描日志文件,對重做隊列中的所有 事務進行重做處理。即將日志記錄中“更新后更新后 的值的值”寫入數(shù)據(jù)庫。 An Introduction to Database System 介質(zhì)故障的恢復(續(xù))介質(zhì)故障的恢復(續(xù)) 介質(zhì)故障的恢復需要DBA介入 nDBA的工作 n重裝最近轉(zhuǎn)儲的數(shù)據(jù)庫副本和有關(guān)的各日志文件 副本 n執(zhí)行系統(tǒng)提供的恢復命令 n具體的恢復操作仍由DBMS完成 An Introduction to Database System 10.7 數(shù)據(jù)庫鏡像數(shù)據(jù)庫鏡像 n介質(zhì)故障是對系統(tǒng)影響最為嚴重的一種故障,嚴重 影響

35、數(shù)據(jù)庫的可用性 n介質(zhì)故障恢復比較費時 n為預防介質(zhì)故障,DBA必須周期性地轉(zhuǎn)儲數(shù)據(jù)庫 n提高數(shù)據(jù)庫可用性的解決方案 n數(shù)據(jù)庫鏡像(Mirror) An Introduction to Database System 數(shù)據(jù)庫鏡像(續(xù))數(shù)據(jù)庫鏡像(續(xù)) n數(shù)據(jù)庫鏡像 nDBMS自動把整個數(shù)據(jù)庫或其中的關(guān)鍵數(shù)據(jù)復制到另一個 磁盤上 nDBMS自動保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性(圖10.5a) An Introduction to Database System 數(shù)據(jù)庫鏡像的用途數(shù)據(jù)庫鏡像的用途 n出現(xiàn)介質(zhì)故障時 nDBMS自動利用鏡像磁盤數(shù)據(jù)進行數(shù)據(jù)庫的 恢復,不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫副本 (圖1

36、0.5b) n沒有出現(xiàn)故障時 n可用于并發(fā)操作(圖10.5a) n一個用戶對數(shù)據(jù)加排他鎖修改數(shù)據(jù) n其他用戶可以讀鏡像數(shù)據(jù)庫上的數(shù)據(jù) An Introduction to Database System 數(shù)據(jù)庫鏡像(續(xù)圖數(shù)據(jù)庫鏡像(續(xù)圖10.5) An Introduction to Database System 第十一章第十一章 并發(fā)控制并發(fā)控制 11.1 并發(fā)控制概述 11.2 封鎖 11.3 封鎖協(xié)議 11.4 活鎖和死鎖 11.5 并發(fā)調(diào)度的可串行性 11.6 兩段鎖協(xié)議 11.7 封鎖的粒度 An Introduction to Database System 并發(fā)控制并發(fā)控制 數(shù)

37、據(jù)庫是一個共享資源,可以供多個用戶 使用。在這樣的系統(tǒng)中,同一時間并行運行并行運行 的事務數(shù)可達數(shù)百上千、甚至更多數(shù)百上千、甚至更多。 多事務執(zhí)行方式多事務執(zhí)行方式 (1)事務串行執(zhí)行 n每個時刻只有一個事務運行,其他事務必 須等到這個事務結(jié)束以后方能運行 n不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享 資源的特點 An Introduction to Database System 并發(fā)控制(續(xù))并發(fā)控制(續(xù)) (2)交叉并發(fā)方式(interleaved concurrency) n事務的并行執(zhí)行是這些并行事務的并行操作輪流 交叉運行 n是單處理機系統(tǒng)中的并發(fā)方式,能夠減少處理機 的空閑時間,提高系

38、統(tǒng)的效率 An Introduction to Database System 并發(fā)控制(續(xù))并發(fā)控制(續(xù)) (3)同時并發(fā)方式(simultaneous concurrency) n多處理機系統(tǒng)中,每個處理機可以運行一個事務, 多個處理機可以同時運行多個事務,實現(xiàn)多個事 務真正的并行運行 n最理想的并發(fā)方式,但受制于硬件環(huán)境 n更復雜的并發(fā)方式機制 本章討論的數(shù)據(jù)庫系統(tǒng)并發(fā)控制技術(shù)是以本章討論的數(shù)據(jù)庫系統(tǒng)并發(fā)控制技術(shù)是以單處單處 理機系統(tǒng)理機系統(tǒng)為基礎(chǔ)的。為基礎(chǔ)的。 An Introduction to Database System 事務并發(fā)執(zhí)行帶來的問題事務并發(fā)執(zhí)行帶來的問題 n可能會存

39、取和存儲不正確的數(shù)據(jù),破壞事務 的隔離性和數(shù)據(jù)庫的一致性 nDBMS必須提供并發(fā)控制機制 n并發(fā)控制機制也是衡量一個DBMS性能的重 要標志之一 An Introduction to Database System 11.1 11.1 并發(fā)控制概述并發(fā)控制概述 n并發(fā)控制機制的任務 n對并發(fā)操作進行正確調(diào)度 n保證事務的隔離性 n保證數(shù)據(jù)庫的一致性 An Introduction to Database System T1的修改被的修改被T2覆蓋了!覆蓋了! 讀A=16 AA-3 寫回A=13 讀A=16 AA-1 寫回A=15 事務 T2事務 T1 數(shù)據(jù)不一致實例:飛機訂票系統(tǒng)數(shù)據(jù)不一致實例

40、:飛機訂票系統(tǒng) An Introduction to Database System 并發(fā)操作帶來的數(shù)據(jù)不一致性并發(fā)操作帶來的數(shù)據(jù)不一致性 n1、丟失修改(lost update) n2、不可重復讀(non-repeatable read) n3、讀“臟”數(shù)據(jù)(dirty read) An Introduction to Database System 1. 丟失修改丟失修改 丟失修改丟失修改是指事務1與事務2從數(shù)據(jù)庫中讀 入同一數(shù)據(jù)并修改 事務2的提交結(jié)果破壞了事務1提交的結(jié) 果,導致事務1的修改被丟失。 An Introduction to Database System 2. 不可重復讀

41、不可重復讀 不可重復讀不可重復讀是指事務1讀取數(shù)據(jù)后,事務2 執(zhí)行更新操作,使事務1無法再現(xiàn)前一次讀 取結(jié)果。 An Introduction to Database System 3. 讀讀“臟臟”數(shù)據(jù)數(shù)據(jù) 事務1修改某一數(shù)據(jù),并將其寫回磁盤 事務2讀取同一數(shù)據(jù)后 事務1由于某種原因被撤消,這時事務1已修改過 的數(shù)據(jù)恢復原值 事務2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致, 是不正確的數(shù)據(jù),又稱為“臟”數(shù)據(jù)。 An Introduction to Database System 圖圖11.1 三種數(shù)據(jù)不一致性三種數(shù)據(jù)不一致性 T1T2 讀A=16 AA-1 寫回 A=15 讀A=16 AA-1 寫

42、回A=15 (a) 丟失修改丟失修改 An Introduction to Database System 圖圖11.1 三種數(shù)據(jù)不一致性三種數(shù)據(jù)不一致性(續(xù)續(xù)) 讀B=100 BB*2 寫回B=200 讀A=50 讀B=100 求和=150 讀A=50 讀B=200 求和=250 (驗算不對) T2T1 (b) 不可重復讀不可重復讀 An Introduction to Database System 圖圖11.1 三種數(shù)據(jù)不一致性三種數(shù)據(jù)不一致性(續(xù)續(xù)) 讀C=200 讀C=100 CC*2 寫回C ROLLBACK C恢復為100 T2T1 (c) 讀讀“臟臟”數(shù)據(jù)數(shù)據(jù) An Intro

43、duction to Database System 產(chǎn)生數(shù)據(jù)不一致的原因及處理對策產(chǎn)生數(shù)據(jù)不一致的原因及處理對策 n原因 產(chǎn)生上述三類數(shù)據(jù)不一致的主要原因是并發(fā)操作破壞了并發(fā)操作破壞了 事務的事務的隔離性。隔離性。 n對策 并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操作用正確的方式調(diào)度并發(fā)操作,使一個用戶 事務的執(zhí)行不受其他事務的干擾,從而避免造成數(shù)據(jù)的不一 致。 并發(fā)控制的主要技術(shù)就是封鎖。封鎖。 An Introduction to Database System 11.2 封鎖封鎖 一、什么是封鎖 二、基本封鎖類型 三、基本鎖的相容矩陣 An Introduction to Database

44、System 一、什么是封鎖一、什么是封鎖 n定義定義:封鎖就是事務T在對某個數(shù)據(jù)對象(例如表、 記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。 n加鎖后事務T就對該數(shù)據(jù)對象有了一定的控制,在 事務T釋放它的鎖之前,其它的事務不能更新更新此數(shù) 據(jù)對象。 n封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù) An Introduction to Database System 二、基本封鎖類型二、基本封鎖類型 nDBMS通常提供了多種類型的封鎖。一個事務對某 個數(shù)據(jù)對象加鎖后究竟擁有什么樣的控制是由封鎖 的類型決定的。 n基本封鎖類型 n排它鎖(eXclusive lock,簡記為X鎖) n共享鎖(Shar

45、e lock,簡記為S鎖) An Introduction to Database System 排它鎖排它鎖 n排它鎖又稱為寫鎖 n定義:若事務T對數(shù)據(jù)對象A加上X鎖,則只允 許T讀取和修改A,其它任何事務都不能再對 A加任何類型的鎖,直到T釋放A上的鎖。 An Introduction to Database System 共享鎖共享鎖 n共享鎖又稱為讀鎖 n定義:若事務T對數(shù)據(jù)對象A加上S鎖,則其它 事務只能再對A加S鎖,而不能加X鎖,直到T 釋放A上的S鎖。 An Introduction to Database System 三、鎖的相容矩陣三、鎖的相容矩陣 Y=Yes,相容的請求,

46、相容的請求 N=No,不相容的請求,不相容的請求 表示不加鎖表示不加鎖 T1 T2 XS- X N NY SNYY -YYY An Introduction to Database System 11.3 封鎖協(xié)議封鎖協(xié)議 n在運用X鎖和S鎖對數(shù)據(jù)對象加鎖時,需要約定一些 規(guī)則,稱這些規(guī)則為封鎖協(xié)議封鎖協(xié)議(Locking Protocol)。 n何時申請X鎖或S鎖 n持鎖時間、何時釋放 n 不同的封鎖協(xié)議,在不同程度上不同程度上為并發(fā)操作的正 確調(diào)度提供一定的保證 n常用的封鎖協(xié)議:三級封鎖協(xié)議 An Introduction to Database System 1級封鎖協(xié)議級封鎖協(xié)議 n

47、定義:事務T在修改數(shù)據(jù)R之前必須先對其加X 鎖,直到事務結(jié)束才釋放。 n正常結(jié)束(COMMIT) n非正常結(jié)束(ROLLBACK) n1級封鎖協(xié)議可防止丟失修改可防止丟失修改 n在1級封鎖協(xié)議中,如果是讀數(shù)據(jù),是不需要加鎖 的,所以它不能保證可重復讀和不讀“臟”數(shù)據(jù)。 An Introduction to Database System 1級封鎖協(xié)議級封鎖協(xié)議 T1T2 Xlock A 獲得 讀A=16 AA-1 寫回A=15 Commit Unlock A Xlock A 等待 等待 等待 等待 獲得Xlock A 讀A=15 AA-1 寫回A=14 Commit Unlock A 沒有沒有

48、丟失修改丟失修改 An Introduction to Database System 1級封鎖協(xié)議級封鎖協(xié)議 讀A=15 Xlock A 獲得 讀A=16 AA-1 寫回A=15 Rollback Unlock A T2T1 讀讀“臟臟”數(shù)據(jù)數(shù)據(jù) An Introduction to Database System 1級封鎖協(xié)議級封鎖協(xié)議 Xlock B 獲得 讀B=100 BB*2 寫回B=200 Commit Unlock B 讀A=50 讀B=100 求和=150 讀A=50 讀B=200 求和=250 (驗算不對) T2T1 不可重復讀不可重復讀 An Introduction to

49、 Database System 2級封鎖協(xié)議級封鎖協(xié)議 n定義: 1級封鎖協(xié)議+事務T在讀取數(shù)據(jù)R前必 須先加S鎖,讀完后即刻釋放S鎖。 n2級封鎖協(xié)議可以防止丟失修改和讀可以防止丟失修改和讀“臟臟” 數(shù)據(jù)。數(shù)據(jù)。 n在2級封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋 放S鎖,所以它不能保證可重復讀不能保證可重復讀。 An Introduction to Database System 2級封鎖協(xié)議級封鎖協(xié)議 不可重復讀不可重復讀 Sclock A 獲得 讀A=50 Unlock A Sclock B 獲得 讀B=100 Unlock B 求和=150 Xlock B 等待 等待 獲得Xlock B 讀

50、B=100 BB*2 寫回B=200 Commit Unlock B T2T1 Sclock A 獲得 讀A=50 Unlock A Sclock B 獲得 讀B=200 Unlock B 求和=250 (驗算不對驗算不對) T2T1 (續(xù)) An Introduction to Database System 3級封鎖協(xié)議級封鎖協(xié)議 n定義: 1級封鎖協(xié)議 + 事務T在讀取數(shù)據(jù)R之 前必須先對其加S鎖,直到事務結(jié)束才釋放。 n3級封鎖協(xié)議可防止丟失修改、讀臟數(shù)據(jù)和不可重可防止丟失修改、讀臟數(shù)據(jù)和不可重 復讀。復讀。 An Introduction to Database System 3級封鎖協(xié)議級封鎖協(xié)議 T1T2 Slock A 讀A=50 Slock B 讀B=100 求和=150 讀A=50 讀B=100 求和=150 Commit Unlock A Unlock B Xlock B 等待 等待 等待 等待 等待 等待 等待 等待 獲得Xloc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論