版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第12章數(shù)據(jù)庫的并發(fā)控制本章介紹事務(wù)與事務(wù)調(diào)度,并發(fā)控制技術(shù)及死鎖的預(yù)防與處理方法。數(shù)據(jù)庫系統(tǒng)原理及應(yīng)用12.1事務(wù)概述12.2事務(wù)并發(fā)與數(shù)據(jù)不一致12.3基于鎖的并發(fā)控制技術(shù)12.4并發(fā)調(diào)度的可串行性主要內(nèi)容事務(wù)概述12.112.1.1事務(wù)的概念事務(wù)不是單行語句,是實現(xiàn)數(shù)據(jù)操作的一個最基本的單位。這些操作要么都做,要么都不做,是一個不可分割的工作單位。事務(wù)的執(zhí)行是分成眾多元操作逐步進行的,元操作一般分為READ和WRITE兩種。這兩個元操作的含義如下:1)READ(X):將數(shù)據(jù)項X從數(shù)據(jù)庫磁盤文件中讀入事務(wù)所在的內(nèi)存的緩沖區(qū)內(nèi)。2)WRITE(X):將數(shù)據(jù)項X從事務(wù)的內(nèi)存緩沖中寫回數(shù)據(jù)庫磁盤文件中,代表了事務(wù)對數(shù)據(jù)庫的更新操作。12.1.1事務(wù)的概念例如,如下事務(wù)的具體含義是學(xué)生持飯卡A在售飯機B上消費5元。STARTTRANSACTIONREAD(Balance_A)Balance_A=Balance_A-5;IFBalance_A<0THENPRINT(‘飯卡余額不足’)ROLLBACKT1ELSEWRITE(Balance_A)READ(Balance_B)MONEY_B=MONEY_B+5WRITE(MONEY_B)COMMIT12.1.2事務(wù)的特性原子性(Atomicity)事務(wù)中包含的所有操作要么全做,要么全不做原子性由恢復(fù)機制實現(xiàn)一致性(Consistency)事務(wù)開始前,數(shù)據(jù)庫處于一致性的狀態(tài);
事務(wù)結(jié)束后,數(shù)據(jù)庫必須仍處于一致性狀態(tài)一致性通過并發(fā)控制機制實現(xiàn)隔離性(Isolation)對任何一對事務(wù)T1,T2,在T1看來,T2要么在T1開始之前已經(jīng)結(jié)束,要么在T1完成之后再開始執(zhí)行隔離性通過并發(fā)控制機制實現(xiàn)持久性(Durability)一個事務(wù)一旦提交之后,它對數(shù)據(jù)庫的影響必須是永久的系統(tǒng)發(fā)生故障不能改變事務(wù)的持久性持久性通過恢復(fù)機制實現(xiàn)12.1.3事務(wù)模式(1)自動提交事務(wù)模式每條單獨的語句都是一個事務(wù)。每條SQL語句在成功執(zhí)行完成后,都被自動提交,如果遇到錯誤,則自動回滾該語句。該模式為系統(tǒng)默認的事務(wù)管理模式。(2)顯式事務(wù)模式應(yīng)用程序通過指定事務(wù)啟動和結(jié)束的時間來控制事務(wù)。MySQL使用STARTTRANSACTION、COMMIT、ROLLBACK、SETAUTOCOMMIT等語句管理本地事務(wù)(3)隱式事務(wù)模式數(shù)據(jù)定義語言中的CREATE、ALTER、DROP、RENAME、權(quán)限管理中的GRANT、REVOKE、SETPASSWORD等語句會產(chǎn)生隱式提交操作。即在事務(wù)中執(zhí)行完這些語句后會有一個隱式的COMMIT操作,直接提交該語句及其之前的語句。即使當(dāng)這些語句出現(xiàn)在STARTTRANSACTION與ROLLBACK之間,ROLLBACK也無法撤銷該語句及其之前的語句的操作結(jié)果。12.1.3事務(wù)模式基本的語法格式為:{STARTTRANSACTION|BEGIN[WORK]}[transaction_characteristic[,transaction_characteristic]...][WITHCONSISTENTSNAPSHOT]{COMMIT|ROLLBACK}SETAUTOCOMMIT={0|1}參數(shù):(1)STARTTRANSACTION|BEGIN[WORK]:啟動事務(wù)。BEGIN或BEGINWORK與STARTTRANSACTION的作用一樣,都可以用來啟動事務(wù)。(2)WITHCONSISTENTSNAPSHOT:有該子句是將STARTTRANSACTION作為事務(wù)開始的時間點。沒有該子句的情況下,執(zhí)行STARTTRANSACTION之后的第一條語句時事務(wù)才真正開始。(3)COMMIT:提交當(dāng)前事務(wù),使事務(wù)所做的數(shù)據(jù)更新永久生效。(4)ROLLBACK:事務(wù)執(zhí)行過程中遇到錯誤時,撤銷事務(wù)中已經(jīng)執(zhí)行的操作,把數(shù)據(jù)庫中的數(shù)據(jù)回滾到事務(wù)執(zhí)行之前的狀態(tài)或回滾到某一個指定位置。(5)AUTOCOMMIT:會話變量,可以為每個事務(wù)設(shè)置提交模式。默認情況下AUTOCOMMIT=1,MySQL啟用自動提交模式。這意味著事務(wù)中的每個語句都不能用ROLLBACK撤消語句執(zhí)行的效果,就像每個語句都被STARTTRANSACTION和COMMIT包裹起來一樣;如果在語句執(zhí)行期間發(fā)生錯誤,則會回滾該語句。(6)SETAUTOCOMMIT語句用來改變當(dāng)前會話的提交模式。執(zhí)行SETAUTOCOMMIT=0后,系統(tǒng)將禁用語句的自動提交模式,必須使用COMMIT提交事務(wù)或使用ROLLBACK撤銷事務(wù)。12.1.3事務(wù)模式例[12-1]:設(shè)更新前C00001校園卡的余額是500元,下列兩個SELECT語句的查詢結(jié)果分別是什么?STARTTRANSACTION;UPDATEcardSETbalance=balance-80WHERECID='C00001';SELECTbalanceFROMcardWHERECID='C00001';ROLLBACK;SELECTbalanceFROMcardWHERECID='C00001';第一個SELECE語句查看到的是UPDATE語句執(zhí)行后的數(shù)據(jù),為420第二個SELECE語句查看到的是ROLLBACK語句回滾事務(wù)后的結(jié)果,為50012.1.3事務(wù)模式[例12-2]:分析下列SELECT語句的執(zhí)行結(jié)果。SHOWVARIABLESLIKE'AUTOCOMMIT';SETAUTOCOMMIT=0;STARTTRANSACTION;UPDATEsalebillSETpayamount=30WHEREnumber='1';DELETEFROMsalebillWHEREnumber='2';DROPTABLEsalebill; //隱式提交ROLLBACK;SELECT*FROMsalebill;DROPTABLE語句執(zhí)行之后,該語句及其之前的語句已經(jīng)隱式提交,ROLLBACK失效。ROLLBACK語句之后的SELECT語句的執(zhí)行結(jié)果如圖所示,系統(tǒng)提示不存在salebill表。12.1.4保存點保存點(SAVEPOINT)是事務(wù)中的一個邏輯點,用于指定事務(wù)回滾的位置。結(jié)束事務(wù)時,系統(tǒng)自動刪除該事務(wù)中定義的所有保存點。(1)定義保存點SAVEPOINT語句用于定義保存點,其語法格式為:SAVEPOINTsavepoint_name參數(shù):
savepoint_name:保存點的名稱。12.1.4保存點ROLLBACKTO[SAVEPOINT]savepoint_name(2)回滾到保存點ROLLBACK語句除了可以將事務(wù)回滾到事務(wù)執(zhí)行之前的狀態(tài)并終止事務(wù),還可以與保存點結(jié)合使用,將事務(wù)回滾到指定的保存點且不終止該事務(wù)的執(zhí)行,其基本的語法格式為:(3)刪除保存點RELEASESAVEPOINT語句的作用是從當(dāng)前事務(wù)中刪除指定名稱的保存點,而不會引發(fā)事務(wù)的提交或回滾,其基本的語法格式為:RELEASESAVEPOINTsavepoint_name12.1.4保存點[例12-4]:分析下列SELECT語句的查詢結(jié)果。DELETEFROMbusiness;INSERTINTObusinessVALUES('B001','第一食堂');INSERTINTObusinessVALUES('B002','第二食堂');SELECT*FROMbusiness; //第一個SELECT語句STARTTRANSACTION;INSERTINTObusinessVALUES('B003','百景園餐廳');SAVEPOINTa1;INSERTINTObusinessVALUES('B004','學(xué)一超市');SAVEPOINTa2;INSERTINTObusinessVALUES('B005','學(xué)二超市');SAVEPOINTa3;INSERTINTObusinessVALUES('B006','車隊');SELECT*FROMbusiness;//第二個SELECT語句ROLLBACKTOa3;SELECT*FROMbusiness; //第三個SELECT語句ROLLBACKTOa1;SELECT*FROMbusiness; //第四個SELECT語句ROLLBACK;SELECT*FROMbusiness; //第五個SELECT語句第一個SELECT語句顯示事務(wù)開始時business表的數(shù)據(jù)第二個SELECT語句顯示六個INSERT語句執(zhí)行后的結(jié)果第三個SELECT語句顯示的是回滾到保存點a3、第六個INSERT語句回滾后第四個SELECT語句顯示的是回滾到保存點a1,保存點a1之后的第四個、第五個INSERT也回滾后第五個SELECT語句顯示的是回滾整個事務(wù)后、business表恢復(fù)到初始事務(wù)開始時的狀態(tài)事務(wù)并發(fā)與數(shù)據(jù)不一致12.212.2事務(wù)并發(fā)與數(shù)據(jù)不一致數(shù)據(jù)庫系統(tǒng)也支持事務(wù)的并發(fā)執(zhí)行,即多個事務(wù)同一時間操作同一數(shù)據(jù)對象。事務(wù)并發(fā)執(zhí)行可以有效提高數(shù)據(jù)庫系統(tǒng)的性能。但是如果不對并發(fā)事務(wù)進行控制,有可能產(chǎn)生數(shù)據(jù)不一致。常見的數(shù)據(jù)不一致問題:丟失修改或覆蓋更新(LostUpdate)臟讀(DirtyRead)不可重復(fù)讀(Non-repeatableRead)幻影讀(PhantomRow)12.2.1丟失修改或覆蓋更新
讀A=16
A←A-1寫回A=15COMMIT①讀A=16
②
③A←A-1
寫回A=15COMMIT
④T2T1(a)丟失修改
丟失修改是指事務(wù)1與事務(wù)2從數(shù)據(jù)庫中讀入同一數(shù)據(jù)并修改,事務(wù)2的提交結(jié)果破壞了事務(wù)1提交的結(jié)果,導(dǎo)致事務(wù)1的修改被丟失。12.2.2臟讀
讀B=200COMMIT
①讀B=100B←B*2
寫回B②
③ROLLBACKB恢復(fù)為100T2T1(b)讀“臟”數(shù)據(jù)事務(wù)1修改某一數(shù)據(jù),并將其寫回磁盤事務(wù)2讀取同一數(shù)據(jù)后事務(wù)1由于某種原因被撤消,這時事務(wù)1已修改過的數(shù)據(jù)恢復(fù)原值事務(wù)2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致,是不正確的數(shù)據(jù),又稱為“臟”數(shù)據(jù)。12.2.3不可重復(fù)讀
讀C=100C←C*2寫回C=200COMMIT
①
讀C=100
②
③
讀C=200COMMITT2T1(c)不可重復(fù)讀
不可重復(fù)讀是指事務(wù)1讀取數(shù)據(jù)后,事務(wù)2執(zhí)行更新操作,使事務(wù)1無法再現(xiàn)前一次讀取結(jié)果。12.2.4幻影讀
插入D=200COMMIT
①
讀D={100}
②
③
讀D={100,200}COMMITT2T1(d)幻影讀
幻影讀是指事務(wù)1讀取數(shù)據(jù)后,事務(wù)2插入或刪除了其中部分記錄,當(dāng)事務(wù)1再次讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄神密地出現(xiàn)或消失了。使事務(wù)1無法再現(xiàn)前一次讀取結(jié)果?;阪i的并發(fā)控制技術(shù)12.312.3基于鎖的并發(fā)控制技術(shù)封鎖就是事務(wù)T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖;加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,直到事務(wù)T釋放它的鎖之前。封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)。12.3.1鎖的基本類型鎖代表了對該數(shù)據(jù)項的訪問權(quán)限。事務(wù)對數(shù)據(jù)的操作有SELECT、UPDATE、INSERT、DELETE操作,其中SELECT不改變數(shù)據(jù)的值,稱為讀操作,后三者會改變數(shù)據(jù)的值,稱為寫操作。根據(jù)讀寫數(shù)據(jù)的權(quán)限不同,鎖分為共享鎖和排他鎖兩種類型。1)共享鎖共享鎖(ShareLock),又稱讀鎖,S鎖,是指如果事務(wù)T對數(shù)據(jù)對象A加上共享鎖且沒有釋放共享鎖之前,事務(wù)T可以讀A但不可以寫A,其它事務(wù)只能再對A加共享鎖但不能加排他鎖,直到事務(wù)T釋放A上的共享鎖。2)排他鎖排他鎖(ExclusiveLock),又稱寫鎖,獨占鎖,X鎖,是指如果事務(wù)T對數(shù)據(jù)對象A加上排他鎖且沒有釋放排他鎖之前,事務(wù)T可以讀A也可以寫A,其它事務(wù)不能再對A加任何鎖,直到事務(wù)T釋放A上的鎖。12.3.1鎖的基本類型鎖類型S鎖X鎖無鎖S鎖√×√X鎖××√無鎖√√√鎖的相容矩陣“√”表示相容的請求,“×”表示互斥的請求。12.3.1鎖的基本類型關(guān)系數(shù)據(jù)庫并發(fā)控制的原理是當(dāng)事務(wù)訪問某一個數(shù)據(jù)對象時需要先向數(shù)據(jù)庫管理系統(tǒng)申請對該數(shù)據(jù)對象加鎖。如果事務(wù)只對該數(shù)據(jù)進行讀操作就申請對該數(shù)據(jù)對象加S鎖,如果需要對該數(shù)據(jù)進行寫操作就申請對該數(shù)據(jù)對象加X鎖。如果申請成功,則事務(wù)獲得了對該數(shù)據(jù)相應(yīng)的操作權(quán)限;當(dāng)事務(wù)對數(shù)據(jù)的操作完成以后,需要釋放它所占用的鎖,解鎖后的數(shù)據(jù)允許其他事務(wù)加鎖并訪問。12.3.2MySQL的隔離級別隔離級別是一個事務(wù)必須與其它事務(wù)進行隔離的程度。較低的隔離級別可以增加并發(fā),但代價是降低數(shù)據(jù)的正確性。相反,較高的隔離級別可以確保數(shù)據(jù)的正確性,但可能對并發(fā)產(chǎn)生負面影響。按照隔離程度由低到高,MySQL中事務(wù)的隔離級別分為:
串行讀(Serializable)未提交讀(ReadUncommitted,RU)提交讀(ReadCommitted,RC)可重復(fù)讀(RepeatableRead,RR)。其中,可重復(fù)讀是默認的隔離級別。SETTRANSACTION語句用于指定隔離級別,并一直保持有效直到事務(wù)終止或者重新指定隔離級別。1)串行讀(Serializable)12.3.2MySQL的隔離級別使用以下語句將系統(tǒng)的隔離級別設(shè)置為串行讀級別:
SETTRANSACTIONISOLATIONLEVELSERIALIZABLE;串行讀是限制性最強的隔離級別,使用悲觀鎖。悲觀鎖,是指對數(shù)據(jù)被外界(包括本系統(tǒng)當(dāng)前的其他事務(wù),以及來自外部系統(tǒng)的事務(wù)處理)修改持保守態(tài)度,為了保證事務(wù)的隔離性,在整個數(shù)據(jù)處理過程中,將數(shù)據(jù)處于鎖定狀態(tài)。悲觀鎖要求對寫操作加X鎖,對讀操作加S鎖,讀寫互斥,以保證操作最大程度的獨占性,以此實現(xiàn)插入、修改、刪除數(shù)據(jù)時其它事務(wù)無法修改、也無法讀取這些數(shù)據(jù),讀取數(shù)據(jù)時其它事務(wù)無法修改這些數(shù)據(jù)。MySQL中,除了串行讀隔離級別之外的其它三種隔離級別都采用更加寬松的加鎖機制,稱為樂觀鎖。樂觀鎖機制下,只需要對寫操作加X鎖,讀取數(shù)據(jù)不需要加鎖。
2)未提交讀(ReadUncommitted,RU)12.3.2MySQL的隔離級別使用以下語句將系統(tǒng)的隔離級別設(shè)置為未提交讀級別:
SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTED;未提交讀是限制性最弱的隔離級別,只要求對寫操作加X鎖,讀取數(shù)據(jù)不需要加鎖。3)提交讀(ReadCommitted,RC)使用以下語句將系統(tǒng)的隔離級別設(shè)置為提交讀級別:
SETTRANSACTIONISOLATIONLEVELREADCOMMITTED;提交讀隔離級別中,數(shù)據(jù)的寫操作需要加X鎖,讀操作不需要S鎖,并通過多版本并發(fā)控制(Multi-versionConcurrencyControl,MVCC),進行快照讀(SnapshotRead),以讀取最新提交的歷史數(shù)據(jù)的方式避免臟讀。
4)可重復(fù)讀(RepeatableRead,RR)12.3.2MySQL的隔離級別使用以下語句將系統(tǒng)的隔離級別設(shè)置為可重復(fù)讀級別:
SETTRANSACTIONISOLATIONLEVELREPEATABLEREAD;可重復(fù)讀隔離級別中,數(shù)據(jù)的寫操作需要加X鎖,讀操作不需要加鎖,也是通過MVCC機制進行快照讀。與提交讀隔離級別不同的是,可重復(fù)讀隔離級別中快照在事務(wù)第一次執(zhí)行SELECT語句時生成,只有本事務(wù)更新數(shù)據(jù)時才更新快照,本事務(wù)執(zhí)行過程中其它事務(wù)提交的數(shù)據(jù)變更是讀取不到的。即無論事務(wù)執(zhí)行過程中是否有其它事務(wù)提交了新的版本,該事務(wù)沒有提交之前讀到的都是該事務(wù)開始時的版本,以此種方式實現(xiàn)了數(shù)據(jù)的可重復(fù)讀和無幻影讀。12.3.2MySQL的隔離級別隔離級別丟失修改臟讀不可重復(fù)讀幻影讀未提交讀×√√√提交讀××√√可重復(fù)讀×××√串行讀××××這四種隔離級別,分別有可能產(chǎn)生問題如下所示:12.3.2MySQL的隔離級別[例12-5]:設(shè)事務(wù)T1讀取card表的數(shù)據(jù),事務(wù)T1未提交之前事務(wù)T2申請向該表中插入行,如表所示因為事務(wù)T1對card表加S鎖,事務(wù)T2無法加X鎖而等待。直到事務(wù)T1提交之后釋放對card表的封鎖,事務(wù)T2才加鎖成功并執(zhí)行插入操作。如果事務(wù)T2等待時間超時(這個時間可以進行配置),系統(tǒng)會提示Lockwaittimeout,并把事務(wù)T2掛起。12.3.2MySQL的隔離級別[例12-6]:設(shè)事務(wù)T1向C00002校園卡充值200元,事務(wù)T2在事務(wù)T1提交之前用該卡消費10元,也申請修改該卡的余額,如表所示。card表中CID是主鍵,該列上有主鍵索引,事務(wù)T1只對CID='C00002'的行加X鎖,事務(wù)T2陷入等待狀態(tài)。事務(wù)T1結(jié)束并釋放鎖后,事務(wù)T2對CID='C00002'的行加鎖并修改數(shù)據(jù),保證了事務(wù)T1的修改不會丟失。12.3.2MySQL的隔離級別[例12-7]:設(shè)事務(wù)T1向C00002號卡充值200元還沒有提交之前,事務(wù)T2讀取該卡余額,并在事務(wù)T1提交后再次讀取該卡余額,如表所示。假設(shè)事務(wù)T1執(zhí)行前,C00002卡的余額是276.5元;事務(wù)T1執(zhí)行UPDATE語句向該卡充值200元但沒有提交之前,事務(wù)T2查看該卡余額,讀到的結(jié)果是快照讀的歷史數(shù)據(jù)276.5元,而不是未提交的數(shù)據(jù)476.5元;事務(wù)T1提交后,事務(wù)T2再次讀取該卡的余額,讀到的結(jié)果是476.5元。事務(wù)T2前后兩次讀的結(jié)果是不一樣的。這是因為讀取數(shù)據(jù)不加鎖,事務(wù)T2的兩次讀操作之間,事務(wù)T1進行寫操作并提交,事務(wù)T2每次執(zhí)行SELECT語句都會重新生成一個快照,讀取到的是SELECT語句啟動前就已經(jīng)提交的數(shù)據(jù),就出現(xiàn)了兩次讀取到的數(shù)據(jù)不一致的現(xiàn)象。12.3.2MySQL的隔離級別[例12-8]:設(shè)事務(wù)T1多次讀取card表的數(shù)據(jù),事務(wù)T2在事務(wù)T1執(zhí)行期間,對card表進行了數(shù)據(jù)的插入、修改和刪除操作,如表所示。12.3.2MySQL的隔離級別如果事務(wù)T1中第一個SELECT語句先對card表做了一次讀取操作續(xù):事務(wù)T1是讀事務(wù),對數(shù)據(jù)不加鎖,事務(wù)T2是寫事務(wù),成功加X鎖后對card表做了插入、修改、刪除操作。事務(wù)T1的第二、三、四個SELECT語句讀到的結(jié)果仍然是事務(wù)T1的第一個SELECT語句讀到的歷史版本。當(dāng)事務(wù)T1提交之后,第四個SELECT語句讀到的就是事務(wù)T2提交后的數(shù)據(jù),12.3.3事務(wù)開始的時間點STARTTRANSACTION和STARTTRANSACTIONWITHCONSISTENTSNAPSHOT情況下事務(wù)開始的時間點是不同的。有WITHCONSISTENTSNAPSHOT子句時,STARTTRANSACTION作為事務(wù)開始的時間點。沒有WITHCONSISTENTSNAPSHOT子句的情況下,執(zhí)行STARTTRANSACTION之后的第一條語句時事務(wù)才真正開始。并發(fā)調(diào)度的可串行性12.4SlockBY=B=2UnlockBXlockAA=Y+Z1寫回A(=3)UnlockA
SlockAX=A=3UnlockAXlockBB=X+1寫回B(=4)UnlockB
T1T212.4.1串行調(diào)度和可串行性1)串行(Serial)調(diào)度,正確的調(diào)度A=3,B=4A=4,B=3
SlockBY=B=3UnlockBXlockAA=Y+1寫回A(=4)UnlockA
SlockAX=A=2UnlockAXlockBB=X+1寫回B(=3)UnlockB
T1T212.4.1串行調(diào)度和可串行性2)不可串行化的調(diào)度A=3,B=3,由于其執(zhí)行結(jié)果與1)兩個結(jié)果都不同,所以是錯誤的調(diào)度。SlockBY=B=2
UnlockB
XlockAA=Y+1寫回A(=3)
UnlockA
SlockAX=A=2
UnlockA
XlockBB=X+1寫回B(=3)
UnlockBT1T212.4.1串行調(diào)度和可串行性3)可串行性(Serializability)A=3,B=4,由于其執(zhí)行結(jié)果與1)的第1個結(jié)果都相同,所以是正確的調(diào)度。SlockBY=B=2UnlockBXlockA
A=Y+1寫回A(=3)UnlockA
SlockA
等待等待等待X=A=3UnlockAXlockBB=X+1寫回B(=4)UnlockBT1T212.4.2兩段鎖協(xié)議兩段鎖協(xié)議(Two-phaseLockingProtocol,2PL)是保證事務(wù)可串行性的充分而不必要條件。兩段鎖協(xié)議的內(nèi)容在對任何數(shù)據(jù)進行讀、寫操作之前,事務(wù)首先要獲得對該數(shù)據(jù)的封鎖。
事務(wù)分為兩個階段第一階段是獲得封鎖,也稱為擴展階段;第二階段是釋放封鎖,也稱為收縮階段。即:在釋放一個封鎖之后,事務(wù)不再獲得任何其他封鎖??纱谢恼{(diào)度中,不一定所有事務(wù)都必須符合兩段鎖協(xié)議。12.4.2兩段鎖協(xié)議例:事務(wù)1的封鎖序列:SlockA...SlockB...XlockC...UnlockB...UnlockA...UnlockC;事務(wù)2的封鎖序列:SlockA...UnlockA...SlockB...XlockC...UnlockC...Unl
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 客服游戲幾率問題培訓(xùn)
- 2026四川自貢醫(yī)元健康管理有限責(zé)任公司招聘甜品師1人考試重點題庫及答案解析
- 2026年成都紡織高等??茖W(xué)校單招綜合素質(zhì)筆試模擬試題含詳細答案解析
- 2026年廣東嶺南職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試參考題庫含詳細答案解析
- 2026年麗水職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細答案解析
- 2026年焦作工貿(mào)職業(yè)學(xué)院單招綜合素質(zhì)筆試參考題庫含詳細答案解析
- 2026年上海應(yīng)用技術(shù)大學(xué)單招綜合素質(zhì)筆試備考試題含詳細答案解析
- 2026年石家莊城市經(jīng)濟職業(yè)學(xué)院單招綜合素質(zhì)筆試參考題庫含詳細答案解析
- 2026年貴州工貿(mào)職業(yè)學(xué)院單招職業(yè)技能考試備考題庫含詳細答案解析
- 2026年永城職業(yè)學(xué)院單招綜合素質(zhì)考試模擬試題含詳細答案解析
- 中考語文文言文150個實詞及虛詞默寫表(含答案)
- 廣西小額貸管理辦法
- 海南省醫(yī)療衛(wèi)生機構(gòu)數(shù)量基本情況數(shù)據(jù)分析報告2025版
- 電影院消防安全制度范本
- 酒店工程維修合同協(xié)議書
- 2025年版?zhèn)€人與公司居間合同范例
- 電子商務(wù)平臺項目運營合作協(xié)議書范本
- 動設(shè)備監(jiān)測課件 振動狀態(tài)監(jiān)測技術(shù)基礎(chǔ)知識
- 第六講-女性文學(xué)的第二次崛起-80年代女性文學(xué)
- 專題15平面解析幾何(選擇填空題)(第一部分)(解析版) - 大數(shù)據(jù)之十年高考真題(2014-2025)與優(yōu) 質(zhì)模擬題(新高考卷與全國理科卷)
- 部門考核方案
評論
0/150
提交評論