DB2死鎖的解決過程全記錄
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:使用畫面操作去模擬
然後我們修改了程序,使用畫面去操作,也成功地再現了這個死鎖。
解決方案:
解決方案很簡單,就是把查詢語句中的條件加為索引,就不會出現死鎖了。
由於這個表資料量不大,所以效能幾乎沒有任何影響。
相關推薦:
使用PHP運算DB2 Express C的五種方法(1)_PHP教學
#以上是DB2死鎖的解決過程全記錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Win11系統無法安裝中文語言包的解決方法隨著Windows11系統的推出,許多用戶開始升級他們的作業系統以體驗新的功能和介面。然而,一些用戶在升級後發現他們無法安裝中文語言包,這給他們的使用體驗帶來了困擾。在本文中,我們將探討Win11系統無法安裝中文語言套件的原因,並提供一些解決方法,幫助使用者解決這個問題。原因分析首先,讓我們來分析一下Win11系統無法

隨著智慧型手機技術的不斷發展,手機在我們日常生活中扮演著越來越重要的角色。而作為一款專注於遊戲效能的旗艦手機,黑鯊手機備受玩家青睞。然而,有時候我們也會面臨到黑鯊手機開不了機的情況,這時候我們就需要採取一些措施來解決這個問題。接下來,就讓我們來分享五招教你解決黑鯊手機開不了機的問題:第一招:檢查電池電量首先,確保你的黑鯊手機有足夠的電量。可能是因為手機電量耗盡

大家都知道,如果電腦無法載入驅動程序,該設備可能就無法正常工作或與電腦進行正確的互動。那在電腦上彈出無法在此裝置上載入驅動程式的提示框,我們要如何解決呢?下面小編就教大家兩招輕鬆解決問題。 無法在此裝置上載入驅動程式解決方法 1、開始功能表搜尋「核心隔離」。 2、將記憶體完整性關閉,上方提示「記憶體完整性已關閉。你的裝置可能易受攻擊。」點擊後方忽略即可,不會對使用有影響。 3.重啟機器之後即可解決問題。

隨著社群媒體的不斷發展,小紅書已經成為越來越多年輕人分享生活、發現美好事物的平台。許多用戶在發布圖片時遇到了自動儲存的問題,這讓他們感到十分困擾。那麼,如何解決這個問題呢?一、小紅書發布自動儲存圖片怎麼解決? 1.清除快取首先,我們可以嘗試清除小紅書的快取資料。步驟如下:(1)開啟小紅書,點選右下角的「我的」按鈕;(2)在個人中心頁面,找到「設定」並點選;(3)向下捲動,找到「清除快取」選項,點擊確認。清除快取後,重新進入小紅書,嘗試發布圖片看是否解決了自動儲存的問題。 2.更新小紅書版本確保你的小

拼多多軟體內提供的商品好物非常多,隨時隨地想買就買,而且每一件商品品質都是嚴格把關的,件件商品都是正品,不同還有非常多優惠的購物折扣,讓大家網購根本停不下來。輸入手機號碼在線登錄,在線添加多個收貨地址和聯繫方式,可以隨時查看最新的物流動態,不同品類的商品板塊都是開放的,搜索上下滑動選購下單,足不出戶輕鬆體驗便捷的網購服務,還能查看所有的購買記錄,包括自己買過的商品,數十個購物紅包、優惠券免費領取使用,現在小編在線詳細為拼多多用戶們帶來查看買過的商品記錄的方法。 1.打開手機,點選拼多多圖標,

Linux中文亂碼問題是使用中文字元集和編碼時常見的一個問題。出現亂碼的原因可能是檔案編碼設定不正確,系統語言環境未安裝或未設置,以及終端顯示設定錯誤等。本文將介紹幾種常見的解決方法,並提供具體的程式碼範例。一、檢查檔案編碼設定使用file指令查看檔案編碼在終端機中使用file指令,可以檢視檔案的編碼:file-ifilename如果輸出中有"charset

標題:如何解決PyCharm無法開啟的問題PyCharm是一款功能強大的Python整合開發環境,但有時候我們可能會遇到無法開啟PyCharm的問題。在本文中,我們將分享一些常見的解決方法,並提供具體的程式碼範例。希望能幫助遇到這個問題的朋友們。方法一:清除快取有時候PyCharm的快取檔案可能會導致程式無法正常打開,我們可以嘗試清除快取來解決這個問題。具

預設網關自動消失怎麼解決在現代社會中,網路已經成為人們生活中不可或缺的一部分。無論是工作還是娛樂,我們都需要穩定的網路連線來完成各種任務。而預設閘道是連接本地網路與外部網際網路的關鍵要素之一。然而,有時我們可能會遇到預設閘道自動消失的問題,導致無法上網。那麼,當預設網關消失時,我們該如何解決這個問題?首先,我們應該明確預設網關的概念。預設網關是一個網路路
