數(shù)據(jù)庫并發(fā)控制及SQLSERVER的并發(fā)控制機制課件_第1頁
數(shù)據(jù)庫并發(fā)控制及SQLSERVER的并發(fā)控制機制課件_第2頁
數(shù)據(jù)庫并發(fā)控制及SQLSERVER的并發(fā)控制機制課件_第3頁
數(shù)據(jù)庫并發(fā)控制及SQLSERVER的并發(fā)控制機制課件_第4頁
數(shù)據(jù)庫并發(fā)控制及SQLSERVER的并發(fā)控制機制課件_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫原理及應(yīng)用Principles and Application of Database 第十一章 數(shù)據(jù)庫并發(fā)控制及SQL Server的并發(fā)控制機制An Introduction to Database System飛機定票系統(tǒng)An Introduction to Database System銀行數(shù)據(jù)庫系統(tǒng)An Introduction to Database System為何要并發(fā)?并發(fā)執(zhí)行可能引起哪些問題?如何知道并發(fā)執(zhí)行后結(jié)果是正確的?并發(fā)執(zhí)行如何控制實現(xiàn)?An Introduction to Database System第十一章 數(shù)據(jù)庫并發(fā)控制及SQL Server的并發(fā)控制

2、機制11.1 并發(fā)控制概述11.2 并發(fā)調(diào)度的可串行性11.3 封鎖11.4 兩段鎖協(xié)議11.5 封鎖的粒度11.6 活鎖和死鎖11.7 SQL Server的并發(fā)控制機制11.8 小結(jié)An Introduction to Database System多事務(wù)執(zhí)行方式事務(wù)串行執(zhí)行每個時刻只有一個事務(wù)運行,其他事務(wù)必須等到這個事務(wù)結(jié)束以后方能運行不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享資源的特點T1T2T3An Introduction to Database System多事務(wù)執(zhí)行方式(續(xù))交叉并發(fā)方式(interleaved concurrency)事務(wù)的并行執(zhí)行是這些并行事務(wù)的并行操作輪流交叉

3、運行單處理機系統(tǒng)中的并發(fā)方式,能夠減少處理機的空閑時間,提高系統(tǒng)的效率T1T2T3T1T2T1T3T3T2T2T1An Introduction to Database System多事務(wù)執(zhí)行方式(續(xù))同時并發(fā)方式(simultaneous concurrency)多處理機系統(tǒng)中,每個處理機可以運行一個事務(wù),多個處理機可以同時運行多個事務(wù),實現(xiàn)多個事務(wù)真正的并行運行。An Introduction to Database System事務(wù)并發(fā)執(zhí)行帶來的問題可能會存取和存儲不正確的數(shù)據(jù),破壞事務(wù)的隔離性和數(shù)據(jù)庫的一致性DBMS必須提供并發(fā)控制機制并發(fā)控制機制是衡量一個DBMS性能的重要標(biāo)志之一A

4、n Introduction to Database System并發(fā)控制機制的目的改善系統(tǒng)的性能,交叉利用系統(tǒng)資源改善短事務(wù)的響應(yīng)時間An Introduction to Database System(1)甲售票點(甲事務(wù))讀出某航班的機票余額A,設(shè)A=16。(2)乙售票點(乙事務(wù))讀出同一航班的機票余額A,也為16。(3)甲售票點賣出一張機票,修改余額AA-1,所以A為15,把A寫回數(shù)據(jù)庫。(4)乙售票點賣出一張機票,修改余額AA-1,所以A為15,把A寫回數(shù)據(jù)庫。數(shù)據(jù)不一致實例:飛機訂票系統(tǒng)An Introduction to Database System原因:并發(fā)操作破壞了事務(wù)的隔

5、離性。數(shù)據(jù)不一致實例:飛機訂票系統(tǒng)An Introduction to Database System并發(fā)操作帶來的數(shù)據(jù)不一致性丟失修改(lost update)讀“臟”數(shù)據(jù)(dirty read)不可重復(fù)讀(non-repeatable read)An Introduction to Database System丟失修改TimeT1T2A=16讀A=16讀A=16A=A-1寫回AA=15A=A-1寫回AA=15A=15An Introduction to Database System丟失修改(續(xù))丟失修改是指事務(wù)1與事務(wù)2從數(shù)據(jù)庫中讀入同一數(shù)據(jù)并修改事務(wù)2的提交結(jié)果破壞了事務(wù)1提交的結(jié)果

6、導(dǎo)致事務(wù)1的修改被丟失An Introduction to Database System丟失修改(續(xù))原因:兩個(或多個)事務(wù)對“同一數(shù)據(jù)”并發(fā)地“寫入”引起(違背了事務(wù)的隔離性,事務(wù)間產(chǎn)生了干擾)稱為“寫-寫”沖突。結(jié)果:與串行地執(zhí)行兩個(或多個)事務(wù)的結(jié)果不一致。An Introduction to Database System讀“臟”數(shù)據(jù)TimeT1T2C=100讀C=100C=C*2寫回CC=200C=100讀C=200RollbackAn Introduction to Database System讀“臟”數(shù)據(jù)事務(wù)1修改某一數(shù)據(jù),并將其寫回磁盤事務(wù)2讀取同一數(shù)據(jù)后,事務(wù)1由于某

7、種原因被撤消,這時事務(wù)1已修改過的數(shù)據(jù)恢復(fù)原值事務(wù)2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致,是不正確的數(shù)據(jù),又稱為“臟”數(shù)據(jù)。An Introduction to Database System讀“臟”數(shù)據(jù)原因:由一事務(wù)讀另一事務(wù)尚未提交的數(shù)據(jù)引起稱為“寫-讀”沖突結(jié)果:有可能讀到要回退的更新數(shù)據(jù)An Introduction to Database System不可重復(fù)讀TimeT1T2A=50B=100讀A=50讀B=100A+B=150讀B=100A=50B=200B=B*2寫回B讀A=50讀B=200A+B=250An Introduction to Database System不可重復(fù)

8、讀事務(wù)1讀取數(shù)據(jù)后,事務(wù)2執(zhí)行更新操作,使事務(wù)1無法再現(xiàn)前一次讀取結(jié)果。An Introduction to Database System不可重復(fù)讀原因:由“讀-寫”沖突引起結(jié)果:第二次讀的值與前次讀的值不同An Introduction to Database System三類不可重復(fù)讀事務(wù)1讀取某一數(shù)據(jù)后:事務(wù)2對其做了修改,當(dāng)事務(wù)1再次讀該數(shù)據(jù)時,得到與前一次不同的值。 事務(wù)2刪除了其中部分記錄,當(dāng)事務(wù)1再次讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄神密地消失了。事務(wù)2插入了一些記錄,當(dāng)事務(wù)1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了一些記錄。后兩種不可重復(fù)讀有時也稱為幻影現(xiàn)象(phantom row)An I

9、ntroduction to Database System不可重復(fù)讀-幻影現(xiàn)象TimeT1T2Select count(*)where Ssex=女2 rows returnedInsert劉晨,女王敏,女李麗,女劉晨,女王敏,女李麗,女Select count(*)where Ssex=女3 rows returnedAn Introduction to Database System結(jié)論: 不同事務(wù)中對同一對象進行“寫-寫”、“寫-讀”或“讀-寫”的操作進行交錯,都會造成沖突。 對事務(wù)的并發(fā)執(zhí)行的控制,歸結(jié)為對“數(shù)據(jù)訪問沖突”的控制 。An Introduction to Databas

10、e System第十一章 數(shù)據(jù)庫并發(fā)控制及SQL Server的并發(fā)控制機制11.1 并發(fā)控制概述11.2 并發(fā)調(diào)度的可串行性11.3 封鎖11.4 兩段鎖協(xié)議11.5 封鎖的粒度11.6 活鎖和死鎖11.7 SQL Server的并發(fā)控制機制11.8 小結(jié)An Introduction to Database System11.2 并發(fā)調(diào)度的可串行性一、 可串行化調(diào)度二、 沖突可串行化調(diào)度An Introduction to Database System一、 可串行化調(diào)度將所有事務(wù)串行起來的調(diào)度策略一定是正確的調(diào)度策略。如果一個事務(wù)運行過程中沒有其他事務(wù)在同時運行,也就是說它沒有受到其他事

11、務(wù)的干擾,那么就可以認為該事務(wù)的運行結(jié)果是正常的或者預(yù)想的An Introduction to Database System可串行化調(diào)度(續(xù)) 幾個事務(wù)的并行執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行地執(zhí)行它們時的結(jié)果相同。這種并行調(diào)度策略稱為可串行化(Serializable)的調(diào)度。An Introduction to Database System可串行化調(diào)度(續(xù))可串行性是并行事務(wù)正確性的唯一準則例:現(xiàn)在有兩個事務(wù),分別包含下列操作: 事務(wù)1:讀B;A=B+1;寫回A; 事務(wù)2:讀A;B=A+1;寫回B; 假設(shè)A的初值為2,B的初值為2。An Introduction to Dat

12、abase System可串行化調(diào)度(續(xù))對這兩個事務(wù)的不同調(diào)度策略串行執(zhí)行串行調(diào)度策略1 (T1,T2)A=3,B=4串行調(diào)度策略2 (T2,T1)A=4,B=3An Introduction to Database System為了保證并行操作的正確性,DBMS的并行控制機制必須提供一定的手段來保證調(diào)度是可串行化的。從理論上講,在某一事務(wù)執(zhí)行時禁止其他事務(wù)執(zhí)行的調(diào)度策略一定是可串行化的調(diào)度,這也是最簡單的調(diào)度策略,但這種方法實際上是不可行的,因為它使用戶不能充分共享數(shù)據(jù)庫資源。An Introduction to Database System 判定可串行化調(diào)度的充分條件是沖突可串行化調(diào)度

13、An Introduction to Database System11.2 并發(fā)調(diào)度的可串行性一、 可串行化調(diào)度二、 沖突可串行化調(diào)度An Introduction to Database System二、 沖突可串行化調(diào)度不同的事務(wù)對同一個數(shù)據(jù)的讀讀操作、讀寫操作和寫寫操作:Ri(x)與Rj(x)Ri(x)與Wj(x)Wi(x)與Rj(x)Wi(x)與Wj(x)An Introduction to Database System沖突可串行化調(diào)度(續(xù))沖突指令不同的事務(wù)對同一個數(shù)據(jù)的讀寫操作和寫寫操作:Ri(x)與Wj(x)Wi(x)與Rj(x)Wi(x)與Wj(x)An Introduct

14、ion to Database System沖突可串行化調(diào)度(續(xù))沖突等價 一個調(diào)度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務(wù)不沖突操作的次序得到另一個調(diào)度Sc,如果Sc是串行的,稱調(diào)度Sc與Sc等價,Sc為沖突可串行化的調(diào)度。An Introduction to Database System沖突可串行化調(diào)度(續(xù))T1T2T1T2R (A)W(A)R (B)W(B)R (A)W(A)R (B)W(B)R (A)W(A)R (B)W(B)R (A)W(A)R (B)W(B)R (A)W(A)R (B)W(B)R (A)W(A)R (B)W(B)R (A)W(A)R (B)W(B)R

15、 (A)W(A)R (B)W(B)123An Introduction to Database System沖突可串行化調(diào)度(非沖突串行化)T1T2R (A)W(A)W (A)An Introduction to Database System沖突可串行化調(diào)度(續(xù))T1T2T3W (Y)W(X)W (Y)W(X)W(X)W (Y)W(X)W (Y)W(X)W(X)An Introduction to Database System第十一章 數(shù)據(jù)庫并發(fā)控制及SQL Server的并發(fā)控制機制11.1 并發(fā)控制概述11.2 并發(fā)調(diào)度的可串行性11.3 封鎖11.4 兩段鎖協(xié)議11.5 封鎖的粒度1

16、1.6 活鎖和死鎖11.7 SQL Server的并發(fā)控制機制11.8 小結(jié)An Introduction to Database System11.3 封鎖一、什么是封鎖二、基本封鎖類型三、基本鎖的相容矩陣An Introduction to Database System一、什么是封鎖封鎖就是事務(wù)T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對象。封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)An Introduction to Database System11.2 封鎖一、什么是

17、封鎖二、基本封鎖類型三、基本鎖的相容矩陣An Introduction to Database System二、基本封鎖類型DBMS通常提供了多種類型的封鎖。一個事務(wù)對某個數(shù)據(jù)對象加鎖后究竟擁有什么樣的控制是由封鎖的類型決定的?;痉怄i類型排它鎖(eXclusive lock,簡記為X鎖)共享鎖(Share lock,簡記為S鎖)An Introduction to Database System排它鎖排它鎖又稱為寫鎖、X鎖若事務(wù)T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)都不能再對A加任何類型的鎖,直到T釋放A上的鎖。An Introduction to Database S

18、ystem共享鎖共享鎖又稱為讀鎖、S鎖若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則事務(wù)T可以讀A得不能修改A,其它事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。An Introduction to Database System11.2 封鎖一、什么是封鎖二、基本封鎖類型三、基本鎖的相容矩陣An Introduction to Database System三、鎖的相容矩陣Y=Yes,相容的請求N=No,不相容的請求 T2 T1XS-XNNYSNYY-YYYAn Introduction to Database SystemXlock A等待等待等待等待獲得Xlock A讀A=15AA-1寫回

19、A=14CommitUnlock A Xlock A 獲得 讀A=16AA-1 寫回A=15 Commit Unlock AT2T1沒有丟失修改 An Introduction to Database SystemXlock B等待等待等待 等待等待等待等待等待獲得Xlock B讀B=100BB*2寫回B=200CommitUnlock B Slock A 讀A=50 Slock B 讀B=100 求和=150 讀A=50 讀B=100 求和=150 Commit Unlock A Unlock B T2T1可重復(fù)讀 An Introduction to Database SystemSloc

20、k C等待等待等待等待獲得Slock C讀C=100Commit CUnlock C Xlock C 讀C= 100 CC*2 寫回C=200 ROLLBACK (C恢復(fù)為100) Unlock C T2T1不讀“臟”數(shù)據(jù) An Introduction to Database System第十一章 數(shù)據(jù)庫并發(fā)控制及SQL Server的并發(fā)控制機制11.1 并發(fā)控制概述11.2 并發(fā)調(diào)度的可串行性11.3 封鎖11.4 兩段鎖協(xié)議11.5 封鎖的粒度11.6 活鎖和死鎖11.7 SQL Server的并發(fā)控制機制11.8 小結(jié)An Introduction to Database Syste

21、m11.4 兩段鎖協(xié)議兩段鎖協(xié)議的內(nèi)容在對任何數(shù)據(jù)進行讀、寫操作之前,事務(wù)首先要獲得對該數(shù)據(jù)的封鎖在釋放一個封鎖之后,事務(wù)不再獲得任何其他封鎖。An Introduction to Database System兩段鎖協(xié)議(續(xù))“兩段”鎖的含義事務(wù)分為兩個階段 第一階段是獲得封鎖,也稱為擴展階段; 第二階段是釋放封鎖,也稱為收縮階段。An Introduction to Database System兩段鎖協(xié)議(續(xù))例:事務(wù)1的封鎖序列:Slock A . Slock B . Xlock C . Unlock B . Unlock A . Unlock C;事務(wù)2的封鎖序列:Slock A .

22、 Unlock A . Slock B . Xlock C . Unlock C . Unlock B;事務(wù)1遵守兩段鎖協(xié)議,而事務(wù)2不遵守兩段協(xié)議。An Introduction to Database System兩段鎖協(xié)議(續(xù))并行執(zhí)行的所有事務(wù)均遵守兩段鎖協(xié)議,則對這些事務(wù)的所有并行調(diào)度策略都是可串行化的。所有遵守兩段鎖協(xié)議的事務(wù),其并行執(zhí)行的結(jié)果一定是正確的事務(wù)遵守兩段鎖協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件可串行化的調(diào)度中,不一定所有事務(wù)都必須符合兩段鎖協(xié)議。An Introduction to Database System兩段鎖協(xié)議(續(xù))An Introduction t

23、o Database System兩段鎖協(xié)議(續(xù))兩段鎖協(xié)議與防止死鎖的一次封鎖法一次封鎖法要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議但是兩段鎖協(xié)議并不要求事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務(wù)可能發(fā)生死鎖An Introduction to Database System兩段鎖協(xié)議(續(xù))遵守兩段鎖協(xié)議的事務(wù)發(fā)生死鎖T1Slock B讀B=2Xlock A等待等待T2Slock A讀A=2Xlock A等待An Introduction to Database System第十一章 數(shù)據(jù)庫并發(fā)控制及SQL Serv

24、er的并發(fā)控制機制11.1 并發(fā)控制概述11.2 并發(fā)調(diào)度的可串行性11.3 封鎖11.4 兩段鎖協(xié)議11.5 封鎖的粒度11.6 活鎖和死鎖11.7 SQL Server的并發(fā)控制機制11.8 小結(jié)An Introduction to Database System11.5 封鎖的粒度一、 多粒度封鎖二、 意向鎖An Introduction to Database System一、多粒度封鎖(一)什么是封鎖粒度(二)選擇封鎖粒度的原則(三)多粒度封鎖An Introduction to Database System(一)什么是封鎖粒度X鎖和S鎖都是加在某一個數(shù)據(jù)對象上的封鎖的對象:邏輯單

25、元,物理單元 例:在關(guān)系數(shù)據(jù)庫中,封鎖對象:邏輯單元: 屬性值、屬性值集合、元組、關(guān)系、索引項、整個索引、整個數(shù)據(jù)庫等物理單元:頁(數(shù)據(jù)頁或索引頁)、物理記錄等An Introduction to Database System什么是封鎖粒度(續(xù))封鎖對象可以很大也可以很小 例: 對整個數(shù)據(jù)庫加鎖 對某個屬性值加鎖封鎖對象的大小稱為封鎖的粒度(Granularity)多粒度封鎖(multiple granularity locking)在一個系統(tǒng)中同時支持多種封鎖粒度供不同的事務(wù)選擇An Introduction to Database System一、 封鎖粒度(一)什么是封鎖粒度(二)選擇

26、封鎖粒度的原則(三)多粒度封鎖An Introduction to Database System(二)選擇封鎖粒度的原則封鎖的粒度越 大,小,系統(tǒng)被封鎖的對象 少,多,并發(fā)度 小,高,系統(tǒng)開銷 小,大,選擇封鎖粒度:考慮封鎖機構(gòu)和并發(fā)度兩個因素對系統(tǒng)開銷與并發(fā)度進行權(quán)衡An Introduction to Database System選擇封鎖粒度的原則(續(xù))需要處理多個關(guān)系的大量元組的用戶事務(wù):以數(shù)據(jù)庫為封鎖單位;需要處理大量元組的用戶事務(wù):以關(guān)系為封鎖單元;只處理少量元組的用戶事務(wù):以元組為封鎖單位An Introduction to Database System(三) 多粒度封鎖多粒

27、度樹以樹形結(jié)構(gòu)來表示多級封鎖粒度根結(jié)點是整個數(shù)據(jù)庫,表示最大的數(shù)據(jù)粒度葉結(jié)點表示最小的數(shù)據(jù)粒度 An Introduction to Database System多粒度封鎖(續(xù))例:三級粒度樹。根結(jié)點為數(shù)據(jù)庫,數(shù)據(jù)庫的子結(jié)點為關(guān)系,關(guān)系的子結(jié)點為元組。數(shù)據(jù)庫關(guān)系Rn關(guān)系R1元組元組元組元組An Introduction to Database System多粒度封鎖協(xié)議 允許多粒度樹中的每個結(jié)點被獨立地加鎖對一個結(jié)點加鎖意味著這個結(jié)點的所有后裔結(jié)點也被加以同樣類型的鎖在多粒度封鎖中一個數(shù)據(jù)對象可能以兩種方式封鎖:顯式封鎖和隱式封鎖An Introduction to Database Sys

28、tem顯式封鎖和隱式封鎖顯式封鎖: 直接加到數(shù)據(jù)對象上的封鎖隱式封鎖: 由于其上級結(jié)點加鎖而使該數(shù)據(jù)對象加上了鎖顯式封鎖和隱式封鎖的效果是一樣的An Introduction to Database System對某個數(shù)據(jù)對象加鎖時系統(tǒng)檢查的內(nèi)容 該數(shù)據(jù)對象有無顯式封鎖與之沖突 所有上級結(jié)點檢查本事務(wù)的顯式封鎖是否與該數(shù)據(jù)對象上的隱式封鎖沖突:(由上級結(jié)點封鎖造成的)所有下級結(jié)點看上面的顯式封鎖是否與本事務(wù)的隱式封鎖(將加到下級結(jié)點的封鎖)沖突。An Introduction to Database System11.5 封鎖的粒度一、 多粒度封鎖二、 意向鎖An Introduction t

29、o Database System二、 意向鎖引進意向鎖(intention lock)目的提高對某個數(shù)據(jù)對象加鎖時系統(tǒng)的檢查效率An Introduction to Database System什么是意向鎖對任一結(jié)點加基本鎖,必須先對它的上層結(jié)點加意向鎖如果對一個結(jié)點加意向鎖,則說明該結(jié)點的下層結(jié)點正在被加鎖An Introduction to Database System意向鎖(續(xù))例:對任一元組 r 加鎖,先關(guān)系R加意向鎖 事務(wù)T要對關(guān)系R加X鎖, 系統(tǒng)只要檢查根結(jié)點數(shù)據(jù)庫和關(guān)系R是否已加了不相容的鎖,不需要搜索和檢查R中的每一個元組是否加了X鎖An Introduction to

30、Database System常用意向鎖意向共享鎖(Intent Share Lock,簡稱IS鎖)意向排它鎖(Intent Exclusive Lock,簡稱IX鎖)共享意向排它鎖(Share Intent Exclusive Lock,簡稱SIX鎖)An Introduction to Database System意向鎖(續(xù))IS鎖如果對一個數(shù)據(jù)對象加IS鎖,表示它的后裔結(jié)點擬(意向)加S鎖。例:要對某個元組加S鎖,則要首先對關(guān)系和數(shù)據(jù)庫加IS鎖An Introduction to Database System意向鎖(續(xù))IX鎖如果對一個數(shù)據(jù)對象加IX鎖,表示它的后裔結(jié)點擬(意向)加X

31、鎖。 例:要對某個元組加X鎖,則要首先對關(guān)系和數(shù)據(jù)庫加IX鎖。An Introduction to Database System意向鎖(續(xù))SIX鎖如果對一個數(shù)據(jù)對象加SIX鎖,表示對它加S鎖,再加IX鎖,即SIX = S + IX。 例:對某個表加SIX鎖,則表示該事務(wù)要讀整個表(所以要對該表加S鎖),同時會更新個別元組(所以要對該表加IX鎖)。An Introduction to Database System意向鎖(續(xù))意向鎖的相容矩陣 T1 T2 S X IS IX SIX - S Y N Y N N Y X N N N N N Y IS Y N Y Y Y Y IX N N Y Y

32、 N Y SIX N N Y N N Y - Y Y Y Y Y Y An Introduction to Database System意向鎖(續(xù))鎖的強度鎖的強度是指它對其他鎖的排斥程度一個事務(wù)在申請封鎖時以強鎖代替弱鎖是安全的,反之則不然SIXXSIX -ISAn Introduction to Database System意向鎖(續(xù))具有意向鎖的多粒度封鎖方法申請封鎖時應(yīng)該按自上而下的次序進行;釋放封鎖時則應(yīng)該按自下而上的次序進行 例:事務(wù)T要對一個數(shù)據(jù)對象加鎖,必須先對它的上層結(jié)點加意向鎖An Introduction to Database System第十一章 數(shù)據(jù)庫并發(fā)控制及

33、SQL Server的并發(fā)控制機制11.1 并發(fā)控制概述11.2 并發(fā)調(diào)度的可串行性11.3 封鎖11.4 兩段鎖協(xié)議11.5 封鎖的粒度11.6 活鎖和死鎖11.7 SQL Server的并發(fā)控制機制11.8 小結(jié)An Introduction to Database System11.6 活鎖和死鎖封鎖技術(shù)可以有效地解決并行操作的一致性問題,但也帶來一些新的問題死鎖活鎖An Introduction to Database System一、 活鎖An Introduction to Database System什么是活鎖 某個事務(wù)永遠處于等待狀態(tài),得不到執(zhí)行,稱為活鎖。An Introd

34、uction to Database System如何避免活鎖采用先來先服務(wù)的策略:當(dāng)多個事務(wù)請求封鎖同一數(shù)據(jù)對象時按請求封鎖的先后次序?qū)@些事務(wù)排隊該數(shù)據(jù)對象上的鎖一旦釋放,首先批準申請隊列中第一個事務(wù)獲得鎖。An Introduction to Database System二、 死鎖T1 T2 Xlock R1.Xlock R2等待等待等待.Xlock R2.Xlock R1等待等待.An Introduction to Database System死鎖(續(xù)) 兩個事務(wù)都封鎖了一些數(shù)據(jù)對象,并相互等待對方釋放另一些數(shù)據(jù)對象以便對其封鎖,結(jié)果兩個事務(wù)都不能結(jié)束,則發(fā)生死鎖。An Intr

35、oduction to Database System死鎖(續(xù)) 死鎖發(fā)生的條件互斥條件:事務(wù)請求對事務(wù)請求對資源的獨占控制等待條件:事務(wù)已經(jīng)持有一定資源,又去申請并等待其它資源。非搶占條件:直到資源被持有它的事務(wù)釋放之前,不可能將該資源強制從持有它的事務(wù)奪去。循環(huán)等待條件:存在事務(wù)相互等待的等待圖。An Introduction to Database System死鎖(續(xù))事務(wù)號占有資源號請求資源號T1R1R2T2R3R1,R3T3R2R3T1T2T3An Introduction to Database System解決死鎖的方法兩類方法1. 死鎖的預(yù)防2. 死鎖的診斷與解除An Int

36、roduction to Database System1. 死鎖的預(yù)防產(chǎn)生死鎖的原因是兩個或多個事務(wù)都已封鎖了一些數(shù)據(jù)對象,然后又都請求對已為其他事務(wù)封鎖的數(shù)據(jù)對象加鎖,從而出現(xiàn)死等待。預(yù)防死鎖的發(fā)生就是要破壞產(chǎn)生死鎖的條件An Introduction to Database System死鎖的預(yù)防(續(xù))預(yù)防死鎖的方法 一次封鎖法 順序封鎖法An Introduction to Database System(1)一次封鎖法要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行一次封鎖法存在的問題 擴大封鎖范圍難于事先精確確定封鎖對象An Introduction to Dat

37、abase System(2)順序封鎖法順序封鎖法是預(yù)先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務(wù)都按這個順序?qū)嵭蟹怄i。順序封鎖法存在的問題 維護成本高難于實現(xiàn)An Introduction to Database System順序封鎖法(續(xù)) 例:規(guī)定數(shù)據(jù)對象的封鎖順序為A,B,C,D,E。事務(wù)T3起初要求封鎖數(shù)據(jù)對象B,C,E,但當(dāng)它封鎖了B,C后,才發(fā)現(xiàn)還需要封鎖A,這樣就破壞了封鎖順序。An Introduction to Database System死鎖的預(yù)防(續(xù))結(jié)論在操作系統(tǒng)中廣為采用的預(yù)防死鎖的策略并不很適合數(shù)據(jù)庫的特點DBMS在解決死鎖的問題上更普遍采用的是診斷并解除死鎖的方法A

38、n Introduction to Database System2. 死鎖的診斷與解除允許死鎖發(fā)生解除死鎖由DBMS的并發(fā)控制子系統(tǒng)定期檢測系統(tǒng)中是否存在死鎖一旦檢測到死鎖,就要設(shè)法解除An Introduction to Database System超時法如果一個事務(wù)的等待時間超過了規(guī)定的時限,就認為發(fā)生了死鎖優(yōu)點:實現(xiàn)簡單缺點有可能誤判死鎖時限若設(shè)置得太長,死鎖發(fā)生后不能及時發(fā)現(xiàn)An Introduction to Database System等待圖法用事務(wù)等待圖動態(tài)反映所有事務(wù)的等待情況事務(wù)等待圖是一個有向圖G=(T,U)T為結(jié)點的集合,每個結(jié)點表示正運行的事務(wù)U為邊的集合,每條邊

39、表示事務(wù)等待的情況若T1等待T2,則T1,T2之間劃一條有向邊,從T1指向T2并發(fā)控制子系統(tǒng)周期性地(比如每隔1 min)檢測事務(wù)等待圖,如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖。An Introduction to Database System死鎖的診斷與解除(續(xù))解除死鎖選擇一個處理死鎖代價最小的事務(wù),將其撤消,釋放此事務(wù)持有的所有的鎖,使其它事務(wù)能繼續(xù)運行下去。An Introduction to Database System1. 字典鎖ORACLE DBMS內(nèi)部用于對字典表的封鎖由DBMS在必要的時候自動加鎖和釋放鎖,用戶無權(quán)控制字典鎖類型語法分析鎖DDL鎖An Introduction to Database System2. 數(shù)據(jù)鎖數(shù)據(jù)鎖類型共享鎖(S鎖)排它鎖(X鎖)行級共享鎖(RS鎖)行級排它鎖(RX鎖)共享行級排它鎖(SRX鎖) 其中R

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論