Lock Information on Application(PD_DLIA)
機能
アプリケーションレベルのロック情報を格納しています。
デフォルト値および変更できる値
項目 | デフォルト値 | 設定可否 |
---|
Collection Interval | 60 | ○ |
Collection Offset | 0 | ○ |
Log | No | ○ |
LOGIF | 空白 | ○ |
ODBCキーフィールド
なし
ライフタイム
アプリケーションがデータベースに接続している間。
レコードサイズ
フィールド
PFM - View名 (PFM - Manager名) | 説明 | 要約 | 形式 | デルタ | サポートVR | 制約 | データソース |
---|
Agent Id (AGENT_ID) | アプリケーションの固有ID。 | - | ulong | No | すべて | - | 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(あるいはその両方)を実行中のクライアントとサーバ・マシン間の通信プロトコルによって形式が異なります。どの形式の場合もピリオドで区切られた三つの部分で構成されます。
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) | 発生したデッドロックの合計数。 | - | 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) | ロックが複数の行ロックから一つの表ロックにエスカレートされた回数。 | - | ulong | No | すべて | - | SQLM_ELM_LOCK_ESCALS |
- 詳細説明:
- アプリケーションが保留するロックの合計数がそのアプリケーションで使用可能なロック・リスト・スペースの最大量に達した場合,またはすべてのアプリケーションが使用するロック・リスト・スペースが合計ロック・リスト・スペースに近くなると,ロックはエスカレートされます。使用可能なロック・リスト・スペースの量は,maxlocksおよびlocklist構成パラメーターによって決まります。
- 一つのアプリケーションが使用可能な最大ロック数に達して,エスカレートするロックがほかにない場合は,ほかのアプリケーションに割り振られているロック・リストのスペースが使用されます。ロック・リスト全体が満杯になるとエラーが起こります。
- このデータ項目には,排他ロック・エスカレーションも含めて,すべてのロック・エスカレーションのカウントが含まれます。
- 過剰なロック・エスカレーションが起こる場合は,幾つかの原因が考えられます。
- 同時アプリケーションの数に対してロック・リスト・サイズ(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) | オブジェクトをロックするための要求が許可されずにタイムアウトになった回数。 | - | 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 |
- 詳細説明:
- データベース・レベルでは,このデータベース内ですべてのアプリケーションが一つのロックを待機した合計経過時間を示します。
- アプリケーション接続およびトランザクションのレベルでは,この接続またはトランザクションがロックの付与を待機した合計経過時間を示します。
- このエレメントと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 | 制約 | データソース |
---|
Num Assoc Agents (NUM_ASSOC_AGENTS) | 一つのアプリケーションに関連づけられているサブエージェントの数。 | - | ulong | No | すべて | - | SQLM_ELM_NUM_ASSOC_AGENTS |
- 詳細説明:
- このエレメントは,エージェントの構成パラメータの設定を評価するのに役立ちます。
PFM - View名 (PFM - Manager名) | 説明 | 要約 | 形式 | デルタ | サポートVR | 制約 | データソース |
---|
Record_Time (RECORD_TIME) | レコードに格納されたパフォーマンスデータの収集終了時刻。 | - | time_t | No | すべて | - | 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) | この作業単位がロックの待機に要した合計経過時間。 | - | ulong | No | すべて | - | SQLM_ELM_UOW_LOCK_WAIT_TIME |
- 詳細説明:
- このエレメントは,リソース競合問題の重大度を判別するときに利用できます。
PFM - View名 (PFM - Manager名) | 説明 | 要約 | 形式 | デルタ | サポートVR | 制約 | データソース |
---|
X Lock Escals (X_LOCK_ESCALS) | ロックが複数の行ロックから一つの排他表ロックにエスカレートされた回数。または行に対する排他ロックによって表ロックが排他ロックになった回数。 | - | ulong | No | すべて | - | SQLM_ELM_X_LOCK_ESCALS |
- 詳細説明:
- ほかのアプリケーションは排他ロックによって保留されているデータにアクセスすることができません。そのため,排他ロックはデータの並行性に影響を与えるおそれがあるため,それを追跡することは重要です。
- アプリケーションが保留するロックの合計数がそのアプリケーションで使用可能なロック・リスト・スペースの最大量に達すると,ロックはエスカレートされます。使用可能なロック・リスト・スペースの量は,locklistおよびmaxlocks構成パラメーターによって決まります。
- 一つのアプリケーションが使用可能な最大ロック数に達して,エスカレートするロックがほかにない場合は,ほかのアプリケーションに割り振られているロック・リストのスペースが使用されます。ロック・リスト全体が満杯になるとエラーが起こります。
- 過度の排他ロック・エスカレーションが起こる場合の考えられる原因と対策については,lock_escalsを参照してください。
- 共有ロックが十分あるのに,アプリケーションは排他ロックを使用することがあります。共有ロックによってロック・エスカレーションの合計数を減らすことはできませんが,排他ロックのエスカレーションよりも共有ロックのエスカレーションのほうが望ましいと考えられます。