DB2

db2pdコマンドを使ってDB2の現在の状態を詳細に観察する

はじめに

db2pd コマンドは、DB2の動的な情報をリアルタイムで取得するのに役立ちます。このコマンドはDB2が予約しているメモリ情報から現在の状態を取得するコマンドです。
Oracleに詳しい方は、動的パフォーマンスビュー(V$表)に似た情報と考えれば良いと思います。

db2pdコマンドの基本

db2pd コマンドは、DB2の内部動作を観察するための強力なツールです。主にデータベースのメモリ情報、アプリケーションの接続状況、トランザクションの状態、ロックの状況などをリアルタイムで取得することができます。以下に主なオプションを紹介します:

-applicationsデータベースに接続しているアプリケーションの情報を表示
-dynamic動的SQLの情報を表示
-locksロック状況を表示
-transactionsトランザクションの状況を表示

実際の使用例

例として、データベースdbnameで現在実行中のSQLクエリを見てみましょう:

db2 => db2pd -db [DB名] -dynamic

Database Member 0 -- Database DBNAME -- Active -- Up 25 days 23:46:48 -- Date 2024-04-30-14.46.23.320022

Dynamic Cache:
Current Memory Used           121837591
Total Heap Size               135403929
Cache Overflow Flag           0
Number of References          522247076
Number of Statement Inserts   10175708
Number of Statement Deletes   10171147
Number of Variation Inserts   10688431
Number of Statements          4561

Dynamic SQL Statements:
Address            AnchID StmtUID    NumEnv     NumVar     NumRef     NumExe     Text 
0x00002AEFE3439460 235    7065       0          0          1          1          SELECT * from OMG with ur
0x00002AEFE9BF5F60 235    7060       0          0          1          1          INSERT INTO OMG VALUES('1','1')

列項目の説明:

  • Address: ステートメントのメモリアドレス。
  • AnchID: アンカーID、特定のプランやステートメントに関連する一意の識別子。ある処理の大元のIDと認識
  • StmtUID: ステートメントID。SQLクエリごとの識別子のイメージ。
  • NumEnv: 環境変数の数。
  • NumVar: 変数の数。
  • NumRef: 参照回数。
  • NumExe: 実行回数。
  • Text: SQL文のテキスト。

詳細情報の取得

特定のAnchIDを指定して、さらに詳細な情報を表示することも可能です。以下のコマンドを使用します:

db2 => db2pd -db [DB名] -dynamic anch=235