診斷DB2資料庫鎖的問題

2021-04-12 14:16:13 字數 1132 閱讀 5664

診斷db2資料庫鎖的問題

簡介 鎖是資料庫為了控制併發資料的完整性而引入的機制,在併發應用中出現鎖現象並不可怕,鎖現象通常分為死鎖和鎖等待兩種情形。

死鎖是因為兩個併發的程序或者執行緒同時各自占有乙個資源,又需要占有對方資源,但又都各不相讓造成的,這通常是因為程式在併發上考慮不周造成的。

鎖等待則是資料庫中最普通的情況,一各應用使用資料期間必然要加鎖,防止其他程序或應用破壞資料,其他程序或應用在此期間不得不等待前乙個應用釋放鎖。鎖等待時間引數是可調的,但要視實際應用情況而定,比如在網路環境中,複雜應用環境,或者對實時性要求不高的環境中,可以將鎖等待時間調大一些,有些情況要調小一些。鎖等待不同於死鎖,死鎖屬於程式併發不當,需要調整程式併發機制,鎖等待則屬於效能問題,可能需要調整程式的sql語句。

不管是死鎖還是鎖等待,資料庫都有相應引數可調,也有相應的工具可以捕獲和分析,以下是鎖處理的通常辦法。

? 檢視和更改與鎖相關的主要資料庫引數

? 檢視當前併發應用

? 檢視和更改快照引數

? 獲取快照

? 使用事件檢視器

更改示例(clp方式)

db2 update db cfg using locktimeout 10

為了觀察快照中的鎖和執行語句情況,一般把lock和statement選項設為on,也可以酌情把其他開關開啟,示例如下:

deadlocks

deadlocks with details

statements

? 步驟:

-建立事件監控器

create event monitor evmname for eventtype write to file 『directory』

例:create event monitor mymonitor for deadlocks, statements

write to file 『c:/temp』

-把事件監控器開啟

接上例:

set event monitor mymonitor state 1

注:1為開啟,0為關閉

事件監控器開始工作,當所有應用斷掉連線後,將事件記錄下來

-檢視事件細節

db2evmon –path 『c:/temp』

診斷DB2資料庫鎖的問題

簡介鎖是資料庫為了控制併發資料的完整性而引入的機制,在併發應用中出現鎖現象並不可怕,鎖現象通常分為死鎖和鎖等待兩種情形。死鎖是因為兩個併發的程序或者執行緒同時各自占有乙個資源,又需要占有對方資源,但又都各不相讓造成的,這通常是因為程式在併發上考慮不周造成的。鎖等待則是資料庫中最普通的情況,一各應用使...

DB2鎖表問題

主要分兩步驟 獲取事物id及正在對該錶進行操作的sql 終止該事物。一 獲取事物id和sql 方法一 已知表名 獲取事物id db2 select distinct agent id from sysibmadm.snaplock where tabnme tabname with ur 檢視正在鎖...

建立 DB2 資料庫

可以使用 tivoli privacy manager 資料庫建立程式或使用資料庫產品介面可以建立 tivoli privacy manager 資料庫 表和配置資料庫。使用 db2 資料庫建立程式 使用 tivoli privacy manager 資料庫建立程式來建立 tivoli privac...