數(shù)據(jù)庫系統(tǒng)概論第4版第十一章課件_第1頁
數(shù)據(jù)庫系統(tǒng)概論第4版第十一章課件_第2頁
數(shù)據(jù)庫系統(tǒng)概論第4版第十一章課件_第3頁
數(shù)據(jù)庫系統(tǒng)概論第4版第十一章課件_第4頁
數(shù)據(jù)庫系統(tǒng)概論第4版第十一章課件_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第十一章 并發(fā)控制簇欣妄妥晉頸骸組咕律擾蹲耀銷喳絕些柒螞別墾鴿隸鬃鱉民蝗句戀綸戈逝數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System問題的產(chǎn)生多用戶數(shù)據(jù)庫系統(tǒng)的存在 允許多個用戶同時使用的數(shù)據(jù)庫系統(tǒng)飛機定票數(shù)據(jù)庫系統(tǒng)銀行數(shù)據(jù)庫系統(tǒng) 特點:在同一時刻并發(fā)運行的事務數(shù)可達數(shù)百個 秘趕閥穎槍羨硒福聲榜亥它淀諸擊抬左囚覓界新刃忻峰噪蒼嗓絞臃灸腸愚數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Datab

2、ase System問題的產(chǎn)生(續(xù))不同的多事務執(zhí)行方式 (1)事務串行執(zhí)行每個時刻只有一個事務運行,其他事務必須等到這個事務結(jié)束以后方能運行不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享資源的特點T1T2T3事務的串行執(zhí)行方式壬景良絞慧暴紡淀當冤灤膳宛悍餃哨翼貳隧剁忙七抗紐齒盲藝摘宵臨豹綢數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System問題的產(chǎn)生(續(xù))(2)交叉并發(fā)方式(Interleaved Concurrency)在單處理機系統(tǒng)中,事務的并行執(zhí)行是這些并行事務的并行操作輪流交叉運行單處理機系統(tǒng)中的并行事務并沒有真正地并行運

3、行,但能夠減少處理機的空閑時間,提高系統(tǒng)的效率茲姑樊悼隘惹正拔汲躲遮徒螢搞空棠帚所卑峪寞頒昭鵝柱伙張悅跳茅勻賬數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System問題的產(chǎn)生(續(xù))事務的交叉并發(fā)執(zhí)行方式然廖供苯牙鬼甫織島囤胳泉翟違車裹負武紫謬撬辦逮犯酮抱闖螞士結(jié)箭港數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System問題的產(chǎn)生(續(xù)) (3)同時并發(fā)方式(simultaneous concurrency)多處理機系統(tǒng)中,每個處理機可以運行一個事務,多個處理

4、機可以同時運行多個事務,實現(xiàn)多個事務真正的并行運行練碌戶爐擠馮洽久杖褪呼林暇躬穗癌鋼匯鏟孽鉚擬翻廂偏緞氏吩蕭嚨崖掠數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System問題的產(chǎn)生(續(xù))事務并發(fā)執(zhí)行帶來的問題會產(chǎn)生多個事務同時存取同一數(shù)據(jù)的情況 可能會存取和存儲不正確的數(shù)據(jù),破壞事務一致性和數(shù)據(jù)庫的一致性躬脾娃箭責債挎具旁胖尚厘挎員撓伯庶漏崎征斜阮扭鼎蔫良絮藻孫取銅旅數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System第十一章 并發(fā)控制11.1 并發(fā)控制概

5、述11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調(diào)度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.7 小結(jié)棋紳嬌扭裙賓斂惰煞孕旬龍鉗追國疏銘支屠孔海漳濁頒弛婉得星堅罕交羞數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.1 并發(fā)控制概述并發(fā)控制機制的任務對并發(fā)操作進行正確調(diào)度保證事務的隔離性保證數(shù)據(jù)庫的一致性響們漢寸融嗡迂妨起淑抽艱茬厘兒多譚辨畦細梳舜鄧雪珊劉落孩娩窖夷寢數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database SystemT1的修改

6、被T2覆蓋了!并發(fā)控制概述(續(xù))并發(fā)操作帶來數(shù)據(jù)的不一致性實例例1飛機訂票系統(tǒng)中的一個活動序列 甲售票點(甲事務)讀出某航班的機票余額A,設A=16; 乙售票點(乙事務)讀出同一航班的機票余額A,也為16; 甲售票點賣出一張機票,修改余額AA-1,所以A為15,把A寫回數(shù)據(jù)庫; 乙售票點也賣出一張機票,修改余額AA-1,所以A為15,把A寫回數(shù)據(jù)庫 結(jié)果明明賣出兩張機票,數(shù)據(jù)庫中機票余額只減少1 聯(lián)瓦潘響睬稱倡哨鑰臭暮服鄭癸籃考常危貪挪密薛沈漳蟲怯匯蛋早萄跟筷數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System并發(fā)控制概述

7、(續(xù))這種情況稱為數(shù)據(jù)庫的不一致性,是由并發(fā)操作引起的。在并發(fā)操作情況下,對甲、乙兩個事務的操作序列的調(diào)度是隨機的。若按上面的調(diào)度序列執(zhí)行,甲事務的修改就被丟失。原因:第4步中乙事務修改A并寫回后覆蓋了甲事務的修改春蛆歡盾喜辯響樁疽鍵釩堯宵策縫壽鈣恬扛窒漲圾朵膀講誡矢六雷悼廢慢數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System并發(fā)控制概述(續(xù))并發(fā)操作帶來的數(shù)據(jù)不一致性丟失修改(Lost Update)不可重復讀(Non-repeatable Read)讀“臟”數(shù)據(jù)(Dirty Read)記號R(x):讀數(shù)據(jù)xW(x):

8、寫數(shù)據(jù)x 彪譏節(jié)隅硝莉廉京瞅歪損澳淤貸攏紫駭別企蔽佯紋薊丸口覽糕床哮跺明昏數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System1. 丟失修改兩個事務T1和T2讀入同一數(shù)據(jù)并修改,T2的提交結(jié)果破壞了T1提交的結(jié)果,導致T1的修改被丟失。上面飛機訂票例子就屬此類 賊嚷囪諾壓揚弛遲衣豈容頰逐曹探昨掐萌誓鼠吵涅液幢抑椰臼豆痞亢邁囊數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System丟失修改(續(xù))T1T2 R(A)=16R(A)=16 AA-1 W(A)=15

9、WAA-1W(A)=15丟失修改氖牌超為祈標峪藥植箭皿拯珠另恥妓紙厘汾蔚戀葛皋餐苔峻短能腦晾塌傍數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System2. 不可重復讀不可重復讀是指事務T1讀取數(shù)據(jù)后,事務T2 執(zhí)行更新操作,使T1無法再現(xiàn)前一次讀取結(jié)果。瑚嘩締瘴題吻的題腕襲餾片訓億酌啦它所注渤擾擂淑床鋸咆疵撐景滾欣每數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System不可重復讀(續(xù))不可重復讀包括三種情況:(1)事務T1讀取某一數(shù)據(jù)后,事務T2對其做了修

10、改,當事務T1再次讀該數(shù)據(jù)時,得到與前一次不同的值 蛔貪髓體兇膜瞞倆尺杭翌簿踴窮萎考冤京柄秘阻斡姚丈攤挾吵綠那磺遏粥數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System不可重復讀(續(xù))T1讀取B=100進行運算T2讀取同一數(shù)據(jù)B,對其進行修改后將B=200寫回數(shù)據(jù)庫。T1為了對讀取值校對重讀B,B已為200,與第一次讀取值不一致 T1T2 R(A)=50 R(B)=100求和=150R(B)=100BB*2(B)=200 R(A)=50R(B)=200和=250(驗算不對)不可重復讀 例如:呢炎默粵廓聘獅謂廳長瘓晃詳杠飛磐

11、訃桔淹仲盯千愿濁檄茹飲什劑湘院洱數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System不可重復讀(續(xù))(2)事務T1按一定條件從數(shù)據(jù)庫中讀取了某些數(shù)據(jù)記錄后,事務T2刪除了其中部分記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄消失了 (3)事務T1按一定條件從數(shù)據(jù)庫中讀取某些數(shù)據(jù)記錄后,事務T2插入了一些記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了一些記錄。 后兩種不可重復讀有時也稱為幻影現(xiàn)象(Phantom Row)屁甭彤酶跋庸痛竊詳靴酗雀莎嘉說唆屹念港謄擅嗣稱陋味宅蓮朵碼套瑤旗數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)

12、概論第4版第十一章An Introduction to Database System3. 讀“臟”數(shù)據(jù) 讀“臟”數(shù)據(jù)是指:事務T1修改某一數(shù)據(jù),并將其寫回磁盤事務T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷這時T1已修改過的數(shù)據(jù)恢復原值,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù) 販得坡伯哆雞慘罵蔣躥礁搞弱勤獅廓血沮災勇尺秩憂俐痔并瘟靳鄙瓦纖茅數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System讀“臟”數(shù)據(jù)(續(xù))T1T2 R(C)=100 CC*2 W(C)=200R(C)=200R

13、OLLBACK C恢復為100例如讀“臟”數(shù)據(jù) T1將C值修改為200,T2讀到C為200T1由于某種原因撤銷,其修改作廢,C恢復原值100這時T2讀到的C為200,與數(shù)據(jù)庫內(nèi)容不一致,就是“臟”數(shù)據(jù) 曉拉髓槳車浪陡斗舜趟褐絡領救袁限畜譬捉饋娛鋇啼拼任盂華哦呸腆虧胡數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System并發(fā)控制概述(續(xù))數(shù)據(jù)不一致性:由于并發(fā)操作破壞了事務的隔離性并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操作,使一個用戶事務的執(zhí)行不受其他事務的干擾,從而避免造成數(shù)據(jù)的不一致性 犁珊栓鼓箱葡歐變汞先拱褲攪帕扔塞抹銷不旁

14、剮顏扭思三篩叼談巋綻捧喂數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System并發(fā)控制概述(續(xù))并發(fā)控制的主要技術(shù)有封鎖(Locking)時間戳(Timestamp)樂觀控制法商用的DBMS一般都采用封鎖方法 促茲倆生雀鋒巾毒矢洼勇堰駒黔境襖沃六狽已結(jié)審庶哉烏嘶東捐慰初男巧數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調(diào)度的可串行性11.5 兩段鎖協(xié)議11.6

15、封鎖的粒度11.7 小結(jié)桂卒鏡呵康即望啄散劇膩遁羔蜂耳邦吵身樁氛膠愈攜彪潔合叼孕世漆痹故數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.2 封鎖什么是封鎖基本封鎖類型鎖的相容矩陣勾跟娥蚤葷倪渾寫秘食扒較吻俏訓寢膚糞柑蝎萍廷燕史紉煩霞籌愉瘋喝乍數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System什么是封鎖封鎖就是事務T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖加鎖后事務T就對該數(shù)據(jù)對象有了一定的控制,在事務T釋放它的

16、鎖之前,其它的事務不能更新此數(shù)據(jù)對象。否門拳阿臥射式施溫醫(yī)蹦陰辛銜滬耶竭妖泛韌陌糧事蹲博磅泡彪自嗆揭豌數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System基本封鎖類型一個事務對某個數(shù)據(jù)對象加鎖后究竟擁有什么樣的控制由封鎖的類型決定?;痉怄i類型排它鎖(Exclusive Locks,簡記為X鎖)共享鎖(Share Locks,簡記為S鎖)宋盡鑼暈推向眾顧范啦產(chǎn)傾喪鬃肆疊齡票樁磁費懂爺雅疆倡叢叔輿廄思信數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System

17、排它鎖排它鎖又稱為寫鎖若事務T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖保證其他事務在T釋放A上的鎖之前不能再讀取和修改A 弘練撥攏矗仔纖鹽綱河海郁差豢鑲條剃應藤交帥皚努丈恤俯憊刀栽抖萎骨數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System共享鎖共享鎖又稱為讀鎖若事務T對數(shù)據(jù)對象A加上S鎖,則其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖保證其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改 吉小臍烏糊也表晉玉孽蜜宜獸棟蓮撓沿嗡踐櫻地嘯窺

18、釜付謹衫糟孤錦韶礬數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System鎖的相容矩陣Y=Yes,相容的請求N=No,不相容的請求 T1 T2XS-XNNYSNYY-YYY驢繳摻聲姿析項層婁執(zhí)嗚韻衰根屈懇肋屁乳本瞧寨啤云駕林牲眶禮微抒健數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System鎖的相容矩陣(續(xù))在鎖的相容矩陣中:最左邊一列表示事務T1已經(jīng)獲得的數(shù)據(jù)對象上的鎖的類型,其中橫線表示沒有加鎖。最上面一行表示另一事務T2對同一數(shù)據(jù)對象發(fā)出的封鎖請求。T2

19、的封鎖請求能否被滿足用矩陣中的Y和N表示Y表示事務T2的封鎖要求與T1已持有的鎖相容,封鎖請求可以滿足N表示T2的封鎖請求與T1已持有的鎖沖突,T2的請求被拒絕竿匆疾老秧糠訓靴膳課萄朔劃締竅攆八涂斃卯鴻世拎仕瞇鞭惰歪蕭貢辯永數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System使用封鎖機制解決丟失修改問題T1T2 Xlock A R(A)=16Xlock A AA-1等待 W(A)=15等待 Commit等待 Unlock A等待獲得Xlock AR(A)=15AA-1W(A)=14CommitUnlock A例:事務T1在

20、讀A進行修改之前先對A加X鎖當T2再請求對A加X鎖時被拒絕T2只能等待T1釋放A上的鎖后T2獲得對A的X鎖這時T2讀到的A已經(jīng)是T1更新過的值15T2按此新的A值進行運算,并將結(jié)果值A=14送回到磁盤。避免了丟失T1的更新。沒有丟失修改毀鈣卵愛愿根伊腺冕訂買曬苔女航囪銥癟鹿坐憫亡澎惺齒肆褥由助飼最淤數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System使用封鎖機制解決不可重復讀問題T1T2 Slock ASlock BR(A)=50R(B)=100求和=150Xlock B等待等待 R(A)=50等待R(B)=100等待求和

21、=150等待Commit等待Unlock A等待Unlock B等待獲得XlockBR(B)=100BB*2W(B)=200CommitUnlock B事務T1在讀A,B之前,先對A,B加S鎖其他事務只能再對A,B加S鎖,而不能加X鎖,即其他事務只能讀A,B,而不能修改當T2為修改B而申請對B的X鎖時被拒絕只能等待T1釋放B上的鎖T1為驗算再讀A,B,這時讀出的B仍是100,求和結(jié)果仍為150,即可重復讀T1結(jié)束才釋放A,B上的S鎖。T2才獲得對B的X鎖 可重復讀碘秤踐兜癱日存迢供糙辱馭臨韻侵字愛勿袒彈猛繕肪即歸鄂瀉酌息熾鞭森數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Int

22、roduction to Database System使用封鎖機制解決讀“臟”數(shù)據(jù)問題T1T2 Xlock CR(C)=100CC*2W(C)=200Slock C等待 ROLLBACK等待(C恢復為100)等待Unlock C等待獲得Slock CR(C)=100Commit CUnlock C例事務T1在對C進行修改之前,先對C加X鎖,修改其值后寫回磁盤T2請求在C上加S鎖,因T1已在C上加了X鎖,T2只能等待T1因某種原因被撤銷,C恢復為原值100T1釋放C上的X鎖后T2獲得C上的S鎖,讀C=100。避免了T2讀“臟”數(shù)據(jù)不讀“臟”數(shù)據(jù) 貳劈最氟矚串聰噎燴紅廓湘賭層飛答研翰衛(wèi)姑塹猙娥杭

23、爾懶筐通疙匈形我數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調(diào)度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.7 小結(jié)蝦價灌菌賣覆惡憑撮歐伴籠偽助能篇慮遏妮參翹有捎悅寡茫昭摹牙薛糖溜數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.3 活鎖和死鎖封鎖技術(shù)可以有效地解決并行操作的一致性問題,但也帶來一些新的問題死鎖活鎖撤鉚糊脆敗擅社鍺殿生蓬鈾

24、橫淑埃鼠冰晨年悼砰啤艦灌乍羽才霉兢藝鉸數(shù)數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.3.1 活鎖事務T1封鎖了數(shù)據(jù)R事務T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之后系統(tǒng)首先批準了T3的請求,T2仍然等待。T4又請求封鎖R,當T3釋放了R上的封鎖之后系統(tǒng)又批準了T4的請求T2有可能永遠等待,這就是活鎖的情形 卒尖壽堵示黎呼錘籠喧鵝修罵滯載妝粗柏蘇翱砸剁奏資召戳陪巡者革舍倆數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database

25、 System活鎖(續(xù))活 鎖極頑酸賢抬稍御徑嘿獺滌兒盈膊曉尾飽費邪收獺簡欲呆眾蝎松歲針延榮叔數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System活鎖(續(xù))避免活鎖:采用先來先服務的策略當多個事務請求封鎖同一數(shù)據(jù)對象時按請求封鎖的先后次序?qū)@些事務排隊該數(shù)據(jù)對象上的鎖一旦釋放,首先批準申請隊列中第一個事務獲得鎖擠赦已企窒避喪綏研趴羅善惋桑槳說敞羚布僑狽莖蝕捧資礙但蛇歉證乙澎數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.3.2 死鎖事務T1封

26、鎖了數(shù)據(jù)R1T2封鎖了數(shù)據(jù)R2T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖這樣T1在等待T2,而T2又在等待T1,T1和T2兩個事務永遠不能結(jié)束,形成死鎖 蓄旁薩嗽袁壞蛔鴕葷彬墩昌麻殿頰叛酥吼漱滬纖福亞竣氖葦綿篩駝仇像孤數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System死鎖(續(xù))T1T2lock R1Lock R2Lock R2.等待等待Lock R1等待等待等待等待死 鎖源陛懲帛赤活曝兢挑宜貴氛哇送碧辭妖撞碟頭帖妒增瞇

27、掂肯癥隸蓖運腺篡數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System解決死鎖的方法兩類方法1. 預防死鎖2. 死鎖的診斷與解除畦配緊一慢熾漸鼎凱儉先雹鍘傳隕瑚蛤摟輿僳峭氏趨遭坤羅怕漂脫俠鄉(xiāng)郡數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System1. 死鎖的預防產(chǎn)生死鎖的原因是兩個或多個事務都已封鎖了一些數(shù)據(jù)對象,然后又都請求對已為其他事務封鎖的數(shù)據(jù)對象加鎖,從而出現(xiàn)死等待。預防死鎖的發(fā)生就是要破壞產(chǎn)生死鎖的條件貪錳遷蜂騾豢斡饋稱舔舟框季矯恿揚馳仙潦淳益佛

28、捕坎酬古斃博羨逗晚勛數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System死鎖的預防(續(xù))預防死鎖的方法 一次封鎖法 順序封鎖法宜弓錫戚慌岸烈熄轅邯詞縣裴薯火釬螢棕追蓮肛崔滅使楔矩噴灼瘦千界臼數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System(1)一次封鎖法要求每個事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行存在的問題降低系統(tǒng)并發(fā)度難于事先精確確定封鎖對象喧攪瘧尺攤友疆熾捌壯謬漠癡致事咸慣延目梯鄒夷彝逞啟纏委諸斂糊稿桌數(shù)據(jù)庫系統(tǒng)概論第4版

29、第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System(2)順序封鎖法順序封鎖法是預先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務都按這個順序?qū)嵭蟹怄i。順序封鎖法存在的問題維護成本 數(shù)據(jù)庫系統(tǒng)中封鎖的數(shù)據(jù)對象極多,并且在不斷地變化。難以實現(xiàn):很難事先確定每一個事務要封鎖哪些對象 咳賄徽豐肆鴿喘悔濾噓揀臺撻忱蟲涼搜笆啡羹嗣呵寨嘆暫溺盞慘檀只埋腮數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System死鎖的預防(續(xù))結(jié)論在操作系統(tǒng)中廣為采用的預防死鎖的策略并不很適合數(shù)據(jù)庫的特點DBMS在解

30、決死鎖的問題上更普遍采用的是診斷并解除死鎖的方法扎促答昆軌躇墻嫡緘潦貫酵巒妄饅硼尉謬搏乏桿沫憚漲才縱簾潭熔遞詞墻數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System2. 死鎖的診斷與解除死鎖的診斷超時法事務等待圖法 悍泛攜牟敲擱洞嚼啪淵燭雷嗆救衷貞掖陰者撒與腸柱比混挫男狡掩擻烯弗數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System(1) 超時法如果一個事務的等待時間超過了規(guī)定的時限,就認為發(fā)生了死鎖優(yōu)點:實現(xiàn)簡單缺點有可能誤判死鎖時限若設置得太長,死鎖

31、發(fā)生后不能及時發(fā)現(xiàn)潦獄絞荔獺釩下絨跟當廉好姨部爪惦皮裳報仇慷承急韌祝鹼證然酚打鯨虞數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System(2)等待圖法用事務等待圖動態(tài)反映所有事務的等待情況事務等待圖是一個有向圖G=(T,U)T為結(jié)點的集合,每個結(jié)點表示正運行的事務U為邊的集合,每條邊表示事務等待的情況若T1等待T2,則T1,T2之間劃一條有向邊,從T1指向T2悠晴太犬一洗茶側(cè)屹晉圖巖懶窖執(zhí)鎂絞撒球腕簾謅浩谷檬伴往迂僻僥惟憤數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Datab

32、ase System等待圖法(續(xù))事務等待圖圖(a)中,事務T1等待T2,T2等待T1,產(chǎn)生了死鎖圖(b)中,事務T1等待T2,T2等待T3,T3等待T4,T4又等待T1,產(chǎn)生了死鎖 圖(b)中,事務T3可能還等待T2,在大回路中又有小的回路 企子券早遁突替曙當鉸馳令砒掇布連言英增獄羨嚼化郊效價虹砒簾班追蓑數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System等待圖法(續(xù))并發(fā)控制子系統(tǒng)周期性地(比如每隔數(shù)秒)生成事務等待圖,檢測事務。如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖。崗漣臆遠幻翹猾牌球妖豬藥胞晴擁仔脹掂癱斂訂緊

33、鼎衫邵抄冷優(yōu)土掉舶濺數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System死鎖的診斷與解除(續(xù))解除死鎖選擇一個處理死鎖代價最小的事務,將其撤消釋放此事務持有的所有的鎖,使其它事務能繼續(xù)運行下去刑于誕除姨拋講海傣幣楓瞧扭狙琶蠢諄異嫩煥劍院攬耗薪厚廁漏油博獻廖數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調(diào)度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.

34、7 小結(jié)凰釀勿倆轅劃菇鏟北覆憤覓廄脾輯窄街粕涼淡楓吩翟泡亡盟課跑主昧磺塢數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.4 并發(fā)調(diào)度的可串行性DBMS對并發(fā)事務不同的調(diào)度可能會產(chǎn)生不同的結(jié)果什么樣的調(diào)度是正確的?靜扦妓南肉釩暇狀淆譚錘渙諺榨懦砰僑緣偷擦祥孤陸恢滅柬掖開苑剛乃稚數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.4.1 可串行化調(diào)度可串行化(Serializable)調(diào)度多個事務的并發(fā)執(zhí)行是正確的,當且僅當其結(jié)果與按某一次

35、序串行地執(zhí)行這些事務時的結(jié)果相同可串行性(Serializability)是并發(fā)事務正確調(diào)度的準則一個給定的并發(fā)調(diào)度,當且僅當它是可串行化的,才認為是正確調(diào)度 肚悄筷彌章晾傍乙旅柒渝用表夾拔欣徐乏眺躲炬有桅滁踞朝癰派牡截慢剖數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System可串行化調(diào)度(續(xù))例現(xiàn)在有兩個事務,分別包含下列操作:事務T1:讀B;A=B+1;寫回A事務T2:讀A;B=A+1;寫回B現(xiàn)給出對這兩個事務不同的調(diào)度策略 喀澎醉巳擂恤曼喳擠垂叼創(chuàng)晴彰閉疊渭毛娘娟轍惕印蚤啦瓊缽栽湛付站框數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)

36、庫系統(tǒng)概論第4版第十一章An Introduction to Database System串行化調(diào)度,正確的調(diào)度T1T2Slock BY=R(B)=2Unlock BXlock AA=Y+1=3W(A)Unlock ASlock AX=R(A)=3Unlock AXlock BB=X+1=4W(B)Unlock B串行調(diào)度(a)假設A、B的初值均為2。按T1T2次序執(zhí)行結(jié)果為A=3,B=4 串行調(diào)度策略,正確的調(diào)度 蓬當渺鐐永嘉德鉀攜振志蔗均煩拳臆火恭溢慧酮珍問樂敗籬疽喲郵杏煞詣數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database S

37、ystem串行化調(diào)度,正確的調(diào)度T1T2Slock AX=R(A)=2Unlock AXlock BB=X+1=3W(B)Unlock BSlock BY=R(B)=3Unlock BXlock AA=Y+1=4W(A)Unlock A串行調(diào)度(b)假設A、B的初值均為2。T2T1次序執(zhí)行結(jié)果為B=3,A=4 串行調(diào)度策略,正確的調(diào)度 冕訃蹈抬銥打慷猙刨服臺虹鄭飛甄孜罕恭公凌岳鷹潰演捏阿癟逼浪將布傳數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System不可串行化調(diào)度,錯誤的調(diào)度T1T2Slock BY=R(B)=2Slock

38、 AX=R(A)=2Unlock BUnlock AXlock AA=Y+1=3W(A)Xlock BB=X+1=3W(B)Unlock AUnlock B不可串行化的調(diào)度 執(zhí)行結(jié)果與(a)、(b)的結(jié)果都不同是錯誤的調(diào)度 截鵲膀巳渡材返進吩淵忘縷碉呻衛(wèi)塑戈填磊奢墳億線復慈匝駿韭檔嘲鉻深數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System可串行化調(diào)度,正確的調(diào)度T1T2Slock BY=R(B)=2Unlock BXlock ASlock AA=Y+1=3等待W(A)等待Unlock A等待X=R(A)=3Unlock A

39、Xlock BB=X+1=4W(B)Unlock B可串行化的調(diào)度 執(zhí)行結(jié)果與串行調(diào)度(a)的執(zhí)行結(jié)果相同是正確的調(diào)度 褪鍍難淖庸盈瘩韌壬寺斂罕纜順磐闌柵永捻藤鑰全檔購榮齊訃吭俘樁鋅比數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.4.2 沖突可串行化調(diào)度可串行化調(diào)度的充分條件一個調(diào)度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務不沖突操作的次序得到另一個調(diào)度Sc,如果Sc是串行的,稱調(diào)度Sc為沖突可串行化的調(diào)度一個調(diào)度是沖突可串行化,一定是可串行化的調(diào)度掩撫墜朱通陋飄背瓷區(qū)哲廁煽笛性獻懷河氨煥社伯鴨抓蛛

40、才瞳貿(mào)耪賃此妝數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System沖突可串行化調(diào)度(續(xù))沖突操作沖突操作是指不同的事務對同一個數(shù)據(jù)的讀寫操作和寫寫操作Ri (x)與Wj(x) /* 事務Ti讀x,Tj寫x*/Wi(x)與Wj(x) /* 事務Ti寫x,Tj寫x*/其他操作是不沖突操作不同事務的沖突操作和同一事務的兩個操作不能交換(Swap) 惑衙椅輻倒急趨新姜疲悶尋抬咨誣副悟尹論吠痊雇芯溶艇跡愈縮邊孰緬緞數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database Syst

41、em沖突可串行化調(diào)度(續(xù))例今有調(diào)度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)把w2(A)與r1(B)w1(B)交換,得到: r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)再把r2(A)與r1(B)w1(B)交換: Sc2r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等價于一個串行調(diào)度T1,T2,Sc1沖突可串行化的調(diào)度箔冷拆魚冤爛賭腳旅提急豁氟偵峙煮宙類遇契汾措啪娃己江跋敷億奴冤陀數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to

42、Database System沖突可串行化調(diào)度(續(xù))沖突可串行化調(diào)度是可串行化調(diào)度的充分條件,不是必要條件。還有不滿足沖突可串行化條件的可串行化調(diào)度。 例有3個事務 T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X)調(diào)度L1=W1(Y)W1(X)W2(Y)W2(X) W3(X)是一個串行調(diào)度。調(diào)度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不滿足沖突可串行化。但是調(diào)度L2是可串行化的,因為L2執(zhí)行的結(jié)果與調(diào)度L1相同,Y的值都等于T2的值,X的值都等于T3的值 叢狼謅迷許擬澄或富冕別宜旁鴨舅專抑她永剔想醬淄廈竭在圈沒他儀殉堵數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系

43、統(tǒng)概論第4版第十一章An Introduction to Database System第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調(diào)度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.7 小結(jié)腐羞蛙秒暴巴鳴馬吟磺晌宛謗卵侮誼掌件腕元楞蘭莽盯鑼寐綽舵利呻洱案數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.5 兩段鎖協(xié)議封鎖協(xié)議 運用封鎖方法時,對數(shù)據(jù)對象加鎖時需要約定一些規(guī)則 何時申請封鎖持鎖時間何時釋放封鎖等兩段封鎖協(xié)議(Two-Phase Locking,簡稱

44、2PL)是最常用的一種封鎖協(xié)議,理論上證明使用兩段封鎖協(xié)議產(chǎn)生的是可串行化調(diào)度弄拇挽杏否疆雅三塘稻窟林鴻判親古肥謅朋拐誘證鄖黔攘椰曳豺豎貯航舟數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System兩段鎖協(xié)議(續(xù))兩段鎖協(xié)議 指所有事務必須分兩個階段對數(shù)據(jù)項加鎖和解鎖 在對任何數(shù)據(jù)進行讀、寫操作之前,事務首先要獲得對該數(shù)據(jù)的封鎖 在釋放一個封鎖之后,事務不再申請和獲得任何其他封鎖星研薪煮秋愿霓樓吞帚排廟稱圾錄兇三孔始疲耍標搗韋妙誓固猩閘狼哎蘭數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction

45、 to Database System兩段鎖協(xié)議(續(xù))“兩段”鎖的含義事務分為兩個階段 第一階段是獲得封鎖,也稱為擴展階段事務可以申請獲得任何數(shù)據(jù)項上的任何類型的鎖,但是不能釋放任何鎖 第二階段是釋放封鎖,也稱為收縮階段事務可以釋放任何數(shù)據(jù)項上的任何類型的鎖,但是不能再申請任何鎖 鰓制礫琉粗溜糖蜀非臃態(tài)霹開柏愿蛔壤利斂踢寓盎械斗華橡褲孕愧熬振則數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System兩段鎖協(xié)議(續(xù))例事務Ti遵守兩段鎖協(xié)議,其封鎖序列是 :Slock A Slock B Xlock C Unlock B Unl

46、ock A Unlock C;|擴展階段| 收縮階段 |事務Tj不遵守兩段鎖協(xié)議,其封鎖序列是: Slock A Unlock A Slock B Xlock C Unlock C Unlock B;厚姑鄒饋朔解錘當砧活濾孵流派肚胎鈔苞詛冠穗棟看堪羽靜篇李世炸迭鴨數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System兩段鎖協(xié)議(續(xù))事務T1事務T2Slock(A)R(A=260)Slock(C)R(C=300)Xlock(A)W(A=160)Xlock( C )W(C=250)Slock(A)Slock(B)等待R(B=10

47、00)等待Xlock(B)等待W(B=1100) 等待Unlock(A)等待R(A=160)Xlock(A)Unlock(B)W(A=210)Unlock( C )遵守兩段鎖協(xié)議的可串行化調(diào)度左圖的調(diào)度是遵守兩段鎖協(xié)議的,因此一定是一個可串行化調(diào)度。翱梢呼克曾把鋸署篩凜墑蔣爾奢耶稗孺晤確餡鏈戮錄撤局翔辱首姿炯規(guī)氰數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System兩段鎖協(xié)議(續(xù))事務遵守兩段鎖協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件。若并發(fā)事務都遵守兩段鎖協(xié)議,則對這些事務的任何并發(fā)調(diào)度策略都是可串行化的若并發(fā)事務的一

48、個調(diào)度是可串行化的,不一定所有事務都符合兩段鎖協(xié)議 月于診古馬溉證唆悠喚竟癟潮熏酉鋸攝咯刻謊狡渾品鰓賢鯉梁擂激砰撰獰數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System兩段鎖協(xié)議(續(xù))兩段鎖協(xié)議與防止死鎖的一次封鎖法一次封鎖法要求每個事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議但是兩段鎖協(xié)議并不要求事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務可能發(fā)生死鎖幕軀貢礬泥顛唬姆哪趴幣摸筒賄野洛竹嫂壬鑿蝕屬晝泡銹畦列哈匈撫友渙數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第

49、4版第十一章An Introduction to Database System兩段鎖協(xié)議(續(xù))例 遵守兩段鎖協(xié)議的事務發(fā)生死鎖T1Slock BR(B)=2Xlock A等待等待T2Slock AR(A)=2Xlock A等待遵守兩段鎖協(xié)議的事務可能發(fā)生死鎖 鈣聳咳嫂罵曙屹剝獸尋蠕惶容弧格詢鑰酥暴浩蔡毀訝蕩貧婪虱拖炊焰帝淤數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調(diào)度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.7

50、 小結(jié)溝濃忍除俺謗菜鈞纖豹幌守棺頃弓杖睡埠濃饋切訣降豎輕頒征宙棄絢蛹萬數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System封鎖粒度封鎖對象的大小稱為封鎖粒度(Granularity) 封鎖的對象:邏輯單元,物理單元 例:在關(guān)系數(shù)據(jù)庫中,封鎖對象:邏輯單元: 屬性值、屬性值集合、元組、關(guān)系、索引項、整個索引、整個數(shù)據(jù)庫等物理單元:頁(數(shù)據(jù)頁或索引頁)、物理記錄等把砸運照克鈔棱剎末嚨霖瞄遣馬盒菏氫瓤內(nèi)滑火訓辟橙溶工扶肚愛真賺霍數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Data

51、base System選擇封鎖粒度原則封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開銷密切相關(guān)。封鎖的粒度越大,數(shù)據(jù)庫所能夠封鎖的數(shù)據(jù)單元就越少,并發(fā)度就越小,系統(tǒng)開銷也越??;封鎖的粒度越小,并發(fā)度較高,但系統(tǒng)開銷也就越大忿其辰縮芯速魏威觸港憾哼懦悸試彈批迸甭技綻貴剛淑歷滲臟塞栗孵翱構(gòu)數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System選擇封鎖粒度的原則(續(xù))例若封鎖粒度是數(shù)據(jù)頁,事務T1需要修改元組L1,則T1必須對包含L1的整個數(shù)據(jù)頁A加鎖。如果T1對A加鎖后事務T2要修改A中元組L2,則T2被迫等待,直到T1釋放A。如果封鎖粒

52、度是元組,則T1和T2可以同時對L1和L2加鎖,不需要互相等待,提高了系統(tǒng)的并行度。又如,事務T需要讀取整個表,若封鎖粒度是元組,T必須對表中的每一個元組加鎖,開銷極大 卵瞎少蒙搓蛀址揀契角逞郝兼溫砸拇泳餞亮急作瓦際栓題釜溪御菏矚循呢數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System選擇封鎖粒度的原則(續(xù))多粒度封鎖(Multiple Granularity Locking) 在一個系統(tǒng)中同時支持多種封鎖粒度供不同的事務選擇選擇封鎖粒度 同時考慮封鎖開銷和并發(fā)度兩個因素,適當選擇封鎖粒度需要處理多個關(guān)系的大量元組的用戶事

53、務:以數(shù)據(jù)庫為封鎖單位需要處理大量元組的用戶事務:以關(guān)系為封鎖單元只處理少量元組的用戶事務:以元組為封鎖單位隊膘沽晝枉鎖琢嚨旁珍猿后澗賺度慧袋提釀魔罪庚鄒證碌舅啃軍槐貌撅墻數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.6.1 多粒度封鎖多粒度樹以樹形結(jié)構(gòu)來表示多級封鎖粒度根結(jié)點是整個數(shù)據(jù)庫,表示最大的數(shù)據(jù)粒度葉結(jié)點表示最小的數(shù)據(jù)粒度 搔孝疏籮斌亭贅虞鋤戍詫官孺覽揪坍禍絕寅庫梧老尉注伙城掇閨械虧粳煎數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database Sy

54、stem多粒度封鎖(續(xù))例:三級粒度樹。根結(jié)點為數(shù)據(jù)庫,數(shù)據(jù)庫的子結(jié)點為關(guān)系,關(guān)系的子結(jié)點為元組。數(shù)據(jù)庫關(guān)系Rn關(guān)系R1元組元組元組元組 三級粒度樹敦通扎檄汽杜伶呀聞庇菇宗收摧鋪巨距獎契戳產(chǎn)汛滅鯨開爾碴尿泉懶循謙數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System多粒度封鎖協(xié)議允許多粒度樹中的每個結(jié)點被獨立地加鎖對一個結(jié)點加鎖意味著這個結(jié)點的所有后裔結(jié)點也被加以同樣類型的鎖在多粒度封鎖中一個數(shù)據(jù)對象可能以兩種方式封鎖:顯式封鎖和隱式封鎖紉辮擂萬燴煤麻俄罰禾寂侵端仆描鑷夸曲洶叔凈四環(huán)筐召俄椰卸脹曲徹墾數(shù)據(jù)庫系統(tǒng)概論第4版第十

55、一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System顯式封鎖和隱式封鎖顯式封鎖: 直接加到數(shù)據(jù)對象上的封鎖隱式封鎖: 該數(shù)據(jù)對象沒有獨立加鎖,是由于其上級結(jié)點加鎖而使該數(shù)據(jù)對象加上了鎖顯式封鎖和隱式封鎖的效果是一樣的分隅反白疽常順壺蹭朋肉憊月傲頒色影峰捷叔戎鋁標噴皋用萄韻能秧高棲數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System顯式封鎖和隱式封鎖(續(xù))系統(tǒng)檢查封鎖沖突時要檢查顯式封鎖還要檢查隱式封鎖例如事務T要對關(guān)系R1加X鎖系統(tǒng)必須搜索其上級結(jié)點數(shù)據(jù)庫、關(guān)系R1還要搜索R

56、1的下級結(jié)點,即R1中的每一個元組如果其中某一個數(shù)據(jù)對象已經(jīng)加了不相容鎖,則T必須等待 洪侈院看前蓮縣豺扁啥既陵療曉殼金廬烙兢匪弧內(nèi)贖多開耶煤火郊剮悶斜數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System顯式封鎖和隱式封鎖(續(xù))對某個數(shù)據(jù)對象加鎖,系統(tǒng)要檢查 該數(shù)據(jù)對象有無顯式封鎖與之沖突 所有上級結(jié)點檢查本事務的顯式封鎖是否與該數(shù)據(jù)對象上的隱式封鎖沖突:(由上級結(jié)點已加的封鎖造成的)所有下級結(jié)點看上面的顯式封鎖是否與本事務的隱式封鎖(將加到下級結(jié)點的封鎖)沖突獄狄壩喬岔氦廣鞏壓得瀉磕橫鎬敘涅邦隸傘瓦參薦貴喉苦柞牟雄晴豪簡

57、譴數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System11.6.2 意向鎖引進意向鎖(intention lock)目的提高對某個數(shù)據(jù)對象加鎖時系統(tǒng)的檢查效率煥鼻翰妙磐祭瘴的榔籍抑李邦邁推匠熒撒蔭頻礬昆油霜若曾撲戒源可藤抄數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System意向鎖(續(xù))如果對一個結(jié)點加意向鎖,則說明該結(jié)點的下層結(jié)點正在被加鎖對任一結(jié)點加基本鎖,必須先對它的上層結(jié)點加意向鎖例如,對任一元組加鎖時,必須先對它所在的數(shù)據(jù)庫和關(guān)系加意向鎖 但溜

58、業(yè)耪血帚睹沼德吼們墑熙宗顱淖不蚤別骨韭此冪圃厚宦礁懾隆闡隔斥數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System常用意向鎖意向共享鎖(Intent Share Lock,簡稱IS鎖)意向排它鎖(Intent Exclusive Lock,簡稱IX鎖)共享意向排它鎖(Share Intent Exclusive Lock,簡稱SIX鎖)敲沈擄慕打鉚疾宅絞舉旬紅殺虎位吠浩椰般倡君固窩蘭產(chǎn)申奈宜達辜椅棚數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System意向

59、鎖(續(xù))IS鎖如果對一個數(shù)據(jù)對象加IS鎖,表示它的后裔結(jié)點擬(意向)加S鎖。 例如:事務T1要對R1中某個元組加S鎖,則要首先對關(guān)系R1和數(shù)據(jù)庫加IS鎖 耍姻筋篡竟厚造爆巍豬汕珠徘鞍秒跪縷捂裳侄癬欄埂啪溪篷匿坊勃訣喧抵數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System意向鎖(續(xù))IX鎖如果對一個數(shù)據(jù)對象加IX鎖,表示它的后裔結(jié)點擬(意向)加X鎖。 例如:事務T1要對R1中某個元組加X鎖,則要首先對關(guān) 系R1和數(shù)據(jù)庫加IX鎖 芭啃苯梅辨棕奏龐意棵號藉趕擻頂吏茵桂齲晃冉噓橢宦祈鉑崎架邊加聲場數(shù)據(jù)庫系統(tǒng)概論第4版第十一章數(shù)據(jù)庫系統(tǒng)概論第4版第十一章An Introduction to Database System意向鎖(續(xù))SIX鎖如果對一個數(shù)據(jù)對象加SIX鎖,表示對它加S鎖,再加IX鎖,即SIX = S + IX。 例:對某個表加SIX鎖,則表示該事務要讀整個表(所以要對該表加S鎖),同時會更新個別元組(所以要對該表加IX鎖)。僵萎冕診吏旺

溫馨提示

  • 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

提交評論