管理

ID #1018

突然ロックタイムアウトやデッドロックが多発するようになったのですが、原因は?

突然ロックタイムアウトやデッドロックが多発するようになったのですが、原因は?
まずはロック・エスカレーション を疑ってみましょう。DB2はデフォルトでは行ロックですが、ロック用のメモリー(LOCKLIST )が全体として不足したり、ロック用のメモリー(LOCKLIST)を1トランザクションで所定量(MAXLOCKS) 以上使うと、ロックの量を減らすために自動的に表ロックになります。表ロックになると並行度が下がり他の処理が待たされたりデッドロックが起きやすくなります。始めからLOCKLISTやMAXLOCKSの設定は増やしておいたほうがよいでしょう。ロックエスカレーションが起きているかどうかはdb2diag.log を見ると以下のようなメッセージが出ているのでわかりますよ。

【例】

2008-04-XX-00.00.29.617870+540 E413519E589 LEVEL: Warning
PID : 3707 TID : 47070471776608PROC : db2sysc
INSTANCE: db2inst1 NODE : 000 DB : XXXDB
APPHDL : 0-44235 APPID: *LOCAL.db2inst1.080424212730
AUTHID : DB2INST1
EDUID : 36147 EDUNAME: db2agent (XXXDB)
FUNCTION: DB2 UDB, data management, sqldEscalateLocks, probe:2
MESSAGE : ADM5500W DB2 is performing lock escalation. The total number of
locks currently held is "212121", and the target number of locks to
hold is "106060".

2008-04-XX-00.00.29.647137+540 E414109E535 LEVEL: Warning
PID : 3707 TID : 47070471776608PROC : db2sysc
INSTANCE: db2inst1 NODE : 000 DB : XXXDB
APPHDL : 0-44235 APPID: *LOCAL.db2inst1.080424212730
AUTHID : DB2INST1
EDUID : 36147 EDUNAME: db2agent (XXXDB)
FUNCTION: DB2 UDB, data management, sqldEscalateLocks, probe:3
MESSAGE : ADM5502W The escalation of "212110" locks on table
"XXX.TABLE1" to lock intent "X" was successful.

タグ: -

関連エントリ:

最終更新: 2008-05-29 01:54
作成者: : Ish
改訂: 1.1

Digg it! このレコードを印刷する 友達に教える PDF ファイルで表示する
Propose a translation for Propose a translation for
このエントリを評価してください:

評価点数: 0 - 5 (0 個の投票 )

完全に役に立たない 1 2 3 4 5 最も価値がある