GeneratePureQueryXml ユーティリティーは、SQL ステートメントとそのステートメントに関する情報が含まれているファイルを 読み取り、pureQueryXML ファイルを作成します。 ファイルの作成後、Configure ユーティリティーを使用して、pureQuery Runtime で使用するファイルを準備してください。 pureQueryXML ファイルの構成後、StaticBinder ユーティリティーを使用して、構成された pureQueryXML ファイルの SQL ステートメントを含む DB2® パッケージを作成してバインドします。
(1) >>-------java--java com.ibm.pdq.tools.GeneratePureQueryXml------> >-- -username--user-ID-- -password--password-- -url--JDBC-URL---> >--+---------------------------------------------+--------------> | .-com.ibm.db2.jcc.DB2Driver-. | '- -driverName--+-JDBC-driver---------------+-' >-- -pureQueryXml--fileName-- -inputSql--fileName---------------> >--+------------------------------------------+-----------------> | (2).- - - ------------. | '- -commentStart------+-commentIndicator-+-' >--+---------------------------------------+--------------------> | .-NOT_SET-. | '- -sqlLiteralSubstitution--+-DISABLE-+-' '-ENABLE--' >--+-------------------------------------+----------------------> | .-;---------. | '- -statementDelimiter -+-delimiter-+-' >--+------------------------------------------------------+-----> | .-HOLD_CURSORS_OVER_COMMIT-. | '- -resultSetHoldability -+-CLOSE_CURSORS_AT_COMMIT--+-' >--+----------------------------------------------+-------------> | .-CONCUR_READ_ONLY-. | '- -resultSetConcurrency--+-CONCUR_UPDATABLE-+-' >--+--------------------------------------------+---------------> | .-TYPE_FORWARD_ONLY-----. | '- -resultSetType--+-TYPE_SCROLL_SENSITIVE-+-' '-TYPE_SCROLL_SENSITIVE-' >--+-----------------------+--+--------+----------------------->< | (3) | '- -help-' '-| Trace options |-----'
ダイアグラムで使用される規則を理解するには、構文図の読み方を参照してください。
SQL スクリプト・ファイルの形式について詳しくは、GeneratePureQueryXml ユーティリティーにより使用される SQL スクリプト・ファイルの形式を参照してください。
入力ファイルに SQL ステートメントが複数回出現する場合でも、pureQueryXML の出力ファイルでは、その SQL ステートメントが 1 回だけ書き込まれます。 重複する SQL ステートメントの判別方法については、『SQL ファイル内の重複する SQL ステートメントの判別』を参照してください。
このオプションは、入力ファイルが XML ファイルの場合はサポートされません。 指定されたオプションが無視されることを示す警告メッセージが表示されます。
サポートされる値について、次のリストで説明します。
出力 pureQueryXML ファイル内の SQL リテラル置換属性の値が DISABLE に設定されます。
このユーティリティーは、SQL リテラル置換プロセス中に作成された重複する SQL ステートメントを削除します。
出力 pureQueryXML ファイル内の SQL リテラル置換属性の値が ENABLE に設定されます。
出力 pureQueryXML ファイル内の SQL リテラル置換属性の値が NOT_SET に設定されます。
pureQuery Runtime が pureQueryXML ファイル内の SQL ステートメントをキャプチャーすると、 そのファイル内の SQL リテラル置換設定が、ステートメント・キャプチャー時の pureQuery Runtime プロパティー sqlLiteralSubstitution の 値となります。
pureQuery Runtime の SQL リテラル置換については、 『sqlLiteralSubstitution プロパティー』を 参照してください。
pureQueryXML ファイルがマージされるときの SQL リテラル置換属性については、 『Merge ユーティリティー』を参照してください。
このオプションは、 入力ファイルが InfoSphere Optim Query Workload Tuner XML ファイルの場合は サポートされません。 指定されたオプションが無視されることを示す警告メッセージが表示されます。
デフォルト値は HOLD_CURSORS_OVER_COMMIT です。
SQL スクリプト・ファイル内で、特定の SQL ステートメントの直前にあるコメント行で保持性を指定することにより、その SQL ステートメントの 保持性値をオーバーライドできます。
DB2 for z/OS からの Query Workload Tuner XML ファイルの 場合は、SQL ステートメントの初期準備用の結果セットの保持性がこのファイルに保管されます。 結果セットの保持性情報がこのファイル内にある場合、このユーティリティーは出力 pureQueryXML ファイル内の SQL ステートメントに対してその値を使用します。
InfoSphere Optim Query Workload Tuner XML ファイル内の SQL ステートメントの 結果セットの保持性については、『出力 pureQueryXML ファイルに関する注記』を参照してください。
デフォルト値は CONCUR_READ_ONLY です。
SQL スクリプト・ファイルで、特定の SQL ステートメントの直前にあるコメント行で並行性を指定することによって、その SQL ステートメントの並行性値をオーバーライドできます。
InfoSphere Optim Query Workload Tuner XML ファイル内の SQL ステートメントの 結果セット並行性を設定する方法については、『出力 pureQueryXML ファイルに関する注記』を参照してください。
デフォルト値は TYPE_FORWARD_ONLY です。 SQL スクリプト・ファイルで、特定の SQL ステートメントの直前にあるコメント行で結果セット・タイプを指定することによって、その SQL ステートメントの結果セット・タイプ値をオーバーライドできます。
InfoSphere Optim Query Workload Tuner XML ファイル内の SQL ステートメントの 結果セット・タイプを設定する方法については、『出力 pureQueryXML ファイルに関する注記』を参照してください。
>>-+------------------------+--+---------------------------+--->< '- -traceFile--file-name-' | .-OFF-----. | '- -traceLevel--+-ALL-----+-' +-SEVERE--+ +-WARNING-+ +-INFO----+ +-CONFIG--+ +-FINE----+ +-FINER---+ '-FINEST--'
上記の情報が一致しないと、pureQuery Runtime の executionMode プロパティーが STATIC に設定されている場合、 または pureQuery Runtime の capturedOnly プロパティーが TRUE に設定されている場合に、pureQuery クライアント最適化で、SQL ステートメントと、 アプリケーションによって発行されたステートメントとの突き合わせが行われません。
Configure ユーティリティーを使用して pureQueryXML ファイルを構成するときは、 特殊レジスター設定に応じて -groupSQLBySpecialRegisters オプションでそのファイル内の SQL ステートメントをグループ化できます。 また、-optionsFileForBind オプションを指定すれば、特殊レジスター設定に基づいて、バインド・オプションを含む サンプルの StaticBinder オプション・ファイルを生成することもできます。 構成オプションについては、 『Configure ユーティリティー』を参照してください。
pureQuery Runtime によってトラッキングおよび記録される特殊レジスター情報については、 『pureQuery クライアント最適化による DB2 特殊レジスターの変更のトラッキング』を 参照してください。
DB2 for z/OS データベースの場合に、InfoSphere Optim Query Workload Tuner の XML ファイルにある SQL パフォーマンス統計をキャプチャーするには、そのための構成が必要です。 統計の収集を有効にする方法については、InfoSphere Optim Query Workload Tuner の XML ファイルにある DB2 for z/OS のパフォーマンス統計をキャプチャーする操作を参照してください。
このユーティリティーは、SQL ステートメントのタイム・スタンプ情報が検出されないときは現在日時を使用します。
DB2 for z/OS からの XML ファイルの 場合は、SQL ステートメントの初期準備用の結果セットの保持性がこのファイルに保管されます。 結果セットの保持性情報がこのファイル内にある場合、このユーティリティーは出力 pureQueryXML ファイル内の SQL ステートメントに対してその値を使用します。
pureQuery Runtime は、SQL ステートメントの実行方法を制御するときに SQL ステートメントおよびそのステートメントのカーソル属性を詳しく調べます。 例えば、SQL ステートメントを静的に実行するように pureQuery Runtime を構成できます。 pureQueryXML ファイル内のステートメントおよび属性がアプリケーションのステートメントおよび属性と一致しない 場合、pureQuery Runtime はステートメントを静的には実行しません。
オプション -statementBindError に値 REMOVE または MARK_INVALID を 指定して StaticBinder ユーティリティーを実行できます。 StaticBinder ユーティリティーは、バインド・プロセス中に SQL エラーを返す SQL ステートメントをスキップします。
pureQuery クライアント最適化を使用するアプリケーションが、SQL ステートメントを静的に実行するように、 または SQL ステートメントをキャプチャー専用モードで実行するように構成されていて、GeneratePureQueryXml ユーティリティーによって 作成された pureQueryXML ファイルを使用する場合、そのアプリケーションによって発行されたステートメントで上記の 3 つの機能のいずれかが使用されていると、 そのステートメントは静的には実行されません。 これは、SQL ステートメントのテキストが同一の場合であっても同様です。
java com.ibm.pdq.tools.GeneratePureQueryXml
-username db2admin –password mypass
–url jdbc:db2://localhost:50000/mydb
-sqlLiteralSubstitution ENABLE
–pureQueryXml "C:¥statements.pdqxml" –inputSql "C:¥mystatements.sql"
SQL ファイルに含まれる次の 2 つの項目は同一と見なされます。 SQL ステートメントの前後にある空白文字のみが異なっています。
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE ;
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE ;
SQL ファイルに含まれる次の 2 つの項目は同一とは見なされません。 SQL ステートメント内の空白文字の数が異なっています。
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;
SQL ファイル内のこれら 2 つの項目は、異なるカーソル属性が指定されているため同一ではありません。
-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;
-- resultSetType=TYPE_SCROLL_SENSITIVE
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;
SELECT * FROM EMPLOYEE WHERE EMPNO = '000010'
SELECT * FROM EMPLOYEE WHERE EMPNO = '000020'
SELECT * FROM EMPLOYEE WHERE EMPNO = '000030'
sqlLiteralSubstitution オプションの値を ENABLE に
設定して GeneratePureQueryXml ユーティリティーを実行すると、リテラル値がパラメーター・マーカーに置き換えられ、置換によって生じた重複は削除されます。
結果として、単一 SQL ステートメントで、pureQueryXML ファイルに書き込まれます。SELECT * FROM EMPLOYEE WHERE EMPNO = ?