国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號(hào)

奇異的數(shù)據(jù)庫死鎖
2009-04-21   IT專家網(wǎng)

案例再現(xiàn):

  一家企業(yè)已經(jīng)部署了ERP系統(tǒng),其后臺(tái)就用到了Oracle數(shù)據(jù)庫系統(tǒng)。不過這個(gè)ERP系統(tǒng)沒有人事管理系統(tǒng)模塊。企業(yè)后來為了加強(qiáng)人事管理,故又采用了一款人事管理的系統(tǒng)。由于ERP系統(tǒng)是開源的,故通過簡(jiǎn)單的開發(fā)就可以跟人事管理系統(tǒng)進(jìn)行集成。由于人事管理跟ERP系統(tǒng)的相關(guān)模塊基本上沒有很大的內(nèi)在聯(lián)系,所以最后只有User表是與人事管理系統(tǒng)共用的,其他都是通過視圖的形式進(jìn)行數(shù)據(jù)交流。但是當(dāng)企業(yè)開始用這個(gè)系統(tǒng)的時(shí)候,就出現(xiàn)了問題。如采購員需要維護(hù)供應(yīng)商聯(lián)系人(其需要用到User表)的時(shí)候,往往會(huì)發(fā)現(xiàn)數(shù)據(jù)庫會(huì)出現(xiàn)長(zhǎng)時(shí)間的停頓現(xiàn)象。有時(shí)候甚至需要到第二天才能夠順利更改或者添加供應(yīng)商聯(lián)系人。

  數(shù)據(jù)庫管理員剛開始懷疑是否是服務(wù)器性能的問題。但是檢查了CPU以及內(nèi)存的使用情況來看,問題不是發(fā)生在性能上面。再經(jīng)過深入細(xì)致的調(diào)查,才發(fā)現(xiàn)是鎖沖突導(dǎo)致了User表反映的遲緩。這個(gè)人事管理系統(tǒng)本來就是人事管理人員在用,基本上就是一個(gè)單機(jī)版的系統(tǒng)。這個(gè)應(yīng)用程序在設(shè)計(jì)的時(shí)候,可能出于數(shù)據(jù)庫兼容性的考慮,故在表級(jí)別上實(shí)現(xiàn)了鎖。也就是說,即使對(duì)User表其中的一條記錄進(jìn)行修改,應(yīng)用程序也會(huì)為整個(gè)User表進(jìn)行加鎖。如此的話,當(dāng)人事管理人員在更該員工信息的話,這個(gè)表其他用戶就不能夠更改,直到人事管理人員完成更改。而由于供應(yīng)商聯(lián)系人信息其也是存儲(chǔ)在User表中,為此采購員就會(huì)感覺到User表會(huì)出現(xiàn)長(zhǎng)時(shí)間的停頓顯現(xiàn)。

  問題解析:

  數(shù)據(jù)庫鎖主要是用來解決并發(fā)行訪問可能出現(xiàn)的問題。根據(jù)加鎖內(nèi)容的不同,可以在不同的級(jí)別上實(shí)現(xiàn)鎖。如可以在整個(gè)表上實(shí)現(xiàn)加鎖;也可以對(duì)特定的行實(shí)現(xiàn)加鎖。有些應(yīng)用軟件為了兼容于市場(chǎng)上每個(gè)基于SQL語句的數(shù)據(jù)庫,會(huì)例行公事地在表級(jí)別上而不是在航級(jí)別上鎖定資源。采用了不必要的高級(jí)別加鎖機(jī)制從而導(dǎo)致了不必要的鎖沖突。所以所在應(yīng)用程序設(shè)計(jì)的時(shí)候需要注意因?yàn)殒i設(shè)置不當(dāng)而給數(shù)據(jù)庫造成的負(fù)面影響。

  那么應(yīng)用程序的哪些不恰當(dāng)設(shè)計(jì)會(huì)增加鎖沖突發(fā)生的機(jī)率呢?根據(jù)筆者的經(jīng)驗(yàn),如果應(yīng)用程序如下幾個(gè)方面設(shè)計(jì)不當(dāng)?shù)脑挘瑒t會(huì)大大增加鎖沖突發(fā)生的機(jī)會(huì)。

  1、事務(wù)運(yùn)行時(shí)間過長(zhǎng)導(dǎo)致鎖沖突。這是最容易發(fā)生的情況。如在ERP系統(tǒng)中,有一個(gè)批量結(jié)束采購訂單的作業(yè)。因?yàn)樵诓少徲唵喂芾碇校袝r(shí)候會(huì)出現(xiàn)尾數(shù)的情況。如采購訂單明細(xì)中有一個(gè)產(chǎn)品,采購訂單上寫著是1998套,而中18套可是出于損耗率而考慮購買的。但是供應(yīng)商由于生產(chǎn)線的限制,其可能只供應(yīng)了1995套,即少供應(yīng)商了3套。此時(shí)由于供應(yīng)商交貨數(shù)量沒有達(dá)到采購數(shù)量,故此時(shí)系統(tǒng)中這張采購訂單或者采購訂單中的這個(gè)采購條目永遠(yuǎn)不會(huì)結(jié)束。這會(huì)導(dǎo)致管理上很大的麻煩。如采購員可能需要定期導(dǎo)一份未結(jié)案采購明細(xì)表以追蹤物料。可此時(shí)哪些尾數(shù)問題,會(huì)導(dǎo)致導(dǎo)出來的報(bào)表中內(nèi)容虛多。另外在根據(jù)采購單轉(zhuǎn)收貨單作業(yè)中,這些未結(jié)案的采購訂單也會(huì)老是在那個(gè)窗口中顯示,這給系統(tǒng)用戶選擇增添了一定的困難。故系統(tǒng)中設(shè)計(jì)了這個(gè)作業(yè),用來幫助用戶批量的結(jié)束采購訂單。可是這個(gè)程序如果設(shè)計(jì)的不好的話,會(huì)造成比較大的麻煩。因?yàn)檫@個(gè)作業(yè)其需要更新好多張表,如采購明細(xì)表、采購訂單頭表等等。而且還會(huì)涉及到比較復(fù)雜的業(yè)務(wù)邏輯,如需要判斷采購行行中的所有采購條目是否都已經(jīng)結(jié)束,只有在全部結(jié)束后程序才會(huì)更新采購訂單頭的結(jié)束碼字段,即這張采購訂單全部結(jié)束。如果所有明細(xì)沒有全部結(jié)束,還有部分產(chǎn)品沒有到料的話,那么只結(jié)束這個(gè)具體的條目,而采購訂單沒有結(jié)案。由于涉及到的表比較多、業(yè)務(wù)邏輯比較復(fù)雜,如果記錄再比較多的話,那么此時(shí)這個(gè)作業(yè)運(yùn)行就會(huì)需要比較長(zhǎng)的時(shí)間。而在執(zhí)行這個(gè)作業(yè)的時(shí)候,系統(tǒng)會(huì)把這個(gè)作業(yè)所涉及表中的記錄鎖起來,不允許其他用戶進(jìn)行更改。此時(shí)若其他用戶需要對(duì)他們更改的話(更改同一條記錄的其他字段),就會(huì)造成鎖沖突。其他用戶必須等待這個(gè)作業(yè)完成之后才能夠更改相關(guān)的記錄。

  所以說,應(yīng)用程序設(shè)計(jì)時(shí)設(shè)計(jì)事務(wù)比較繁瑣,將使得鎖沖突的幾率大大提高。為此筆者建議各位應(yīng)用程序開發(fā)人員,在設(shè)計(jì)事務(wù)時(shí),最好能夠遵循簡(jiǎn)短化的操作。如相關(guān)的業(yè)務(wù)邏輯、所涉及到的表等等,能夠簡(jiǎn)單就簡(jiǎn)單,能夠少就少。如果真的需要很多步驟才能夠完成一個(gè)事務(wù)的話,那就可以適當(dāng)考慮把這個(gè)事務(wù)分成幾個(gè)獨(dú)立的事務(wù)來完成。另外在給企業(yè)用戶培訓(xùn)的時(shí)候,最好能夠說明這個(gè)問題。建議企業(yè)員工在執(zhí)行這些事務(wù)的時(shí)候,選擇一個(gè)合適的時(shí)間。如可以讓員工在下班后執(zhí)行這個(gè)作業(yè),以降低對(duì)其他用戶的影響。

  2、由于所級(jí)別設(shè)置不當(dāng)所造成的鎖沖突。在Oracle10G以后的版本中,一個(gè)事務(wù)能夠鎖定一行、多行或者整個(gè)表。雖然用戶也可以手工對(duì)行或者表進(jìn)行加鎖,但是Oracle數(shù)據(jù)庫服務(wù)器能夠自動(dòng)在盡可能低的級(jí)別上鎖定必要的行,以保證數(shù)據(jù)完整性,并最小化與其他可能需要訪問該表中其他行的事務(wù)之間的沖突。

如筆者一開始提到的案例,一些應(yīng)用軟件為了提高其軟件的兼容性,提高其軟件支持的數(shù)據(jù)庫系統(tǒng),就會(huì)例行公事的采取高級(jí)別的鎖機(jī)制。在本來只需對(duì)行進(jìn)行加鎖的情況下,而對(duì)表進(jìn)行了加鎖。這就會(huì)影響其他用戶對(duì)該表進(jìn)行維護(hù)工作。為此筆者認(rèn)為,應(yīng)用程序在設(shè)計(jì)的時(shí)候,考慮了軟件與數(shù)據(jù)庫系統(tǒng)的兼容性,那本來是件好事情。但是在設(shè)計(jì)的時(shí)候能否再到位一點(diǎn)的。如可以根據(jù)數(shù)據(jù)庫接口的不同,來考慮到底是采取行級(jí)別鎖呢還是采取表級(jí)別鎖。而不能夠一刀切,不分青紅皂白一律采用表鎖。這會(huì)大大降低應(yīng)用程序的性能,是一個(gè)不合理的設(shè)計(jì)方法。也即是說,應(yīng)用程序應(yīng)該可以根據(jù)所采用數(shù)據(jù)庫的不同(甚至版本的不同)來判斷這些數(shù)據(jù)庫是否支持行鎖。如果支持行鎖的話,則就只需要對(duì)行加鎖即可。其實(shí)要實(shí)現(xiàn)這個(gè)也不是很難,只需要在應(yīng)用程序初始化的時(shí)候進(jìn)行設(shè)置即可。先進(jìn)一點(diǎn)的直接可以從數(shù)據(jù)庫接口中獲得數(shù)據(jù)庫的品牌與版本信息,并進(jìn)行相應(yīng)的調(diào)整。遲鈍一點(diǎn)的需要系統(tǒng)管理員在初始化參數(shù)中手工指定所采用的數(shù)據(jù)庫品牌與版本。即使采取后面這種笨辦法也要比采用一刀切的表級(jí)別鎖方式好得多。

  3、沒有嚴(yán)格限制用戶從數(shù)據(jù)庫表中更新數(shù)據(jù)。

  有些軟件在設(shè)計(jì)時(shí),允許用戶可以直接在數(shù)據(jù)庫中修改相關(guān)的數(shù)據(jù)。這或許能夠給企業(yè)帶來一定的便利性,但是也會(huì)造成比較到的隱患。如某個(gè)系統(tǒng)管理員可能從數(shù)據(jù)庫表中更新了相關(guān)的數(shù)據(jù)。但是他在更新完成后,可能是出于疏忽的原因,沒有立即執(zhí)行commit語句。此時(shí)利用當(dāng)前會(huì)話進(jìn)行查詢的話,會(huì)發(fā)現(xiàn)數(shù)據(jù)已經(jīng)被更改。而利用另外一個(gè)會(huì)話查詢的時(shí)候,其查詢到的仍然是更改前的數(shù)據(jù)。也就是說,此時(shí)系統(tǒng)管理員更改的數(shù)據(jù)還沒有提交到數(shù)據(jù)庫表中。此時(shí)對(duì)于所涉及到的行就會(huì)進(jìn)行加鎖。而且有時(shí)候出于性能等方面的考慮,數(shù)據(jù)庫甚至?xí)?duì)整張表進(jìn)行加鎖。由于用戶忘了執(zhí)行commit指令,這個(gè)鎖就會(huì)一直在那邊。那么其他用戶就不能夠?qū)@些記錄進(jìn)行任何的更改作業(yè)。#p#分頁標(biāo)題#e#

  類似的情況筆者遇到的還是比較多的。因?yàn)橛行┫到y(tǒng)管理員沒有受到過專業(yè)的數(shù)據(jù)庫培訓(xùn),是半路出家的。為此他們對(duì)于這個(gè)鎖的機(jī)制與Commit命令的功用沒有直觀的印象。所以他們從數(shù)據(jù)庫中更新數(shù)據(jù)后,往往會(huì)忘記執(zhí)行Commit命令。所以筆者認(rèn)為如果把數(shù)據(jù)庫開發(fā)給企業(yè)的話,可能對(duì)數(shù)據(jù)庫的性能會(huì)產(chǎn)生比較大的影響,因?yàn)橛脩艉苋菀淄泩?zhí)行commit指令。而如果企業(yè)用戶的更新動(dòng)作都通過前臺(tái)應(yīng)用程序來完成,那么很少會(huì)發(fā)生這種情況了。在應(yīng)用程序設(shè)計(jì)的時(shí)候,肯定會(huì)在SQL語句的最后加上一個(gè)Commit指令。這就可以防止因?yàn)闆]有恰當(dāng)執(zhí)行commit指令而導(dǎo)致的鎖沖突事件的發(fā)生。

  筆者認(rèn)為由于應(yīng)用程序開發(fā)與數(shù)據(jù)庫設(shè)計(jì)是處于兩個(gè)不同的領(lǐng)域。故數(shù)據(jù)庫管理員需要跟應(yīng)用程序開發(fā)者進(jìn)行有效溝通。只有在雙方共同努力下,才能夠在最大限度內(nèi)避免這種情況的發(fā)生。

熱詞搜索:

上一篇:讓SQL Server的移動(dòng)變得簡(jiǎn)單
下一篇:如何選擇合適的備份技術(shù)

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
国产精品大尺度| 国产日韩欧美a| 国产日韩成人精品| 成人午夜在线播放| 亚洲欧美另类在线| 色先锋久久av资源部| 亚洲免费观看高清完整版在线 | 国产不卡一区视频| 中文在线资源观看网站视频免费不卡| 成人一二三区视频| 亚洲精品免费一二三区| 欧美日韩www| 狠狠色狠狠色合久久伊人| 国产精品视频观看| 91精品国产福利在线观看| 国产精品99久| 午夜电影一区二区三区| 国产日产欧美精品一区二区三区| 在线精品视频小说1| 国内成+人亚洲+欧美+综合在线| 亚洲欧美一区二区不卡| 日韩一区二区三区免费观看| 成人aa视频在线观看| 日韩国产精品久久久| 国产精品三级av| 日韩欧美国产不卡| 欧美性感一区二区三区| 盗摄精品av一区二区三区| 亚洲成人高清在线| 国产精品色哟哟| 欧美α欧美αv大片| 一本色道综合亚洲| 国产精品18久久久| 奇米四色…亚洲| 亚洲尤物视频在线| 亚洲天堂中文字幕| 亚洲国产精品av| 精品国产免费视频| 欧美日韩在线播放三区| 99久久精品国产一区| 国产经典欧美精品| 国产麻豆精品在线观看| 免费的国产精品| 亚洲伊人伊色伊影伊综合网| 一色桃子久久精品亚洲| 国产午夜三级一区二区三| 这里只有精品视频在线观看| 91精品办公室少妇高潮对白| av在线不卡观看免费观看| 国产成人亚洲综合a∨婷婷 | 色综合久久久久综合| 成人在线一区二区三区| 国产又粗又猛又爽又黄91精品| 午夜影视日本亚洲欧洲精品| 亚洲一区二区三区视频在线播放| 亚洲四区在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 天堂午夜影视日韩欧美一区二区| 亚洲天天做日日做天天谢日日欢| 国产精品理论在线观看| 亚洲国产高清aⅴ视频| 国产欧美一区二区精品久导航| 精品国产伦一区二区三区观看方式| 欧美一区二区在线不卡| 日韩免费福利电影在线观看| 精品入口麻豆88视频| 2024国产精品视频| 中文字幕一区二区三区不卡在线| 中文字幕视频一区| 亚洲国产精品自拍| 五月婷婷综合激情| 狂野欧美性猛交blacked| 激情成人午夜视频| 波多野结衣欧美| 色综合久久88色综合天天| 欧美亚洲高清一区| 日韩欧美国产午夜精品| 国产精品欧美综合在线| 一区二区三区在线观看动漫| 天天综合色天天综合色h| 久久99久久99精品免视看婷婷| 韩国欧美国产1区| 91在线国产观看| 91精品久久久久久蜜臀| 国产日韩精品一区二区浪潮av| 亚洲免费观看高清完整版在线观看熊 | 欧美在线免费观看亚洲| 欧美一级在线免费| 成人欧美一区二区三区视频网页| 亚洲一二三区视频在线观看| 久久99精品久久只有精品| 99精品国产99久久久久久白柏| 欧美日韩国产中文| 欧美高清在线一区| 日韩国产在线观看| 99热在这里有精品免费| 日韩一级视频免费观看在线| 国产精品毛片无遮挡高清| 午夜久久久久久久久| 成人网页在线观看| 日韩欧美电影一区| 亚洲亚洲精品在线观看| 成人免费视频一区二区| 91麻豆精品国产综合久久久久久 | 91精品久久久久久蜜臀| 亚洲日本免费电影| 国产成人午夜高潮毛片| 欧美成人性战久久| 亚洲色图一区二区三区| 亚洲色图视频网站| 日韩精品欧美精品| 狠狠色狠狠色综合日日91app| 成人一区在线看| 91精品久久久久久久99蜜桃| 欧美激情中文不卡| 美女视频黄 久久| 色综合久久久久久久| 久久亚洲二区三区| 亚洲成人av电影| 99久久精品国产网站| 91麻豆精品91久久久久同性| 国产亚洲精品7777| 亚洲人妖av一区二区| 久久疯狂做爰流白浆xx| 91官网在线观看| 国产精品色哟哟| 精品一区二区三区免费播放| 欧美日韩一级视频| 亚洲蜜臀av乱码久久精品蜜桃| 国产黄人亚洲片| 久久奇米777| 国产自产2019最新不卡| 欧美不卡123| 毛片av一区二区| 欧美一区二区视频免费观看| 91麻豆精品国产91久久久久| 欧美精品一区二区三区蜜臀| 丝袜诱惑制服诱惑色一区在线观看| 99久久久国产精品| 亚洲欧美自拍偷拍色图| 99国产精品久久久久| 国产精品二三区| 99久久国产免费看| 综合色中文字幕| 91麻豆精东视频| 一区二区三区四区高清精品免费观看| 91在线精品一区二区三区| 亚洲精品视频免费看| 色94色欧美sute亚洲线路一久| 亚洲最大的成人av| 欧美精品一卡两卡| 麻豆精品在线观看| 国产欧美在线观看一区| www.亚洲在线| 夜夜揉揉日日人人青青一国产精品| 在线欧美一区二区| 三级不卡在线观看| 精品久久久久久久人人人人传媒 | 中文字幕五月欧美| 国产电影一区在线| 亚洲国产精华液网站w| 一本久道久久综合中文字幕| 亚洲一级二级三级在线免费观看| 91超碰这里只有精品国产| 精品一区二区在线视频| 国产精品视频第一区| 欧美日韩日日摸| 国产成人免费在线观看| 亚洲成人动漫在线观看| 国产偷国产偷亚洲高清人白洁| 91香蕉视频mp4| 美女久久久精品| 亚洲同性gay激情无套| 日韩三级视频在线看| 波多野结衣精品在线| 麻豆精品在线看| 亚洲欧美欧美一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 色嗨嗨av一区二区三区| 国产在线精品免费| 日本中文字幕不卡| 激情图片小说一区| 亚洲品质自拍视频| 久久综合色天天久久综合图片| 一本色道久久加勒比精品| 国精产品一区一区三区mba视频| 亚洲激情在线播放| 国产喷白浆一区二区三区| 91麻豆精品久久久久蜜臀| 色国产综合视频| 99精品国产一区二区三区不卡| 久久综合综合久久综合| 亚洲成av人片在www色猫咪| 国产精品久久午夜| 国产亚洲成aⅴ人片在线观看| 欧美人与禽zozo性伦| 色激情天天射综合网| 91蜜桃婷婷狠狠久久综合9色| 国产精品亚洲专一区二区三区| 日韩电影免费在线观看网站|