演習 1: デフォルトの Db2 ワークロード管理オブジェクトを使用した基本モニターから始める

この演習では、デフォルトのワークロード・オブジェクトおよびサービス・クラス・オブジェクトから入手できる基本型のモニター情報について説明します。

時間の見積もり: 20 分から 25 分

デフォルトでは、データベースごとにユーザー・ワークロード (SYSDEFAULTUSERWORKLOAD) およびデフォルトのユーザー・サービス・クラス (SYSDEFAULTUSERCLASS) が常に作成されます。 これらのデフォルトのオブジェクトを使用すると、ユーザー定義のワークロードやサービス・クラスを作成せずに、新しい Db2 ワークロード管理モニター・フィーチャーを活用できます。 ユーザー定義のワークロードやサービス・クラスを作成しないと、すべてのユーザー・アクティビティーはこれらのデフォルトのオブジェクトに関連付けられます。

この演習では、以下の 2 種類のモニター・フィーチャーについて説明します。

  1. サービス・クラス中で実行されるすべてのアクティビティーに関する集約統計を収集する機能。 集約アクティビティー統計により、サービス・クラス中の作業全体を低コストで表示できます。 サービス・クラス中で実行されたアクティビティーの数や、これらのアクティビティーの平均存続時間などの情報が表示されます。
  2. 個別のアクティビティーに関する情報をキャプチャーする機能。 アクティビティー情報は、特定のアクティビティーのパフォーマンスや動作を調査する際に役立てることができます。 アクティビティー情報には、ステートメント・テキスト、コンパイル環境などが含まれます。 アクティビティー情報は、集約アクティビティー統計よりも収集コストが高く、通常はアクティビティーの特定のサブセットを対象としています。

ステップ 1: イベント・モニターの作成と使用可能化

データベースに接続し、アクティビティーと統計に関するイベント・モニターを作成して使用可能にします。

CONNECT TO SAMPLE

CREATE EVENT MONITOR DB2ACTIVITIES FOR ACTIVITIES WRITE TO TABLE
CREATE EVENT MONITOR DB2STATISTICS FOR STATISTICS WRITE TO TABLE
 
SET EVENT MONITOR DB2ACTIVITIES STATE 1
SET EVENT MONITOR DB2STATISTICS STATE 1

ステップ 2: 個別のアクティビティーの収集

CREATE または ALTER WORKLOAD STATEMENT 上で COLLECT ACTIVITY DATA 節を使用して、個別のアクティビティーの収集を使用可能にします。 ワークロードに関する COLLECT ACTIVITY DATA 節を指定すると、そのワークロードのオカレンスによってサブミットされたアクティビティーに関する情報が、アクティビティー完了時にアクティブな ACTIVITIES イベント・モニターに送信されます。 COLLECT ACTIVITY DATA 節を使用すると、以下のいずれかのオプションを適用して、収集する必要がある情報量を指定できます。

  • WITHOUT DETAILS: ステートメントとコンパイル環境を除くアクティビティー情報を収集します。
  • WITH DETAILS: ステートメントとコンパイル環境を含むアクティビティー情報を収集します。
  • WITH DETAILS AND VALUES: ステートメントとコンパイル環境を含むアクティビティー情報と、入力データ値を収集します。

この演習の場合、ステートメント・テキスト情報をキャプチャーできるように、WITH DETAILS 節を指定します。

ALTER WORKLOAD SYSDEFAULTUSERWORKLOAD
   COLLECT ACTIVITY DATA ON COORDINATOR WITH DETAILS

この例では、デフォルトのユーザー・ワークロードに関するアクティビティー・データが収集されます。 その他のユーザー定義ワークロードは現在アクティブではないので、すべてのユーザー・アクティビティーに関する情報が収集される結果になります。 実稼働環境では非常に高コストになります。 特定のユーザー定義ワークロードかサービス・クラスを使用して対象のアクティビティーを分離し、そのワークロードかサービス・クラスのみに COLLECT ACTIVITY DATA 節を適用する方が良い方法といえます。

追加情報: サービス・クラス、ワーク・クラス (ワーク・アクションを使用)、またはしきい値に対して COLLECT ACTIVITY DATA 節を指定することもできます。 サービス・クラスに関する節を指定すると、そのサービス・クラス中で実行されるアクティビティーに関する情報が収集されます。 ワーク・クラス (ワーク・アクションを使用) に関する節を指定すると、そのワーク・アクションが適用されるアクティビティーが収集されます。 しきい値に関する節を指定すると、しきい値違反の場合にアクティビティー情報が収集されます。

ステップ 3: 集約アクティビティー統計の収集

COLLECT AGGREGATE ACTIVITY DATA 節を使用して、デフォルトのユーザー・サービス・クラスの下のデフォルト・サブクラスに関する集約アクティビティー統計の収集を使用可能にします。 この節を指定すると、対応するサービス・クラスに関する集約統計 (例えば、アクティビティーの平均存続時間などの統計) がメモリー内に保守されます。 統計は、サービス・サブクラス統計表関数を使用して表示したり、後で分析するために収集してアクティブな統計イベント・モニターに送信したりできます。

ALTER SERVICE CLASS SYSDEFAULTSUBCLASS UNDER SYSDEFAULTUSERCLASS
   COLLECT AGGREGATE ACTIVITY DATA BASE

追加情報: デフォルトで収集される、すべての Db2 ワークロード管理オブジェクトに関する統計のセットがあります。 COLLECT AGGREGATE ACTIVITY DATA 節を使用すると、アクティビティー存続時間ヒストグラムなどの、多数の追加のオプション統計を収集できます。

この例では、ユーザー定義のサービス・クラスが作成されていないため、すべてのユーザー・アクティビティーが、SYSDEFAULTUSERCLASS サービス・スーパークラスの下の SYSDEFAULTSUBCLASS サービス・サブクラスで実行されます。 したがって、すべてのユーザー・アクティビティーに関する情報が収集されます。

ステップ 4: 一部のアクティビティーの実行

一部のアクティビティーを実行します。その結果、統計が更新され、アクティビティーが収集されます。

db2 -o -tvf work1.db2
db2 -o -tvf work2.db2

アプリケーションを表すスクリプト (work1.db2work2.db2 など) により、データベースから切断されるため、これらのスクリプトの実行後に再接続する必要があります。

ステップ 5: 統計の表示

WLM_GET_SERVICE_SUBCLASS_STATS 表関数を使用してサービス・クラス統計を表示できます。 以下に例を示します。

CONNECT TO SAMPLE

SELECT VARCHAR(SERVICE_SUPERCLASS_NAME, 30) AS SUPERCLASS,
       VARCHAR(SERVICE_SUBCLASS_NAME, 30) AS SUBCLASS,
       LAST_RESET,
       COORD_ACT_COMPLETED_TOTAL,
       COORD_ACT_REJECTED_TOTAL,
       COORD_ACT_ABORTED_TOTAL,
       COORD_ACT_LIFETIME_AVG
FROM TABLE(SYSPROC.WLM_GET_SERVICE_SUBCLASS_STATS('SYSDEFAULTUSERCLASS', 
       'SYSDEFAULTSUBCLASS', -1)) AS T

この照会からの出力は、以下のようになります。

SUPERCLASS                     SUBCLASS                       LAST_RESET
COORD_ACT_COMPLETED_TOTAL COORD_ACT_REJECTED_TOTAL COORD_ACT_ABORTED_TOTAL
COORD_ACT_LIFETIME_AVG 
------------------------------ ------------------------------ -------------------------- --
----------------------- ------------------------ ----------------------- ------------------
------
SYSDEFAULTUSERCLASS            SYSDEFAULTSUBCLASS             2007-07-18-16.03.51.752190
74                        0                       0   +1.40288000000000E+002

  1 record(s) selected.

COORD_ACT_COMPLETED_TOTAL 列は、このサービス・クラス中で正常に完了したアクティビティーの数を示します。 前回のリセット時刻は、このサービス・クラスに関する統計が前回リセットされた時刻を示します。

追加情報: COLLECT AGGREGATE ACTIVITY DATA 節を使用してサービス・クラスに関する集約アクティビティー統計を使用可能にしないと、WLM_GET_SERVICE_SUBCLASS_STATS 表関数によって報告される統計の一部は NULL になります。

ステップ 6: 統計のイベント・モニターへの送信

WLM_COLLECT_STATS ストアード・プロシージャーを使用して、すべての Db2 ワークロード管理オブジェクトの統計をアクティブな統計イベント・モニターに送信します。 統計が収集されて統計イベント・モニターに送信される際に、値がリセットされます。

CALL SYSPROC.WLM_COLLECT_STATS() 

追加情報: アクティブな統計イベント・モニターがない場合でも、WLM_COLLECT_STATS プロシージャーを使用して統計をリセットできますが、現行値は失われます。 WLM_COLLECT_INT データベース構成パラメーターを使用して、ワークロード管理統計の収集を自動化できます。 このパラメーターをゼロ以外の値に設定すると、(wlm_collect_int 分ごとに WLM_COLLECT_STATS プロシージャーを手動で呼び出したかのように) wlm_collect_int 分ごとにワークロード管理統計が自動的に収集されます。

ステップ 7: 統計の再表示

再度 WLM_GET_SERVICE_SUBCLASS_STATS 表関数を呼び出します。 LAST_RESET タイム・スタンプが更新され、統計がリセットされていることに注意してください。

SELECT VARCHAR(SERVICE_SUPERCLASS_NAME, 30) AS SUPERCLASS,
       VARCHAR(SERVICE_SUBCLASS_NAME, 30) AS SUBCLASS,
       LAST_RESET,
       COORD_ACT_COMPLETED_TOTAL,
       COORD_ACT_REJECTED_TOTAL,
       COORD_ACT_ABORTED_TOTAL,
       COORD_ACT_LIFETIME_AVG
FROM TABLE(SYSPROC.WLM_GET_SERVICE_SUBCLASS_STATS('SYSDEFAULTUSERCLASS',
       'SYSDEFAULTSUBCLASS', -1)) AS T

出力は、以下のようになります。


SUPERCLASS                     SUBCLASS                       LAST_RESET     
COORD_ACT_COMPLETED_TOTAL COORD_ACT_REJECTED_TOTAL
COORD_ACT_ABORTED_TOTAL COORD_ACT_LIFETIME_AVG 
------------------------------ ------------------------------ ----------
---------------- ------------------------- ------------------------ ----
------------------- ------------------------
SYSDEFAULTUSERCLASS            SYSDEFAULTSUBCLASS             2007-07-18-
16.04.03.505818                         0                        0           
0   +0.00000000000000E+000

  1 record(s) selected.

ステップ 8: 統計イベント・モニターによって収集されたサービス・クラス統計の表示

WLM_COLLECT_STATS プロシージャーは、サービス・クラス統計を統計イベント・モニターに送信します。 以下のようなステートメントを使用して、イベント・モニターによって収集された統計を表示できます。

SELECT VARCHAR(SERVICE_SUPERCLASS_NAME, 30) AS SUPERCLASS,
       VARCHAR(SERVICE_SUBCLASS_NAME, 30) AS SUBCLASS,
       LAST_WLM_RESET,
       STATISTICS_TIMESTAMP,
       COORD_ACT_COMPLETED_TOTAL,
       COORD_ACT_REJECTED_TOTAL,
       COORD_ACT_ABORTED_TOTAL,
       COORD_ACT_LIFETIME_AVG
FROM SCSTATS_DB2STATISTICS 

出力は、以下のようになります。

SUPERCLASS                     SUBCLASS                      
LAST_WLM_RESET             STATISTICS_TIMESTAMP      
COORD_ACT_COMPLETED_TOTAL COORD_ACT_REJECTED_TOTAL
COORD_ACT_ABORTED_TOTAL COORD_ACT_LIFETIME_AVG
------------------------------ ------------------------------ -----------
--------------- -------------------------- ------------------------- ----
-------------------- ----------------------- ----------------------
SYSDEFAULTSYSTEMCLASS          SYSDEFAULTSUBCLASS             2007-07-18-
16.03.46.333724 2007-07-18-16.04.03.505818                         0
0                       0                     -1
SYSDEFAULTMAINTENANCECLASS     SYSDEFAULTSUBCLASS             2007-07-18-
16.03.46.334301 2007-07-18-16.04.03.505818                         0
0                       0                     -1
SYSDEFAULTUSERCLASS            SYSDEFAULTSUBCLASS             2007-07-18-
16.03.51.752190 2007-07-18-16.04.03.505818                        75
0                       0                    136

  3 record(s) selected.

統計がイベント・モニターに送信されるたびに、Db2 ワークロード管理オブジェクトごとに統計レコードが作成されます。 LAST_WLM_RESET と STATISTICS_TIMESTAMP の 2 つのタイム・スタンプに注意してください。 LAST_WLM_RESET から STATISTICS_TIMESTAMP までの時間間隔は、そのレコードの統計が収集された時間間隔を示します。 STATISTICS_TIMESTAMP は、統計が収集された時点を示します。 デフォルトのシステムおよび保守サービス・クラスに関する、コーディネーター上のアクティビティーの平均存続時間は -1 であることに注意してください。 COLLECT AGGREGATE ACTIVITY DATA 節を使用して集約アクティビティー統計を使用可能にすると、サービス・クラスに関するアクティビティー平均存続時間統計のみ保守されます。

ステップ 9: アクティビティー情報の表示

ステップ 2 でデフォルト・ワークロードに対して COLLECT ACTIVITY DATA 節を指定したため、デフォルト・ユーザー・ワークロードに関連付けられたすべての個別アクティビティーに関する情報も、アクティビティー・イベント・モニターによって収集されました。 次のような照会を使用して、このアクティビティー情報を調べることができます。

SELECT VARCHAR(A.APPL_NAME, 15) as APPL_NAME,
       VARCHAR(A.TPMON_CLIENT_APP, 20) AS CLIENT_APP_NAME,
       VARCHAR(A.APPL_ID, 30) as APPL_ID,
       A.ACTIVITY_ID,
       A.UOW_ID,
       VARCHAR(S.STMT_TEXT, 300) AS STMT_TEXT
FROM ACTIVITY_DB2ACTIVITIES AS A,
     ACTIVITYSTMT_DB2ACTIVITIES AS S
WHERE A.APPL_ID = S.APPL_ID AND
      A.ACTIVITY_ID = S.ACTIVITY_ID AND
      A.UOW_ID = S.UOW_ID

出力は、以下のようになります。

APPL_NAME       CLIENT_APP_NAME      APPL_ID                        
ACTIVITY_ID          UOW_ID      STMT_TEXT
--------------- -------------------- ------------------------------ -----
--------------- ----------- ---------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
------------------------------------
db2bp           CLP wlmmonbasic.db2  *LOCAL.db2inst1.070718200344
1           8 ALTER SERVICE CLASS SYSDEFAULTSUBCLASS UNDER
SYSDEFAULTUSERCLASS COLLECT AGGREGATE ACTIVITY DATA BASE
db2bp           CLP work1.db2        *LOCAL.db2inst1.070718200352
1           1 values(current client_applname)
db2bp           CLP work1.db2        *LOCAL.db2inst1.070718200352
2           1 select * from org
db2bp           CLP work1.db2        *LOCAL.db2inst1.070718200352
3           1 select * from employee
db2bp           CLP work1.db2        *LOCAL.db2inst1.070718200352
4           1 select * from sales

...

切り捨ての警告 (SQL0445) が表示される可能性があることに注意してください。

CLP は、スクリプトを実行するときに、CURRENT CLIENT_APPLNAME 特殊レジスターを「CLP script name」に設定します。 したがって、前の部分で示された照会から、各アクティビティーをサブミットしたスクリプトが分かります。

ステップ 10: 次の演習のためのリセット

アクティビティー・データまたは集約アクティビティー統計を収集できないように SYSDEFAULTUSERWORKLOAD ワークロードと SYSDEFAULTSUBCLASS サービス・サブクラスを更新し、イベント・モニターを使用不可にして、アクティビティー表と統計表をクリアし、WLM_COLLECT_STATS() を呼び出して統計をリセットします。

ALTER WORKLOAD SYSDEFAULTUSERWORKLOAD COLLECT ACTIVITY DATA NONE

ALTER SERVICE CLASS SYSDEFAULTSUBCLASS UNDER SYSDEFAULTUSERCLASS
      COLLECT AGGREGATE ACTIVITY DATA NONE

SET EVENT MONITOR DB2ACTIVITIES STATE 0
SET EVENT MONITOR DB2STATISTICS STATE 0

DELETE FROM ACTIVITY_DB2ACTIVITIES
DELETE FROM ACTIVITYSTMT_DB2ACTIVITIES
DELETE FROM SCSTATS_DB2STATISTICS
DELETE FROM WLSTATS_DB2STATISTICS

CALL WLM_COLLECT_STATS()