日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
DB2死鎖與鎖等待兩種情形的全面解析

以下的文章主要向大家描述的是全面解析DB2死鎖與鎖等待兩種情形,我們大家都知道在實(shí)際操作中,鎖的主要功能是數(shù)據(jù)庫為了控制并發(fā)數(shù)據(jù)的完整性而引入的機(jī)制,在并發(fā)應(yīng)用中出現(xiàn)鎖現(xiàn)象并不可怕,鎖現(xiàn)象通常分為死鎖和鎖等待兩種情形。

蘆山網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司

死鎖是因?yàn)閮蓚€并發(fā)的進(jìn)程或者線程同時各自占有一個資源,又需要占有對方資源,但又都各不相讓造成的,這通常是因?yàn)槌绦蛟诓l(fā)上考慮不周造成的。

鎖等待則是數(shù)據(jù)庫中最普通的情況,一各應(yīng)用使用數(shù)據(jù)期間必然要加鎖,防止其他進(jìn)程或應(yīng)用破壞數(shù)據(jù),其他進(jìn)程或應(yīng)用在此期間不得不等待前一個應(yīng)用釋放鎖。鎖等待時間參數(shù)是可調(diào)的,但要視實(shí)際應(yīng)用情況而定,比如在網(wǎng)絡(luò)環(huán)境中,復(fù)雜應(yīng)用環(huán)境,或者對實(shí)時性要求不高的環(huán)境中,可以將鎖等待時間調(diào)大一些,有些情況要調(diào)小一些。鎖等待不同于死鎖,死鎖屬于程序并發(fā)不當(dāng),需要調(diào)整程序并發(fā)機(jī)制,鎖等待則屬于性能問題,可能需要調(diào)整程序的sql語句。

不管是DB2死鎖還是鎖等待,數(shù)據(jù)庫都有相應(yīng)參數(shù)可調(diào),也有相應(yīng)的工具可以捕獲和分析,以下是鎖處理的通常辦法。

查看和更改與鎖相關(guān)的主要數(shù)據(jù)庫參數(shù)

查看當(dāng)前并發(fā)應(yīng)用

查看和更改快照參數(shù)

獲取快照

使用事件查看器

1.查看和更改與鎖相關(guān)的主要配置參數(shù)

CLP方式:

db2 get db cfg

在參數(shù)列表中尋找DLCHKTIME和LOCKTIMEOUT兩個參數(shù)。

-DLCHKTIME 單位是毫秒,是DB2死鎖的間隔時間,假設(shè)該值為10000ms,則意味著每隔10秒鐘檢查一下當(dāng)前數(shù)據(jù)庫中有無死鎖存在,如有死鎖,會選擇回滾其中的某一個事務(wù),讓另外一個事務(wù)完成交易。

-LOCKTIMEOUT單位是秒,是鎖等待最長時間,超過該時間仍未獲得鎖,則返回錯誤。

設(shè)置提示:

-缺省情況下,LOCKTIMEOUT是1,意味著鎖等待時間無限期,這和實(shí)際應(yīng)用需求一般是不太相符的,需要將其值設(shè)為大于0的一個數(shù)。

-DLCHKTIME時間通常要設(shè)得比LOCKTIMEOUT時間小一些,否則未等發(fā)現(xiàn)死鎖,就會被以鎖等待超時而返回錯誤。

更改示例(CLP方式)

 
 
 
  1. db2 update db cfg using locktimeout 10

2.查看當(dāng)前并發(fā)應(yīng)用

CLP方式:

db2 list applications

或db2 list applications show detail

或 db2 list applications for database dbname [ show detail]

該命令可以查看當(dāng)前是否有多個應(yīng)用在連接著數(shù)據(jù)庫,從而排查是否有并發(fā)的存在。

注意Application Name 和Application Id兩欄,Application Name欄列出了應(yīng)用的名字,db2bp通常意味著目前有CLP在連接數(shù)據(jù)庫,java則意味著可能有db2cc或用戶自己的java應(yīng)用在連接數(shù)據(jù)庫,在application Id欄中可以看到這些應(yīng)用來自于哪些機(jī)器,本機(jī)的就顯示為 LOCAL + 用戶名 + 開始連接上的時間,遠(yuǎn)程的就會顯示為16進(jìn)制的IP地址+用戶名+開始連接上的時間。通過排查并發(fā)應(yīng)用從而消除測試中不必要的鎖現(xiàn)象。

3.查看和更改快照參數(shù)

如果在合理設(shè)置了DLCHKTIME和LOCKTIMEOUT參數(shù)仍然出現(xiàn)鎖現(xiàn)象,可以查看快照或者創(chuàng)建事件監(jiān)控器來分析原因。要采用快照,首先要打開快照開關(guān)

 
 
 
  1. db2 get monitor switches

輸出中將包含以下參數(shù):

監(jiān)控開關(guān) 數(shù)據(jù)庫管理器參數(shù) 注釋#p#

BUFFERPOOL DFT_MON_BUFPOOL 緩沖區(qū)的讀寫情況和發(fā)生時間

LOCK DFT_MON_LOCK 鎖持有,鎖等待,以及DB2死鎖的發(fā)生情況

SORT DFT_MON_SORT Heap的使用情況,排序性能

STATEMENT DFT_MON_STMT 語句起始時間,語句內(nèi)容

 
 
 
  1. TABLE DFT_MON_TABLE Measure of activity (rows read/written)
  2. UOW DFT_MON_UOW Start/end times, completion status
  3. TIMESTAMP DFT_MON_TIMESTAMP Timestamps

為了觀察快照中的鎖和執(zhí)行語句情況,一般把LOCK和STATEMENT選項(xiàng)設(shè)為ON,也可以酌情把其他開關(guān)打開,示例如下: db2 update monitor switches using lock on statement on

4.查看快照信息

查看數(shù)據(jù)庫管理器級別快照信息

 
 
 
  1. db2 get snapshot for dbm

查看數(shù)據(jù)庫級別快照信息

 
 
 
  1. db2 get snapshot for database on dbname

查看應(yīng)用級別快照信息

 
 
 
  1. db2 get snapshot for application agentid applhandler

注:applhandler可以從list applicaitions的輸出中得到

查看表級別快照信息

 
 
 
  1. db2 get snapshot for tables on dbname

注:需要把tables快照開關(guān)設(shè)為ON才會有作用

查看鎖快照信息

 
 
 
  1. db2 get snapshot for locks on dbname

 
 
 
  1. db2 get snapshot for locks on for application agentid applhandler

查看動態(tài)sql語句快照信息

 
 
 
  1. db2 get snapshot for dynamic sql on dbname

5.使用事件查看器

可以使用時間查看器收集鎖事件,SQL語句事件,從而根據(jù)事件分析鎖原因。

事件類型

使用事件監(jiān)控器,首先要選定所關(guān)注的事件類型,DB2中有很多事件類型,可以用于鎖分析的通常會用到以下三種:

 
 
 
  1. DEADLOCKS
  2. DEADLOCKS WITH DETAILS
  3. STATEMENTS

步驟:

創(chuàng)建事件監(jiān)控器

 
 
 
  1. create event monitor evmname for eventtype write to file ‘directory’

例:

 
 
 
  1. create event monitor mymonitor for deadlocks, statements
  2. write to file ‘c:\temp’

把事件監(jiān)控器打開

接上例:

 
 
 
  1. set event monitor mymonitor state 1

注:1為打開,0為關(guān)閉

事件監(jiān)控器開始工作,當(dāng)所有應(yīng)用斷掉連接后,將事件記錄下來

查看事件細(xì)節(jié)

 
 
 
  1. db2evmon –path ‘c:\temp’

以上的相關(guān)內(nèi)容就是對全面解析DB2死鎖和鎖等待兩種情形的介紹,望你能有所收獲。


新聞標(biāo)題:DB2死鎖與鎖等待兩種情形的全面解析
本文地址:http://www.dlmjj.cn/article/coshcis.html