




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、銀行轉(zhuǎn)帳:事務(wù)T從A帳戶過戶50¥到B帳戶readread(A);A := A 50;writewrite(A);readread(B);B := B + 50;writewrite(B);readread(X):從數(shù)據(jù)庫傳送數(shù)據(jù)項(xiàng)X到事務(wù)的工作區(qū)中writewrite(X):從事務(wù)的工作區(qū)中將數(shù)據(jù)項(xiàng)X寫回?cái)?shù)據(jù)庫n事務(wù)是由一系列操作序列構(gòu)成的程序執(zhí)行單元,這些操作要么都做,要么都不做,是一個(gè)不可分割的工作單位n事務(wù)以Begin transaction開始,以Commit transaction或 Rollback transaction結(jié)束Commit transaction表示提交,事務(wù)正常
2、結(jié)束Rollback transaction表示事務(wù)非正常結(jié)束,撤消事務(wù)已做的操作,回滾到事務(wù)開始時(shí)狀態(tài)n原子性原子性(Atomicity)事務(wù)中包含的所有操作要么全做,要么全不做原子性由恢復(fù)機(jī)制恢復(fù)機(jī)制實(shí)現(xiàn)n一致性一致性(Consistency)事務(wù)的隔離執(zhí)行必須保證數(shù)據(jù)庫的一致性事務(wù)開始前,數(shù)據(jù)庫處于一致性的狀態(tài);事務(wù)結(jié)束后,數(shù)據(jù)庫必須仍處于一致性狀態(tài)數(shù)據(jù)庫的一致性狀態(tài)由用戶用戶來負(fù)責(zé)如銀行轉(zhuǎn)帳,轉(zhuǎn)帳前后兩個(gè)帳戶金額之和應(yīng)保持不變(意大利香腸術(shù), Salami technique )n隔離性隔離性(Isolation)系統(tǒng)必須保證事務(wù)不受其它并發(fā)執(zhí)行事務(wù)的影響對(duì)任何一對(duì)事務(wù)T1,T2,在T
3、1看來,T2要么在T1開始之前已經(jīng)結(jié)束,要么在T1完成之后再開始執(zhí)行隔離性通過并發(fā)控制機(jī)制并發(fā)控制機(jī)制實(shí)現(xiàn)n持久性持久性(Durability)一個(gè)事務(wù)一旦提交之后,它對(duì)數(shù)據(jù)庫的影響必須是永久的系統(tǒng)發(fā)生故障不能改變事務(wù)的持久性持久性通過恢復(fù)機(jī)制恢復(fù)機(jī)制實(shí)現(xiàn)活動(dòng)狀態(tài)活動(dòng)狀態(tài)失敗狀態(tài)失敗狀態(tài)部分部分提交狀態(tài)提交狀態(tài)提交狀態(tài)提交狀態(tài)中止?fàn)顟B(tài)中止?fàn)顟B(tài)初始狀態(tài)初始狀態(tài)事務(wù)無法繼事務(wù)無法繼續(xù)正常執(zhí)行續(xù)正常執(zhí)行事務(wù)回滾,數(shù)據(jù)庫恢事務(wù)回滾,數(shù)據(jù)庫恢復(fù)到事務(wù)開始前狀態(tài)復(fù)到事務(wù)開始前狀態(tài)最后一條語最后一條語句被執(zhí)行后句被執(zhí)行后成功完成,永成功完成,永久寫入數(shù)據(jù)庫久寫入數(shù)據(jù)庫以BEGIN TRANSACTION開始
4、,以COMMIT或ROLLBACK結(jié)束事務(wù)自動(dòng)開始,直到遇到COMMIT或ROLLBACK時(shí)結(jié)束每個(gè)數(shù)據(jù)操作語句作為一個(gè)事務(wù)update SC set GRADE = GRADE+15set implicit_transactions ON | OFF Begin tranUpdate SCSet grade =grade+5 Update SCSet grade =grade+20Commit tranSelect * from SCBegin tranUpdate SCSet grade =grade+5 Update SCSet grade =grade+20If error0rollb
5、acktranSelect * from SCCommit tran是一種多對(duì)多的關(guān)系,即一個(gè)事務(wù)中可以包含多個(gè)批,一個(gè)批中也可以包含多個(gè)事務(wù)set XACT_ABORT ON n包含了所有事務(wù)的操作指令n一個(gè)事務(wù)中指令的順序必須保持不變n在串行調(diào)度中,屬于同一事務(wù)的指令緊挨在一起n對(duì)于有n個(gè)事務(wù)的事務(wù)組,可以有n!個(gè)有效調(diào)度n在并行調(diào)度中,來自不同事務(wù)的指令可以交叉執(zhí)行n當(dāng)并行調(diào)度等價(jià)于某個(gè)串行調(diào)度時(shí),則稱它是正確的n并行事務(wù)會(huì)破壞數(shù)據(jù)庫的一致性n串行事務(wù)效率低n一個(gè)事務(wù)由不同的步驟組成,所涉及的系統(tǒng)資源也不同。這些步驟可以并發(fā)執(zhí)行,以提高系統(tǒng)的吞吐量吞吐量n系統(tǒng)中存在著周期不等的各種事務(wù),
6、串行會(huì)導(dǎo)致難于預(yù)測(cè)的時(shí)延。如果各個(gè)事務(wù)所涉及的是數(shù)據(jù)庫的不同部分,采用并發(fā)會(huì)減少平均響應(yīng)時(shí)間平均響應(yīng)時(shí)間T1read(A);A := A 50;write(A);read(B);B := B + 50;write(B);T2 read(A);temp := A0.1A := A temp;write(A); read(B);B := B + temp;write(B);從A過戶50¥到B從A過戶存款的10%到B開始狀態(tài):A=1000¥B=2000¥A+B=3000¥ read(A); A := A 50; write(A); read(B); B := B + 50; write(B); re
7、ad(A); temp := A0.1 A := A temp; write(A); read(B); B := B + temp; write(B);T1T2A=950¥B=2050¥結(jié)束狀態(tài):A=855¥B=2145¥A+B=3000¥串串行行調(diào)調(diào)度度1 1 read(A); A := A 50; write(A); read(B); B := B + 50; write(B); read(A); temp := A0.1 A := A temp; write(A); read(B); B := B + temp; write(B);T1T2A=900¥B=2100¥結(jié)束狀態(tài):A=850¥
8、B=2150¥A+B=3000¥串串行行調(diào)調(diào)度度2 2 read(A); A := A 50; write(A); read(B); B := B + temp; write(B);T1T2A=950¥B=2000¥結(jié)束狀態(tài):A=855¥B=2145¥A+B=3000¥ read(B); B := B + 50; write(B); read(A); temp := A0.1 A := A temp; write(A); A=855¥B=2000¥A=855¥B=2050¥并并行行調(diào)調(diào)度度3 read(A); A := A 50; write(A); read(B); B := B + tem
9、p; write(B);T1T2A=1000¥B=2000¥結(jié)束狀態(tài):A=900¥B=2150¥A+B=3050¥ read(B); B := B + 50; write(B); read(A); temp := A0.1 A := A temp; write(A); A=900¥B=2000¥A=900¥B=2050¥并并行行調(diào)調(diào)度度4A=950¥B=2000¥n事務(wù)的恢復(fù)事務(wù)的恢復(fù):一個(gè)事務(wù)失敗了,應(yīng)該能夠撤消該事務(wù)對(duì)數(shù)據(jù)庫的影響。如果有其它事務(wù)讀取了失敗事務(wù)寫入的數(shù)據(jù),則該事務(wù)也應(yīng)該撤消read(A);write(A);T1T2read(B);rollback;read(A);commi
10、t不可恢復(fù)的調(diào)度不可恢復(fù)的調(diào)度可恢復(fù)調(diào)度可恢復(fù)調(diào)度對(duì)于每對(duì)事務(wù)對(duì)于每對(duì)事務(wù)T1T1與與T2T2,如如果果T2T2讀取了讀取了T1T1所寫的數(shù)據(jù),所寫的數(shù)據(jù),則則T1T1必須先于必須先于T2T2提交提交級(jí)聯(lián)調(diào)度級(jí)聯(lián)調(diào)度由于一個(gè)事務(wù)故障而由于一個(gè)事務(wù)故障而導(dǎo)致一系列事務(wù)回滾導(dǎo)致一系列事務(wù)回滾read(A);read(B);write(A);T1T2read(A)write(A);T3read(A)rollback;無級(jí)聯(lián)調(diào)度無級(jí)聯(lián)調(diào)度對(duì)于每對(duì)事務(wù)對(duì)于每對(duì)事務(wù)T1T1與與T2T2,如果如果T2T2讀取了讀取了T1T1所寫所寫的數(shù)據(jù),則的數(shù)據(jù),則T1T1必須在必須在T2T2讀取之前提交讀取之前提交T2
11、T1TimeRead X (10)Read X (10)Compute X -= 1(9Compute X -= 1(9)Write XWrite X兩個(gè)事務(wù)T1和T2讀入同一數(shù)據(jù)并修改,T1提交的結(jié)果破壞了T2提交的結(jié)果,導(dǎo)致T2的修改丟失T2T1TimeX=10Read X (25)Read X (10)ComputeX+=15(25)X=25Write XX=10Rollback使用了從未提交到數(shù)據(jù)庫中的數(shù)據(jù)事務(wù)T1修改某一數(shù)據(jù),并將其寫回磁盤,事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤消,這時(shí)T1已修改過的數(shù)據(jù)恢復(fù)原值,T2讀到的數(shù)據(jù)與數(shù)據(jù)庫中數(shù)據(jù)不一致,則T2讀到的數(shù)據(jù)就是臟數(shù)據(jù)T
12、2T1TimeRead X (10)Read X (10)Compute X+=15(25)X=25Write XCommitRead X (25)X=10事務(wù)T2讀取某一數(shù)據(jù)后,事務(wù)T1對(duì)其做了修改,當(dāng)T2再次讀取該數(shù)據(jù)時(shí),得到與前次不同的值r1(list) r2(list) w2(list) r2(count) w2(count) commit(t2) r1(count)T2T1TimeSelect count (*) where rank 32 rows returnedSelect count (*) where rank 33 rows returned事務(wù)T2按一定條件讀取了某些數(shù)
13、據(jù)后,事務(wù)T1插入了一些滿足這些條件的數(shù)據(jù),當(dāng)T2再次按相同條件讀取數(shù)據(jù)時(shí),發(fā)現(xiàn)多了一些記錄selectsum(Balance)fromaccountAwhereA.Name = MaryselectD.TotalBalancefromdepositorDwhereD.Name = Maryinsert into accounts values (Mary,100)update depositorsetTotalBalance =TotalBalance + 100 where Name = Mary nserializable:一個(gè)調(diào)度的執(zhí)行必須等價(jià)于一個(gè)串行調(diào)度的結(jié)果nrepeatable
14、 read:只允許讀取已提交的記錄,并要求一個(gè)事務(wù)對(duì)同一記錄的兩次讀取之間,其它事務(wù)不能對(duì)該記錄進(jìn)行更新nread committed:只允許讀取已提交的記錄,但不要求可重復(fù)讀nread uncommitted:允許讀取未提交的記錄Read uncommitted讀臟數(shù)據(jù)不能重復(fù)讀幻象Read committedRepeatable readSerializable-不能重復(fù)讀幻象幻象SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDBEGIN TRAN SELECT SNAME FROM S WHERE SNAME = 王紅- 只有一個(gè)學(xué)生名為王
15、紅BEGIN TRAN UPDATE S SET SNAME = 王紅SELECT SNAME FROM S WHERE SNAME = 王紅- 所有學(xué)生姓名均為王紅ROLLBACK TRANSELECT SNAME FROM S WHERE SNAME = 王紅-只有一個(gè)學(xué)生名為王紅SET TRANSACTION ISOLATION LEVEL READ COMMITTEDBEGIN TRAN BEGIN TRAN UPDATE S SET SNAME = 王紅SELECT SNAME FROM S WHERE SNAME = 王紅-阻塞,“正在執(zhí)行批查詢”COMMIT TRAN-所有學(xué)生姓
16、名均為王紅SET TRANSACTION ISOLATION LEVEL READ COMMITTEDBEGIN TRAN SELECT SNAME FROM S WHERE SNAME = 王紅- 只有一個(gè)學(xué)生名為王紅BEGIN TRAN UPDATE S SET SNAME = 王紅COMMIT TRANSELECT SNAME FROM S WHERE SNAME = 王紅-所有學(xué)生姓名均為王紅SET TRANSACTION ISOLATION LEVEL REPEATABLE READBEGIN TRAN SELECT SNAME FROM S WHERE SNAME = 王%- 只有
17、一個(gè)學(xué)生名為王紅BEGIN TRAN UPDATE S SET SNAME = 王紅-阻塞SELECT SNAME FROM S WHERE SNAME = 王紅-只有一個(gè)學(xué)生名為王紅SET TRANSACTION ISOLATION LEVEL REPEATABLE READBEGIN TRAN SELECT SNAME FROM S WHERE SNAME = 王%- 只有一個(gè)學(xué)生,名為王紅INSERT INTO S VALUES(s08, 王明, 23, 1)SELECT SNAME FROM S WHERE SNAME = 王%-有兩個(gè)學(xué)生,名為王紅和王明SET TRANSACTION
18、 ISOLATION LEVEL SERIALIZABLEBEGIN TRAN SELECT SNAME FROM S WHERE SNAME = 王%- 只有一個(gè)學(xué)生,名為王紅INSERT INTO S VALUES(s08, 王明, 23, 1)-阻塞SELECT SNAME FROM S WHERE SNAME = 王%-只有一個(gè)學(xué)生,名為王紅考慮關(guān)系Employee(ID,salary), 表示職工的工資號(hào)和工資數(shù)額,開始Employee關(guān)系中有兩個(gè)元組(A,20)和(B,30)?,F(xiàn)有如下兩個(gè)事務(wù)T1、T2,T1: begin transaction;update Employee s
19、et salary = 2*salary where ID=A;update Employee set salary = salary+10 where ID=A;commit;T2: begin transaction;select sum(salary) as sal1 from Employee;select sum(salary) as sal2 from Employee;commit;給出T2返回的sal1與sal2所有可能的值的情況,如果T2運(yùn)行的隔離性級(jí)別為serializableread committedread uncommitted2212112112221121121
20、12221122221112212211122211211,ttttttttttttttttttttttttT1(只讀)T2(更新X)T3(更新Y)T4(更新X, Y)T5(只讀)T6(更新Y)讀不會(huì)阻塞寫寫不會(huì)阻塞讀寫發(fā)生在提交時(shí)沖突時(shí)先提交者贏一致性要求:A+B = 0當(dāng)前:AB5r1(x) r1(y) r2(x) r2(y) w1(y) w2(x)T1、T2分別將x、y減去5寫偏斜:兩個(gè)事務(wù)寫不同的數(shù)據(jù)項(xiàng)初始值:x=3, y=5T1: x := yT2: y := xcreate database demouse democreate table isolation_1 (id1 int
21、,des varchar(100)insert into isolation_1 values(1, asdf)SI:快照隔離,任何讀取操作得到事務(wù)開始那一刻最近已經(jīng)提交過的數(shù)據(jù)版本,屬于事務(wù)級(jí)快照隔離alter database demoset ALLOW_SNAPSHOT_ISOLATION on(只允許發(fā)出上述alter語句的連接存在于該數(shù)據(jù)庫,如果此時(shí)還有其他用戶使用該數(shù)據(jù)庫,則alter未必被阻塞,但已存在的活動(dòng)事務(wù)會(huì)阻塞它。此時(shí)新的更新事務(wù)可以執(zhí)行,但快照隔離級(jí)別的事務(wù)則不可以)連接連接1連接連接2begin tranupdate isolation_1set id = UPDAT
22、EDwhere id1=1begin transelect * from isolation_1(事務(wù)起點(diǎn))commit tran可重復(fù)讀select * from isolation_1commit tran連接連接1連接連接2SET TRANSACTION ISOLATION LEVEL SNAPSHOTbegin transelect id1 from isolation_1begin tranupdate isolation_1set id1 = id1+10update isolation_1set id1 = id1+20commit tran回滾RCSI:已提交讀快照隔離,任何讀
23、取操作得到語句開始那一刻最近已經(jīng)提交過的數(shù)據(jù)版本,屬于語句級(jí)快照隔離alter database demo set READ_COMMITTED_SNAPSHOT on(只允許發(fā)出上述alter語句的連接存在于該數(shù)據(jù)庫,如果此時(shí)還有其他用戶使用該數(shù)據(jù)庫,則alter被阻塞)連接連接1連接連接2begin tranupdate isolation_1set des = UPDATEDwhere id1=1begin transelect * from isolation_1commit tran不可重復(fù)讀select * from isolation_1commit tran連接連接1連接連接2
24、begin transelect id1 from isolation_1begin tranupdate isolation_1set id1 = id1+10update isolation_1set id1 = id1+20(阻塞)commit tran考慮一個(gè)調(diào)度S中的兩條連續(xù)指令(僅限于read與 write操作)Ii與Ij,分別屬于事務(wù)Ti與TjIi = read(Q), Ij = read(Q);Ii = read(Q), Ij = write(Q);Ii = write(Q), Ij = read(Q);Ii = write(Q), Ij = write(Q); 在 情況下,I
25、i與Ij的次序無關(guān)緊要。其余情況下,Ii與Ij的次序不同,其執(zhí)行結(jié)果也不同,數(shù)據(jù)庫最終狀態(tài)也不同當(dāng)兩條指令是不同事務(wù)在相同數(shù)據(jù)項(xiàng)上的操作,并且其中至少有一個(gè)是write指令時(shí),則稱這兩條指令是沖突的如在、情況下,Ii與Ij 是沖突的非沖突指令交換次序不會(huì)影響調(diào)度的最終結(jié)果如果調(diào)度S可以經(jīng)過一系列非沖突指令交換轉(zhuǎn)換成調(diào)度S,則稱調(diào)度S與S是沖突等價(jià)的read(A);write(A);read(B);write(B);T1T2read(B); write(B);read(A);write(A);read(A);write(A);read(B);write(B);T1T2write(B);read(
26、A);write(A);read(B);read(A);write(A);read(B);write(B);write(B);read(A);write(A);read(B);123read(A);write(A);read(B);write(B);read(A);write(A);read(B);write(B);當(dāng)一個(gè)調(diào)度S與一個(gè)串行調(diào)度沖突等價(jià)時(shí),則稱該調(diào)度是沖突可串行化的如并行調(diào)度3是沖突可串行化的read(A);T1T2write(A);write(A);非沖突串行化的例子:一個(gè)調(diào)度S的優(yōu)先圖是這樣構(gòu)造的:它是一個(gè)有向圖G =(V,E),V是頂點(diǎn)集,E是邊集。頂點(diǎn)集由所有參與調(diào)度的事
27、務(wù)組成,邊集由滿足下述條件之一的邊Ti Tj組成:在Tj執(zhí)行read(Q)之前,Ti執(zhí)行write(Q)在Tj執(zhí)行write(Q)之前,Ti執(zhí)行read(Q)在Tj執(zhí)行write(Q)之前,Ti執(zhí)行write(Q)T1T2T1T2read(A);write(B);T1T2write(A);read(B); write(B);read(A);write(A);read(B);T1T2read(A);write(A);read(B);write(B);read(B); write(B);read(A);write(A);n如果優(yōu)先圖中存在邊TiTj ,則在任何等價(jià)于S的串行調(diào)度S中,Ti都必須出現(xiàn)
28、在Tj之前n如果調(diào)度S的優(yōu)先圖中有環(huán),則S是非沖突可串行化的。如果圖中無環(huán),則S是沖突可串行化的T1T2T1T2并行調(diào)度并行調(diào)度3 3是沖是沖突可串行化的突可串行化的并行調(diào)度并行調(diào)度4 4是非是非沖突可串行化的沖突可串行化的n串行順序可由拓?fù)渑判虻玫?,求出與優(yōu)先圖的偏序相一致的線序T1T3T2T4T1T2T3T4T1T3T2T4read(A);A := A - 50write(A);T1T2沖突指令沖突指令T1T2read(B);B := B - 10write(B);read(B);B := B + 50write(B);read(A);A := A + 10write(A);read(A)
29、;A := A - 50write(A);read(B);B := B + 50write(B);read(B);B := B - 10write(B);read(A);A := A + 10write(A);A=950¥B=2000¥A=950¥B=1990¥A=950¥B=2040¥A=960¥B=2040¥A=960¥B=2040¥A=950¥B=2050¥存在結(jié)果相同,但非沖突等價(jià)的調(diào)度考慮關(guān)于某個(gè)事務(wù)集的兩個(gè)調(diào)度S,S,若調(diào)度S,S滿足以下條件,則稱它們是視圖等價(jià)的:對(duì)于每個(gè)數(shù)據(jù)項(xiàng)Q,若事務(wù)Ti在調(diào)度S中讀取了Q的初始值,那么Ti在調(diào)度S中也必須讀取Q的初始值對(duì)于每個(gè)數(shù)據(jù)項(xiàng)Q,若事務(wù)
30、Ti在調(diào)度S中執(zhí)行了read(Q),并且讀取的值是由Tj產(chǎn)生的,那么Ti在調(diào)度S中讀取的Q值也必須是由Tj產(chǎn)生的對(duì)于每個(gè)數(shù)據(jù)項(xiàng)Q,若在調(diào)度S中有事務(wù)執(zhí)行了最后的write(Q),則在調(diào)度S中該事務(wù)也必須執(zhí)行最后的write(Q)注:條件、保證兩個(gè)調(diào)度中的每個(gè)事務(wù)都讀取相同的值,從而進(jìn)行相同的計(jì)算條件保證兩個(gè)調(diào)度得到最終相同的系統(tǒng)狀態(tài) read(A);write(A); read(B);write(B);read(A);write(A); read(B);write(B);T1T2read(B);write(B);read(A);write(A); T1T2由由T1T1產(chǎn)生的產(chǎn)生的A A值值 r
31、ead(A);write(A);read(B);write(B);由由T1T1產(chǎn)生的產(chǎn)生的A A值值視圖等價(jià)n如果某個(gè)調(diào)度視圖等價(jià)于一個(gè)串行調(diào)度,則稱該調(diào)度是視圖可串行化的n沖突可串行化調(diào)度一定是視圖可串行化的存在視圖可串行化但非沖突可串行化的調(diào)度read(Q);T1T2write(Q);write(Q);write(Q);T3盲目寫操作盲目寫操作視圖等價(jià)read(Q);T1T2write(Q);write(Q);write(Q);T3T1T2T3無用的寫操作無用的寫操作非沖突可串行化非沖突可串行化設(shè)調(diào)度S包含了事務(wù)T1, T2, , Tn,設(shè)Tb, Tf是兩個(gè)虛事務(wù),其中Tb為S中所有wri
32、te(Q)操作, Tf為S中所有read(Q)操作。在調(diào)度S的開頭插入Tb ,在調(diào)度S的末尾插入Tf,得到一個(gè)新的調(diào)度S 0刪除所有關(guān)聯(lián)無用事務(wù)的邊。如果在優(yōu)先圖中不存在從Ti到Tf的通路,則Ti是無用事務(wù)對(duì)于每個(gè)數(shù)據(jù)項(xiàng)Q,如果Tj讀取Ti寫入的Q值,Tk執(zhí)行write (Q)操作且TkTb ,則: 0如果Ti = Tb且TjTf,則在帶標(biāo)記的優(yōu)先圖中插入邊Tj Tk 0如果TiTb且Tj = Tf,則在帶標(biāo)記的優(yōu)先圖中插入邊Tk Ti p p如果TiTb且TjTf,則在帶標(biāo)記的優(yōu)先圖中插入邊Tk Ti與Tj Tk 。其中p是一個(gè)唯一的,在前面邊的標(biāo)記中未曾用過的大于0的整數(shù)read(A);T
33、1T2write(A);write(A);T1TfTbT20000read(Q);T1T2write(Q);write(Q);write(Q);T3T1T2T3Tb0Tf0000read(Q);T1T2write(Q);write(Q);write(Q);T3T1T2T3Tb0Tf0000read(Q);11T1T2T3Tb0Tf00001T1T2T3Tb0Tf00001每個(gè)優(yōu)先圖包含標(biāo)號(hào)大于1的邊對(duì)中的一條判定準(zhǔn)則:只要有一個(gè)優(yōu)先圖無環(huán),則調(diào)度是視圖可串行化的時(shí)間T1T2T3T41read(A)2write(B)3write(A)4read(B)5read(B)6read(A)7write(
34、C)8write(A)給出該調(diào)度的優(yōu)先圖,該調(diào)度是沖突可串行化的嗎?若是,給出該調(diào)度一個(gè)的等價(jià)的串行調(diào)度 No man is an island,Entire of itself.Each is a piece of the continent,A part of the main.If a clod be washed away by the sea,Motherland is the less.As well as if a promontory were.As well as if a manner of thine own Or of thine friends were.Each m
35、ans death diminishes me,For I am involved in mankind.Therefore, send not to knowFor whom the bell tolls,It tolls for theen一層結(jié)構(gòu)BEGIN TRANCOMMITn確定旅行路線n批量更新如銀行結(jié)算利息,可以把更新每個(gè)帳號(hào)作為一個(gè)事務(wù),也可以把更新所有帳號(hào)作為一個(gè)事務(wù)n當(dāng)子事務(wù)提交時(shí),它的結(jié)果只能被它的父事務(wù)所訪問。只有當(dāng)一個(gè)子事務(wù)提交了,并且它的一直到根的所有祖先也都提交了,該子事務(wù)才最終提交n如果任何一個(gè)嵌套層次的子事務(wù)回滾了,它的所有的子事務(wù)也都要回滾,不管它們當(dāng)前是否
36、已經(jīng)提交。因此,如果根結(jié)點(diǎn)回滾,整個(gè)嵌套事務(wù)也就回滾了n當(dāng)子事務(wù)提交后,它的修改對(duì)其父事務(wù)是可見的,而對(duì)其兄弟是不可見的;父事務(wù)的任何對(duì)象對(duì)其子事務(wù)都是可訪問的create table TestNestTrans(Col char(3)create proccedure TransProc CharCol char(3)asbegin transaction InProcinsert into TestNestTrans values (CharCol)commit transaction InProcbegin transaction OutOfProcexec TransProc aaar
37、ollback transaction OutOfProcexec TransProc bbbselect * from TestTrans- 最終TestNestTrans表中只有元組bbbselect trancount - trancount = 0begin tran A select trancount - trancount = 1begin tran B select trancount - trancount = 2 rollback tran B - rollback失敗select trancount - trancount = 2rollback tran Aselect
38、 trancount - trancount =0select trancount - trancount = 0begin tran A select trancount - trancount = 1begin tran B select trancount - trancount = 2 commit tran B select trancount - trancount = 1commit tran Aselect trancount - trancount =0begin_transaction()S1;sp1 := create_savepoint();Sn;spn := create_savepoint();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)廢水處理與排放標(biāo)準(zhǔn)研究
- 工業(yè)廢棄地生態(tài)修復(fù)案例研究
- 工業(yè)大數(shù)據(jù)分析與智能制造融合
- 工業(yè)污染源的智能監(jiān)控與治理
- 工業(yè)機(jī)器人技術(shù)的應(yīng)用領(lǐng)域
- 工業(yè)污染防治與環(huán)境監(jiān)測(cè)技術(shù)
- 工業(yè)自動(dòng)化中的數(shù)據(jù)結(jié)構(gòu)與可視化應(yīng)用
- 工業(yè)物聯(lián)網(wǎng)的實(shí)時(shí)數(shù)據(jù)采集與分析技術(shù)
- 工業(yè)污染防治策略
- 工業(yè)級(jí)機(jī)房的抗震設(shè)計(jì)與質(zhì)量管理
- 2025年高考真題-化學(xué)(黑吉遼卷) 含答案(黑龍江、吉林、遼寧、內(nèi)蒙古)
- 2025年高考英語全國二卷(解析)
- 2025年新高考1卷(新課標(biāo)Ⅰ卷)英語試卷
- 2025上半年水發(fā)集團(tuán)社會(huì)招聘(391人)筆試參考題庫附帶答案詳解
- 華為項(xiàng)目管理高級(jí)培訓(xùn)教材
- 堅(jiān)守廉潔底線弘揚(yáng)清風(fēng)正氣
- 建設(shè)項(xiàng)目全過程工程咨詢-第一次形成性考核-國開(SC)-參考資料
- 中建EPC工程總承包項(xiàng)目全過程風(fēng)險(xiǎn)清單(2023年)
- GB 18613-2020電動(dòng)機(jī)能效限定值及能效等級(jí)
- 蛇形管制造典型工藝
- 阿曼原油評(píng)價(jià)
評(píng)論
0/150
提交評(píng)論