火龍果oracle并發(fā)控制_第1頁
火龍果oracle并發(fā)控制_第2頁
火龍果oracle并發(fā)控制_第3頁
火龍果oracle并發(fā)控制_第4頁
火龍果oracle并發(fā)控制_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第十一章第十一章 并發(fā)控制并發(fā)控制授課內(nèi)容授課內(nèi)容 11.1 并發(fā)控制概述并發(fā)控制概述 11.2 封鎖封鎖(Locking) 11.3 活鎖和死鎖活鎖和死鎖 11.4 并發(fā)調(diào)度的可串行性并發(fā)調(diào)度的可串行性 11.5 兩段鎖協(xié)議兩段鎖協(xié)議 11.6 封鎖的粒度封鎖的粒度 11.1 并發(fā)控制概述并發(fā)控制概述并發(fā)控制概述并發(fā)控制概述 多用戶數(shù)據(jù)庫系統(tǒng)多用戶數(shù)據(jù)庫系統(tǒng) 允許多個用戶同時使用的數(shù)據(jù)庫系統(tǒng)稱為多用允許多個用戶同時使用的數(shù)據(jù)庫系統(tǒng)稱為多用戶數(shù)據(jù)庫系統(tǒng)。戶數(shù)據(jù)庫系統(tǒng)。 多用戶數(shù)據(jù)庫系統(tǒng)面臨著執(zhí)行多事務(wù)的情況。多用戶數(shù)據(jù)庫系統(tǒng)面臨著執(zhí)行多事務(wù)的情況。 多事務(wù)執(zhí)行方式多事務(wù)執(zhí)行方式 (1)事務(wù)串行

2、執(zhí)行事務(wù)串行執(zhí)行每個時刻只有一個事務(wù)運行,其他事務(wù)必須每個時刻只有一個事務(wù)運行,其他事務(wù)必須等到這個事務(wù)結(jié)束以后方能運行。等到這個事務(wù)結(jié)束以后方能運行。不能充分利用系統(tǒng)資源,不能發(fā)揮數(shù)據(jù)庫共不能充分利用系統(tǒng)資源,不能發(fā)揮數(shù)據(jù)庫共享資源的特點。享資源的特點。并發(fā)控制概述并發(fā)控制概述 多事務(wù)執(zhí)行方式多事務(wù)執(zhí)行方式 (2)交叉并發(fā)方式交叉并發(fā)方式是單處理機系統(tǒng)中的是單處理機系統(tǒng)中的并發(fā)方式,多個并行并發(fā)方式,多個并行事務(wù)的操作輪流交叉事務(wù)的操作輪流交叉運行。運行。能夠減少處理機的空能夠減少處理機的空閑時間,提高系統(tǒng)的閑時間,提高系統(tǒng)的效率。效率。并發(fā)控制概述并發(fā)控制概述 多事務(wù)執(zhí)行方式多事務(wù)執(zhí)行方式

3、 (3)同時并發(fā)方式同時并發(fā)方式多處理機系統(tǒng)中,每個處理機可以運行多處理機系統(tǒng)中,每個處理機可以運行一個事務(wù),多個處理機可以同時運行多一個事務(wù),多個處理機可以同時運行多個事務(wù),實現(xiàn)多個事務(wù)真正的并行運行。個事務(wù),實現(xiàn)多個事務(wù)真正的并行運行。最理想的并發(fā)方式,但受制于硬件環(huán)境最理想的并發(fā)方式,但受制于硬件環(huán)境并發(fā)控制概述并發(fā)控制概述 事務(wù)并發(fā)執(zhí)行帶來的問題事務(wù)并發(fā)執(zhí)行帶來的問題并發(fā)執(zhí)行的多個事務(wù)可能會同時存取同并發(fā)執(zhí)行的多個事務(wù)可能會同時存取同一數(shù)據(jù),造成數(shù)據(jù)的不一致,破壞事務(wù)一數(shù)據(jù),造成數(shù)據(jù)的不一致,破壞事務(wù)的隔離性和數(shù)據(jù)庫的一致性。的隔離性和數(shù)據(jù)庫的一致性。DBMS必須提供并發(fā)控制機制解決事

4、務(wù)并必須提供并發(fā)控制機制解決事務(wù)并發(fā)執(zhí)行帶來的問題。(并發(fā)控制器)發(fā)執(zhí)行帶來的問題。(并發(fā)控制器)并發(fā)控制機制是衡量一個并發(fā)控制機制是衡量一個DBMS性能的重性能的重要標志之一。要標志之一。并發(fā)控制概述并發(fā)控制概述 并發(fā)操作帶來的數(shù)據(jù)不一致性并發(fā)操作帶來的數(shù)據(jù)不一致性丟失修改(丟失修改(lost update)不可重復(fù)讀(不可重復(fù)讀(non-repeatable read)讀讀“臟臟”數(shù)據(jù)(數(shù)據(jù)(dirty read)并發(fā)控制概述并發(fā)控制概述 丟失修改丟失修改丟失修改是指事務(wù)丟失修改是指事務(wù)T1與事務(wù)與事務(wù)T2從數(shù)據(jù)從數(shù)據(jù)庫中讀入同一數(shù)據(jù)并庫中讀入同一數(shù)據(jù)并修改,事務(wù)修改,事務(wù)T2的提的提交結(jié)

5、果破壞了事務(wù)交結(jié)果破壞了事務(wù)T1提交的結(jié)果,導(dǎo)提交的結(jié)果,導(dǎo)致事務(wù)致事務(wù)T1的修改被的修改被丟失。丟失。T1T2讀讀A=16讀讀A=16 AA-1,寫回寫回A=15AA-1,寫回寫回A=15并發(fā)控制概述并發(fā)控制概述CREATE TABLE sales(id char(2),qty int)insert into sales values( A1, 10 )并發(fā)控制概述并發(fā)控制概述 事務(wù)一事務(wù)一begin trandeclare sl intselect sl = qty from sales where id = A1waitfor delay 00:00:15.000update sales

6、 set qty = sl - 1 where id = A1commit tran 事務(wù)二事務(wù)二begin trandeclare sl intselect sl = qty from sales where id = A1waitfor delay 00:00:15.000update sales set qty = sl - 1 where id = A1commit tran并發(fā)控制概述并發(fā)控制概述 不可重復(fù)度不可重復(fù)度 1、事務(wù)、事務(wù)T1讀取某一數(shù)據(jù)后,事務(wù)讀取某一數(shù)據(jù)后,事務(wù)T2對其做了對其做了修改,當事務(wù)修改,當事務(wù)T1再次讀該數(shù)據(jù)時,得到與前再次讀該數(shù)據(jù)時,得到與前一次不同的值

7、。一次不同的值。T1讀讀B=100讀讀B=100BB*2寫回寫回B=200讀讀B=200T2begin trandeclare sl intdeclare s2 intselect sl = qty from sales where id = A1print(sl)waitfor delay 00:00:30.000select s2 = qty from sales where id = A1print(s2)commit tranbegin tranupdate sales set qty = qty *2 where id = A1commit tran并發(fā)控制概述并發(fā)控制概述 不可重復(fù)

8、度不可重復(fù)度2、事務(wù)、事務(wù)T1按一定條件讀取某些數(shù)據(jù)記錄按一定條件讀取某些數(shù)據(jù)記錄后,事務(wù)后,事務(wù)T2刪除了其中部分記錄,當事刪除了其中部分記錄,當事務(wù)務(wù)T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄神密地消失了。某些記錄神密地消失了。3、事務(wù)、事務(wù)T1按一定條件讀取某些數(shù)據(jù)記錄按一定條件讀取某些數(shù)據(jù)記錄后,事務(wù)后,事務(wù)T2插入了一些記錄,當事務(wù)插入了一些記錄,當事務(wù)T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了一些記錄。一些記錄。后兩種不可重復(fù)讀有時也稱為后兩種不可重復(fù)讀有時也稱為幻影現(xiàn)象?;糜艾F(xiàn)象。并發(fā)控制概述并發(fā)控制概述 讀讀“臟臟”數(shù)

9、據(jù)數(shù)據(jù) 事務(wù)事務(wù)T1修改某一數(shù)據(jù),并將其寫回磁盤,修改某一數(shù)據(jù),并將其寫回磁盤,事務(wù)事務(wù)T2讀取同一數(shù)據(jù)后,事務(wù)讀取同一數(shù)據(jù)后,事務(wù)T1由于某由于某種原因被撤消,這時事務(wù)種原因被撤消,這時事務(wù)T1已修改過的已修改過的數(shù)據(jù)恢復(fù)原值,事務(wù)數(shù)據(jù)恢復(fù)原值,事務(wù)T2讀到的數(shù)據(jù)就與讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致,是不正確的數(shù)數(shù)據(jù)庫中的數(shù)據(jù)不一致,是不正確的數(shù)據(jù),又稱為據(jù),又稱為“臟臟”數(shù)據(jù)。數(shù)據(jù)。并發(fā)控制概述并發(fā)控制概述 讀讀“臟臟”數(shù)據(jù)數(shù)據(jù) (dirty read)T1T2讀讀C=16CC*2寫回寫回C=32rollbackC恢復(fù)為恢復(fù)為16讀讀C=32 設(shè)有兩個事務(wù)設(shè)有兩個事務(wù)T1、T2,其并發(fā)操

10、作如下圖所示,其并發(fā)操作如下圖所示,下面評價正確的是下面評價正確的是_。 A 不存在問題不存在問題 B丟失修改丟失修改C不能重復(fù)讀不能重復(fù)讀 D讀讀“臟臟”數(shù)據(jù)數(shù)據(jù) T1 T2 讀讀A=10,B=5 讀讀A=10 AA*2寫回寫回 讀讀A=20,B=5 求和求和25驗證錯驗證錯 設(shè)有兩個事務(wù)設(shè)有兩個事務(wù)T1、T2,其并發(fā)操作如下圖所示,其并發(fā)操作如下圖所示,下面評價正確的是下面評價正確的是_。 A 不存在問題不存在問題 B丟失修改丟失修改C不能重復(fù)讀不能重復(fù)讀 D讀讀“臟臟”數(shù)據(jù)數(shù)據(jù) T1 T2 讀讀A=10 讀讀A=10A=A-1,寫回,寫回A15 A=A-1,寫回,寫回A15 并發(fā)控制概述

11、并發(fā)控制概述 事務(wù)并發(fā)執(zhí)行會導(dǎo)致數(shù)據(jù)不一致性事務(wù)并發(fā)執(zhí)行會導(dǎo)致數(shù)據(jù)不一致性由于并發(fā)操作破壞了事務(wù)的隔離性由于并發(fā)操作破壞了事務(wù)的隔離性 并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操作,使一個事務(wù)的執(zhí)行不受其他事務(wù)的干作,使一個事務(wù)的執(zhí)行不受其他事務(wù)的干擾,從而避免造成數(shù)據(jù)的不一致性擾,從而避免造成數(shù)據(jù)的不一致性 并發(fā)控制的主要技術(shù)并發(fā)控制的主要技術(shù)封鎖封鎖(Locking)時間戳?xí)r間戳(Timestamp)樂觀控制法樂觀控制法 商用的商用的DBMS一般都采用封鎖方法一般都采用封鎖方法 11.2 封鎖封鎖封鎖封鎖 什么是封鎖什么是封鎖封鎖就是事務(wù)封鎖就是事務(wù)T在對某個

12、數(shù)據(jù)對象(例如在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。請求,對其加鎖。如果事務(wù)如果事務(wù)T的加鎖請求得到滿足,事務(wù)的加鎖請求得到滿足,事務(wù)T就對該數(shù)據(jù)對象有了一定的控制。就對該數(shù)據(jù)對象有了一定的控制。如果事務(wù)如果事務(wù)T的加鎖請求得不到滿足,事務(wù)的加鎖請求得不到滿足,事務(wù)T就不能控制該數(shù)據(jù)對象。就不能控制該數(shù)據(jù)對象。封鎖是實現(xiàn)并發(fā)控制的一個非常重要的封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)技術(shù)封鎖封鎖 基本封鎖類型基本封鎖類型排它鎖(排它鎖(Exclusive lock,簡記為,簡記為X鎖)鎖)共享鎖(共享鎖(Share lock,簡

13、記為,簡記為S鎖)鎖)封鎖封鎖 排它鎖(排它鎖(Exclusive lock,簡記為,簡記為X鎖)鎖) 排它鎖又稱為寫鎖。排它鎖又稱為寫鎖。 若事務(wù)若事務(wù)T對數(shù)據(jù)對象對數(shù)據(jù)對象A加上加上X鎖,允許鎖,允許T讀取和讀取和修改修改A,其它任何事務(wù)都不能再對,其它任何事務(wù)都不能再對A加任何類加任何類型的鎖,直到型的鎖,直到T釋放釋放A上的鎖。上的鎖。 共享鎖(共享鎖(Share lock,簡記為,簡記為S鎖)鎖) 共享鎖又稱為讀鎖。共享鎖又稱為讀鎖。 若事務(wù)若事務(wù)T對數(shù)據(jù)對象對數(shù)據(jù)對象A加上加上S鎖,則事務(wù)鎖,則事務(wù)T可以可以讀讀A但不能修改但不能修改A,其它事務(wù)只能再對,其它事務(wù)只能再對A加加S鎖

14、,鎖,而不能加而不能加X鎖,直到鎖,直到T釋放釋放A上的上的S鎖。鎖。封鎖封鎖 封鎖相容性封鎖相容性 T2 T1 XSXSNNYNYYYYYY=Yes,相容的請求,相容的請求N=No,不相容的請求,不相容的請求封鎖協(xié)議封鎖協(xié)議 封鎖協(xié)議(封鎖協(xié)議(Locking Protocol)在運用在運用X鎖和鎖和S鎖對數(shù)據(jù)對象加鎖時,需鎖對數(shù)據(jù)對象加鎖時,需要約定一些規(guī)則(封鎖協(xié)議):要約定一些規(guī)則(封鎖協(xié)議):何時申請何時申請X鎖或鎖或S鎖鎖何時釋放何時釋放X鎖或鎖或S鎖鎖 常用的封鎖協(xié)議:三級封鎖協(xié)議。常用的封鎖協(xié)議:三級封鎖協(xié)議。封鎖協(xié)議封鎖協(xié)議 一級封鎖協(xié)議一級封鎖協(xié)議事務(wù)事務(wù)T在修改數(shù)據(jù)在修改

15、數(shù)據(jù)R之前必須先對其加之前必須先對其加X鎖,直到事務(wù)結(jié)束才釋放。鎖,直到事務(wù)結(jié)束才釋放。一級封鎖協(xié)議可防止丟失修改一級封鎖協(xié)議可防止丟失修改在一級封鎖協(xié)議中,如果是讀數(shù)據(jù),是在一級封鎖協(xié)議中,如果是讀數(shù)據(jù),是不需要加鎖的,所以它不能避免不可重不需要加鎖的,所以它不能避免不可重復(fù)讀和讀復(fù)讀和讀“臟臟”數(shù)據(jù)。數(shù)據(jù)。T1T2讀讀A=16讀讀A=16 AA-1,寫回寫回A=15AA-1,寫回寫回A=15T1T2Xlock A,獲得鎖,獲得鎖讀讀A=16AA-1,寫回寫回A=15CommitUnlock AXlock A等待等待獲得鎖獲得鎖讀讀A=15, AA-1寫回寫回A=14CommitUnlock

16、 A 一級封鎖協(xié)議可防止丟失修改一級封鎖協(xié)議可防止丟失修改T1T2讀讀C=16CC*2寫回寫回C=32 rollbackC恢復(fù)為恢復(fù)為16 讀讀C=32 T1T2Xlock C,獲得鎖,獲得鎖讀讀C=16CC*2寫回寫回C=32rollbackC恢復(fù)為恢復(fù)為16Unlock C讀讀C=32一級封鎖協(xié)議不可避免讀一級封鎖協(xié)議不可避免讀“臟臟”數(shù)據(jù)數(shù)據(jù)T1T2讀讀B=100讀讀B=200Xlock B, 獲得鎖獲得鎖讀讀B=100BB*2寫回寫回B=200Commit Unlock BT1T2讀讀B=100讀讀B=200讀讀B=100BB*2寫回寫回B=200一級封鎖協(xié)議不可避免不可重復(fù)讀一級封鎖

17、協(xié)議不可避免不可重復(fù)讀封鎖協(xié)議封鎖協(xié)議 二級封鎖協(xié)議二級封鎖協(xié)議一級封鎖協(xié)議一級封鎖協(xié)議+事務(wù)事務(wù)T在讀取數(shù)據(jù)在讀取數(shù)據(jù)R前必前必須先加須先加S鎖,鎖,讀完后不等事務(wù)結(jié)束讀完后不等事務(wù)結(jié)束即可釋即可釋放放S鎖。鎖。二級封鎖協(xié)議可以防止丟失修改和讀二級封鎖協(xié)議可以防止丟失修改和讀“臟臟”數(shù)據(jù)。數(shù)據(jù)。在二級封鎖協(xié)議中,由于讀完數(shù)據(jù)后即在二級封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋放可釋放S鎖,所以它不能避免不可重復(fù)讀。鎖,所以它不能避免不可重復(fù)讀。T1T2讀讀C=16CC*2寫回寫回C=32 rollbackC恢復(fù)為恢復(fù)為16 讀讀C=32 T1T2Xlock C,獲得鎖,獲得鎖讀讀C=16CC*2寫回寫

18、回C=32rollbackC恢復(fù)為恢復(fù)為16Unlock CSlock C等待等待二級封鎖協(xié)議可避免讀二級封鎖協(xié)議可避免讀“臟臟”數(shù)據(jù)數(shù)據(jù)獲得鎖獲得鎖讀讀C=16Unlock CT1T2Sclock B, 獲得鎖獲得鎖讀讀B=100Unlock BSclock B, 獲得鎖獲得鎖讀讀B=200Unlock BXlock B, 獲得鎖獲得鎖讀讀B=100BB*2寫回寫回B=200Commit Unlock BT1T2讀讀B=100讀讀B=200讀讀B=100BB*2寫回寫回B=200二級封鎖協(xié)議不可避免不可重復(fù)讀二級封鎖協(xié)議不可避免不可重復(fù)讀封鎖協(xié)議封鎖協(xié)議 三級封鎖協(xié)議三級封鎖協(xié)議三級封鎖協(xié)議

19、三級封鎖協(xié)議 + 事務(wù)事務(wù)T在讀取數(shù)據(jù)在讀取數(shù)據(jù)R之前之前必須先對其加必須先對其加S鎖,直到事務(wù)結(jié)束才釋放鎖,直到事務(wù)結(jié)束才釋放三級封鎖協(xié)議可避免丟失修改、讀三級封鎖協(xié)議可避免丟失修改、讀“臟臟”數(shù)據(jù)和不可重復(fù)讀。數(shù)據(jù)和不可重復(fù)讀。T1T2Sclock B, 獲得鎖獲得鎖讀讀B=100讀讀B=100commitUnlock BXlock B等待等待T1T2讀讀B=100讀讀B=200讀讀B=100BB*2寫回寫回B=200三級封鎖協(xié)議可避免不可重復(fù)讀三級封鎖協(xié)議可避免不可重復(fù)讀獲得鎖獲得鎖讀讀B=100BB*2寫回寫回B=200Commit Unlock B封鎖協(xié)議封鎖協(xié)議X鎖鎖S鎖鎖一致性一

20、致性操作操作結(jié)束結(jié)束釋放釋放事務(wù)事務(wù)結(jié)束結(jié)束釋放釋放操作操作結(jié)束結(jié)束釋放釋放事務(wù)事務(wù)結(jié)束結(jié)束釋放釋放丟失丟失修改修改讀臟讀臟數(shù)據(jù)數(shù)據(jù)不可不可重復(fù)讀重復(fù)讀一級封鎖協(xié)一級封鎖協(xié)議議避免避免二級二級封鎖協(xié)封鎖協(xié)議議避免避免 避免避免三級封鎖協(xié)三級封鎖協(xié)議議避免避免 避免避免避免避免SQL Server的并發(fā)機制的并發(fā)機制并發(fā)控制概述并發(fā)控制概述CREATE TABLE sales(id char(2),qty int)insert into sales values( A1, 10 )SQLServer的并發(fā)機制的并發(fā)機制 加鎖加鎖begin trandeclare sl intselect sl=

21、qty from sales with(Xlock)where id=A1waitfor delay 00:00:10.000update sales set qty = sl - 1 where id = A1commit tranbegin trandeclare sl intselect sl = qty from sales with(Xlock)where id = A1waitfor delay 00:00:10.000update sales set qty = sl - 1 where id = A1commit tranwith(Xlock)with(Xlock)SQLSer

22、ver的并發(fā)機制的并發(fā)機制 事務(wù)隔離事務(wù)隔離 對于編程人員來說,不用手工去設(shè)置控制鎖,對于編程人員來說,不用手工去設(shè)置控制鎖,通過設(shè)置事務(wù)的隔離級別自動管理鎖。通過設(shè)置事務(wù)的隔離級別自動管理鎖。SQLServer的并發(fā)機制的并發(fā)機制 事務(wù)隔離事務(wù)隔離 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE 隔離級別隔離級別 臟讀臟讀丟失修改丟失修改 不可重復(fù)讀取不可重復(fù)讀取 幻影幻影未提交讀未提交讀 不能避免不能避免 不能避免不能避免 不能避免不能避免不能避免不能避

23、免提交讀提交讀能避免能避免不確定不確定不能避免不能避免不能避免不能避免可重復(fù)讀可重復(fù)讀 能避免能避免能避免能避免能避免能避免不能避免不能避免可串行讀可串行讀 能避免能避免能避免能避免能避免能避免能避免能避免SET TRANSACTION ISOLATION LEVELREPEATABLE READbegin trandeclare sl intdeclare s2 intselect sl = qty from sales where id = A1print(sl)waitfor delay 00:00:30.000select s2 = qty from sales where id =

24、A1print(s2)commit tranbegin tranupdate sales set qty = qty *2 where id = A1commit tran11.3 活鎖和死鎖活鎖和死鎖活鎖和死鎖活鎖和死鎖 活鎖活鎖事務(wù)事務(wù)T1封鎖了數(shù)據(jù)封鎖了數(shù)據(jù)R事務(wù)事務(wù)T2又請求封鎖又請求封鎖R,于是,于是T2等待。等待。T3也請求封鎖也請求封鎖R,當,當T1釋放了釋放了R上的封鎖上的封鎖之后系統(tǒng)首先批準了之后系統(tǒng)首先批準了T3的請求,的請求,T2仍然仍然等待。等待。T4又請求封鎖又請求封鎖R,當,當T3釋放了釋放了R上的封鎖上的封鎖之后系統(tǒng)又批準了之后系統(tǒng)又批準了T4的請求的請求T2有可

25、能永遠等待(餓死)。有可能永遠等待(餓死)?;铈i和死鎖活鎖和死鎖 如何避免活鎖如何避免活鎖采用先來先服務(wù)的策略:采用先來先服務(wù)的策略:當多個事務(wù)請求封鎖同一數(shù)據(jù)對象時,當多個事務(wù)請求封鎖同一數(shù)據(jù)對象時,按請求封鎖的先后次序?qū)@些事務(wù)排隊,按請求封鎖的先后次序?qū)@些事務(wù)排隊,該數(shù)據(jù)對象上的鎖一旦釋放,首先批準該數(shù)據(jù)對象上的鎖一旦釋放,首先批準申請隊列中第一個事務(wù)獲得鎖。申請隊列中第一個事務(wù)獲得鎖?;铈i和死鎖活鎖和死鎖 死鎖死鎖T2Xlock R1獲得獲得Xlock R2等待等待Xlock R2獲得獲得Xlock R1等待等待T1活鎖和死鎖活鎖和死鎖 解決死鎖的方法解決死鎖的方法1. 采取一定措施

26、預(yù)防死鎖的發(fā)生。采取一定措施預(yù)防死鎖的發(fā)生。2. 允許死鎖發(fā)生,采取一定方法診斷死允許死鎖發(fā)生,采取一定方法診斷死鎖、解除死鎖。鎖、解除死鎖?;铈i和死鎖活鎖和死鎖 死鎖的預(yù)防死鎖的預(yù)防一次封鎖法一次封鎖法要求每個事務(wù)必須一次將所有要使用的要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行一次封鎖法存在的問題:一次封鎖法存在的問題:將以后要用到的全部數(shù)據(jù)加鎖,勢必擴將以后要用到的全部數(shù)據(jù)加鎖,勢必擴大了封鎖的范圍,從而降低了系統(tǒng)的并大了封鎖的范圍,從而降低了系統(tǒng)的并發(fā)度。發(fā)度?;铈i和死鎖活鎖和死鎖 死鎖死鎖T2Xlock R1獲得獲得Xlock R2等待等待Xlock R2獲得獲得Xlock R1等待等待T1T2Xlock R1,R2獲得獲得Unlock R1,R2Xlock R2,R1等待等待獲得獲得T1活鎖和死鎖活鎖和死鎖 死鎖的預(yù)防死鎖的預(yù)防 順序封鎖法:順序封鎖法:預(yù)先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事預(yù)先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務(wù)都按這個順序?qū)嵭蟹怄i。務(wù)都按這

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論