精品欧美一区二区三区在线观看 _久久久久国色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)

欧美成人中文字幕在线| 91 com成人网| 亚洲 日韩 国产第一区| 91麻豆一区二区| 欧美色图首页| 亚洲人精选亚洲人成在线| 日韩中文字幕a| 91禁在线看| 久久久噜噜噜久噜久久综合| 国产在线视频91| 日本熟妇乱子伦xxxx| 久久看人人摘| 日韩精品免费在线| 91丝袜超薄交口足| 欧美亚洲韩国| 亚洲综合视频网| 午夜精品视频在线观看一区二区 | 欧美区日韩区| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲欧洲精品一区二区三区波多野1战4| www.亚洲欧美| 蜜臀久久久99精品久久久久久| 久久久久久久久久久91| 污污视频网站在线免费观看| 色婷婷综合久久久久久| 欧美成人性战久久| 久热精品在线播放| 香蕉视频亚洲一级| 欧美日韩在线另类| 99热这里只有精品免费| 久久久久久久久免费视频| 国产亚洲欧美在线| 久久精品国产综合精品| 免费观看黄色av| 国产一区二区三区在线观看免费视频 | 在线视频这里只有精品| 丝袜美腿一区二区三区动态图| 日韩三级中文字幕| 午夜免费视频网站| 午夜不卡一区| 欧美日韩国产综合久久| www日韩视频| 小h片在线观看| 亚洲成a人片在线观看中文| 国产人妻人伦精品| 91精品久久| 亚洲少妇中出一区| 一本二本三本亚洲码| 日本精品在线| 国产精品第五页| 亚洲欧美国产精品桃花| 日本视频不卡| 日韩一区欧美一区| 国产麻豆电影在线观看| 国产三区在线观看| 亚洲精品美国一| 糖心vlog在线免费观看| dy888亚洲精品一区二区三区| 1区2区3区精品视频| 一区二区在线中文字幕电影视频| 日韩在线资源| 亚洲图片你懂的| 久久国产精品免费观看| 丝袜综合欧美| 亚洲成人av免费| 久草青青在线观看| 欧洲成人一区| 在线播放91灌醉迷j高跟美女| 中文字幕第66页| 999在线精品| 亚洲娇小xxxx欧美娇小| aaaaaav| 精品国产欧美日韩| 久久色精品视频| 久久午夜无码鲁丝片午夜精品| 亚洲国产精品一区制服丝袜| 91精品国产高清久久久久久久久| 最近免费中文字幕大全免费版视频| 日韩高清不卡一区| 亚洲一区二区久久久久久| 性生活视频软件| 91视频在线观看免费| 日韩欧美一区二区三区四区五区| 蜜桃av在线免费观看| 亚洲综合丝袜美腿| 国产自偷自偷免费一区| 亚洲18在线| 亚洲精品一区二区三区蜜桃下载| 精品人妻少妇嫩草av无码| 第一会所亚洲原创| 久久久久久久国产| 99久久久无码国产精品免费蜜柚 | 麻豆视频在线观看免费网站| 一个色综合av| www.日本xxxx| 99国产精品免费网站| 亚洲天堂av在线播放| 欧美老熟妇一区二区三区| 国产精品日韩精品欧美精品| 国产美女精彩久久| 亚洲aⅴ在线观看| 国产精品久久看| 国产免费黄色小视频| jizz亚洲女人高潮大叫| 亚洲第一视频在线观看| 99久久99久久精品免费看小说.| 国产精品大片| 国产欧美日韩精品丝袜高跟鞋| 日本xxxxwww| 中文字幕欧美一区| 成人小视频在线看| 国产精品视频3p| 久久精品一本久久99精品| 成人毛片18女人毛片| 国产精品一区一区| 亚洲不卡1区| 依依综合在线| 亚洲国语精品自产拍在线观看| 亚洲精品久久久久久国| 丝袜a∨在线一区二区三区不卡| 99久久精品无码一区二区毛片| 国产视频在线看| 精品日韩美女的视频高清| 亚洲精品国产久| 手机亚洲手机国产手机日韩| 日av在线播放中文不卡| 天堂网av2014| 亚洲国产另类av| 女王人厕视频2ⅴk| 99久久久久国产精品| 国产精品成人va在线观看| 午夜小视频在线播放| 亚洲图片欧美色图| 国产欧美视频一区| 欧美阿v一级看视频| 91精品视频大全| 91精品专区| 欧美日韩视频专区在线播放| 亚洲精品色午夜无码专区日韩| 99av国产精品欲麻豆| 国产一级二级三级精品| av在线播放资源| 亚洲国产精品免费| 日本三级欧美三级| av亚洲精华国产精华精华 | 久久午夜精品一区二区| 久久婷婷开心| 六月婷婷综合| 亚洲无av在线中文字幕| 黄色av网站免费| 国产三级欧美三级| 久久撸在线视频| 91精品国产福利在线观看麻豆| 成人网页在线免费观看| av毛片在线看| 精品国一区二区三区| 久久精品国产亚洲AV无码麻豆| 国产mv日韩mv欧美| 欧美男女爱爱视频| 综合亚洲自拍| 国产精品久久久久久久app| 超碰国产在线观看| 欧美精品久久99久久在免费线| 亚洲综合视频网站| 粉嫩aⅴ一区二区三区四区| 国产日韩av网站| 最新亚洲精品| 国产欧亚日韩视频| 青春草视频在线观看| 亚洲成人激情视频| 国产精品熟女视频| 亚洲视频综合在线| 亚洲激情 欧美| 免费久久99精品国产自在现线| 欧美三级网色| 在线免费观看亚洲| 午夜精品一区二区三区av| 蜜桃视频在线观看网站| 欧美久久久久免费| 久久精品免费在线| 国产婷婷色一区二区三区| 涩涩网站在线看| 1024精品一区二区三区| 日韩电影在线播放| 亚洲综合网狠久久| 国产成人精品一区二区三区| 欧美一级二级三级区| 亚洲成人性视频| 波多野结衣电车痴汉| 亚洲精品第一国产综合野| 国产福利短视频| 国内精品伊人久久久久av一坑 | 成人小电影网站| 久久香蕉国产线看观看网| 欧洲av在线播放| 精品视频一区二区不卡| 国产精品变态另类虐交| 国产精品天天看| 男男做爰猛烈叫床爽爽小说| 蜜臀国产一区二区三区在线播放 | 精品国产乱码久久久久久免费| 亚洲高清毛片一区二区| 自拍偷拍亚洲综合| 精品人妻少妇嫩草av无码| 国产一区二区三区日韩| 国产a级片免费观看| 国产综合久久| 在线国产精品网| 亚洲第一福利社区| 成人在线免费观看一区| 精品国产欧美日韩一区二区三区| 久久免费成人精品视频| 麻豆网站在线免费观看| 国产亚洲成av人片在线观看桃| 亚洲女同志亚洲女同女播放| 欧洲精品一区二区| 在线天堂中文字幕| 午夜精品福利久久久| 国产盗摄一区二区三区在线| 亚洲国产精品高清| 国产伦精品一区二区三区妓女 | 2018天天弄| 国产精品久久久久四虎| 国产高清一区二区三区四区| 99re在线视频这里只有精品| 欧美一级大片免费看| 精品一区二区三区日韩| caoporn超碰97| 另类国产ts人妖高潮视频| 免费一级特黄毛片| 亚洲午夜一区| 欧美性猛交内射兽交老熟妇| 99久久影视| 亚洲精品免费在线看| 欧美精品一区二区三区中文字幕| 精品一区二区三区免费毛片| 国产精品调教视频| 国产精品一区视频网站| 91精品尤物| 动漫精品视频| 豆花视频一区二区| 国模一区二区三区私拍视频| 精品av导航| 久久久国产精品一区二区三区| 欧美色资源站| 免费av一区二区三区| 女厕嘘嘘一区二区在线播放| 欧美动漫一区二区| 精品久久网站| 色999五月色| 99视频精品全国免费| 最新av在线免费观看| 欧美黄色一级视频| 日韩视频免费播放| 久久国产精品亚洲77777| 欧美两根一起进3p做受视频| 日本成人在线电影网| 日日躁夜夜躁aaaabbbb| 国产精品自产自拍| 国产精品日日摸夜夜爽| 99r精品视频| 成人性生交大片免费看无遮挡aⅴ| 国产精品麻豆网站| 免费三片在线播放| 精品国产老师黑色丝袜高跟鞋| www.欧美色| 欧美精品粉嫩高潮一区二区| wwwxxxx国产| 亚洲男人天堂古典| 欧美猛烈性xbxbxbxb| 欧美福利小视频| 周于希免费高清在线观看| 国产精品久久国产精品99gif| 亚洲日本免费电影| 国产久一道中文一区| 欧美日韩国产传媒| 成人毛片100部免费看| 欧美亚洲免费| 五月六月丁香婷婷| 91视频国产资源| 青青操在线视频观看| 亚洲福利一二三区| 中文在线资源天堂| 精品国产91洋老外米糕| h视频在线免费| 欧美精品成人在线| 福利一区视频| 狠狠色综合色区| 无需播放器亚洲| www.玖玖玖| 国产黑丝在线一区二区三区| 成年人网站免费看| 亚洲精品乱码久久久久久日本蜜臀 | 欧美在线亚洲| 日本一极黄色片| 成人app下载| 国产激情无码一区二区三区| 欧美日韩另类视频| 国产www视频| 亚洲最新av在线| 99色在线观看| 91中文字幕一区| 成人羞羞在线观看网站| 国产在线播放观看| 国产精品综合在线视频| 一道本在线观看| 五月天激情小说综合| 国产精品人人爽| 国产性猛交xxxx免费看久久| 18video性欧美19sex高清| 91深夜福利视频| 清纯唯美日韩| 黄色高清无遮挡| 91尤物视频在线观看| 久久久无码精品亚洲国产| 欧美美女喷水视频| 国产系列电影在线播放网址| 国内精品小视频| 亚洲乱码一区| 妞干网这里只有精品| 美女一区二区视频| 久久美女免费视频| 色哟哟欧美精品| 国产又爽又黄网站亚洲视频123| 欧美贵妇videos办公室| 国产中文欧美日韩在线| 一本一道久久久a久久久精品91 | 亚洲精品午夜av福利久久蜜桃| 日韩精品一区中文字幕| 久久亚洲精品小早川怜子| 久久久久久久久久久久久久av| 精品免费日韩av| 污污视频在线| 亚洲影视中文字幕| 中文字幕一区二区三区久久网站| 亚洲久久中文字幕| 亚洲国产激情av| 国产乱码在线观看| 国产亚洲精品美女久久久久| 三上悠亚一区二区| 欧洲亚洲一区| 日本v片在线高清不卡在线观看| 亚洲AV无码片久久精品| 色狠狠色狠狠综合| 国内在线精品| 国产精品一区二区久久久| 日韩av在线中文字幕| 国产成人在线综合| 亚洲欧美日韩在线不卡| 国产成人精品毛片| 欧美丰满片xxx777| 精品伊人久久久| 国产免费成人在线| 中文字幕免费不卡| 国产女18毛片多18精品| 欧美大片大片在线播放| 高清日韩欧美| 2022亚洲天堂| 中文字幕国产一区| av网站在线免费看| 欧美国产第一页| 日本欧美三级| 在线免费av播放| 亚洲男同性恋视频| 少妇一区二区三区四区| 日本最新高清不卡中文字幕| av一区二区在线播放| 亚洲精品成人在线播放| 亚洲在线视频免费观看| 久久久久国产精品嫩草影院| 国产精品美女主播在线观看纯欲| 91成人看片| 中文字幕乱码在线| 欧美日韩在线直播| 污视频网站免费在线观看| 精品视频一区二区| 久久国产剧场电影| 国产精品成人av久久| 国产亚洲人成网站在线观看| 久久久精品区| 干日本少妇首页| 国产精品电影一区二区三区| 天天摸天天干天天操| 国产精品色视频| 亚洲黄色大片| 美国美女黄色片| 欧美精品一区二区三区很污很色的 | av在线天堂网| 91精品1区2区| caoprom在线| 99精品视频网站| 久久综合久久综合久久综合| 97精品人妻一区二区三区香蕉| 韩日欧美一区二区| 国产精品久久久久久麻豆一区软件| 这里只有精品在线观看视频| 在线播放一区二区三区| 免费电影日韩网站| 久久综合久久久久| 国产精品久久久久久久第一福利|