精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java程序中解決數(shù)據(jù)庫(kù)超時(shí)與死鎖

開(kāi)發(fā) 后端
Java程序中解決數(shù)據(jù)庫(kù)超時(shí)與死鎖,每個(gè)使用關(guān)系型數(shù)據(jù)庫(kù)的程序都可能遇到數(shù)據(jù)死鎖或不可用的情況,而這些情況需要在代碼中編程來(lái)解決。本文主要介紹與數(shù)據(jù)庫(kù)事務(wù)死鎖等情況相關(guān)的重試邏輯概念。

Java程序中解決數(shù)據(jù)庫(kù)超時(shí)與死鎖,每個(gè)使用關(guān)系型數(shù)據(jù)庫(kù)的程序都可能遇到數(shù)據(jù)死鎖或不可用的情況,而這些情況需要在代碼中編程來(lái)解決;本文主要介紹與數(shù)據(jù)庫(kù)事務(wù)死鎖等情況相關(guān)的重試邏輯概念,此外,還會(huì)探討如何避免死鎖等問(wèn)題,文章以DB2(版本9)與Java為例進(jìn)行講解。

簡(jiǎn)介

每個(gè)使用關(guān)系型數(shù)據(jù)庫(kù)的程序都可能遇到數(shù)據(jù)死鎖或不可用的情況,而這些情況需要在代碼中編程來(lái)解決;本文主要介紹與數(shù)據(jù)庫(kù)事務(wù)死鎖等情況相關(guān)的重試邏輯概念,此外,還會(huì)探討如何避免死鎖等問(wèn)題,文章以DB2(版本9)與Java為例進(jìn)行講解。

什么是數(shù)據(jù)庫(kù)鎖定與死鎖

鎖定(Locking)發(fā)生在當(dāng)一個(gè)事務(wù)獲得對(duì)某一資源的“鎖”時(shí),這時(shí),其他的事務(wù)就不能更改這個(gè)資源了,這種機(jī)制的存在是為了保證數(shù)據(jù)一致性;在設(shè)計(jì)與數(shù)據(jù)庫(kù)交互的程序時(shí),必須處理鎖與資源不可用的情況。鎖定是個(gè)比較復(fù)雜的概念,仔細(xì)說(shuō)起來(lái)可能又需要一大篇,所以在本文中,只把鎖定看作是一個(gè)臨時(shí)事件,這意味著如果一個(gè)資源被鎖定,它總會(huì)在以后某個(gè)時(shí)間被釋放。而死鎖發(fā)生在當(dāng)多個(gè)進(jìn)程訪問(wèn)同一數(shù)據(jù)庫(kù)時(shí),其中每個(gè)進(jìn)程擁有的鎖都是其他進(jìn)程所需的,由此造成每個(gè)進(jìn)程都無(wú)法繼續(xù)下去。

如何避免鎖

我們可利用事務(wù)型數(shù)據(jù)庫(kù)中的隔離級(jí)別機(jī)制來(lái)避免鎖的創(chuàng)建,正確地使用隔離級(jí)別可使程序處理更多的并發(fā)事件(如允許多個(gè)用戶訪問(wèn)數(shù)據(jù)),還能預(yù)防像丟失修改 (Lost Update)、讀“臟”數(shù)據(jù)(Dirty Read)、不可重復(fù)讀(Nonrepeatable Read)及“虛”(Phantom)等問(wèn)題。

在只讀模式中,就可以防止鎖定發(fā)生,而不用那些未提交只讀隔離級(jí)別的含糊語(yǔ)句。一條SQL語(yǔ)句當(dāng)使用了下列命令之一時(shí),就應(yīng)該考慮只讀模式了:

1、JOIN

2、SELECT DISTINCT

3、GROUP BY

4、ORDER BY

5、UNION

6、UNION ALL

7、SELECT

8、FOR FETCH ONLY (FOR READ ONLY)

9、SELECT FROM

如果包含上述任一命令,可以說(shuō)你的SQL語(yǔ)句有歧義性,因此,鎖可能就是造成其中資源問(wèn)題的源頭。

另外,以下是一些可降低鎖數(shù)目的建議:

1、 將CURRENTDATA設(shè)為NO。這條命令告訴DB2模糊光標(biāo)為只讀。

2、 在適當(dāng)?shù)臅r(shí)候,盡可能使用User Uncommitted Read(用戶未提交的讀)。

3、 盡可能關(guān)閉所有光標(biāo)。

4、 有一個(gè)正確的提交策略。確保程序不再使用資源時(shí)就立即釋放它。

如何處理死鎖與超時(shí)

在程序中使用重試邏輯,可處理以下三種SQL錯(cuò)誤代碼:

1、 904:返回這個(gè)代碼表示一條SQL語(yǔ)句是因?yàn)橐堰_(dá)到資源限度而結(jié)束的。程序中可提交或回滾更改,并執(zhí)行重試邏輯。

2、 911:程序收到這個(gè)SQL代碼,表示因?yàn)闆](méi)有為鎖列表分配足夠的內(nèi)存,現(xiàn)在已達(dá)到數(shù)據(jù)庫(kù)的最大鎖數(shù)目。

3、 912:程序收到這個(gè)SQL代碼,表示死鎖或超時(shí),依照904中的方法來(lái)解決。

以下是一段Java代碼,其捕捉返回的-911、-912、-904代碼,并進(jìn)行重試:

 

  1. for (int i = 0; i < MAX_RETRY_ATTEMPTS; i++) {  
  2. //以下代碼模擬一次事務(wù)  
  3. try {  
  4. stmt = conn.createStatement();  
  5. System.out.println("Transaction started...");  
  6. stmt.executeUpdate("UPDATE 1..."); //SQL語(yǔ)句1  
  7. stmt.executeUpdate("UPDATE 2..."); // SQL語(yǔ)句2  
  8. stmt.executeUpdate("UPDATE 3..."); // SQL語(yǔ)句3  
  9. stmt.executeUpdate("UPDATE 3..."); // SQL語(yǔ)句4  
  10. //提交所有更改  
  11. conn.commit();  
  12. System.out.println("事務(wù)已完成。");  
  13. //確保只運(yùn)行了一次。  
  14. i = MAX_RETRY_ATTEMPTS;  
  15. catch (SQLException e) {  
  16. /**  
  17. *如果返回的SQL代碼為-911,回滾會(huì)自動(dòng)完成,程序回滾至前一次的提交狀態(tài)。  
  18. *程序?qū)⑦M(jìn)行重試。  
  19. */ 
  20. if (-911 == e.getErrorCode()) {  
  21. //等待RETRY_WAIT_TIME  
  22. try {  
  23. Thread.sleep(RETRY_WAIT_TIME);  
  24. catch (InterruptedException e1) {  
  25. //即使休眠被打斷,但仍要重試。  
  26. System.out.println("休眠被打斷。");  
  27. }  
  28. }  
  29. /**  
  30. *如果返回的SQL代碼為-912,表示死鎖及超時(shí)。  
  31. *如果是-904,代表已達(dá)到資源限度。  
  32. *在這種情況下,程序?qū)⒒貪L并進(jìn)行重試。  
  33. */ 
  34. else if (-912 == e.getErrorCode() || -904 == e.getErrorCode()) {  
  35. try {  
  36. //需要回滾  
  37. conn.rollback();  
  38. catch (SQLException e1) {  
  39. System.out.println("無(wú)法回滾。"; color:black’> + e);  
  40. }  
  41. try {  
  42. //等待RETRY_WAIT_TIME  
  43. Thread.sleep(RETRY_WAIT_TIME);  
  44. catch (InterruptedException e1) {  
  45. //即使休眠被打斷,但仍要重試。  
  46. System.out.println("休眠被打斷。" + e1);  
  47. }  
  48. else {  
  49. //如果是其他錯(cuò)誤,就不進(jìn)行重試。  
  50. i = MAX_RETRY_ATTEMPTS;  
  51. System.out.println("有錯(cuò)誤發(fā)生,錯(cuò)誤代碼:" 
  52. + e.getErrorCode() + " SQL狀態(tài):" 
  53. +e.getSQLState() + "其他信息:" + e.getMessage());  

 

從上面也可看到,程序?qū)λ梨i、超時(shí)、最大鎖數(shù)目將會(huì)進(jìn)行MAX_RETRY_ATTEMPTS次重試;其次,當(dāng)“最大鎖數(shù)目”的情況發(fā)生時(shí) (-911),程序不必手工進(jìn)行回滾,因?yàn)榇藭r(shí)的回滾是自動(dòng)完成的;最后,無(wú)論何時(shí)返回-911、-904、-912代碼,程序應(yīng)在下次重試前等待 RETRY_WAIT_TIME一段時(shí)間。
 

【編輯推薦】

  1. JAVA語(yǔ)言關(guān)于字符串替換的思考
  2. Java數(shù)據(jù)庫(kù)程序中的存儲(chǔ)過(guò)程設(shè)計(jì)
  3. java/.net語(yǔ)言及IDE簡(jiǎn)易對(duì)比
  4. 淺談Overload和Override的區(qū)別
  5. 靜態(tài)變量與非靜態(tài)變量的區(qū)別
責(zé)任編輯:于鐵 來(lái)源: 幫考網(wǎng)
相關(guān)推薦

2009-03-31 09:50:15

死鎖超時(shí)Java

2011-03-11 17:27:33

Java數(shù)據(jù)庫(kù)超時(shí)

2019-05-13 08:24:58

數(shù)據(jù)庫(kù)MySQLInnoDB

2023-09-13 14:52:11

MySQL數(shù)據(jù)庫(kù)

2009-03-24 10:45:39

MySQL5連接超時(shí)數(shù)據(jù)庫(kù)

2010-04-26 13:23:49

Oracle數(shù)據(jù)庫(kù)

2024-06-21 09:37:57

2024-08-19 11:45:18

2011-06-03 10:50:27

Java

2023-09-21 23:08:36

MySQL數(shù)據(jù)庫(kù)死鎖

2011-03-08 09:27:34

SQL Server數(shù)死鎖

2010-11-29 10:11:05

Sybase數(shù)據(jù)庫(kù)死鎖

2009-03-30 10:56:58

SQL Server數(shù)據(jù)庫(kù)死鎖數(shù)據(jù)庫(kù)

2017-10-25 15:27:52

MySQL數(shù)據(jù)庫(kù)超時(shí)設(shè)置

2011-08-10 15:46:29

數(shù)據(jù)庫(kù)

2010-07-06 14:40:15

解決SQL Serve

2009-03-31 11:57:52

2011-03-28 13:11:18

MySQL數(shù)據(jù)庫(kù)安全

2011-04-27 09:25:13

MySQL字符型數(shù)據(jù)

2024-07-05 09:19:52

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

成人午夜av在线| 国产欧美一区二区精品久久久| 最新热久久免费视频| 波多野结衣精品久久| 国产www在线| 欧美1级片网站| 亚洲黄色成人网| 伊人国产在线视频| heyzo高清国产精品| 国产午夜精品一区二区| 亚洲最大成人免费视频| 天天做天天爱夜夜爽| 欧美激情偷拍自拍| 蜜桃一区二区三区在线| 伊人色综合久久天天| 国产在线精品一区二区三区》| 波多野结衣 久久| 欧美一区久久| 一区二区三区在线播放欧美| 天堂va欧美va亚洲va老司机| 欧美精品高清| 亚洲一区二区三区免费视频| 亚洲国产一区二区精品视频| 超碰福利在线观看| 久久99精品国产| 欧美最顶级的aⅴ艳星| 看片网站在线观看| 日韩欧美网站| 亚洲欧洲日韩国产| 亚洲精品乱码久久久久久蜜桃欧美| 成人日韩av| 色综合一个色综合亚洲| 国产精品12345| 91精品国产91久久久久久青草| 日本一区二区三区在线观看| 久久精品国产精品国产精品污| 不卡视频免费在线观看| 精品一区二区在线观看| 国产精品美女无圣光视频| 久久夜靖品2区| 激情欧美一区| 欧美日韩爱爱视频| 欧美一级特黄高清视频| 大胆日韩av| 一区二区三区天堂av| 18禁裸乳无遮挡啪啪无码免费| 99re8这里有精品热视频8在线| 欧美一区永久视频免费观看| 中文字幕66页| 欧美久久久网站| 欧美最新大片在线看| 欧美三级一级片| 欧美 亚洲 另类 激情 另类| 波多野结衣在线高清| 国产精品久久久久永久免费观看| 日韩欧美国产二区| 黄色av免费在线看| 国产欧美日韩综合| 五月天丁香综合久久国产| 国产乱视频在线观看| 久久久不卡网国产精品二区| 欧美一区2区三区4区公司二百| 青青青草原在线| 国产亚洲一区字幕| 日韩精品久久久| eeuss影院在线观看| 中文字幕av一区 二区| 中文字幕成人一区| 91精品久久久久久粉嫩| 亚洲国产欧美在线| 精品视频在线观看一区| 免费毛片b在线观看| 日韩人在线观看| 中文字幕一区二区三区四区在线视频| 校园春色亚洲色图| 欧美日韩免费观看一区三区| 粉色视频免费看| 精品国产一区二区三区2021| 精品国产在天天线2019| 国产精品久久久免费观看| 久久av综合| 日韩最新中文字幕电影免费看| 天海翼在线视频| 影音先锋中文字幕一区| 欧美在线性视频| 一级做a爱片久久毛片| 国产精品一区一区三区| 久久99精品久久久久久三级 | 久久经典综合| 国产精品免费久久久久影院| 国内老熟妇对白xxxxhd| 99久久久免费精品国产一区二区| 成人在线视频一区| 动漫精品视频| 国产一级在线| 一区二区三区在线视频观看58| av之家在线观看| 久久日本片精品aaaaa国产| 日韩欧美在线一区二区三区| 欧美一区二区三区成人精品| 欧美国产美女| 91成人在线视频| 一区二区三区www污污污网站| 懂色一区二区三区免费观看| 日韩免费一区二区三区| 国产精品国精产品一二| 在线视频中文字幕一区二区| 久久精品无码一区二区三区毛片| 在线一级成人| 欧美激情亚洲精品| 精品国产www| 99综合电影在线视频| 亚洲综合第一| 一区二区电影免费观看| 日韩欧美国产麻豆| 香蕉久久久久久久| 久久一区精品| 2020国产精品久久精品不卡| 国产永久免费高清在线观看视频| 亚洲线精品一区二区三区八戒| 国产高潮免费视频| 日韩人体视频| 欧美极品少妇全裸体| 伊人网综合在线| 久久色.com| 99热亚洲精品| 一区二区三区四区视频免费观看| 尤物精品国产第一福利三区| 日韩精品久久久久久久酒店| 国产成人一区二区精品非洲| 亚洲人成网站在线播放2019| 最新欧美色图| 日韩国产精品亚洲а∨天堂免| 欧美精品久久久久久久久46p| 老司机精品福利视频| 久久综合色8888| 亚洲自拍偷拍在线| 毛片网站在线免费观看| 在线亚洲精品福利网址导航| 法国伦理少妇愉情| aⅴ色国产欧美| 国产精品亚洲综合| 欧美韩日亚洲| 欧美成人vr18sexvr| 国产精品国产精品88| 精品在线你懂的| 亚洲欧洲一区二区在线观看| 亚洲国产成人二区| 亚洲欧洲在线看| 一级一片免费看| 国产亚洲综合在线| 亚洲 中文字幕 日韩 无码| 国产内射老熟女aaaa∵| 欧美国产精品一区| 能在线观看的av网站| 国产成人短视频在线观看| 欧美性视频精品| 四虎影视精品成人| 日韩欧美在线第一页| 国产黄片一区二区三区| 日韩在线观看一区二区| 色综合久久88色综合天天提莫| 日本免费一区二区三区四区| 国产亚洲一级高清| 狠狠躁夜夜躁人人爽视频| 久久精品日韩一区二区三区| 成年人小视频网站| 日韩精品一区二区三区免费观看| 国产女精品视频网站免费| 快射视频在线观看| 欧美videos大乳护士334| 久久久久噜噜噜亚洲熟女综合| 成人激情小说乱人伦| 东京热加勒比无码少妇| 成人精品天堂一区二区三区| 国产一区二区丝袜| 日本在线视频网址| 日韩精品丝袜在线| 最近中文字幕免费观看| 亚洲精品中文字幕乱码三区| 国产xxxx视频| 久久尤物视频| 五月天综合婷婷| 果冻天美麻豆一区二区国产| 国产成人精品视| 巨大荫蒂视频欧美另类大| 精品国一区二区三区| 欧美一区免费看| 中文字幕欧美一区| 一级特黄a大片免费| 视频一区国产视频| 免费看黄色a级片| 亚洲精品亚洲人成在线观看| 国产精品视频精品视频| 欧美人体视频xxxxx| 亚洲免费电影一区| 国产女人18毛片水真多| 欧美日韩久久久久| 91视频最新网址| 99久久亚洲一区二区三区青草| 五月婷婷丁香综合网| 午夜欧美精品| 亚洲国产一区二区在线播放| 日韩欧美理论片| 亚洲一区日韩| 成人性做爰片免费视频| 五月综合久久| 91久久久在线| www.成人影院| 欧美精品久久久久久久| 在线观看av黄网站永久| 亚洲国产精品va在看黑人| 亚洲一区二区天堂| 国产日韩欧美综合一区| 日韩高清在线一区二区| 老司机午夜精品视频在线观看| 欧美做受777cos| 少妇精品久久久一区二区三区| 99久久久久国产精品免费| 日韩成人动漫| 5252色成人免费视频| 在线看三级电影| 色婷婷综合成人| 欧美香蕉爽爽人人爽| 精品少妇一区二区| 91在线公开视频| 在线观看av一区二区| 男女视频免费看| 91成人在线| 色偷偷91综合久久噜噜| 国产资源在线观看| 日韩激情视频在线播放| 懂色av成人一区二区三区| 欧美一区二区在线视频| 一级黄色片在线观看| 在线观看免费成人| 久久久久久久久黄色| 天天操天天干天天综合网| 久久网一区二区| 亚洲免费观看视频| 欧美第一页在线观看| 国产精品三级视频| 日韩av片在线| 中文字幕中文字幕一区二区| 黄色在线观看av| 91一区二区三区在线观看| 国产+高潮+白浆+无码| 99热国产精品| 91av在线免费| 久久久久亚洲蜜桃| 日韩毛片无码永久免费看| 国产午夜精品理论片a级大结局| 欧美老肥婆性猛交视频| 色天堂在线视频| 亚洲精品自拍偷拍| 男男激情在线| 国产一区二区三区毛片| 成人jjav| 精品国产视频在线| 尤物视频在线看| 欧美激情欧美激情在线五月| 成人影音在线| 欧美性一区二区三区| 大胆人体一区二区| 国产精品高潮呻吟视频 | 国产精欧美一区二区三区| 国模一区二区| 91色视频在线观看| 香蕉免费一区二区三区在线观看| 成人av免费看| 色吊丝一区二区| 亚洲成人第一| 女人色偷偷aa久久天堂| 日韩av新片网| 日韩国产在线一| 在线视频观看91| 成人黄色av电影| 欧美日韩高清丝袜| 中文字幕一区二区三中文字幕| 日本妇女毛茸茸| 天天综合网天天综合色| youjizzxxxx18| 午夜伦理福利在线| 欧美精品成人在线| 自拍偷自拍亚洲精品被多人伦好爽| 国产成人avxxxxx在线看| 国产999精品在线观看| 久久久亚洲国产天美传媒修理工| a国产在线视频| 国产精品日日摸夜夜添夜夜av| 日本在线成人| 日本一区二区在线视频| 正在播放日韩欧美一页| 黄www在线观看| 国内成人精品2018免费看| 999精品免费视频| 国产精品盗摄一区二区三区| 国产第一页第二页| 欧美喷水一区二区| 五月婷婷在线观看视频| 日韩中文字幕不卡视频| free性护士videos欧美| 国产日韩欧美夫妻视频在线观看| 国产在线播放精品| 三年中文高清在线观看第6集| 国产精品久久国产愉拍| 久久久福利影院| 久久亚洲综合av| 欧美久久久久久久久久久久| 色www精品视频在线观看| 亚洲欧美另类一区| 最新国产精品拍自在线播放| 毛片在线网站| 不卡一卡2卡3卡4卡精品在| 日韩理论片av| 黄色a级片免费| 丁香激情综合五月| 国产免费无码一区二区视频| 在线精品观看国产| 你懂的在线网址| 国模视频一区二区三区| 精品中文在线| 一区二区视频在线观看| 日韩高清一区二区| 中文字幕在线观看的网站| 亚洲九九爱视频| 国产视频www| 色噜噜狠狠狠综合曰曰曰88av| 小黄鸭精品aⅴ导航网站入口| 国产高清自拍99| 国自产拍偷拍福利精品免费一 | 日韩成人高清视频| 欧美一级国产精品| 国产写真视频在线观看| 国产精品日韩在线一区| 激情五月综合| 欧美精品成人网| 久久日韩粉嫩一区二区三区| 国产成人精品片| 亚洲精美色品网站| www成人免费观看| 国产精品麻豆免费版| 国产综合亚洲精品一区二| 久久黄色一级视频| 国产黄色片在线观看| 欧美大成色www永久网站婷| 亚洲欧美专区| 在线观看日韩片| 韩国成人福利片在线播放| 91传媒免费观看| 3d动漫精品啪啪1区2区免费| 米奇精品一区二区三区| 成人妇女免费播放久久久| 欧美激情黄色片| 日本黄色一级网站| 夜夜操天天操亚洲| 少妇av在线播放| 91av国产在线| 国产一区二区三区网| 五月婷婷狠狠操| 国产精品电影一区二区三区| 国产美女裸体无遮挡免费视频| 欧美xxxx做受欧美.88| 亚洲高清999| 青青青国产在线观看| 久久久99免费| 国产绿帽刺激高潮对白| 欧美激情免费观看| 一区二区导航| 国产美女18xxxx免费视频| 亚洲人成网站影音先锋播放| 丰满肉嫩西川结衣av| 欧美孕妇与黑人孕交| 国内亚洲精品| 精产国品一区二区三区| 亚洲电影一区二区| 成年人视频免费在线观看| 91精品久久久久久| 伊人久久亚洲美女图片| 中文字幕第20页| 91精品国产一区二区| 麻豆mv在线看| 中文字幕一区二区三区四区五区六区| 大陆成人av片| 天天操天天干天天摸| 久久精品视频播放| 欧洲亚洲一区二区三区| 日本 片 成人 在线| 亚洲影视资源网| 成人福利在线| 国产精品一区二| 蜜臀91精品一区二区三区| 黄网站免费在线| 伊人久久综合97精品| 91嫩草精品| 91插插插插插插插插| 亚洲小说欧美激情另类| 在线观看美女网站大全免费| 国产一区喷水| 久久99精品一区二区三区三区|