Optim Query Workload Tuner スキーマを使用する XML ファイル

SQL ステートメントをインポートしたりキャプチャーしたりすることができるカスタム・ワークロードを作成するための XML ファイルを作成できます。

ワークロードを定義する XML ファイルの仕様には、以下のエレメントが含まれます。

ワークロード
ワークロード・エレメントはルート・エレメントであり、有効なファイルにはワークロード・エレメントは 1 つしかないことを意味します。
ソース
ソース・エレメントは、ワークロードの子です。ワークロードは、複数のソース・エレメントをもつことができます。名前属性には、ソース・エレメントごとに固有の名前が含まれます。 ソース・エレメントが含まれない場合は、ワークロードはテキスト・ソースを含むものと見なされます。
source_detail
source_detail エレメントは、ソース・エレメントの子です。
ステートメント
ステートメント・エレメントは、ソース・エレメントの子です。 各ステートメント・エレメントは、ワークロードの 1 つの SQL ステートメントを表します。各ソース・エレメントは、複数のステートメント・エレメントを含むことができます。
statement_text
statement_text エレメント (SQL ステートメントのテキストを含む) は、ステートメント・エレメントの子です。ステートメント・エレメントは、複数の statement_text エレメントを含むことができません。修飾子属性は、ステートメントの修飾子を指定します。修飾子属性が指定されない場合は、source_detail エレメントで指定した 修飾子属性が使用されます。 その属性も指定されていない場合は、現行のユーザー ID がステートメント修飾子として使用されます。

通常は SQL ステートメントのテキストの一部である特定のシンボルは、XML では無効文字です。これらのシンボルは、下表に示す対応するエンティティーと置き換える必要があります。

表 1. SQL ステートメント内の共通シンボルの XML エンティティー
置換対象のシンボル 使用するエンティティー参照
< &lt;
> &gt;
' &apos;
" &quot
& &amp;
statement_runtime
statement_runtime エレメントは、ステートメント・エレメントの子です。ステートメント・エレメントは、複数の statement_runtime エレメントを含むことができません。statement_runtime エレメントには、以下のいずれかの属性を組み込むことができます。
stat_exec
ステートメントが実行された回数。
stat_cpu
累算 CPU 時間 (秒単位)。
stat_elap
累算経過時間 (秒単位)。

次の XML ファイル例では、3 つの SQL ステートメントを含むワークロードが作成されます。

<workload desc="test workload">
<source name="DB01 2007/11/06 - Source0">
<source_detail condition="QUALIFIER" operator="=" value="SYSADM"/>
<statement>
<statement_text qualifier="SYSIBM">SELECT * FROM SYSTABLES WHERE NAME
 = &apos;PART&apos;
</statement_text>
<statement_runtime stat_exec="2" stat_cpu="0.1" stat_elap="0.2"/>
</statement>
<statement>
<statement_text>SELECT
SUM(PS_SUPPLYCOST) * AVG(P_SIZE * PS_AVAILQTY / 2) AS SupplyRatio_Expr_Operators,
O_ORDERSTATUS || O_ORDERPRIORITY AS Key_Expr_CONCAT
FROM PART, ORDER, PARTSUPP
WHERE O_TOTALPRICE BETWEEN (2 * (SELECT MIN(P_RETAILPRICE) FROM PART))
                     AND (0.5 * (SELECT MAX(P_RETAILPRICE) FROM PART))
AND O_SHIPPRIORITY IN (1, 2, 3)
AND O_CLERK LIKE &apos;clerk&amp;888%&apos;
AND O_SHIPPRIORITY - 1 &gt;= 3
AND O_SHIPPRIORITY - 1 &gt;= 1
AND P_PARTKEY = PS_PARTKEY
GROUP BY PS_SUPPLYCOST, P_SIZE, PS_AVAILQTY, O_ORDERSTATUS, O_ORDERPRIORITY
ORDER BY PS_SUPPLYCOST, P_SIZE, PS_AVAILQTY, O_ORDERSTATUS, O_ORDERPRIORITY
</statement_text>
<statement_runtime stat_exec="5" stat_cpu="0.2" stat_elap="0.4"/>
</statement>
<statement>
<statement_text>SELECT
XML2CLOB(XMLELEMENT(NAME &quot;LITMLINEITEM&quot;,
         XMLAGG(XMLELEMENT(NAME &quot;bo:lineItem&quot;,
         XMLNAMESPACES(&apos;urn:bo&apos; AS &quot;bo&quot;), LINEITEM.L_ORDERKEY)
         ORDER BY LINEITEM.L_ORDERKEY)) ) AS &quot;xmlLITMLINEITEM&quot;
FROM LINEITEM
</statement_text>
</statement>
</source>
</workload>

フィードバック