偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

 

鎖等待則是數(shù)據(jù)庫中最普通的情況,一各應(yīng)用使用數(shù)據(jù)期間必然要加鎖,防止其他進(jìn)程或應(yīng)用破壞數(shù)據(jù),其他進(jìn)程或應(yīng)用在此期間不得不等待前一個(gè)應(yīng)用釋放鎖。鎖等待時(shí)間參數(shù)是可調(diào)的,但要視實(shí)際應(yīng)用情況而定,比如在網(wǎng)絡(luò)環(huán)境中,復(fù)雜應(yīng)用環(huán)境,或者對(duì)實(shí)時(shí)性要求不高的環(huán)境中,可以將鎖等待時(shí)間調(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兩個(gè)參數(shù)。

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

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

設(shè)置提示:

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

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

更改示例(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)前是否有多個(gè)應(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 + 用戶名 + 開始連接上的時(shí)間,遠(yuǎn)程的就會(huì)顯示為16進(jìn)制的IP地址+用戶名+開始連接上的時(shí)間。通過排查并發(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ā)生時(shí)間

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

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

STATEMENT DFT_MON_STMT 語句起始時(shí)間,語句內(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ù)庫管理器級(jí)別快照信息

 

  1. db2 get snapshot for dbm 

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

 

  1. db2 get snapshot for database on dbname 

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

 

  1. db2 get snapshot for application agentid applhandler 

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

查看表級(jí)別快照信息

 

  1. db2 get snapshot for tables on dbname 

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

查看鎖快照信息

 

  1. db2 get snapshot for locks on dbname 

 

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

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

 

  1. db2 get snapshot for dynamic sql on dbname 

5.使用事件查看器

 

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

事件類型

 

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

 

  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)容就是對(duì)全面解析DB2死鎖和鎖等待兩種情形的介紹,望你能有所收獲。

【編輯推薦】

  1. DB2歸檔日志的管理方案從哪幾點(diǎn)入手?
  2. 對(duì)DB2取得當(dāng)前時(shí)間的正確解析
  3. DB2性能調(diào)優(yōu)中存在哪些問題,如何破解?
  4. 降低DB2管理表空間的高水位標(biāo)記實(shí)操
  5. 3個(gè)建議實(shí)現(xiàn)DB2數(shù)據(jù)庫設(shè)計(jì),很簡單!
責(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-08-02 13:05:01

DB2應(yīng)用

2010-07-27 13:46:08

DB2提高IMPORT

2010-07-28 09:21:25

DB2鎖等待

2010-09-07 09:43:34

DB2提供

2010-11-04 10:09:23

DB2存儲(chǔ)過程

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鎖的屬性

2009-07-06 17:34:26

遠(yuǎn)程復(fù)制DB2

2010-11-02 10:27:38

DB2分區(qū)數(shù)據(jù)庫恢復(fù)
點(diǎn)贊
收藏

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