第7章事務處理_第1頁
第7章事務處理_第2頁
第7章事務處理_第3頁
第7章事務處理_第4頁
第7章事務處理_第5頁
已閱讀5頁,還剩44頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 事務的基本概念事務的基本概念數據庫恢復概述數據庫恢復概述 SQL SQL對事務管理的支持對事務管理的支持事務事務本章小結本章小結 7.1 事務的基本概念事務的基本概念1、事務、事務(Transaction) 是用戶定義的一個數據庫操作序列,這些操作要么全是用戶定義的一個數據庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位。做,要么全不做,是一個不可分割的工作單位。n事務和程序關系:事務和程序關系: (1)程序是靜止的,事務是動態的。事務是程序的執)程序是靜止的,事務是動態的。事務是程序的執行而不是程序本身。行而不是程序本身。 (2)一個程序可分為多個獨立部分同時執行,每一執

2、)一個程序可分為多個獨立部分同時執行,每一執行則是一個不同的事務,即一個程序中可包含多個事務行則是一個不同的事務,即一個程序中可包含多個事務n事務生成:事務生成:n用戶顯式地定義事務用戶顯式地定義事務n由由DBMS按缺省自動劃分事務按缺省自動劃分事務n在在SQL語言中,定義事務的語句有三條:語言中,定義事務的語句有三條: BEGIN TRANSACTION 事務開始事務開始 COMMIT -事務提交事務提交 ROLLBACK -事務回滾事務回滾n事務的分類:事務的分類: (1)只讀型只讀型 SET TRANSACTION SET TRANSACTION READ ONLYREAD ONLY (

3、2)讀寫型讀寫型 SET TRANSACTION SET TRANSACTION READ WRITEREAD WRITE 2、事務的狀態、事務的狀態執行事務執行事務事務無法繼事務無法繼續正常執行續正常執行事務回滾,數據庫恢事務回滾,數據庫恢復到事務開始前狀態復到事務開始前狀態最后一條語最后一條語句被執行后句被執行后成功完成,永成功完成,永久寫入數據庫久寫入數據庫活動活動狀態狀態 失敗失敗 狀態狀態 中止中止 狀態狀態 提交提交 狀態狀態 局部提交局部提交 狀態狀態 事務定義語句與狀態的關系事務定義語句與狀態的關系 ROLLBACKROLLBACKCOMMITCOMMITBEGIN BEGIN

4、 TRANSACTIONTRANSACTION3、事務的特性(、事務的特性(ACID)v 原子性原子性v 一致性一致性v 隔離性隔離性v 持續性持續性nACID特性遭到破壞的因素有:特性遭到破壞的因素有: (1)多個事務并發運行時,不同事務的操作交)多個事務并發運行時,不同事務的操作交叉執行;叉執行; (2)事務在運行過程中被強行停止)事務在運行過程中被強行停止。4、更新事務的執行與恢復更新事務的執行與恢復 更新事務的執行要求:更新事務的執行要求: 更新事務在活動狀態下對數據庫的任何修改都不能直接更新事務在活動狀態下對數據庫的任何修改都不能直接在磁盤中進行,而只能在內存緩沖區中進行。在磁盤中進

5、行,而只能在內存緩沖區中進行。更新事務的恢復:更新事務的恢復:(1 1)從活動狀態轉入失敗狀態的恢復)從活動狀態轉入失敗狀態的恢復 (2 2)從局部提交狀態轉入失敗狀態的恢復。)從局部提交狀態轉入失敗狀態的恢復。 7. 2 數據庫恢復概述數據庫恢復概述n數據庫的恢復:數據庫的恢復: 指指DBMS必須具有把數據庫從錯誤狀態恢復到某一已必須具有把數據庫從錯誤狀態恢復到某一已知的正確狀態知的正確狀態(亦稱為一致狀態或完整狀態亦稱為一致狀態或完整狀態)的功能。的功能。 數據庫恢復原理:數據庫恢復原理:冗余冗余 建立冗余數據常用技術:建立冗余數據常用技術:n數據轉儲數據轉儲n登記日志文件登記日志文件一、

6、數據轉儲一、數據轉儲1. 數據轉儲的概念數據轉儲的概念 轉儲即轉儲即DBA定期地將定期地將整個數據庫復制到磁帶整個數據庫復制到磁帶或另一個磁盤上保存起或另一個磁盤上保存起來的過程。這些備用的來的過程。這些備用的數據文本稱為數據文本稱為后備副本后備副本或后援副本或后援副本。正常正常運行運行Ta Tb Tf 故障故障發生點發生點得到得到副本副本 轉儲轉儲 運行事務運行事務恢復恢復 裝副本裝副本重新運行事務重新運行事務 數據轉儲與數據轉儲與恢復恢復 例例 2、靜態轉儲和動態轉儲靜態轉儲和動態轉儲(1)靜態轉儲)靜態轉儲:是在系統中無運行事務時進行的:是在系統中無運行事務時進行的轉儲操作。轉儲操作。

7、靜態轉儲得到的一定是一個數據一致性的副靜態轉儲得到的一定是一個數據一致性的副本。本。 (2)動態轉儲)動態轉儲:是指轉儲期間允許對數據庫進行:是指轉儲期間允許對數據庫進行存取或修改。即轉儲和用戶事務可以并發執行。存取或修改。即轉儲和用戶事務可以并發執行。3、海量轉儲和增量轉儲海量轉儲和增量轉儲 (1)海量轉儲:海量轉儲:每次轉儲全部數據庫。每次轉儲全部數據庫。 (2)增量轉儲:增量轉儲:每次只轉儲上一次轉儲后更新過每次只轉儲上一次轉儲后更新過的數據。的數據。 二、登記(建立)日志文件二、登記(建立)日志文件 1、日志文件的格式和內容、日志文件的格式和內容 日志文件日志文件用來記錄事務對數據庫的

8、更新操作的文件。用來記錄事務對數據庫的更新操作的文件。n日志文件主要有兩種格式:日志文件主要有兩種格式:v以記錄為單位以記錄為單位v以數據塊為單位以數據塊為單位(1)以記錄為單位的日志文件內容:)以記錄為單位的日志文件內容:v 事務開始、結束標記事務開始、結束標記v 操作對象(表、屬性等)操作對象(表、屬性等)v更新前、后值更新前、后值n例:日志文件例:日志文件 事務編號事務編號 表表 元組標識元組標識 屬性屬性 更新前更新前 更新后更新后 201 201 * * *事務開始事務開始 201 201 庫存庫存 k102 k102 在庫數量在庫數量 410 310410 310 201 201

9、應收帳應收帳 801-2341233 801-2341233 余額余額 1000 60001000 6000 201 201 * * *事務提交事務提交(2 2)以數據塊為單位的日志文件內容:)以數據塊為單位的日志文件內容:n事務標識事務標識n更新前、后的數據塊更新前、后的數據塊 2 2、日志文件的作用、日志文件的作用 進行事務故障、系統進行事務故障、系統故障恢復,并協助后備故障恢復,并協助后備副本進行介質故障恢復。副本進行介質故障恢復。3 3、登記日志文件、登記日志文件應遵循兩條原則:應遵循兩條原則:(1)(1)登記的次序嚴格按并發事務登記的次序嚴格按并發事務執行的時間次序。執行的時間次序。

10、(2)(2)必須先寫日志文件,后寫數必須先寫日志文件,后寫數據庫。據庫。正常正常運行運行Ta Tb Tf 故障故障發生點發生點 靜態轉儲靜態轉儲 運行事務運行事務利用日志文件利用日志文件恢復事務恢復事務 登記日志文件登記日志文件登記日志文件登記日志文件恢復恢復 裝副本裝副本繼續運行繼續運行 一、事務故障一、事務故障及恢復及恢復事務故障事務故障: 是指事務運行過程中由于種種原因使事務未運是指事務運行過程中由于種種原因使事務未運行至正常終止點而夭折的情況。如:行至正常終止點而夭折的情況。如:n運算溢出運算溢出n死鎖而被選中撤銷該事務死鎖而被選中撤銷該事務n違反了完整性規則等違反了完整性規則等事務故

11、障的恢復事務故障的恢復: (1) (1)反向掃描文件日志,查找該事務的更新操作。反向掃描文件日志,查找該事務的更新操作。 (2)(2)對該事務的更新操作執行逆操作。對該事務的更新操作執行逆操作。 (3)(3)重復重復(1)(1)、(2)(2)直到遇此事務的開始標記。直到遇此事務的開始標記。二、系統故障二、系統故障及恢復及恢復(軟故障)(軟故障)系統故障系統故障:是指造成系統停止運轉的任何事件,使得系統是指造成系統停止運轉的任何事件,使得系統要重新啟動。要重新啟動。n例如,特定類型的硬件錯誤例如,特定類型的硬件錯誤(CPU故障故障)、操作系統故障、操作系統故障、DBMS代碼錯誤、突然停電等。代碼

12、錯誤、突然停電等。系統故障的恢復系統故障的恢復:n恢復操作:恢復操作:v要撤銷故障發生時未完成的事務要撤銷故障發生時未完成的事務v重做重做(REDO)已完成的事務已完成的事務n系統故障的恢復是由系統在重新啟動時自動完成的,不系統故障的恢復是由系統在重新啟動時自動完成的,不需要用戶干預。需要用戶干預。三、介質故障(硬故障)三、介質故障(硬故障)介質故障介質故障:是指外存設備故障。如:是指外存設備故障。如:n磁盤損壞磁盤損壞n磁頭碰撞盤面磁頭碰撞盤面n瞬時強磁場干擾瞬時強磁場干擾介質故障的恢復介質故障的恢復: (1)(1)裝入最新的數據庫后備副本,使數據庫恢復到最近一次轉儲時裝入最新的數據庫后備副

13、本,使數據庫恢復到最近一次轉儲時的一致性狀態。的一致性狀態。 (2)(2)裝入相應的日志文件副本,重做已完成的事務。裝入相應的日志文件副本,重做已完成的事務。 介質故障的恢復需要介質故障的恢復需要DBA介入。但介入。但DBA只需要重裝最近轉儲只需要重裝最近轉儲的數據庫副本和有關的各日志文件副本,然后執行系統提供的恢的數據庫副本和有關的各日志文件副本,然后執行系統提供的恢復命令即可,具體的恢復操作仍由復命令即可,具體的恢復操作仍由DBMS完成。完成。四、四、具有檢查點的恢復技術具有檢查點的恢復技術 n利用日志文件進行數據庫恢復時存在的問題:利用日志文件進行數據庫恢復時存在的問題:(1)搜索整個日

14、志文件將耗費大量的時間。)搜索整個日志文件將耗費大量的時間。(2)很多需要)很多需要REDO處理的事務實際上已經將它們的處理的事務實際上已經將它們的更新操作結果寫到數據庫中了,然而恢復子系統又重新執更新操作結果寫到數據庫中了,然而恢復子系統又重新執行了這些操作,浪費了大量時間。行了這些操作,浪費了大量時間。n解決:解決:使用檢查點方法。使用檢查點方法。 當事務當事務T在一個檢查點之前提交,在一個檢查點之前提交,T對數據庫所做的修對數據庫所做的修改一定都已經寫入數據庫,這樣,在進行恢復處理時,就改一定都已經寫入數據庫,這樣,在進行恢復處理時,就不必對事務不必對事務T執行執行REDO操作,從而改善

15、了恢復效率。操作,從而改善了恢復效率。 n增加:增加:日志文件中的檢查點記錄日志文件中的檢查點記錄 一個重新開始文件一個重新開始文件 并讓恢復子系統在登錄日志文件期間動態地維護日志。并讓恢復子系統在登錄日志文件期間動態地維護日志。n檢查點記錄的內容包括檢查點記錄的內容包括: 建立檢查點時刻所有正在執行的事務清單建立檢查點時刻所有正在執行的事務清單(Ti)。 各事務最近一個日志記錄的地址各事務最近一個日志記錄的地址(Di)。Ci的記錄地址的記錄地址Cj的記錄地址的記錄地址重新開始文件重新開始文件日志文件日志文件T1 D1 T2 D2 日日志志文文件件檢查點檢查點記錄記錄檢查點檢查點Ci的重新的重

16、新開始記開始記錄錄n動態維護日志文件的方法是周期性地執行動態維護日志文件的方法是周期性地執行: 建立檢查點,保存數建立檢查點,保存數據庫狀態。據庫狀態。具體步驟是具體步驟是: 將當前所有日志記錄寫入磁盤日志文件上;將當前所有日志記錄寫入磁盤日志文件上; 在日志文件中寫入一個檢查點記錄;在日志文件中寫入一個檢查點記錄; 將當前所有數據記錄寫入磁盤的數據庫中;將當前所有數據記錄寫入磁盤的數據庫中; 把檢查點記錄在日志文件中的地址寫入重新開始文件。把檢查點記錄在日志文件中的地址寫入重新開始文件。恢復系統將根據事務的不同狀態采取不同的恢復策略恢復系統將根據事務的不同狀態采取不同的恢復策略:時時間間系統

17、故障系統故障Ti檢查點檢查點TcT1T2T3T4T5在檢查點前開始在檢查點前開始,在在其后且故障點前提交其后且故障點前提交撤銷撤銷重做重做不重做不重做n系統使用檢查點方法進行恢復的系統使用檢查點方法進行恢復的步驟步驟是:是: 從重新開始文件中找到最后一個檢查點記錄在日志文件中的地從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址,由該地址在日志文件中找到最后一個檢查點記錄。址,由該地址在日志文件中找到最后一個檢查點記錄。 由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單ACTIVE-LIST。 從檢查點開始正向掃描日志文件從檢查

18、點開始正向掃描日志文件 如有新開始的事務如有新開始的事務Tj,把把Tj暫時放入暫時放入UNDO-LIST隊列;隊列; 如有提交的事務如有提交的事務Tj,把,把Tj從從UNDO-LIST隊列移到隊列移到REDO-LIST 隊列;直到日志文件結束。隊列;直到日志文件結束。 對對UNDO-LIST中的每個事務中的每個事務 執行執行UNDO操作,對操作,對REDO-LIST 中的每個事務執行中的每個事務執行REDO操作。操作。五、五、數據庫鏡像數據庫鏡像 n根據根據DBA的要求,自動把整的要求,自動把整個數據庫或其中的關鍵數據個數據庫或其中的關鍵數據復制到另一個磁盤上。復制到另一個磁盤上。DBMS自動

19、保證鏡像數據與自動保證鏡像數據與主數據的一致性。主數據的一致性。n作用:作用: n一旦出現介質故障,可由鏡一旦出現介質故障,可由鏡像磁盤繼續提供使用,同時像磁盤繼續提供使用,同時DBMS自動利用鏡像磁盤數自動利用鏡像磁盤數據進行數據庫的恢復,不需據進行數據庫的恢復,不需要關閉系統和重裝數據庫副要關閉系統和重裝數據庫副本。本。n在沒有出現故障時,數據庫在沒有出現故障時,數據庫鏡像還可以用于并發操作,鏡像還可以用于并發操作,即當一個用戶對數據加排它即當一個用戶對數據加排它鎖修改數據時,其他用戶可鎖修改數據時,其他用戶可以讀鏡像數據庫上的數據,以讀鏡像數據庫上的數據,而不必等待該用戶釋放鎖。而不必等

20、待該用戶釋放鎖。 n圖圖7.6 數據庫鏡像數據庫鏡像update鏡像鏡像DB復制復制應用應用1應用應用3應用應用4應用應用2read恢復恢復update并發操作并發操作在多用戶共享系統中,多個用戶同時存在多用戶共享系統中,多個用戶同時存取同一數據的情形稱為并發操作。取同一數據的情形稱為并發操作。n并發操作可能帶來的問題:并發操作可能帶來的問題: (1)破壞數據庫的一致性)破壞數據庫的一致性 (2)破壞事務的隔離性)破壞事務的隔離性n并發操作帶來的三類數據不并發操作帶來的三類數據不一致性:一致性: 1. 丟失修改丟失修改 T1、T2讀入同一數據并修讀入同一數據并修改,改,T2提交的結果破壞了提交

21、的結果破壞了T1提交的結果。提交的結果。A=16甲事務甲事務讀出讀出A=16乙事務乙事務 讀出讀出A=16A1寫回寫回A1 寫回寫回A=15 2不可重復讀不可重復讀 T1讀數據后,讀數據后,T2執行更執行更新操作,使新操作,使T1無法再現無法再現前一次讀取結果。前一次讀取結果。B=100甲事務甲事務讀出讀出B=100乙事務乙事務 刪除刪除B 讀不出讀不出Bn不可重復讀包括三種情況:不可重復讀包括三種情況: (1) 某事務兩次讀同一數據時,某事務兩次讀同一數據時,得到的值不同。得到的值不同。 (2)某事務再次按相同條件讀某事務再次按相同條件讀取數據時,發現記錄丟失。取數據時,發現記錄丟失。 (3

22、)某事務再次按相同條件讀取某事務再次按相同條件讀取數據時,發現多了記錄。數據時,發現多了記錄。 3臟讀臟讀 T1修改數據并寫回修改數據并寫回磁盤,磁盤,T2讀取同一讀取同一數據后,數據后,T1被撤銷被撤銷即數據恢復原值,即數據恢復原值,T2讀的數據與讀的數據與DB中中的不一致,稱的不一致,稱“臟臟”數據。數據。n并發控制方法:并發控制方法:封封鎖鎖C=100甲事務甲事務讀出讀出C C*2寫回寫回乙事務乙事務 讀出讀出 C=200撤銷撤銷C=200C=100“臟臟”數據數據n封鎖封鎖:指事務:指事務T在對某個數據在對某個數據對象操作之前,對其加鎖。對象操作之前,對其加鎖。在在T未釋放鎖之前,其他

23、的事未釋放鎖之前,其他的事務不能更新此數據對象。務不能更新此數據對象。n基本的封鎖類型有兩種:基本的封鎖類型有兩種:n排它鎖排它鎖(X鎖或寫鎖鎖或寫鎖):n保證其他事務在保證其他事務在T釋放釋放A上的上的鎖之前,不能再讀取和修改鎖之前,不能再讀取和修改A。n共享鎖共享鎖(S鎖或讀鎖鎖或讀鎖):n保證其他事務可以讀保證其他事務可以讀A,但在,但在T釋放釋放A上的上的S鎖之前,不能鎖之前,不能對對A做任何修改。做任何修改。數據數據對象對象A事務事務TS鎖鎖T可讀、不可改可讀、不可改A禁止加禁止加X鎖鎖數據數據對象對象A事務事務TX鎖鎖T可讀、修改可讀、修改A事務事務Ti禁止加鎖禁止加鎖事務事務Ti

24、可加可加S鎖鎖n共享鎖(S鎖)n排它鎖(X鎖)n封鎖類型的相容矩陣 T1 T2 X S - X N N Y S N Y Y Y=Yes,相容的請求 - Y Y Y N=No,不相容的請求 n封鎖協議:對數據對象加鎖時,約定的規則。封鎖協議:對數據對象加鎖時,約定的規則。n封鎖協議是為了保證并發操作的正確調度的。封鎖協議是為了保證并發操作的正確調度的。n三級封鎖協議:三級封鎖協議: 1、一級封鎖協議、一級封鎖協議 是事務是事務T在修改數據在修改數據R之前必須先對其加之前必須先對其加X鎖,直到鎖,直到事務事務T結束結束(COMMIT和和ROLLBACK)才釋放。才釋放。n作用:可防止丟失修改,并保

25、證事務作用:可防止丟失修改,并保證事務T是可恢復的。是可恢復的。2、二級封鎖協議、二級封鎖協議 是一級封鎖協議加上事務是一級封鎖協議加上事務T在讀取數據在讀取數據R之前必須先對其加之前必須先對其加S鎖,鎖,讀完后即可釋放讀完后即可釋放S鎖。鎖。n作用:防止丟失修改,還可進一步防止讀作用:防止丟失修改,還可進一步防止讀“臟臟”數據。數據。 3、三級封鎖協議、三級封鎖協議 是一級封鎖協議加上事務是一級封鎖協議加上事務T在讀取數據在讀取數據R之前必須先之前必須先對其加對其加S鎖,直到事務結束才釋放。鎖,直到事務結束才釋放。n作用:除防止丟失修改和讀作用:除防止丟失修改和讀“臟臟”數據外,還可防止數據

26、外,還可防止不可重復讀。不可重復讀。n活鎖:活鎖:使某個事務永遠處于等待狀態,而得不到執行的使某個事務永遠處于等待狀態,而得不到執行的現象稱為活鎖。現象稱為活鎖。事務事務T1S鎖鎖請求加鎖請求加鎖事務事務T2事務事務T3事務事務T4等待等待數據數據D避免活鎖的方法:避免活鎖的方法:先來先服務。先來先服務。T2申請D上的X鎖,而D上已有S鎖,此時,T3、T4. 分別申請D上的S鎖,造成T2永遠等待。加加S鎖鎖n死鎖:死鎖:P.314數據數據R1數據數據R2事務事務T1事務事務T2請求加鎖請求加鎖1、死鎖的預防、死鎖的預防 (OS中預防死鎖的方法)中預防死鎖的方法)(1)一次加鎖法)一次加鎖法 要

27、求每個事務必須一次將所要使用的數據全部加鎖。要求每個事務必須一次將所要使用的數據全部加鎖。缺點:降低系統的并發度;難于確定每個事務所要封鎖的缺點:降低系統的并發度;難于確定每個事務所要封鎖的數據對象。數據對象。 (2)順序封鎖法)順序封鎖法 預先對數據對象規定一個封鎖順序,所有事務都按這個預先對數據對象規定一個封鎖順序,所有事務都按這個順序實行封鎖。順序實行封鎖。缺點:難于按規定的順序施加封鎖。缺點:難于按規定的順序施加封鎖。注意:注意:這些方法并不適合數據庫的特點。這些方法并不適合數據庫的特點。2 2、死鎖的診斷、死鎖的診斷 (1)(1)超時法超時法 事務等待時間超過規定時限,事務等待時間超

28、過規定時限,就認為發生了死鎖。就認為發生了死鎖。 2 2、死鎖的診斷、死鎖的診斷 (1)(1)超時法超時法 事務等待時間超過規定時限,事務等待時間超過規定時限,就認為發生了死鎖。就認為發生了死鎖。 (2)(2)等待圖法等待圖法 檢測事務等待圖中是否存在回路。檢測事務等待圖中是否存在回路。n事務等待有向圖:結點是事務,弧線T1T2表示事務T1正在等待T2加了鎖的項。若圖中出現回路,表明有死鎖發生。n當死鎖狀態發生時,系統必須回滾其中一個事務或多個事務,且使得代價最小。T1T2T5T4T3T1T2T5T4T3無環等待圖有環等待圖n用事務等待圖動態反映所有事務的等待情況 n事務等待圖是一個有向圖G=

29、(T,U) nT為結點的集合,每個結點表示正運行的事務 nU為邊的集合,每條邊表示事務等待的情況 n若T1等待T2,則T1,T2之間劃一條有向邊,從T1指向T2 n并發控制子系統周期性地(比如每隔1 min)檢測事務等待圖,如果發現圖中存在回路,則表示系統中出現了死鎖。2 2、死鎖的診斷、死鎖的診斷 (1)(1)超時法超時法 事務等待時間超過規定時限,事務等待時間超過規定時限,就認為發生了死鎖。就認為發生了死鎖。 (2)(2)等待圖法等待圖法 檢測事務等待圖中是否存在回路。檢測事務等待圖中是否存在回路。3 3、死鎖的解除、死鎖的解除 選擇一個處理代價最小的事務,選擇一個處理代價最小的事務,將其

30、撤消,釋放此事務持有的所有鎖。將其撤消,釋放此事務持有的所有鎖。時間 更新事務T1 T2 T3 t1 T1: SRead A t2 T2: SRead B t3 T2: B=B-10 t4 T2: XWrite B t5 T3: SRead A t6 T3: A=A+10 t7 T3: XWrite A t8 T1: SRead B t9 T2: SRead A t10 T4: SRead C t11 T4: C=C+5 t12 T4: Xwrite C t13 T4: Commit n調度:調度:事務的執行次序。事務的執行次序。n調度方式:調度方式:(1)串行調度)串行調度(2)并行調度)并

31、行調度n串行調度:串行調度:多個事務依次執行的調度。多個事務依次執行的調度。n并行調度:并行調度:利用分時的方法處理多個事務的調度。利用分時的方法處理多個事務的調度。n可串行化調度可串行化調度 :如果一個并發調度執行的結果等價如果一個并發調度執行的結果等價于某一個串行調度的結果,稱這種調度策略為可串于某一個串行調度的結果,稱這種調度策略為可串行化的調度。行化的調度。n例:表例:表8.5的串行調度(的串行調度(T1T2) 執行結果:執行結果:A=3,B=4;n例:表例:表8.5的串行調度(的串行調度(T2T1) 執行結果:執行結果:A=4,B=3;n例:表例:表8.5并行調度并行調度(d) 執行

32、結果:執行結果:A=3,B=4; 與與T1T2的串行調度結果相同,為的串行調度結果相同,為可串行化調度可串行化調度。n例:表例:表8.5 并行調度并行調度 執行結果:執行結果:A=3,B=3; 與與T1T2, T2T1的串行調度結果都相同,為的串行調度結果都相同,為不可串不可串行化調度行化調度。注意注意 :(:(1)一組事務并發調度的正確性準則:一組事務并發調度的正確性準則:可串行可串行化調度。化調度。 (2)一組事務的可串行化調度)一組事務的可串行化調度不惟一不惟一。n兩段鎖協議:兩段鎖協議:指所有事務必須分兩個階段對數據項加鎖指所有事務必須分兩個階段對數據項加鎖和解鎖。和解鎖。n獲得封鎖:

33、獲得封鎖:對任何數據進行讀、寫操作之前,要申請并對任何數據進行讀、寫操作之前,要申請并獲得對該數據的封鎖;獲得對該數據的封鎖;n釋放封鎖:釋放封鎖:釋放一個封鎖后,事務不再申請和獲得任何釋放一個封鎖后,事務不再申請和獲得任何其他封鎖。其他封鎖。 例如:事務例如:事務T遵守兩段鎖協議,其封鎖序列是;遵守兩段鎖協議,其封鎖序列是; Slock A Slock B Xlock C Unlock B Unlock A Unlock C |n結論:結論:若并發執行的所有事務均遵守兩段鎖協議,則對若并發執行的所有事務均遵守兩段鎖協議,則對這些事務的任何并發調度策略都是可串行化的。這些事務的任何并發調度策略

34、都是可串行化的。n說明:事務遵守兩段鎖協議是可串行化調度的充分條件,說明:事務遵守兩段鎖協議是可串行化調度的充分條件,而不是必要條件。而不是必要條件。n封鎖粒度封鎖粒度:封鎖對象的大小。封鎖對象的大小。n封鎖對象:封鎖對象:屬性、元組、關系、數據庫屬性、元組、關系、數據庫n封鎖粒度與系統的并發度和并發控制的開銷密切相關:封鎖粒度與系統的并發度和并發控制的開銷密切相關:n 封鎖的粒度越大,并發度越小,系統開銷越小;封鎖的粒度越大,并發度越小,系統開銷越小;n 封鎖的粒度越小,并發度越高,系統開銷越大。封鎖的粒度越小,并發度越高,系統開銷越大。n多粒度封鎖:多粒度封鎖:一個系統中同時支持多種封鎖粒

35、度供不同一個系統中同時支持多種封鎖粒度供不同事務選擇的封鎖方法。事務選擇的封鎖方法。n封鎖粒度選擇原則:封鎖粒度選擇原則:(1)需處理大量元組的事務以關系為封鎖粒度。)需處理大量元組的事務以關系為封鎖粒度。(2)需處理多個關系的大量元組的事務以數據庫為封鎖)需處理多個關系的大量元組的事務以數據庫為封鎖粒度。粒度。(3)處理少量元組的事務以元組為封鎖粒度。)處理少量元組的事務以元組為封鎖粒度。一、多粒度封鎖一、多粒度封鎖1. 定義多粒度樹定義多粒度樹n四級粒度樹四級粒度樹關系關系R1 關系關系Rn 數據庫數據庫元組元組 元組元組 元組元組 元組元組列列 列列 列列 列列 2. 多粒度樹封鎖協議多

36、粒度樹封鎖協議n可對多粒度樹中的每個結點可對多粒度樹中的每個結點獨立加鎖。(注意:自動對獨立加鎖。(注意:自動對其所有后裔結點加同類型的其所有后裔結點加同類型的鎖。)鎖。)n多粒度封鎖方式:顯式封鎖多粒度封鎖方式:顯式封鎖和隱式封鎖。和隱式封鎖。 n顯式封鎖顯式封鎖是應事務的要求直接是應事務的要求直接加到數據對象上的封鎖;加到數據對象上的封鎖;n隱式封鎖隱式封鎖是該數據對象沒有獨是該數據對象沒有獨立加鎖,是由于其上級結點加立加鎖,是由于其上級結點加鎖而使該數據對象加上了鎖。鎖而使該數據對象加上了鎖。數據庫數據庫關系關系R1 關系關系Rn 元組元組 元組元組 元組元組 元組元組事務事務T1列列 列列 列列 列列 n封鎖沖突檢查:封鎖沖突檢查: (1)與顯示封鎖沖突(本結點)與顯示封鎖沖突(本結點) (2)顯示封鎖

溫馨提示

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

評論

0/150

提交評論