例: 単純な Java アプリケーションでの pureQuery クライアント最適化の有効化

単純な例で、4 つのステップ (キャプチャー、構成、バインド、および実行) を使用して、Java アプリケーションを pureQuery クライアント最適化に対応させ、DB2® データベース上で SQL ステートメントを静的に実行するようにアプリケーションを構成します。
  1. SQL データをキャプチャーします。
  2. キャプチャーした SQL を、SQL ステートメント用に作成される DB2 パッケージの特性を使用して構成します。
  3. SQL ステートメントからパッケージを作成し、それを DB2 データベースにバインドします。
  4. SQL ステートメントを静的に実行します。

始める前に

pureQuery Runtime JAR ファイル、pdq.jar、および pdqmgmt.jar は、アプリケーションの CLASSPATH にリストされている必要があります。

このタスクについて

この例では、アプリケーションがスタンドアロンの JDBC ベースのアプリケーション DB2 データベースをデータ・ソースとして使用し、このアプリケーションを含むディレクトリーでタスクを実行することを前提としています。pureQuery Runtime によってキャプチャーされる SQL データは、ローカル・ファイル・システム上の pureQueryXML ファイルに保管されます。 次の図はその構成を示しています。
図 1. pureQuery クライアント最適化の構成
pureQuery クライアント最適化の単純な構成
図では、pureQuery Configure ユーティリティーにより、キャプチャーした SQL データを含む pureQueryXML ファイルが構成済み pureQueryXML ファイルに変換されます。
pureQuery クライアント最適化を有効にして SQL ステートメントを静的に実行したら、次の pureQuery 機能を使用します。
  • pureQuery ランタイム・プロパティーを最初にキャプチャーした SQL ステートメントに設定して、SQL ステートメントを静的に実行します。
  • pureQuery ユーティリティー Configure および StaticBinder を、アプリケーションからキャプチャーした SQL ステートメントに対して使用します。

手順

簡単な Java アプリケーションに対して pureQuery クライアント最適化を有効にするには、次のようにします。

  1. アプリケーションからの SQL データをキャプチャーします。
    1. 次の pureQuery ランタイム・プロパティーを指定して、ファイル pdq.properties を現行作業ディレクトリーに作成します。
      pdq.captureMode=ON
      pdq.pureQueryXml=capture.pdqxml
      pdq.executionMode=DYNAMIC

      captureMode プロパティーは、SQL ステートメントと SQL ステートメントの実行に関連付けられているその他の情報とを pureQueryXML ファイルにキャプチャーすることを指定します。pureQueryXml プロパティーは、ファイル capture.pdqxml の名前を指定します。executionMode プロパティーは、pureQueryXml プロパティーで指定された pureQueryXML ファイル内にある SQL ステートメントを静的に実行するかどうかを指定します。

      ヒント: SQL データのキャプチャー中にパフォーマンスの問題が生じた場合は、captureMode プロパティーの 値を NEW_STMT または LITE に設定して、キャプチャーするデータの量を減らします。
    1. Java アプリケーションを開始し、実行して、SQL ステートメントを実行します。
    2. アプリケーションを停止します。
    アプリケーションを実行すると、pureQuery Runtime が capture.pdqxml ファイルを作成し、キャプチャーした SQL データをファイルに保管します。
  2. キャプチャーした SQL データを構成します。
    次のコマンドを使用して、Configure ユーティリティーを実行します。
    java com.ibm.pdq.tools.Configure 
      -rootPkgName TESTPKG 
      -cleanConfigure TRUE 
      -pureQueryXml capture.pdqxml

    pureQueryXML ファイル capture.pdqxml で、Configure ユーティリティーは、そのファイルの SQL ステートメントから作成された DB2 パッケージの特性を設定します。Configure ユーティリティーは、pureQueryXML ファイル内の SQL ステートメントをステートメント・セットにグループ化します。ステートメント・セットは、データベース内のパッケージに対応しています。ユーティリティーは、-rootPkgName オプションの値を使用して、データベース内のパッケージに使用される名前を生成します。 パッケージ名の命名については、DB2 パッケージ識別情報を参照してください。

    -cleanConfigure TRUE オプションは、pureQueryXML ファイルにある前の構成情報を保存しないことを指定します。

    -cleanConfigure オプションが指定されていない場合、Configure ユーティリティーがいくつかの構成情報を保存しようとします。

    pureQueryXML ファイルが構成済みである場合、それに必要なパッケージおよびセクション資料を含み、pureQuery StaticBinder ユーティリティーによって使用されることができます。file is configured, it contains the necessary package and section information and can be used by the pureQuery StaticBinder utility to create packages and bind the packages to the DB2 database.

  3. pureQuery StaticBinder ユーティリティーを使用して、キャプチャーした SQL ステートメントをバインドします。
    次のコマンドを使用して、StaticBinder ユーティリティーを実行します。次のようにして、ターゲット URL、ユーザー ID、パスワード、pureQueryXML ファイル、および -isolationLevel オプションを指定します。
    java com.ibm.pdq.tools.StaticBinder 
      –url "jdbc:db2://localhost:50000/SAMPLE:retrieveMessagesFromServerOnGetMessage=1;" 
      -username "testuser" -password "testpwd"
      -isolationLevel CS
      -pureQueryXml capture.pdqxml
      -showDetails TRUE

    オプション -showDetails true は、バインド・プロセスの詳細を表示します。

    コマンドからの出力は、以下のサンプルに類似したものになります。
      IBM Optim pureQuery Runtime 2.2.1.1 build 2.28.45
      Licensed Materials - Property of IBM
      5724-U16
      (c) Copyright IBM Corp. 2006, 2011 All Rights Reserved.
    
      ================================================================================
    
      The StaticBinder utility is beginning the bind operation for the pureQueryXml file 'capture.pdqxml'.
    
      Starting to process options:  -url "jdbc:db2://localhost:50000
        /SAMPLE:retrieveMessagesFromServerOnGetMessage=1;"
        -username "*****" -password "*****" 
        -pureQueryXml "capture.pdqxml" -isolationLevel "CS" -showDetails "TRUE"
    
      The StaticBinder utility successfully bound the package 'TESTPKG2' for the isolation level 'CS'.
    
      Statistics for this statement set:
          Total number of statements in this statement set: 5
          Number of SQL statements for which a bind operation was 
              attempted: 5
          Largest section number used: 5
    
      The bind operation completed successfully for 'capture.pdqxml'.
    
          Number of statement sets for which the utility attempted to bind packages: 1: [TESTPKG2]
          Number of statement sets for which the attribute "isBindable" is set to "false" for the statement set: 0
          Number of statement sets that contain no bindable statements, even though the attribute "isBindable" is set to "true" for the statement set: 0
          Total number of statement sets in the pureQueryXML file: 1
    
      ================================================================================
    
      Results of the StaticBinder utility's activity:
    
         Number of items for which the bind operation SUCCEEDED: 1
    バインドに成功すると、名前 TESTPKG2 でパッケージが作成されます。-isolationLevel CS を指定したので、このコマンドにより 1 つのパッケージのみが作成されます。 デフォルトでは、StaicBinder ユーティリティーは 4 つのパッケージを 4 つの分離レベルで作成します。
  4. pureQuery Runtime を使用して SQL ステートメントを静的に実行します。
    1. 以前に作成したファイル pdq.properties ファイルを編集します。
      executionMode を STATIC に、captureMode を OFF に設定して、ファイルを保存します。ファイルには、次の行が含まれます。
      pdq.captureMode=OFF
      pdq.pureQueryXml=capture.pdqxml
      pdq.allowDynamicSQL=TRUE
      pdq.executionMode=STATIC

      pureQuery ランタイム・プロパティー allowDynamicSQL のデフォルト値は、TRUE であり、プロパティー・ファイルでは必須ではありません。ファイルにこのプロパティーを含めると、デフォルト値を再認識できます。pureQuery Runtime を使用することにより、アプリケーションによって発行された SQL ステートメントが以前にキャプチャーされていなくても、デフォルトでそれらを動的に実行できます。

    2. アプリケーションを実行します。

      アプリケーションは、pureQueryXML ファイルにリストされている SQL ステートメントを静的に実行します。

    注: SQL ステートメントが静的に実行されているかどうかを判別する 1 つの方法は、パッケージをドロップすることです。パッケージ TESTPKG2 をデータベースからドロップすると、アプリケーションは pureQueryXML ファイルにリストされている SQL ステートメントを実行できなくなります。

    pureQueryXML ファイルに対して StaticBinder ユーティリティーを実行してパッケージを再作成すると、アプリケーションは SQL ステートメントを静的に実行します。

    Tivoli® OMEGAMON® XE for DB2 on z/OS® などのデータベース・モニタリング・ツールを使用して、SQL が静的に実行されていることを検証することもできます。

次のタスク

より複雑なアプリケーションのシナリオでは、複数の反復においてアプリケーションから SQL ステートメントをキャプチャーできます。複数の反復において SQL データをキャプチャーする場合は、pureQueryXML ファイルを構成して SQL ステートメントをバインドする前に、キャプチャーした SQL データを構成済み pureQueryXML ファイルにマージするという追加のステップを実行します。

Configure および StaticBinder ユーティリティーは、パッケージに適用可能なさまざまなオプションと一緒にすべてのデプロイメント情報をリストできるオプション・ファイルをサポートしています。オプション・ファイルを作成すると、オプション -optionsFile を使用してファイルを指定して、ユーティリティーを呼び出すことができます。

ユーティリティー・コマンドを含むシェル・スクリプトを作成して、4 ステップのプロセスを反復し、自動化することもできます。pureQuery JAR ファイルが CLASSPATH にある場合は、すべてのユーティリティーが Java プログラムとして使用可能です。

IBM® Data Studio では、Java プロジェクトを pureQuery サポート対応にして、Eclipse IDE で pureQuery クライアント最適化に対応した Java アプリケーションを開発できます。


フィードバック