Hitachi

JP1 Version 11 JP1/Performance Management - Agent Option for IBM DB2


Lock Information on Database(PD_DLID)

〈このページの構成〉

機能

データベースレベルのロック情報を格納しています。

デフォルト値および変更できる値

項目

デフォルト値

設定可否

Collection Interval

60

Collection Offset

0

Log

No

LOGIF

空白

Over 10 Sec Collection Time

No

×

ODBCキーフィールド

なし

ライフタイム

1つ以上のアプリケーションがデータベースに接続しているか,データベースが活動化状態の間。

レコードサイズ

フィールド

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Deadlocks

(DEADLOCKS)

発生したデッドロックの合計数。

ulong

No

すべて

SQLM_ELM_DEADLOCKS

詳細説明:

このエレメントは,アプリケーション間で競合の問題が起きていることを示す場合があります。問題の原因としては,次の状態が考えられます。

  • データベースでロック・エスカレーションが発生している。

  • システムが生成した行のロッキング数が十分なときに,アプリケーションが表を明示的にロッキングした。

  • アプリケーションがバインディングのときに使用した分離レベルが不適切である。

  • カタログ表が反復可能読み取りのためにロックされている。

  • 複数のアプリケーションが同じロックを異なる順序で獲得しているために,デッドロックになっている。

この問題は,デッドロックが発生しているアプリケーション(またはアプリケーション処理)が判別できれば解決できます。この場合,アプリケーションが並行して実行できるようにアプリケーションを変更できます。ただし,一部のアプリケーションでは並行して実行できない場合があります。

接続タイム・スタンプ・モニター・エレメント(last_reset,db_conn_time,およびappl_con_time)を使用すると,デッドロックの重大度を判別できます。例えば,デッドロックが5時間に10回起こるよりも,5分間に10回起こるほうが重大です。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Interval

(INTERVAL)

情報が収集される時間。秒単位。

ulong

No

すべて

RECORD_TIME - CURRENT_SYSTEM_BOOT_TIME

詳細説明:

特になし。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Lock Escals

(LOCK_ESCALS)

ロックが複数の行ロックから1つの表ロックにエスカレートされた回数。

ulong

No

すべて

SQLM_ELM_LOCK_ESCALS

詳細説明:

アプリケーションが保留するロックの合計数がそのアプリケーションで使用可能なロック・リスト・スペースの最大量に達した場合,またはすべてのアプリケーションが使用するロック・リスト・スペースが合計ロック・リスト・スペースに近くなると,ロックはエスカレートされます。使用可能なロック・リスト・スペースの量は,maxlocksおよびlocklist構成パラメーターによって決まります。

1つのアプリケーションが使用可能な最大ロック数に達して,エスカレートするロックがほかにない場合は,ほかのアプリケーションに割り振られているロック・リストのスペースが使用されます。ロック・リスト全体が満杯になるとエラーが起こります。

このデータ項目には,排他ロック・エスカレーションも含めて,すべてのロック・エスカレーションのカウントが含まれます。

過剰なロック・エスカレーションが起こる場合は,幾つかの原因が考えられます。

  • 同時アプリケーションの数に対してロック・リスト・サイズ(locklist)が小さい場合。

  • 各アプリケーションが使用できるロック・リストのパーセント値(maxlocks)が小さい場合。

  • 1つ以上のアプリケーションが使用しているロックの数が多過ぎる場合。

これらの問題を解決するには,次のようにしてください。

  • locklist構成パラメーター値を大きくする。

  • maxlocks構成パラメーター値を大きくする。

  • 次の公式を使用して,ロック数の多いアプリケーション(locks_held_top参照),または大量のロック・リストを保留しているアプリケーションを識別する。

    (((locks held *36) / (locklist *4096)) *100)

ここで,maxlocksの値を比較します。これらのアプリケーションがロック・リストの多くを使用すると,ほかのアプリケーションでロック・エスカレーションを起こします。これらのアプリケーションは行ロックではなく表ロックを使用して解決しようとしますが,表ロックを使用するとlock_waitsおよびlock_wait_timeの増加の原因となることがあります。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Lock List In Use

(LOCK_LIST_IN_USE)

使用中のロック・リスト・メモリーの合計量(バイト単位)。

ulong

No

すべて

SQLM_ELM_LOCK_LIST_IN_USE

詳細説明:

このエレメントとlocklist構成パラメーターを組み合わせて使用すると,ロック・リスト使用率を計算できます。ロック・リスト使用率が高い場合は,そのパラメーターのサイズを増やすことを考慮してください。

<注意事項>

使用率を計算する場合,locklist構成パラメーターが各4キロバイトのページ単位で割り振られるのに対し,モニター・エレメントの結果はバイト数で表されることに注意してください。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Lock Timeouts

(LOCK_TIMEOUTS)

オブジェクトをロックするための要求が許可されずにタイムアウトになった回数。

ulong

No

すべて

SQLM_ELM_LOCK_TIMEOUTS

詳細説明:

このエレメントは,locktimeoutデータベース構成パラメーターの設定値を調整するときに利用できます。通常の操作レベルと比較して,ロックのタイムアウト回数が多くなった場合は,ロックを長期にわたって保有しているアプリケーションがある可能性があります。この場合このエレメントは,ロックおよびデッドロックに関するほかの幾つかのモニター・エレメントを分析して,アプリケーションに問題があるかどうかを判別する必要があることを示している場合があります。

locktimeoutデータベース構成パラメーターの設定値が高過ぎると,ロックのタイムアウト回数が極端に少なくなります。この場合は,アプリケーションがロックを取得するための待機時間が長くなります。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Lock Wait Time

(LOCK_WAIT_TIME)

ロック待機の合計経過時間。

ulong

No

すべて

SQLM_ELM_LOCK_WAIT_TIME

詳細説明:

データベース・レベルでは,このデータベース内ですべてのアプリケーションが1つのロックを待機した合計経過時間を示します。

アプリケーション接続およびトランザクションのレベルでは,この接続またはトランザクションがロックの付与を待機した合計経過時間を示します。

このエレメントとlock_waitsモニター・エレメントを組み合わせて使用すると,平均ロック待機時間を計算できます。この計算は,データベース・レベルとアプリケーション接続レベルのどちらでも行えます。

経過時間を示すモニター・エレメントを使用するときは,次のことを考慮してください。

  • 経過時間は,システム負荷の影響を受けるので,実行する処理数が多くなると,この経過時間の値は大きくなります。

  • このエレメントをデータベース・レベルで計算する場合,データベース・システム・モニターはアプリケーション・レベルの時間を合計します。この場合,同時に複数のアプリケーション処理が実行されていることがあるので,データベース・レベルでは経過時間が二重に計算されます。

意味のあるデータを提供するためには,上記の説明に従って平均ロック待機時間を計算してください。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Lock Wait Time Avg

(LOCK_WAIT_TIME_AVG)

平均ロック待機時間。

float

No

すべて

LOCK_WAIT_TIME / LOCK_WAITS

詳細説明:

平均ロック待機時間が長い場合は,多数のロックを保留するアプリケーションまたはロック・エスカレーションを起こしているアプリケーションを探します。これによって,必要に応じてアプリケーションを調整して並行性を改善します。エスカレーションが原因で平均ロック待機時間が長くなっている場合は,locklistおよびmaxlocks構成パラメーターのどちらか,または両方の設定値が低過ぎることが原因と考えられます。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Lock Waits

(LOCK_WAITS)

アプリケーションまたは接続がロックを待機した合計回数。

ulong

No

すべて

SQLM_ELM_LOCK_WAITS

詳細説明:

データベース・レベルでは,アプリケーションがデータベース内でロックを待機した合計回数を示します。

アプリケーション接続レベルでは,この接続がロックを要求し,ほかの接続がデータ上でロックを保留していたために待機した合計回数を示します。

このエレメントとlock_wait_timeを組み合わせて使用すると,データベース・レベルの場合は平均ロック待機時間を計算できます。この計算は,データベース・レベルとアプリケーション接続レベルのどちらでも行えます。

平均ロック待機時間が長い場合は,多数のロックを保留するアプリケーションまたはロック・エスカレーションを起こしているアプリケーションを探します。これによって,必要に応じてアプリケーションを調整して並行性を改善します。エスカレーションが原因で平均ロック待機時間が長くなっている場合は,locklistおよびmaxlocks構成パラメーターのどちらか,または両方の設定値が低過ぎることが原因と考えられます。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Locks Held

(LOCKS_HELD)

現在保持されているロックの数。

ulong

No

すべて

SQLM_ELM_LOCKS_HELD

詳細説明:

モニター情報がデータベース・レベルの場合は,データベース内のすべてのアプリケーションが現在保持しているロックの合計数を示します。

モニター情報がアプリケーション・レベルの場合は,アプリケーションのすべてのエージェントが現在保持しているロックの合計数を示します。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Locks Waiting

(LOCKS_WAITING)

ロック待機中のエージェントの数を示します。

ulong

No

すべて

SQLM_ELM_LOCKS_WAITING

詳細説明:

このエレメントとappls_cur_consと組み合わせて使用すると,ロックを待機中のアプリケーションのパーセンテージがわかります。この値が大きい場合は,アプリケーションに並行性の問題があるおそれがあるため,ロックや排他ロックを長時間にわたって保留しているアプリケーションを確認する必要があります。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Record_Time

(RECORD_TIME)

レコードに格納されたパフォーマンスデータの収集終了時刻。

time_t

No

すべて

Agent Collector

詳細説明:

特になし。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

Record_Type

(INPUT_RECORD_TYPE)

レコード名。常に「DLID」。

char(8)

Yes

すべて

Agent Collector

詳細説明:

特になし。

PFM - View名

(PFM - Manager名)

説明

要約

形式

デルタ

サポートVR

制約

データソース

X Lock Escals

(X_LOCK_ESCALS)

ロックが複数の行ロックから1つの排他表ロックにエスカレートされた回数。または行に対する排他ロックによって表ロックが排他ロックになった回数。

ulong

No

すべて

SQLM_ELM_X_LOCK_ESCALS

詳細説明:

ほかのアプリケーションは排他ロックによって保留されているデータにアクセスできません。そのため,排他ロックはデータの並行性に影響を与えるおそれがあるため,それを追跡することは重要です。

アプリケーションが保留するロックの合計数がそのアプリケーションで使用可能なロック・リスト・スペースの最大量に達すると,ロックはエスカレートされます。使用可能なロック・リスト・スペースの量は,locklistおよびmaxlocks構成パラメーターによって決まります。

1つのアプリケーションが使用可能な最大ロック数に達して,エスカレートするロックがほかにない場合は,ほかのアプリケーションに割り振られているロック・リストのスペースが使用されます。ロック・リスト全体が満杯になるとエラーが起こります。

過度の排他ロック・エスカレーションが起こる場合の考えられる原因と対策については,lock_escalsを参照してください。

共有ロックが十分あるのに,アプリケーションは排他ロックを使用することがあります。共有ロックによってロック・エスカレーションの合計数を減らすことはできませんが,排他ロックのエスカレーションよりも共有ロックのエスカレーションのほうが望ましいと考えられます。