InfoSphere Optim Query Workload Tuner 스키마를 사용하는 XML 파일

SQL문을 가져오기 또는 캡처할 수 있는 사용자 정의 워크로드를 작성하는 XML 파일을 작성할 수 있습니다.

워크로드를 정의하는 XML 파일 스펙에는 다음 요소가 포함됩니다.

워크로드
워크로드 요소는 루트 요소로서, 이는 유효한 파일에 단 하나의 워크로드 요소만 들어 있음을 의미합니다.
소스
소스 요소는 워크로드의 하위입니다. 워크로드에는 둘 이상의 소스 요소가 있을 수 있습니다. 이름 속성에는 각 소스 요소에 대해 고유한 이름이 들어 있습니다. 소스 요소가 없으면, 워크로드에 텍스트 소스가 있는 것으로 간주합니다.
source_detail
source_detail 요소는 소스 요소의 하위입니다.
명령문
명령문 요소는 소스 요소의 하위입니다. 각 명령문 요소는 워크로드에 있는 하나의 SQL문을 나타냅니다. 각 소스 요소에는 둘 이상의 명령문 요소가 포함될 수 있습니다.
statement_text
SQL문의 텍스트를 포함하는 statement_text 요소는 명령문 요소의 하위입니다. 명령문 요소에는 둘 이상의 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 파일 예제에서는 세 개의 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>

피드백