XML モニター情報をフォーマット済みテキストとして表示するためのインターフェース
XQuery は、XML データを照会および操作するための強力で柔軟なインターフェースを備えています。 一方、エレメント・データをテキスト・ベースのフォーマットで表示した方がよい場合もあります。 XML 文書に含まれるモニター・エレメントを、必要に応じて列指向または行指向のフォーマットで表示できます。 前者は、調べるモニター・エレメントが分かっている場合に便利です。 後者は、例えば待機時間の上位 5 タイプを知りたいときなど、調べるモニター・エレメントが前もって分かっていない場合に便利です。 以下のセクションでは、XML 文書に含まれるモニター・データをフォーマット済みテキストとして表示するための 2 つの方法を説明します。
列指向フォーマットでモニター・エレメントを表示する
XMLTABLE 表関数は XML 文書を入力として取り、それをリレーショナル表に変換することによって、選択された XML 文書エレメントのそれぞれが列に見えるようにします。 このアプローチは、表示したいモニター・エレメントが分かっている場合に便利です。 例えば、event_scstats 論理データ・グループから情報を収集するための DBSTATS という統計イベント・モニターを作成したとします。 このイベント・モニターは出力を表に書き込むよう定義されており、出力表の名前はデフォルトで SCSTATS_DBSTATS です。 (この論理データ・グループに関連付けられるモニター・エレメントについて詳しくは、event_scstats 論理データ・グループを参照してください。) この論理グループのモニター・エレメントには details_xml が含まれます。 details_xml は実際には XML 文書であり、これ自体に system_metrics モニター・エレメントを構成するメトリックが含まれます。 (system_metrics モニター・エレメントに関連付けられるモニター・エレメントについて詳しくは、system_metricsを参照してください。) rows_returned や total_section_time、total_cpu_time など、details_xml に含まれる特定の system_metrics モニター・エレメントを表示するには、XMLTABLE 表関数を使用して、統計イベント・モニターが返す details_xml 文書から選択したモニター・エレメントをフォーマット設定します。 この例を、以下に示します。 (説明の目的上、SQL は特定のサービス・クラスの結果のみを返しています。)
SELECT partition_number,
service_class_id,
statistics_timestamp,
event.rows_returned,
event.total_section_time,
event.total_cpu_time
FROM SCSTATS_DBSTATS as DBSTATS,
XMLTABLE( XMLNAMESPACES( DEFAULT 'http://www.ibm.com/xmlns/prod/db2/mon' ),
'$metrics/system_metrics' PASSING XMLPARSE( DOCUMENT DBSTATS.METRICS ) as "metrics"
COLUMNS
rows_returned BIGINT PATH 'rows_returned',
total_section_time BIGINT PATH 'total_section_time',
total_cpu_time BIGINT PATH 'total_cpu_time'
) AS EVENT
WHERE service_class_id = 12;
以下の出力は、この照会の結果を示しています。
PARTITION_NUMBER SERVICE_CLASS_ID STATISTICS_TIMESTAMP ROWS_RETURNED TOTAL_SECTION_TIME TOTAL_CPU_TIME
---------------- ---------------- -------------------------- -------------------- -------------------- --------------------
0 12 2010-01-05-12.14.37.001717 402 990 1531250
0 12 2010-01-05-12.15.00.035409 402 990 1531250
0 12 2010-01-05-12.20.00.021884 412 1064 1609375
0 12 2010-01-05-12.25.00.039175 422 1075 1687500
0 12 2010-01-05-12.29.59.950137 432 1104 1765625
0 12 2010-01-05-12.34.59.948979 442 1130 1796875
0 12 2010-01-05-12.39.59.903928 452 1149 1890625
0 12 2010-01-05-12.44.59.953596 462 1178 1953125
0 12 2010-01-05-12.49.59.970059 473 1207 2062500
0 12 2010-01-05-12.54.59.971990 483 1230 2109375
10 record(s) selected.この場合、最初の 3 つの列は、統計イベント・モニターが生成した表 SCSTATS_DBSTATS から直接表示されたものです。
終わりの 3 つの列は、この表の DETAILS_XML 列の XML 文書から抽出されたメトリック・モニター・エレメントです。
XMLTABLE の使用法について詳しくは、XMLTABLE 関数に関する資料を参照してください。 MON_GET_*_DETAILS 各種関数の資料にも、XMLTABLE を使用してモニター・エレメントを表示する方法の例が示されています。
行指向フォーマットでモニター・エレメントを表示する
名前が MON_FORMAT_XML_* _BY_ROW の形式の表関数を、XML 文書に含まれるメトリック・モニター・エレメントを表示するための手っ取り早い方法として使用できます。これらは行ベースのフォーマットでメトリックを報告し、各モニター・エレメントが単独の行で表示されます。 このグループには、以下の関数が含まれます。- MON_FORMAT_XML_COMPONENT_TIMES_BY_ROW
- MON_FORMAT_XML_TIMES_BY_ROW
- MON_FORMAT_XML_WAIT_TIMES_BY_ROW
- MON_FORMAT_XML_METRICS_BY_ROW

METRIC_NAME TOTAL_TIME_VALUE COUNT PARENT_METRIC_NAME
------------------------------------ -------------------- -------------------- -----------------------------
WLM_QUEUE_TIME_TOTAL 0 0 TOTAL_WAIT_TIME
FCM_TQ_RECV_WAIT_TIME 0 0 FCM_RECV_WAIT_TIME
FCM_MESSAGE_RECV_WAIT_TIME 0 0 FCM_RECV_WAIT_TIME
FCM_TQ_SEND_WAIT_TIME 0 0 FCM_SEND_WAIT_TIME
FCM_MESSAGE_SEND_WAIT_TIME 0 0 FCM_SEND_WAIT_TIME
AGENT_WAIT_TIME 0 0 TOTAL_WAIT_TIME
LOCK_WAIT_TIME 0 0 TOTAL_WAIT_TIME
DIRECT_READ_TIME 0 0 TOTAL_WAIT_TIME
DIRECT_WRITE_TIME 0 0 TOTAL_WAIT_TIME
LOG_BUFFER_WAIT_TIME 0 0 TOTAL_WAIT_TIME
LOG_DISK_WAIT_TIME 0 0 TOTAL_WAIT_TIME
⋮
METRIC_NAME VALUE
------------------------- --------------------
WLM_QUEUE_TIME_TOTAL 0
WLM_QUEUE_ASSIGNMENTS_TOT 0
FCM_TQ_RECV_WAIT_TIME 0
FCM_MESSAGE_RECV_WAIT_TIM 0
FCM_TQ_SEND_WAIT_TIME 0
⋮METRIC_NAME TOTAL_TIME_VALUE COUNT PARENT_METRIC_NAME
------------------------------ -------------------- ---------- -----------------------
WLM_QUEUE_TIME_TOTAL 0 0 TOTAL_WAIT_TIME
FCM_TQ_RECV_WAIT_TIME 0 0 FCM_RECV_WAIT_TIME
FCM_MESSAGE_RECV_WAIT_TIME 0 0 FCM_RECV_WAIT_TIME
FCM_TQ_SEND_WAIT_TIME 0 0 FCM_SEND_WAIT_TIME
FCM_MESSAGE_SEND_WAIT_TIME 0 0 FCM_SEND_WAIT_TIME
⋮
SELECT SUBSTR(STATS.WORKLOAD_NAME,1,15) AS WORKLOAD_NAME,
SUBSTR(METRICS.METRIC_NAME,1,30) AS METRIC_NAME,
SUM(METRICS.TOTAL_TIME_VALUE) AS TOTAL_TIME_VALUE
FROM WLSTATS_DBSTATS AS STATS,
TABLE(MON_FORMAT_XML_WAIT_TIMES_BY_ROW(STATS.DETAILS_XML)) AS METRICS
WHERE WORKLOAD_NAME='CLPWORKLOAD' AND (PARENT_METRIC_NAME='TOTAL_WAIT_TIME')
GROUP BY WORKLOAD_NAME,METRIC_NAME
ORDER BY TOTAL_TIME_VALUE DESC
FETCH FIRST 10 ROWS ONLYWORKLOAD_NAME METRIC_NAME TOTAL_TIME_VALUE
--------------- ------------------------------ --------------------
CLPWORKLOAD LOCK_WAIT_TIME 15138541
CLPWORKLOAD DIRECT_READ_TIME 6116231
CLPWORKLOAD POOL_READ_TIME 6079458
CLPWORKLOAD DIRECT_WRITE_TIME 452627
CLPWORKLOAD POOL_WRITE_TIME 386208
CLPWORKLOAD IPC_SEND_WAIT_TIME 283172
CLPWORKLOAD LOG_DISK_WAIT_TIME 103888
CLPWORKLOAD DIAGLOG_WRITE_WAIT_TIME 78198
CLPWORKLOAD IPC_RECV_WAIT_TIME 15612
CLPWORKLOAD TCPIP_SEND_WAIT_TIME 3291
10 record(s) selected.XMLTABLE 関数を使用することによって、XML 文書に含まれる任意の エレメント (非メトリック・エレメントを含む) を表示できます。 ただし、最も頻繁に使用される非メトリック・モニター・エレメントは、MON_GET_UNIT_OF_WORK や MON_GET_CONNECTION など、MON_GET_* で始まるモニター関数で列として返されます。 XML をよくご存じない方は、これらの関数を使用して照会を作成したほうが、XMLTABLE 関数を使用して XML 文書からモニター・エレメントを抽出するよりも、速くて簡単かもしれません。
要約すると、次のようになります。非メトリック・モニター・エレメントを表示したい場合は、XMLTABLE 関数の代わりに MON_GET_* シリーズの表関数を使用したほうが望ましいことがあります。 メトリック・モニター・エレメントを表示したい場合は、MON_FORMAT_XML_*_BY_ROW 表関数がニーズに適していることがあります。