演習 1: デフォルトの Db2 ワークロード管理オブジェクトを使用した基本モニターから始める
この演習では、デフォルトのワークロード・オブジェクトおよびサービス・クラス・オブジェクトから入手できる基本型のモニター情報について説明します。
時間の見積もり: 20 分から 25 分
デフォルトでは、データベースごとにユーザー・ワークロード (SYSDEFAULTUSERWORKLOAD) およびデフォルトのユーザー・サービス・クラス (SYSDEFAULTUSERCLASS) が常に作成されます。 これらのデフォルトのオブジェクトを使用すると、ユーザー定義のワークロードやサービス・クラスを作成せずに、新しい Db2 ワークロード管理モニター・フィーチャーを活用できます。 ユーザー定義のワークロードやサービス・クラスを作成しないと、すべてのユーザー・アクティビティーはこれらのデフォルトのオブジェクトに関連付けられます。
この演習では、以下の 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.db2 や work2.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()