自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DB2死鎖與鎖等待兩種情形的全面解析

數(shù)據(jù)庫
此文章主要向大家講述的是全面解析DB2死鎖與鎖等待兩種情形,以及對查看和更改和鎖相關(guān)的主要數(shù)據(jù)庫參數(shù)的具體描述。

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

死鎖是因為兩個并發(fā)的進程或者線程同時各自占有一個資源,又需要占有對方資源,但又都各不相讓造成的,這通常是因為程序在并發(fā)上考慮不周造成的。

 

鎖等待則是數(shù)據(jù)庫中最普通的情況,一各應(yīng)用使用數(shù)據(jù)期間必然要加鎖,防止其他進程或應(yīng)用破壞數(shù)據(jù),其他進程或應(yīng)用在此期間不得不等待前一個應(yīng)用釋放鎖。鎖等待時間參數(shù)是可調(diào)的,但要視實際應(yīng)用情況而定,比如在網(wǎng)絡(luò)環(huán)境中,復(fù)雜應(yīng)用環(huán)境,或者對實時性要求不高的環(huán)境中,可以將鎖等待時間調(diào)大一些,有些情況要調(diào)小一些。鎖等待不同于死鎖,死鎖屬于程序并發(fā)不當(dāng),需要調(diào)整程序并發(fā)機制,鎖等待則屬于性能問題,可能需要調(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,意味著鎖等待時間無限期,這和實際應(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)用來自于哪些機器,本機的就顯示為 LOCAL + 用戶名 + 開始連接上的時間,遠程的就會顯示為16進制的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選項設(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)用斷掉連接后,將事件記錄下來

查看事件細節(jié)

 

  1. db2evmon –path ‘c:\temp’ 

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

【編輯推薦】

  1. DB2歸檔日志的管理方案從哪幾點入手?
  2. 對DB2取得當(dāng)前時間的正確解析
  3. DB2性能調(diào)優(yōu)中存在哪些問題,如何破解?
  4. 降低DB2管理表空間的高水位標(biāo)記實操
  5. 3個建議實現(xiàn)DB2數(shù)據(jù)庫設(shè)計,很簡單!
責(zé)任編輯:佚名 來源: 清華大學(xué)出版社
相關(guān)推薦

2010-08-20 08:52:25

DB2死鎖

2010-08-19 09:54:42

DB2死鎖

2010-08-26 15:15:18

DB2備份

2010-08-31 17:14:24

DB2表空間

2010-08-02 17:30:30

DB2鎖等待

2010-08-06 13:20:00

DB2鎖等待

2010-11-04 10:16:38

db2日志保存

2010-11-02 16:47:26

DB2鎖兼容性

2010-08-10 08:42:35

DB2鎖等待

2010-11-01 09:54:24

DB2管理服務(wù)器

2010-07-27 13:46:08

DB2提高IMPORT

2010-08-02 13:05:01

DB2應(yīng)用

2010-07-28 09:21:25

DB2鎖等待

2010-09-07 09:43:34

DB2提供

2010-11-04 10:09:23

DB2存儲過程

2010-08-26 16:49:09

DB2導(dǎo)入導(dǎo)出

2010-07-30 14:14:11

DB2快照函數(shù)

2010-11-02 16:31:59

DB2鎖的屬性

2010-11-02 10:27:38

DB2分區(qū)數(shù)據(jù)庫恢復(fù)

2021-03-26 10:40:16

MySQL鎖等待死鎖
點贊
收藏

51CTO技術(shù)棧公眾號