代替 SQL ステートメントの pureQueryXML ファイルへの追加

pureQueryXML ファイルに、キャプチャーしていないステートメントの代わりにアプリケーションが実行する SQL ステートメントを追加できます。

このタスクについて

pureQueryXML ファイルに SQL ステートメントを取り込んだ後に、アプリケーションで必要なパフォーマンスを下回っているステートメントが 1 つ以上見つかる場合があります。 ただし、開発サイクルの終盤にこの事実を見つけた場合には、アプリケーションの修正が可能ではないことがあります。 このような場合には、低パフォーマンスの各 SQL ステートメントの代替 SQL ステートメントを追加することで、pureQueryXML ファイルを編集できます。 アプリケーションの実行時には、pureQuery は、元に取り込んだ SQL ステートメントの代わりに代替 SQL ステートメントを使用します。

例えば、表の統計を収集した後に、SQL ステートメントのパフォーマンスが低下し始めたとします。 この問題が実動システムで発生する場合は、データベース管理者は表の統計への変更を元に戻し、アプリケーション内の SQL への変更を要求する必要があるかもしれません。pureQuery を使用すれば、データベース管理者はこのようなオプションを使用せずに、代わりに、十分に機能していないステートメントが記述されている pureQueryXML ファイルに代替 SQL ステートメントを追加できます。

代替ステートメントを追加すると、以下の作業を行うことができます。
  • OPTIMIZE FOR 1 ROW を追加して、アクセス・パスを制御します。
  • ORDER BY 節を追加して、索引の使用法を制御します。
  • FETCH FIRST n ROWS ONLY 節、OPTIMIZE FOR n ROWS 節、または FOR FETCH ONLY 節を追加して、分散照会のフェッチ・サイズを制御します。
  • WITH ISOLATION 節または SKIP LOCKED DATA 節を使用してロッキング動作を変更します。
  • QUERYNO 節を使用して EXPLAIN データを管理します。

代替 SQL ステートメントを追加した後にバインドするかどうかを選択できます。 バインドせずに使用する場合には、アプリケーションの実行時に enableDynamicSQLReplacement プロパティーを TRUE に設定する必要があります。

次の 2 つのタイプのいずれかを除き、SQL ステートメントの代替ステートメントを追加できます。

推奨: pureQueryXML ファイルの編集はワークベンチを使用してのみ行うことを IBM® は強くお勧めします。 ワークベンチ以外で pureQueryXML ファイルを編集した場合には、ファイルが使用できなくなるリスクがあります。

ワークベンチ以外で pureQueryXML ファイルを編集する必要がある場合には、 編集対象のステートメント・セットの <statementSet> タグで、以下に示すように、 configureStatus 属性の値を REQUIRED に設定します。 configureStatus="REQUIRED" それから、そのファイルに対して構成ユーティリティーを実行します。

手順

代替ステートメントを追加するには、以下のようにします。

  1. アプリケーション内で SQL ステートメントをキャプチャーします。 クライアント最適化のための SQL ステートメントのキャプチャーを参照してください。
  2. 結果として作成された pureQueryXML ファイルを編集して、代替ステートメントを追加します。
    制約事項:
    • SQL ステートメントに指定されたパラメーター・マーカーが含まれる場合は、代替ステートメントに同数のパラメーター・マーカーが存在し、そのマーカーの順序が同じでなければなりません。
    • 代替 SELECT ステートメントの結果セットは、元の SELECT ステートメントの結果セットと一致していなければなりません。
  3. 以下のどちらかのステップを実行します。
    • 代替ステートメントを静的に実行する場合は、通常どおり、Configure ユーティリティーと StaticBinder ユーティリティーを pureQueryXML ファイルに対して実行します。
    • 代替ステートメントを動的に実行する場合は、pdq.properties ファイル内で enableDynamicSQLReplacement プロパティーを TRUE に設定します。
  4. アプリケーションを実行します。 SQL ステートメントを静的に実行するための pureQuery 以外の API アプリケーションの実行を参照してください。

フィードバック