DB2死結的解決過程全記錄

來源:互聯網
上載者:User
DB2主要應用於大型應用系統,具有較好的延展性,可支援從大型主機到單使用者環境。 DB2提供了高層次的資料利用性、完整性、安全性、可恢複性。這篇文章主要介紹了DB2死結的解決過程全記錄,本文造成死結的是select語句,處理過程相當困難,需要的朋友可以參考下

生產環境裡使用的資料庫是DB2。但是最近頻繁出現一個奇怪的死結現象:某一個select sql 語句總是會出現死結。

按照以往的經驗,通常都是update/delete之類的更新sql語句會出現死結的問題。而且這個 select sql 語句是一個很普通的sql,沒有任何大資料量的處理。

分析這個死結,有很多難以處理的地方。

1、因為生產環境資料量大,我們無法把生產環境中關聯表的資料匯入到測試環境。也就是說,無法類比資料量。
2、沒有任何log輸出。因為生產環境的log輸出層級是ERROR。
3、無法在生產環境進行測試,因為客戶不允許。
4、生產環境的資料庫無法開啟快照等功能。因為會影響效能。

大家可以想象,在沒有快照等功能下,分析死結就只能靠分析代碼了。但是這個處理非常複雜,單憑分析代碼,沒有任何頭緒。

階段1:我們懷疑是資料量的原因

由於生產環境的資料量特別大,這個處理還有很多其他表的處理。所以我們懷疑是不是大資料量導致系統負荷過高,導致了死結?
於是我們取得了發生死結時CPU,硬碟,網路等等負載資訊。沒有找到任何線索。

階段2:做一個測試程式,在測試環境中用多線程類比多使用者去做這個處理。

為了能夠在開發環境再現出這個死結,我們做了一個多線程的測試程式,類比多使用者運行。可惜,還是沒有再現出來。

階段3:分析測試環境資料庫和產品環境資料庫的差異

此時我們懷疑還是資料量導致的問題。於是我們儘可能的將開發環境的資料弄得和產品環境一樣多。
之後在運行測試,還是沒有再現出來。

階段4:分析使用者的操作log

沒有任何辦法的情況下,我們只好分析使用者的操作log,希望從中找到一點線索。功夫不負有心人,我們發現,當兩個人同時
進行這個操作的時候,基本都會發生死結。所以,我們判斷還是兩個人同時操作導致的問題。但是,為什麼開發環境上類比了
很多人的操作,卻沒有發生死結呢?

階段5:探索資料庫設定的問題

我們又修改了測試程式,將類比的使用者數量提高,但是很不幸,仍然沒有再現這個問題。此時我們注意到了:是不是開發環境的
資料庫設定和產品環境的資料庫設定不同?我們對比了一下兩個資料庫的設定:發現好多參數不同。但是我們僅僅關注了和鎖有關
的設定,也就是包含 LOCK關鍵字的設定。

階段6:將測試環境資料庫和產品環境資料庫的設定保持一致

我們將所有和lock有關的設定都改成了和產品環境一直。但是仍然沒有再現這個死結。終於,一個人發現,"cur_commit"這個設定
不同。於是查詢文檔,發現了 cur_commit的特點。
當 cur_commit = false的時候,下列情況會造成死結:
線程1插入資料A,然後線程2插入資料B。
線上程2還沒有提交事物之前,線程1查詢資料A,就會造成死結了。
開發環境中,cur_commit = true,所以我們一直也類比不出來這個現象。
於是,我們把cur_commit也改成了 false。

階段7:使用測試程式去類比

我們修改了測試程式,類比上面兩個線程的操作,成功地再現了這個死結。錯誤的log資訊和產品環境上也是一致的。

階段8:使用畫面操作去類比

然後我們修改了程式,使用畫面去操作,也成功地再現了這個死結。

解決方案:

解決方案很簡單,就是把查詢語句中的條件加為索引,就不會出現死結了。
由於這個表資料量不大,所以效能幾乎沒有任何影響。

相關推薦:

詳解離線安裝db2的python模組ibm_db方法

Python串連DB2資料庫

使用PHP操作DB2 Express C的五種方法(1)_PHP教程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.