




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章
事務(wù)與并發(fā)控制
數(shù)據(jù)庫(kù)原理與應(yīng)用1本章內(nèi)容10.1事務(wù)10.2并發(fā)控制210.1事務(wù)10.1.1事務(wù)的基本概念10.1.2事務(wù)的特征10.1.3事務(wù)處理模型310.1.1事務(wù)的基本概念事務(wù)(transaction)是用戶定義的數(shù)據(jù)操作系列,這些操作作為一個(gè)完整的工作單元執(zhí)行。一個(gè)事務(wù)內(nèi)的所有語(yǔ)句作為一個(gè)整體,要么全部執(zhí)行,要么全部不執(zhí)行。4舉例例如,A賬戶轉(zhuǎn)賬給B賬戶n元錢(qián),這個(gè)業(yè)務(wù)活動(dòng)包含如下兩個(gè)操作:
第一個(gè)操作:A賬戶?n
第二個(gè)操作:B賬戶+n假設(shè)第一個(gè)操作成功了,但第二個(gè)操作由于某種原因沒(méi)有成功(比如突然停電等)。那么在系統(tǒng)恢復(fù)正常運(yùn)行后,A賬戶的金額是減n之前的值還是減n之后的值呢?5舉例(續(xù))如果B賬戶的金額沒(méi)有變化(沒(méi)有加上n),則正確的情況是A賬戶的金額應(yīng)該是沒(méi)有做減n操作之前的值(如果A賬戶是減n之后的值,則A賬戶中的金額和B賬戶中的金額就對(duì)不上了,這顯然是不正確的)。怎樣保證在系統(tǒng)恢復(fù)之后,A賬戶中的金額是減n前的值呢?這就需要用到事務(wù)的概念。6事務(wù)基本概念事務(wù)可以保證在一個(gè)事務(wù)中的全部操作或者全部成功,或者全部失敗。當(dāng)?shù)诙€(gè)操作沒(méi)有成功完成時(shí),系統(tǒng)自動(dòng)撤銷第一個(gè)操作,使第一個(gè)操作不做。這樣當(dāng)系統(tǒng)恢復(fù)正常時(shí),A賬戶和B賬戶中的數(shù)值就是正確的。必須顯式地告訴數(shù)據(jù)庫(kù)管理系統(tǒng)哪些操作屬于一個(gè)事務(wù),這可以通過(guò)標(biāo)記事務(wù)的開(kāi)始與結(jié)束來(lái)實(shí)現(xiàn)。7事務(wù)的開(kāi)始和結(jié)束不同的事務(wù)處理模型,事務(wù)的開(kāi)始標(biāo)記不完全一樣,但事務(wù)的結(jié)束標(biāo)記都是一樣的。事務(wù)的結(jié)束標(biāo)記有兩個(gè):正常結(jié)束,COMMIT,表示提交,即事務(wù)中的所有操作都會(huì)物理地保存到數(shù)據(jù)庫(kù)中,成為永久操作;異常結(jié)束,ROLLBACK,表示回滾,即事務(wù)中的全部操作被撤銷,數(shù)據(jù)回到事務(wù)開(kāi)始之前的狀態(tài)。810.1.2事務(wù)的特征事務(wù)有四個(gè)特征,即原子性(atomicity)一致性(consistency)隔離性(isolation)持久性(durability)這4個(gè)特征也簡(jiǎn)稱為事務(wù)的ACID特征。9原子性事務(wù)的原子性是指事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,事務(wù)中的操作,要么都做,要么都不做。10一致性事務(wù)的一致性是指事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。當(dāng)事務(wù)成功提交時(shí),數(shù)據(jù)庫(kù)就從事務(wù)開(kāi)始前的一致性狀態(tài)轉(zhuǎn)到了事務(wù)結(jié)束后的一致性狀態(tài)。11隔離性事務(wù)的隔離性是指數(shù)據(jù)庫(kù)中一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)不能相互干擾。12持久性事務(wù)的持久性也稱為永久性(permanence),指事務(wù)一旦提交,則其對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就是永久的,以后的操作或故障不會(huì)對(duì)事務(wù)的操作結(jié)果產(chǎn)生任何影響。13說(shuō)明事務(wù)是數(shù)據(jù)庫(kù)并發(fā)控制和恢復(fù)的基本單位。保證事務(wù)的ACID特性是事務(wù)處理的重要任務(wù)。事務(wù)的ACID特性可能遭到破壞的因素有:多個(gè)事務(wù)并行運(yùn)行時(shí),不同事務(wù)的操作有交叉情況。數(shù)據(jù)庫(kù)管理系統(tǒng)必須保證多個(gè)事務(wù)在交叉運(yùn)行時(shí)不影響這些事務(wù)的原子性。事務(wù)在運(yùn)行過(guò)程中被強(qiáng)迫停止。數(shù)據(jù)庫(kù)管理系統(tǒng)必須保證被強(qiáng)迫終止的事務(wù)對(duì)數(shù)據(jù)庫(kù)和其他事務(wù)沒(méi)有任何影響。1410.1.3事務(wù)處理模型事務(wù)有兩種類型:顯式事務(wù)隱式事務(wù)顯式事務(wù)是有顯式的開(kāi)始和結(jié)束標(biāo)記的事務(wù)。隱式事務(wù)是指每一條數(shù)據(jù)操作語(yǔ)句都自動(dòng)地成為一個(gè)事務(wù)。15MySQL的事務(wù)標(biāo)記事務(wù)的開(kāi)始標(biāo)記是:
STARTTRANSACTION;事務(wù)的結(jié)束標(biāo)記有如下兩個(gè):COMMIT;
#正常結(jié)束ROLLBACK;
#異常結(jié)束16轉(zhuǎn)賬示例STARTTRANSACTION;UPDATE支付表SET賬戶總額=賬戶總額-nWHERE賬戶號(hào)='A'UPDATE支付表SET賬戶總額=賬戶總額+nWHERE賬戶號(hào)='B'COMMIT;17本章內(nèi)容10.1事務(wù)10.2并發(fā)控制1810.2并發(fā)控制10.2.1并發(fā)控制概述10.2.2并發(fā)控制措施10.2.3封鎖協(xié)議10.2.4活鎖和死鎖10.2.5并發(fā)調(diào)度的可串行性10.2.6兩段鎖協(xié)議1910.2并發(fā)控制數(shù)據(jù)庫(kù)系統(tǒng)一個(gè)明顯的特點(diǎn)是多個(gè)用戶共享數(shù)據(jù)庫(kù)資源,尤其是多用戶可以同時(shí)存取相同數(shù)據(jù),在這樣的系統(tǒng)中,在同一時(shí)刻同時(shí)運(yùn)行的事務(wù)可達(dá)數(shù)百個(gè)。當(dāng)系統(tǒng)中同時(shí)有多個(gè)事務(wù)在運(yùn)行時(shí),特別是當(dāng)這些事務(wù)是對(duì)同一段數(shù)據(jù)進(jìn)行操作時(shí),彼此之間就有可能產(chǎn)生相互干擾的情況。20串行執(zhí)行如果事務(wù)是順序執(zhí)行的,即一個(gè)事務(wù)完成之后,再開(kāi)始另一個(gè)事務(wù),則稱這種執(zhí)行方式為串行執(zhí)行。21交叉并行執(zhí)行如果數(shù)據(jù)庫(kù)管理系統(tǒng)可以同時(shí)接受多個(gè)事務(wù),并且這些事務(wù)在時(shí)間上可以重疊執(zhí)行,則稱這種執(zhí)行式為并發(fā)執(zhí)行。22交叉并發(fā)與同時(shí)并發(fā)在單CPU系統(tǒng)中,同一時(shí)間只能有一個(gè)事務(wù)占據(jù)CPU,各個(gè)事務(wù)交叉地使用CPU,這種并發(fā)方式稱為交叉并發(fā)。在多CPU系統(tǒng)中,多個(gè)事務(wù)可以同時(shí)占有CPU,這種并發(fā)方式稱為同時(shí)并發(fā)。主要討論單CPU中的交叉并發(fā)的情況。2310.2并發(fā)控制10.2.1并發(fā)控制概述10.2.2并發(fā)控制措施10.2.3封鎖協(xié)議10.2.4活鎖和死鎖10.2.5并發(fā)調(diào)度的可串行性10.2.6兩段鎖協(xié)議2410.2.1并發(fā)控制概述設(shè)有訂票業(yè)務(wù):①A訂票點(diǎn)(事務(wù)A)讀出航班目前的機(jī)票余額數(shù),假設(shè)為10張;②B訂票點(diǎn)(事務(wù)B)讀出航班目前的機(jī)票余額數(shù),也為10張;③A訂票點(diǎn)訂出6張機(jī)票,修改機(jī)票余額為10-6=4,并將4寫(xiě)回到數(shù)據(jù)庫(kù)中;④B訂票點(diǎn)訂出5張機(jī)票,修改機(jī)票余額為10-5=5,并將5寫(xiě)回到數(shù)據(jù)庫(kù)中。這兩個(gè)事務(wù)不能反映出飛機(jī)票數(shù)不夠的情況,而且B事務(wù)還覆蓋了A事務(wù)對(duì)數(shù)據(jù)的修改,使數(shù)據(jù)庫(kù)中的數(shù)據(jù)不正確。25數(shù)據(jù)不一致情況數(shù)據(jù)庫(kù)管理系統(tǒng)必須想辦法避免出現(xiàn)數(shù)據(jù)不正確(不一致)情況,這是數(shù)據(jù)庫(kù)管理系統(tǒng)在并發(fā)控制中要解決的問(wèn)題。并發(fā)操作所帶來(lái)的數(shù)據(jù)不一致情況大致可以概括為四種:丟失數(shù)據(jù)修改、讀“臟”數(shù)據(jù)、不可重復(fù)讀和產(chǎn)生“幽靈”數(shù)據(jù)。261.丟失數(shù)據(jù)修改時(shí)間事務(wù)T1事務(wù)T2t1讀A=16t2讀A=16t3修改A=A–1=15寫(xiě)回A=15t4修改A=A–4=12寫(xiě)回A=12(覆蓋了T1對(duì)A的修改)272.讀“臟”數(shù)據(jù)28時(shí)間事務(wù)T1事務(wù)T2t1讀B=100修改B=B*2=200寫(xiě)回B=200t2讀B=200(讀入T1的“臟數(shù)據(jù)”)t3ROLLBACKB恢復(fù)為1003.不可重復(fù)讀時(shí)間事務(wù)T1事務(wù)T2t1讀A=50讀B=100計(jì)算A+B=150t2讀B=100修改B=B*2=200寫(xiě)回B=200t3讀A=50讀B=200計(jì)算A+B=250(與前一次統(tǒng)計(jì)的值不同)294.產(chǎn)生“幽靈”數(shù)據(jù)產(chǎn)生“幽靈”數(shù)據(jù)實(shí)際屬于不可重復(fù)讀的范疇。當(dāng)事務(wù)T1按一定條件從數(shù)據(jù)庫(kù)中讀取了某些數(shù)據(jù)記錄后,事務(wù)T2刪除了其中的部分記錄,或在其中添加了部分記錄,則當(dāng)T1再次按相同條件讀取數(shù)據(jù)時(shí),發(fā)現(xiàn)其中莫名其妙地少了(刪除)或多了(插入)一些記錄。這樣的數(shù)據(jù)對(duì)T1來(lái)說(shuō)就是“幽靈”數(shù)據(jù)或稱“幻影”數(shù)據(jù)。3010.2并發(fā)控制10.2.1并發(fā)控制概述10.2.2并發(fā)控制措施10.2.3封鎖協(xié)議10.2.4活鎖和死鎖10.2.5并發(fā)調(diào)度的可串行性10.2.6兩段鎖協(xié)議3110.2.2并發(fā)控制措施進(jìn)行并發(fā)控制的主要方式是使用封鎖機(jī)制,即加鎖(locking)。加鎖是一種并行控制技術(shù),用來(lái)調(diào)整對(duì)共享目標(biāo)(如數(shù)據(jù)庫(kù)中共享記錄)的并行存取。事務(wù)通過(guò)向封鎖管理程序的系統(tǒng)組成部分發(fā)出請(qǐng)求而對(duì)記錄加鎖。32以飛機(jī)訂票系統(tǒng)為例當(dāng)事務(wù)T要修改訂票數(shù)時(shí),在讀取訂票數(shù)之前先封鎖該數(shù)據(jù),然后再對(duì)數(shù)據(jù)進(jìn)行讀取和修改操作。這時(shí)其他事務(wù)就不能讀取和修改訂票數(shù),直到事務(wù)T修改完成并將數(shù)據(jù)寫(xiě)回到數(shù)據(jù)庫(kù),并解除對(duì)該數(shù)據(jù)的封鎖之后才能由其他事務(wù)使用這些數(shù)據(jù)。33加鎖加鎖就是限制事務(wù)內(nèi)和事務(wù)外對(duì)數(shù)據(jù)的操作。加鎖是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)。加鎖就是事務(wù)T在對(duì)某個(gè)數(shù)據(jù)操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,封鎖其所要使用的數(shù)據(jù)。加鎖后事務(wù)T對(duì)其要操作的數(shù)據(jù)具有了一定的控制權(quán),在事務(wù)T釋放它的鎖之前,其他事務(wù)不能操作這些數(shù)據(jù)。34鎖的類型基本的鎖類型有兩種:排他鎖(exclusivelock,也稱為X鎖或?qū)懰┕蚕礞i(sharelock,也稱S鎖或讀鎖)。35共享鎖若事務(wù)T給數(shù)據(jù)對(duì)象A加了S鎖,則事務(wù)T可以讀A,但不能修改A,其他事務(wù)可以再給A加S鎖,但不能加X(jué)鎖,直到T釋放了A上的S鎖為止。即對(duì)于讀操作(檢索)來(lái)說(shuō),可以有多個(gè)事務(wù)同時(shí)獲得共享鎖,但阻止其他事務(wù)對(duì)已獲得共享鎖的數(shù)據(jù)進(jìn)行排他封鎖。36排他鎖若事務(wù)T給數(shù)據(jù)對(duì)象A加了X鎖,則允許T讀取和修改A,但不允許其他事務(wù)再給A加任何類型的鎖和進(jìn)行任何操作。即一旦一個(gè)事務(wù)獲得了對(duì)某一數(shù)據(jù)的排他鎖,則任何其他事務(wù)均不能對(duì)該數(shù)據(jù)進(jìn)行任何封鎖,其他事務(wù)只能進(jìn)入等待狀態(tài),直到第一個(gè)事務(wù)撤銷了對(duì)該數(shù)據(jù)的封鎖。37加鎖類型的相容矩陣3810.2并發(fā)控制10.2.1并發(fā)控制概述10.2.2并發(fā)控制措施10.2.3封鎖協(xié)議10.2.4活鎖和死鎖10.2.5并發(fā)調(diào)度的可串行性10.2.6兩段鎖協(xié)議3910.2.3封鎖協(xié)議在運(yùn)用X鎖和S鎖給數(shù)據(jù)對(duì)象加鎖時(shí),還需要約定一些規(guī)則,如何時(shí)申請(qǐng)X鎖或S鎖、持鎖時(shí)間、何時(shí)釋放鎖等,稱這些規(guī)則為封鎖協(xié)議或加鎖協(xié)議(lockingprotocel)。對(duì)封鎖方式規(guī)定不同的規(guī)則,就形成了各種不同級(jí)別的封鎖協(xié)議。40一級(jí)封鎖協(xié)議對(duì)事務(wù)T要修改的數(shù)據(jù)加X(jué)鎖,直到事務(wù)結(jié)束(包括正常結(jié)束和非正常結(jié)束)時(shí)才釋放。一級(jí)封鎖協(xié)議可以防止丟失修改,并保證事務(wù)T是可恢復(fù)的。但不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)。41沒(méi)有丟失修改示例事務(wù)T1時(shí)間事務(wù)T2請(qǐng)求對(duì)A加X(jué)鎖,獲得t1
讀A=16t2
t3請(qǐng)求對(duì)A加X(jué)鎖,等待修改
A=A-1=15寫(xiě)回A=15t4等待釋放A的X鎖t5等待
t6獲得A的X鎖
t7讀A=15
t8修改
A=A-4=11寫(xiě)回A=11
t9釋放A的X鎖42二級(jí)封鎖協(xié)議一級(jí)封鎖協(xié)議加上事務(wù)T對(duì)要讀取的數(shù)據(jù)加S鎖,讀完后即釋放S鎖。二級(jí)封鎖協(xié)議除了可以防止丟失修改外,還可以防止讀“臟”數(shù)據(jù)。但不能保證可重復(fù)讀數(shù)據(jù)。43不讀“臟”數(shù)據(jù)示例事務(wù)T1時(shí)間事務(wù)T2請(qǐng)求對(duì)C加X(jué)鎖,獲得t1
讀C=50t2
修改C=C*2=100寫(xiě)回C=100t3
t4請(qǐng)求對(duì)C加S鎖,等待撤銷,恢復(fù)C為50t5等待釋放C的X鎖t6等待
t7獲得C的S鎖
t8讀C=50
t9釋放C的S鎖44三級(jí)封鎖協(xié)議一級(jí)封鎖協(xié)議加上事務(wù)T對(duì)要讀取的數(shù)據(jù)加S鎖,并直到事務(wù)結(jié)束才釋放。三級(jí)封鎖協(xié)議除了可以防止丟失數(shù)據(jù)修改和不讀“臟”數(shù)據(jù)之外,還進(jìn)一步防止了不可重復(fù)讀。45可重復(fù)讀示例事務(wù)T1時(shí)間事務(wù)T2請(qǐng)求對(duì)A、B分別加S鎖,獲得t1
讀A=50,B=100計(jì)算A+B=150t2
t3請(qǐng)求對(duì)B加X(jué)鎖,等待讀A=50,B=100計(jì)算A+B=150t4等待將計(jì)算結(jié)果寫(xiě)回?cái)?shù)據(jù)庫(kù)t5等待釋放A的S鎖,釋放B的S鎖t6等待
t7獲得B的X鎖
t8讀B=100
t9修改B=B*2=200寫(xiě)回B=200
t10釋放B的X鎖46各級(jí)封鎖協(xié)議區(qū)別封鎖協(xié)議X鎖(對(duì)寫(xiě)數(shù)據(jù))S鎖(對(duì)讀數(shù)據(jù))不丟失修改(寫(xiě))不讀臟數(shù)據(jù)(讀)可重復(fù)讀(讀)一級(jí)事務(wù)全程加鎖不加√二級(jí)事務(wù)全程加鎖事務(wù)開(kāi)始加鎖,讀完即釋放鎖√√三級(jí)事務(wù)全程加鎖事務(wù)全程加鎖√√√4710.2并發(fā)控制10.2.1并發(fā)控制概述10.2.2并發(fā)控制措施10.2.3封鎖協(xié)議10.2.4活鎖和死鎖10.2.5并發(fā)調(diào)度的可串行性10.2.6兩段鎖協(xié)議4810.2.4活鎖和死鎖——活鎖49避免活鎖簡(jiǎn)單方法是采用先來(lái)先服務(wù)的策略。當(dāng)多個(gè)事務(wù)請(qǐng)求封鎖同一數(shù)據(jù)對(duì)象時(shí),數(shù)據(jù)庫(kù)管理系統(tǒng)按先請(qǐng)求先滿足的事務(wù)排隊(duì)策略,當(dāng)數(shù)據(jù)對(duì)象上的鎖被釋放后,讓事務(wù)隊(duì)列中第一個(gè)事務(wù)獲得鎖。5010.2.4活鎖和死鎖——死鎖51解決死鎖在數(shù)據(jù)庫(kù)中解決死鎖問(wèn)題的方法主要有兩類一類是采取一定的措施來(lái)預(yù)防死鎖的發(fā)生,另一類是允許死鎖的發(fā)生,但采用一定的手段定期診斷系統(tǒng)中有無(wú)死鎖,若有則解除之。52預(yù)防死鎖——一次封鎖法每個(gè)事務(wù)一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行。問(wèn)題:封鎖范圍過(guò)大,降低了系統(tǒng)的并發(fā)性。由于數(shù)據(jù)庫(kù)中的數(shù)據(jù)不斷變化,使原來(lái)可以不加鎖的數(shù)據(jù),在執(zhí)行過(guò)程中可能變成了被封鎖對(duì)象,進(jìn)一步擴(kuò)大了封鎖范圍,從而更進(jìn)一步降低了并發(fā)性。53預(yù)防死鎖——順序封鎖法預(yù)先對(duì)數(shù)據(jù)對(duì)象規(guī)定一個(gè)封鎖順序,所有事務(wù)都按這個(gè)順序封鎖。問(wèn)題:若封鎖對(duì)象很多,則隨著插入、刪除等操作的不斷變化,使維護(hù)這些資源的封鎖順序很困難,事務(wù)的封鎖請(qǐng)求可隨事務(wù)的執(zhí)行而動(dòng)態(tài)變化,因此很難事先確定每個(gè)事務(wù)的封鎖數(shù)據(jù)及其封鎖順序。54死鎖的診斷和解除——超時(shí)法如果一個(gè)事務(wù)的等待時(shí)間超過(guò)了規(guī)定的時(shí)限,則認(rèn)為發(fā)生了死鎖。優(yōu)點(diǎn):實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單。不足可能產(chǎn)生誤判情況,比如,如果事務(wù)因某些原因造成等待時(shí)間比較長(zhǎng),超過(guò)了規(guī)定的等待時(shí)限,則系統(tǒng)會(huì)誤認(rèn)為發(fā)生了死鎖。若時(shí)限設(shè)置的比較長(zhǎng),則不能對(duì)發(fā)生的死鎖進(jìn)行及時(shí)的處理。55死鎖的診斷和解除——等待圖法事務(wù)等待圖是一個(gè)有向圖G=(T,U)。T為結(jié)點(diǎn)的集合,每個(gè)結(jié)點(diǎn)表示正在運(yùn)行的事務(wù);U為邊的集合,每條邊表示事務(wù)等待的情況。若T1等待T2,則T1和T2之間劃一條有向邊,從T1指向T2。56事務(wù)等待圖法(a)事務(wù)T1等待T2,T2等待T1,因此產(chǎn)生了死鎖。(b)事務(wù)T1等待T2,T2等待T3,T3等待T4,T4又等待T1,因此也產(chǎn)生了死鎖57等待圖法死鎖判斷事務(wù)等待圖動(dòng)態(tài)地反映了所有事務(wù)的等待情況。數(shù)據(jù)庫(kù)管理系統(tǒng)中的并發(fā)控制子系統(tǒng)周期性地(比如每隔幾秒)生成事務(wù)的等待圖,并進(jìn)行檢測(cè)。如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖。5810.2并發(fā)控制10.2.1并發(fā)控制概述10.2.2并發(fā)控制措施10.2.3封鎖協(xié)議10.2.4活鎖和死鎖10.2.5并發(fā)調(diào)度的可串行性10.2.6兩段鎖協(xié)議5910.2.5并發(fā)調(diào)度的可串行性數(shù)據(jù)庫(kù)管理系統(tǒng)對(duì)并發(fā)事務(wù)中操作的調(diào)度是隨機(jī)的,而不同的調(diào)度會(huì)產(chǎn)生不同的結(jié)果,哪個(gè)結(jié)果是正確的,哪個(gè)是不正確的?直觀地說(shuō),如果多個(gè)事務(wù)在某個(gè)調(diào)度下的執(zhí)行結(jié)果與這些事務(wù)在某個(gè)串行調(diào)度下的執(zhí)行結(jié)果相同,那么這個(gè)調(diào)度就一定是正確的。60進(jìn)一步說(shuō)明多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一順序的串行執(zhí)行的結(jié)果相同,就稱這種調(diào)度為可串行化的調(diào)度??纱行允遣l(fā)事務(wù)正確性的準(zhǔn)則,根據(jù)這個(gè)準(zhǔn)則可知,一個(gè)給定的并發(fā)調(diào)度,當(dāng)且僅當(dāng)它是可串行化的調(diào)度時(shí),才認(rèn)為是正確的調(diào)度。61示例設(shè)有兩個(gè)事務(wù),分別包含如下操作:事務(wù)T1:讀B;A=B+1;寫(xiě)回A;事務(wù)T2:讀A;B=A+1;寫(xiě)回B;假設(shè)A、B的初值均為4,若按T1
→T2的順序執(zhí)行,其結(jié)果為A=5,B=6若按T2
→T1的順序執(zhí)行,其結(jié)果為A=6,B=5則當(dāng)并發(fā)調(diào)度時(shí),如果執(zhí)行的結(jié)果是這兩者之一,則認(rèn)為都是正確的結(jié)果。62串行調(diào)度示例1T1T2對(duì)B加S鎖讀B=4釋放B的S鎖對(duì)A加X(jué)鎖修改A=B+1寫(xiě)回A(=5)釋放A的X鎖對(duì)A加S鎖讀A=5釋放A的S鎖對(duì)B加X(jué)鎖修改B=A+1寫(xiě)回B(=6)釋放B的X鎖63串行調(diào)度示例2T1T2對(duì)A加S鎖讀A=4釋放A的S鎖對(duì)B加X(jué)鎖修改B=A+1寫(xiě)回B(=5)釋放B的X鎖對(duì)B加S鎖讀B=5釋放B的S鎖對(duì)A加X(jué)鎖修改A=B+1寫(xiě)回A(=6)釋放A的X鎖64不可串行化調(diào)度示例T1T2對(duì)B加S鎖讀B=4對(duì)A加S鎖讀A=4釋放B的S鎖釋放A的S鎖對(duì)A加X(jué)鎖修改A=B+1寫(xiě)回A(=5)對(duì)B加X(jué)鎖修改B=A寫(xiě)回B(=5)釋放A的X鎖釋放B的X鎖65可串行化調(diào)度T1T2對(duì)B加S鎖讀B=4釋放B的S鎖A加X(jué)鎖要對(duì)A加S鎖修改A=B+1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物化學(xué)(第4版)課件 第7章 脂質(zhì)代謝
- 超高性能混凝土框架節(jié)點(diǎn)抗震性能研究
- 兒童健康檢查培訓(xùn)
- 盧桑斯的權(quán)變管理理論
- 黃疸的問(wèn)診要點(diǎn)與護(hù)理診斷
- 頸部疾病病人護(hù)理課件
- 我的健康早餐分享
- 幼兒春游欣賞活動(dòng)方案設(shè)計(jì)
- 健康素養(yǎng)大講堂
- 預(yù)防網(wǎng)絡(luò)詐騙班會(huì)課件
- 美國(guó)技術(shù)服務(wù)合同英文翻譯
- 企業(yè)數(shù)字化生存指南
- 醫(yī)院醫(yī)療器械臨床試驗(yàn)項(xiàng)目資料備案清單
- YDT 5206-2023寬帶光纖接入工程技術(shù)規(guī)范
- 新疆警察學(xué)院面試問(wèn)題及答案
- 小學(xué)三到六年級(jí)全冊(cè)單詞默寫(xiě)(素材)-2023-2024學(xué)年譯林版(三起)小學(xué)英語(yǔ)
- 鐵嶺市高校畢業(yè)生“三支一扶”計(jì)劃招募筆試真題2022
- 天然氣泄漏事故演練方案及評(píng)估
- 《養(yǎng)老機(jī)構(gòu)認(rèn)知障礙照護(hù)專區(qū)設(shè)置與服務(wù)規(guī)范》
- 婦科炎癥健康教育課件
- 兒科護(hù)理學(xué)(高職)全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論