Lock Information on Application(PD_DLIA)

機能

アプリケーションレベルのロック情報を格納しています。

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

項目デフォルト値設定可否
Collection Interval60
Collection Offset0
LogNo
LOGIF空白

ODBCキーフィールド

なし

ライフタイム

アプリケーションがデータベースに接続している間。

レコードサイズ

フィールド

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Agent Id
(AGENT_ID)
アプリケーションの固有ID。ulongNoすべてSQLM_ELM_AGENT_ID
詳細説明:
アプリケーション・ハンドルを使用すると,アクティブ・アプリケーションを一意的に識別できます(アプリケーション・ハンドルは,エージェントIDと同義です)。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Appl Id
(APPL_ID)
アプリケーションがデータベース・マネージャーのデータベースに接続したときのID。string[33]NoすべてSQLM_ELM_APPL_ID
詳細説明:
このIDはクライアントとサーバーの両者により認識されるため,このIDを使用すると,アプリケーションのクライアント部分とサーバー部分を相関させることができます。DDCSアプリケーションでアプリケーションのクライアント部分とサーバー部分を相関させるにはoutbound_appl_idも必要です。このIDは,ネットワーク内では固有のIDです。アプリケーションIDにはさまざまな形式があり,データベース・マネージャーまたはDDCS(あるいはその両方)を実行中のクライアントとサーバー・マシン間の通信プロトコルにより形式が異なります。どの形式の場合もピリオドで区切られた3つの部分で構成されます。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Appl Name
(APPL_NAME)
クライアントで実行中のアプリケーションの名前。string[257]NoすべてSQLM_ELM_APPL_NAME
詳細説明:
このエレメントとappl_idを使用すると,データ項目をアプリケーションに関連付けることができます。クライアント/サーバ環境において,この名前はデータベース接続を確立するためにクライアントからサーバーに送られます。DRDA-AS接続の場合は,この名前はDEDA外部名となります。クライアント・アプリケーションのコード・ページと実行中のデータベース・システム・モニターが使用しているコード・ページが異なる場合は,appl_nameを交換するときにcodepage_idを利用できます。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Auth Id
(AUTH_ID)
モニターされているアプリケーションを呼び出したユーザーの許可ID。string[33]NoすべてSQLM_ELM_AUTH_ID
詳細説明:
このエレメントを使用すると,アプリケーションを呼び出したユーザーを判別できます。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
DB Name
(DB_NAME)
情報が収集されるデータベースの実名またはアプリケーションの接続先でのデータベースの実名。string[9]NoすべてSQLM_ELM_DB_NAME
詳細説明:
このエレメントを使用すると,データが適用される特定のデータベースを識別できます。
ホストへの接続,または AS/400およびiSeriesのデータベース・サーバーへの接続でDB2 Connectを使用しないアプリケーションの場合は,このエレメントとdc_pathモニター・エレメントを組み合わせて使用すると,データベースを個別に識別し,モニターが提供する情報の各レベルに関連付けられます。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Deadlocks
(DEADLOCKS)
発生したデッドロックの合計数。ulongNoすべてSQLM_ELM_DEADLOCKS
詳細説明:
このエレメントは,アプリケーション間で競合の問題が起きていることを示す場合があります。問題の原因としては,次の状態が考えられます。
  • データベースでロック・エスカレーションが発生している。
  • システムが生成した行のロッキング数が十分なときに,アプリケーションが表を明示的にロッキングした。
  • アプリケーションがバインディングのときに使用した分離レベルが不適切である。
  • カタログ表が反復可能読み取りのためにロックされている。
  • 複数のアプリケーションが同じロックを異なる順序で獲得しているために,デッドロックになっている。
この問題は,デッドロックが発生しているアプリケーション(またはアプリケーション処理)が判別できれば解決できます。この場合,アプリケーションが並行して実行できるようにアプリケーションを変更できます。ただし,一部のアプリケーションでは並行して実行できない場合があります。
接続タイム・スタンプ・モニター・エレメント(last_reset,db_conn_time,およびappl_con_time)を使用すると,デッドロックの重大度を判別できます。例えば,デッドロックが5時間に10回起こるよりも,5分間に10回起こるほうが重大です。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Interval
(INTERVAL)
情報が収集される時間。秒単位。ulongNoすべてRECORD_TIME - CURRENT_SYSTEM_BOOT_TIME
詳細説明:
特になし。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Lock Escals
(LOCK_ESCALS)
ロックが複数の行ロックから1つの表ロックにエスカレートされた回数。ulongNoすべてSQLM_ELM_LOCK_ESCALS
詳細説明:
アプリケーションが保留するロックの合計数がそのアプリケーションで使用可能なロック・リスト・スペースの最大量に達した場合,またはすべてのアプリケーションが使用するロック・リスト・スペースが合計ロック・リスト・スペースに近くなると,ロックはエスカレートされます。使用可能なロック・リスト・スペースの量は,maxlocksおよびlocklist構成パラメーターによって決まります。
1つのアプリケーションが使用可能な最大ロック数に達して,エスカレートするロックがほかにない場合は,ほかのアプリケーションに割り振られているロック・リストのスペースが使用されます。ロック・リスト全体が満杯になるとエラーが起こります。
このデータ項目には,排他ロック・エスカレーションも含めて,すべてのロック・エスカレーションのカウントが含まれます。
過剰なロック・エスカレーションが起こる場合は,いくつかの原因が考えられます。
  • 同時アプリケーションの数に対してロック・リスト・サイズ(locklist)が小さい。
  • 各アプリケーションが使用できるロック・リストのパーセント値(maxlocks)が小さい。
  • 一つ以上のアプリケーションが使用しているロックの数が多すぎる。
これらの問題を解決するには,次のようにしてください。
  • locklist構成パラメーター値を大きくする。
  • maxlocks構成パラメーター値を大きくする。
  • 次の公式を使用して,ロック数の多いアプリケーション(locks_held_top参照),または大量のロック・リストを保留しているアプリケーションを識別する。
    (((locks held * 36) / (locklist * 4096)) * 100)
ここで,maxlocksの値を比較します。これらのアプリケーションがロック・リストの多くを使用すると,ほかのアプリケーションでロック・エスカレーションを起こします。これらのアプリケーションは行ロックではなく表ロックを使用して解決しようとしますが,表ロックを使用するとlock_waitsおよびlock_wait_timeの増加の原因となることがあります。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Lock Timeouts
(LOCK_TIMEOUTS)
オブジェクトをロックするための要求が許可されずにタイムアウトになった回数。ulongNoすべてSQLM_ELM_LOCK_TIMEOUTS
詳細説明:
このエレメントは,locktimeoutデータベース構成パラメーターの設定値を調整するときに利用できます。通常の操作レベルと比較して,ロックのタイムアウト回数が多くなった場合は,ロックを長期にわたって保有しているアプリケーションが存在する可能性があります。この場合このエレメントは,ロックおよびデッドロックに関する他のいくつかのモニター・エレメントを分析して,アプリケーションに問題があるかどうかを判別する必要があることを示している場合があります。
locktimeoutデータベース構成パラメーターの設定値が高すぎると,ロックのタイムアウト回数が極端に少なくなります。この場合は,アプリケーションがロックを取得するための待機時間が長くなります。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Lock Wait Time
(LOCK_WAIT_TIME)
ロック待機の合計経過時間。ulongNoすべてSQLM_ELM_LOCK_WAIT_TIME
詳細説明:
データベース・レベルでは,このデータベース内ですべてのアプリケーションが一つのロックを待機した合計経過時間を示します。
アプリケーション接続およびトランザクションのレベルでは,この接続またはトランザクションがロックの付与を待機した合計経過時間を示します。
このエレメントとlock_waitsモニター・エレメントを組み合わせて使用すると,平均ロック待機時間を計算できます。この計算は,データベース・レベルとアプリケーション接続レベルのどちらでもできます。
経過時間を示すモニター・エレメントを使用するときは,次のことを考慮してください。
  • 経過時間は,システム負荷の影響を受けるので,実行する処理数が多くなると,この経過時間の値は大きくなります。
  • このエレメントをデータベース・レベルで計算する場合,データベース・システム・モニターはアプリケーション・レベルの時間を合計します。この場合,同時に複数のアプリケーション処理が実行されていることがあるので,データベース・レベルでは経過時間が二重に計算されます。
意味のあるデータを提供するためには,上記の説明に従って平均ロック待機時間を計算してください。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Lock Wait Time Avg
(LOCK_WAIT_TIME_AVG)
平均ロック待機時間。floatNoすべてLOCK_WAIT_TIME / LOCK_WAITS
詳細説明:
平均ロック待機時間が長い場合は,多数のロックを保留するアプリケーションまたはロック・エスカレーションを起こしているアプリケーションを探します。これにより,必要に応じてアプリケーションを調整して並行性を改善します。エスカレーションが原因で平均ロック待機時間が長くなっている場合は,locklistおよびmaxlocks構成パラメーターのどちらか,または両方の設定値が低すぎることが原因と考えられます。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Lock Waits
(LOCK_WAITS)
アプリケーションまたは接続がロックを待機した合計回数。ulongNoすべてSQLM_ELM_LOCK_WAITS
詳細説明:
データベース・レベルでは,アプリケーションがデータベース内でロックを待機した合計回数を示します。
アプリケーション接続レベルでは,この接続がロックを要求し,ほかの接続がデータ上でロックを保留していたために待機した合計回数を示します。
このエレメントとlock_wait_timeを組み合わせて使用すると,データベース・レベルの場合は平均ロック待機時間を計算できます。この計算は,データベース・レベルとアプリケーション接続レベルのどちらでも行えます。
平均ロック待機時間が長い場合は,多数のロックを保留するアプリケーションまたはロック・エスカレーションを起こしているアプリケーションを探します。これにより,必要に応じてアプリケーションを調整して並行性を改善します。エスカレーションが原因で平均ロック待機時間が長くなっている場合は,locklistおよびmaxlocks構成パラメーターのどちらか,または両方の設定値が低すぎることが原因と考えられます。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Locks Held
(LOCKS_HELD)
現在保持されているロックの数。ulongNoすべてSQLM_ELM_LOCKS_HELD
詳細説明:
モニター情報がデータベース・レベルの場合は,データベース内のすべてのアプリケーションが現在保持しているロックの合計数を示します。
モニター情報がアプリケーション・レベルの場合は,アプリケーションのすべてのエージェントが現在保持しているロックの合計数を示します。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Locks Waiting
(LOCKS_WAITING)
ロック待機中のエージェントの数を示します。ulongNoすべてSQLM_ELM_LOCKS_WAITING
詳細説明:
このエレメントとappls_cur_consと組み合わせて使用すると,ロックを待機中のアプリケーションのパーセンテージが分かります。この値が大きい場合は,アプリケーションに並行性の問題があるおそれがあるため,ロックや排他ロックを長時間にわたって保留しているアプリケーションを確認する必要があります。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Num Assoc Agents
(NUM_ASSOC_AGENTS)
一つのアプリケーションに関連付けられているサブエージェントの数。ulongNoすべてSQLM_ELM_NUM_ASSOC_AGENTS
詳細説明:
このエレメントは,エージェントの構成パラメータの設定を評価するのに役立ちます。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Record_Time
(RECORD_TIME)
レコードに格納されたパフォーマンスデータの収集終了時刻。time_tNoすべてAgent Collector
詳細説明:
特になし。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Record_Type
(INPUT_RECORD_TYPE)
レコード名。常に「DLIA」。char(8)YesすべてAgent Collector
詳細説明:
特になし。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
Uow Lock Wait Time
(UOW_LOCK_WAIT_TIME)
この作業単位がロックの待機に要した合計経過時間。ulongNoすべてSQLM_ELM_UOW_LOCK_WAIT_TIME
詳細説明:
このエレメントは,リソース競合問題の重大度を判別するときに利用できます。

PFM - View名
(PFM - Manager名)
説明要約形式デルタサポートVR制約データソース
X Lock Escals
(X_LOCK_ESCALS)
ロックが複数の行ロックから一つの排他表ロックにエスカレートされた回数。または行に対する排他ロックにより表ロックが排他ロックになった回数。ulongNoすべてSQLM_ELM_X_LOCK_ESCALS
詳細説明:
他のアプリケーションは排他ロックによって保留されているデータにアクセスすることができません。そのため,排他ロックはデータの並行性に影響を与えるおそれがあるため,それを追跡することは重要です。
アプリケーションが保留するロックの合計数がそのアプリケーションで使用可能なロック・リスト・スペースの最大量に達すると,ロックはエスカレートされます。使用可能なロック・リスト・スペースの量は,locklistおよびmaxlocks構成パラメーターによって決まります。
一つのアプリケーションが使用可能な最大ロック数に達して,エスカレートするロックがほかにない場合は,ほかのアプリケーションに割り振られているロック・リストのスペースが使用されます。ロック・リスト全体が満杯になるとエラーが起こります。
過度の排他ロック・エスカレーションが起こる場合の考えられる原因と対策については,lock_escalsを参照してください。
共有ロックが十分あるのに,アプリケーションは排他ロックを使用することがあります。共有ロックによってロック・エスカレーションの合計数を減らすことはできませんが,排他ロックのエスカレーションよりも共有ロックのエスカレーションのほうが望ましいと考えられます。