婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > DB2死鎖的解決過程全記錄

DB2死鎖的解決過程全記錄

熱門標簽:400電話怎么申請收費標準 寧夏外呼系統方案 高德地圖標注生成 電銷外呼系統違規 怎樣在地圖標注自己的信息 南京外呼系統租用 400電話辦理2273649Z空間 智能語音外呼系統打電話 濟南電銷外呼防封卡怎么樣

生產環境里使用的數據庫是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和SqlServer有哪些區別
  • CentOS下DB2數據庫安裝過程詳解
  • db2數據庫常用操作命令大全
  • DB2新手使用的一些小筆記:新建實例、數據庫路徑不存在、客戶端連接 .
  • db2 導入導出單個表的操作詳解
  • DB2比較常用與實用sql語句總結
  • DB2 常用命令小結
  • DB2 常用命令速查(備忘)
  • DB2 日期和時間的函數應用說明
  • 詳解DB2 sqlstate 57016 SQLCODE=-668 原因碼 "7"錯誤的快速解決辦法

標簽:潛江 平頂山 茂名 唐山 長白山 仙桃 貴港 惠州

巨人網絡通訊聲明:本文標題《DB2死鎖的解決過程全記錄》,本文關鍵詞  DB2,死鎖,的,解決,過程,全,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《DB2死鎖的解決過程全記錄》相關的同類信息!
  • 本頁收集關于DB2死鎖的解決過程全記錄的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 科尔| 大丰市| 修武县| 永顺县| 崇文区| 金堂县| 杂多县| 手机| 米泉市| 济源市| 金沙县| 什邡市| 澄迈县| 托克逊县| 广饶县| 松原市| 扶余县| 犍为县| 龙门县| 庄河市| 大同县| 博湖县| 秦皇岛市| 县级市| 和林格尔县| 雷波县| 乐山市| 化德县| 六盘水市| 阿城市| 临清市| 同江市| 昌吉市| 华安县| 普陀区| 柏乡县| 张家口市| 三门县| 双江| 辰溪县| 云霄县|