




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
DB2發(fā)生死鎖情況時應(yīng)該怎么處理相信大家都發(fā)現(xiàn)在數(shù)據(jù)庫里的新應(yīng)用剛剛開始啟用的時候,由于對DB2的測試還沒有進(jìn)行很好的完善,經(jīng)常會導(dǎo)致死鎖情況在系統(tǒng)中發(fā)生,讓人不勝其煩。為此很多人都想找到解決DB2死鎖情況的辦法,下面給大家一一分享。?生產(chǎn)環(huán)境里使用的數(shù)據(jù)庫是DB2。但是最近頻繁出現(xiàn)一個奇怪的死鎖現(xiàn)象:某一個selectsql語句總是會出現(xiàn)死鎖。按照以往的經(jīng)驗,通常都是update/delete之類的更新sql語句會出現(xiàn)死鎖的問題。而且這個selectsql語句是一個很普通的sql,沒有任何大數(shù)據(jù)量的處理。分析這個死鎖,有很多難以處理的地方。1、因為生產(chǎn)環(huán)境數(shù)據(jù)量大,我們無法把生產(chǎn)環(huán)境中關(guān)聯(lián)表的數(shù)據(jù)導(dǎo)入到測試環(huán)境。也就是說,無法模擬數(shù)據(jù)量。2、沒有任何log輸出。因為生產(chǎn)環(huán)境的log輸出級別是ERROR。3、無法在生產(chǎn)環(huán)境進(jìn)行測試,因為客戶不允許。4、生產(chǎn)環(huán)境的數(shù)據(jù)庫無法開啟快照等功能。因為會影響性能。大家可以想象,在沒有快照等功能下,分析死鎖就只能靠分析代碼了。但是這個處理非常復(fù)雜,單憑分析代碼,沒有任何頭緒。階段1:我們懷疑是數(shù)據(jù)量的原因由于生產(chǎn)環(huán)境的數(shù)據(jù)量特別大,這個處理還有很多其他表的處理。所以我們懷疑是不是大數(shù)據(jù)量導(dǎo)致系統(tǒng)負(fù)荷過高,導(dǎo)致了死鎖?于是我們?nèi)〉昧税l(fā)生死鎖時CPU,硬盤,網(wǎng)絡(luò)等等負(fù)載信息。沒有找到任何線索。階段2:做一個測試程序,在測試環(huán)境中用多線程模擬多用戶去做這個處理。為了能夠在開發(fā)環(huán)境再現(xiàn)出這個死鎖,我們做了一個多線程的測試程序,模擬多用戶運行??上?,還是沒有再現(xiàn)出來。階段3:分析測試環(huán)境數(shù)據(jù)庫和產(chǎn)品環(huán)境數(shù)據(jù)庫的差異此時我們懷疑還是數(shù)據(jù)量導(dǎo)致的問題。于是我們盡可能的將開發(fā)環(huán)境的數(shù)據(jù)弄得和產(chǎn)品環(huán)境一樣多。之后在運行測試,還是沒有再現(xiàn)出來。階段4:分析用戶的操作log沒有任何辦法的情況下,我們只好分析用戶的操作log,希望從中找到一點線索。功夫不負(fù)有心人,我們發(fā)現(xiàn),當(dāng)兩個人同時進(jìn)行這個操作的時候,基本都會發(fā)生死鎖。所以,我們判斷還是兩個人同時操作導(dǎo)致的問題。但是,為什么開發(fā)環(huán)境上模擬了很多人的操作,卻沒有發(fā)生死鎖呢?階段5:發(fā)現(xiàn)數(shù)據(jù)庫設(shè)置的問題我們又修改了測試程序,將模擬的用戶數(shù)量提高,但是很不幸,仍然沒有再現(xiàn)這個問題。此時我們注意到了:是不是開發(fā)環(huán)境的數(shù)據(jù)庫設(shè)置和產(chǎn)品環(huán)境的數(shù)據(jù)庫設(shè)置不同?我們對比了一下兩個數(shù)據(jù)庫的設(shè)置:發(fā)現(xiàn)好多參數(shù)不同。但是我們僅僅關(guān)注了和鎖有關(guān)的設(shè)置,也就是包含LOCK關(guān)鍵字的設(shè)置。階段6:將測試環(huán)境數(shù)據(jù)庫和產(chǎn)品環(huán)境數(shù)據(jù)庫的設(shè)置保持一致我們將所有和lock有關(guān)的設(shè)置都改成了和產(chǎn)品環(huán)境一直。但是仍然沒有再現(xiàn)這個死鎖。終于,一個人發(fā)現(xiàn),"cur_commit"這個設(shè)置不同。于是查詢文檔,發(fā)現(xiàn)了cur_commit的特點。當(dāng)cur_commit=false的時候,下列情況會造成死鎖:線程1插入數(shù)據(jù)A,然后線程2插入數(shù)據(jù)B。在線程2還沒有提交事物之前,線程1查詢數(shù)據(jù)A,就會造成死鎖了。開發(fā)環(huán)境中,cur_commit=true,所以我們一直也模擬不出來這個現(xiàn)象。于是,我們把cur_commit也改成了false。階段7:使用測試程序去模擬我們修改了測試程序,模擬上面兩個線程的操作,成功地再現(xiàn)了這個死鎖。錯誤的log信息和產(chǎn)品環(huán)境上也是一致的。階段8:使用畫面操作去模擬然后我們修改了程序,使用畫面去操作,也成功地再現(xiàn)了這個死鎖。解決方案:解決方案很簡單,就是把查詢語句中的條件加為索引,就不會出現(xiàn)死鎖了。由于這個表數(shù)據(jù)量不大,所以性能幾乎沒有任何影響
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師住宿樓管理制度
- 村集體合同管理制度
- 標(biāo)志標(biāo)識廠管理制度
- 檔案信息化管理制度
- 檢定校準(zhǔn)室管理制度
- 檢驗員培訓(xùn)管理制度
- 樓道長衛(wèi)生管理制度
- 歌廳ktv管理制度
- 母嬰店營銷管理制度
- 毛毯廠倉庫管理制度
- 預(yù)拌混凝土及原材料檢測理論考試題庫(含答案)
- 3~6歲兒童早期運動游戲干預(yù)課程設(shè)計研究-基于SKIP的研究證據(jù)
- 《植物生理學(xué)》課件第三章+植物的光合作用
- 游泳館網(wǎng)架翻新施工組織方案設(shè)計
- 3.1 定格青春——向藝術(shù)家學(xué)創(chuàng)作 課件-2021-2022學(xué)年高中美術(shù)人美版(2019)選修繪畫
- 有機化學(xué)所有的命名--超全.
- 引水罐的設(shè)計計算
- 三年級譯林版英語下學(xué)期按要求寫句子專項強化練習(xí)題
- 電纜接線工藝設(shè)計規(guī)范流程
- 中醫(yī)經(jīng)絡(luò)減肥課件
- 5WHY分析法培訓(xùn)
評論
0/150
提交評論