并發(fā)問題測試資料_第1頁
并發(fā)問題測試資料_第2頁
并發(fā)問題測試資料_第3頁
并發(fā)問題測試資料_第4頁
并發(fā)問題測試資料_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、sybase:鎖、事務(wù)、并發(fā)、死鎖、測試測試總結(jié):1、在事務(wù)中,要更新的表不是事務(wù)開始時就全部鎖定了,只是在用到時才鎖定,等提交時才 釋放。這就要注意一個問題,在事務(wù)中,前面查詢的數(shù)據(jù),在后面該值可能已經(jīng)改變了。2、事務(wù)并發(fā), 并相互有競爭,但沒有死鎖時,兩個都成功。3、事務(wù)并發(fā),并相互有競爭,有死鎖時,只有一個成功, 最后發(fā)現(xiàn)死鎖的事務(wù)才可成功。測試環(huán)境:數(shù)據(jù)庫版本:sybase_win_12.5.2sql執(zhí)行程序:sqladv1、先建2個測試表tA,tB;插入測試數(shù)據(jù)if exists (select 1from sysobjectswhere id = object_id(tA)and

2、type = U) Sdrop table tAgoif exists (select 1from sysobjectswhere id = object_id(tB)and type = U)drop table tB go /*=*/ /* Table: t A*/ copyright Sqlclub /*=*/ create table tA ( namechar(20)null,priceintdefault 0 null,) go /*=*/ /* Table: t B*/本文來自Sqlclub/*=*/ create table tB (namechar(20)null,salep

3、riceintdefault 0 null,)go ALTER TABLE tA LOCK DATAROWSALTER TABLE tB LOCK DATAROWSgo insert into tA(name, price) values (book,20) insert into tB(name, saleprice) values (book,10)go查詢結(jié)果result:select * from tAselect * from tB nameprice Sqlclubbook20 namesalepricebook10測試用例1:事務(wù)和別的sql發(fā)生并發(fā)的情況1:測試代碼:事務(wù)代碼

4、tran1: begin tranupdate tA set price=price+100 where name=bookwaitfor delay 00:00:05update tB set saleprice=saleprice+100 where name=bookcommit tran 并發(fā)代碼 code1:update tA set price=price+20000 where name=book測試步驟: 內(nèi)容來自 S執(zhí)行tran1,然后馬上執(zhí)行并發(fā)代碼code1測試結(jié)果:tran1執(zhí)行完成后code1也執(zhí)行完成了。tran1:(1 row affected)(1 row af

5、fected) code1:(1 row affected) result:namepricebook20120 namesalepricebook110測試說明,在事務(wù)處理成功后,并發(fā)才能執(zhí)行。copyright Sqlclub測試用例2:事務(wù)和別的sql發(fā)生并發(fā)的情況2:測試代碼:事務(wù)代碼 tran1: begin tranupdate tA set price=price+100 where name=bookwaitfor delay 00:00:05update tB set saleprice=saleprice+100 where name=bookcommit tran 并發(fā)代

6、碼 code2:update tB set saleprice=saleprice+10000 where name=book測試步驟:執(zhí)行tran1,然后馬上執(zhí)行并發(fā)代碼code2測試結(jié)果:code2馬上能成功,tran1也能按時執(zhí)行成功。tran1:(1 row affected)(1 row affected) code2:(1 row affected) result:namepricebook120 namesaleprice 本文來自 Sqlclubbook10110測試說明,并發(fā)代碼在事務(wù)沒有鎖定相關(guān)記錄時,還是可以修改的。用例1和用例2說明,在事務(wù)中,要更新的表不是事務(wù)開始時就

7、全部鎖定了,只是在用到時才鎖定,等提交時 才釋放。 這就要注意一個問題,在事務(wù)中,前面查詢的數(shù)據(jù),在后面該值可能已經(jīng)改變了。測試用例3: 事務(wù)和事務(wù)發(fā)生并發(fā)的情況1: 測試代碼: 事務(wù)代碼 tran1: begin tran update tA set price=price+100 where name=book waitfor delay 00:00:05 update tB set saleprice=saleprice+100 where name=book commit tran 事務(wù)代碼 tran2: begin tran update tB set saleprice=salep

8、rice+10000 where name=book Supdate tA set price=price+20000 where name=book commit tran測試步驟: 執(zhí)行tran1,然后馬上執(zhí)行tran2測試結(jié)果: tran1執(zhí)行完成后tran2也執(zhí)行完成了,但tran2出錯了。 tran1: (1 row affected) (1 row affected) tran2: (1 row affected) Server Message: Number 1205, Severity 13 Server ONLINEDB, Line 5:Your server command

9、 (family id #0, process id #17) encountered a deadlock situation. Please rerun your command. result: namepricebook120 namesaleprice copyright Sqlclubbook110測試說明,事務(wù)并發(fā),并相互有競爭,但沒有死鎖時,兩個都成功。測試用例4:事務(wù)和事務(wù)發(fā)生并發(fā)的情況1:測試代碼:事務(wù)代碼 tran1: begin tranupdate tA set price=price+100 where name=bookwaitfor delay 00:00:05

10、update tB set saleprice=saleprice+100 where name=bookcommit tran 事務(wù)代碼 tran3: begin tranupdate tA set price=price+20000 where name=bookupdate tB set saleprice=saleprice+10000 where name=bookcommit tran測試步驟:執(zhí)行tranl,然后馬上執(zhí)行tran3測試結(jié)果:tranl執(zhí)行完成后tran3也執(zhí)行完成了。tranl:(1 row affected) S(1 row affected) tran3:(1

11、 row affected)(1 row affected) result:namepricebook20120 namesalepricebook10110測試說明,事務(wù)并發(fā),并相互有競爭,但沒有死鎖時,兩個都成功。測試用例5:S事務(wù)和事務(wù)發(fā)生并發(fā)的情況2:測試代碼:事務(wù)代碼 tran1: begin tranupdate tA set price=price+100 where name=bookwaitfor delay 00:00:05update tB set saleprice=saleprice+100 where name=bookcommit tran 事務(wù)代碼 tran4:

12、 begin tranupdate tB set saleprice=saleprice+10000 where name=bookupdate tA set price=price+20000 where name=bookcommit tran 測試步驟:執(zhí)行tran1,然后馬上執(zhí)行tran4測試結(jié)果:tran1執(zhí)行完成后tran4也執(zhí)行完成了,但tran1完成時間是12秒。tran1:(1 row affected)(1 row affected) tran4:(1 row affected)Server Message: Number 1205, Severity 13Server O

13、NLINEDB, Line 3:Your server command (family id #0, process id #17) encountered a deadlock situation. Please rerun your command. result:nameprice copyright Sqlclubbook120 namesalepricebook110測試說明,事務(wù)并發(fā),并相互有競爭,有死鎖時,只有一個成功,最后發(fā)現(xiàn)死鎖的事務(wù)才可成功。測試用例6:事務(wù)和事務(wù)發(fā)生并發(fā)的情況3:測試代碼:事務(wù)代碼 tranl: begin tranupdate tA set price=

14、price+100 where name=bookSqlclub學(xué)習(xí)社區(qū)waitfor delay 00:00:05update tB set saleprice=saleprice+100 where name=book commit tran 事務(wù)代碼 tran5: begin tranupdate tB set saleprice=saleprice+10000 where name=book waitfor delay 00:00:10update tA set price=price+20000 where name=book commit tran測試步驟:執(zhí)行tran1,然后馬上

15、執(zhí)行tran5測試結(jié)果:tran1執(zhí)行完成后tran5也執(zhí)行完成了,但tran1完成時間是12秒。tran1:(1 row affected)Server Message: Number 1205, Severity 13Server ONLINEDB, Line 5:Your server command (family id #0, process id #15) encountered a deadlock situation. Please rerun your command. tran5: (1 row affected) (1 row affected) result: name

16、price內(nèi)容來自Sbook20020 namesalepricebook10010測試說明,事務(wù)并發(fā),并相互有競爭,有死鎖時,只有一個成功,最后發(fā)現(xiàn)死鎖的事務(wù)才可成功。測試用例7:事務(wù)和事務(wù)發(fā)生并發(fā)的情況4:測試代碼:事務(wù)代碼 tran1: begin tranupdate tA set price=price+100 where name=bookwaitfor delay 00:00:05update tB set saleprice=saleprice+100 where name=bookcommit tran 事務(wù)代碼 tran6: begin tranSqlclub update tA set price=price+20000 where name=book waitfor delay 00:00:10update tB set saleprice=salep

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論