Beispiel: pureQuery-Clientoptimierung für eine einfache Java-Anwendung aktivieren

Sie verwenden in einem einfachen Beispiel vier Schritte (Erfassen, Konfigurieren, Binden und Ausführen), um eine Java™-Anwendung für die pureQuery-Clientoptimierung zu aktivieren und die Anwendung so zu konfigurieren, dass SQL-Anweisungen für eine DB2-Datenbank statisch ausgeführt werden.
  1. Erfassen Sie SQL-Daten.
  2. Konfigurieren Sie das erfasste SQL mit den Merkmalen der DB2-Pakete, die für die SQL-Anweisungen erstellt werden.
  3. Erstellen Sie Pakete aus den SQL-Anweisungen und binden Sie die Pakete für eine DB2-Datenbank.
  4. Führen Sie die SQL-Anweisungen statisch aus.

Vorbereitende Schritte

Die pureQuery Runtime-JAR-Dateien pdq.jar und pdqmgmt.jar müssen in CLASSPATH der Anwendung aufgelistet sein.

Informationen zu diesem Vorgang

Das Beispiel setzt voraus, dass die Anwendung eine eigenständige JDBC-basierte Anwendung ist, die eine DB2-Datenbank als Datenquelle verwendet, und dass Sie die Tasks im Verzeichnis ausführen, das die Anwendung enthält. Die SQL-Daten, die von pureQuery Runtime erfasst werden, werden im lokalen Dateisystem in einer pureQueryXML-Datei gespeichert. Die folgende Abbildung zeigt die Konfiguration.
Abbildung 1. pureQuery-Clientoptimierungskonfiguration
Einfache pureQuery-Clientoptimierungskonfiguration
In der Abbildung konvertiert das pureQuery-Dienstprogramm Configure die pureQueryXML-Datei, die die erfassten SQL-Daten enthält, in eine konfigurierte pureQueryXML-Datei.
Wenn Sie die pureQuery-Clientoptimierung aktivieren und SQL-Anweisungen statisch ausführen, verwenden Sie die folgende pureQuery-Funktionalität:
  • Sie legen pureQuery Runtime-Eigenschaften fest, um zuerst SQL-Anweisungen zu erfassen und sie dann statisch auszuführen.
  • Sie verwenden die pureQuery-Dienstprogramme Configure und StaticBinder für die SQL-Anweisungen, die Sie aus der Anwendung erfassen.

Vorgehensweise

Gehen Sie wie folgt vor, um die pureQuery-Clientoptimierung für eine einfache Java-Anwendung zu aktivieren:

  1. Erfassen Sie SQL-Daten aus einer Anwendung.
    1. Erstellen Sie die Datei pdq.properties mit den folgenden pureQuery Runtime-Eigenschaften in Ihrem aktuellen Arbeitsverzeichnis:
      pdq.captureMode=ON
      pdq.pureQueryXml=capture.pdqxml
      pdq.executionMode=DYNAMIC

      Die Eigenschaft captureMode gibt an, dass SQL-Anweisungen und Informationen zu ihrer Ausführung in einer pureQueryXML-Datei erfasst werden. Die Eigenschaft pureQueryXml gibt den Namen der Datei capture.pdqxml an. Die Eigenschaft executionMode gibt an, ob die SQL-Anweisungen, die sich in der durch die Eigenschaft pureQueryXml angegebenen pureQueryXML-Datei befinden, statisch ausgeführt werden.

    1. Starten und führen Sie die Java-Anwendung aus, um die SQL-Anweisungen auszuführen.
    2. Stoppen Sie die Anwendung.
    Wenn Sie die Anwendung ausführen, erstellt pureQuery Runtime die Datei capture.pdqxml und speichert die erfassten SQL-Daten in der Datei.
  2. Konfigurieren Sie die erfassten SQL-Daten.
    Führen Sie das Dienstprogramm Configure mit dem folgenden Befehl aus:
    java com.ibm.pdq.tools.Configure 
      -rootPkgName TESTPKG 
      -cleanConfigure TRUE 
      -pureQueryXml capture.pdqxml

    In der pureQueryXML-Datei capture.pdqxml legt das Dienstprogramm Configure die Eigenschaften der DB2-Pakete fest, die Sie aus den SQL-Anweisungen in der Datei erstellen. Das Dienstprogramm Configure gruppiert die SQL-Anweisungen in der pureQueryXML-Datei zu Anweisungsgruppen. Die Anweisungsgruppen entsprechen den Paketen in der Datenbank. Das Dienstprogramm generiert mit dem Wert der Option -rootPkgName die Namen, die für die Pakete in der Datenbank verwendet werden. Informationen zur Paketbenennung finden Sie in DB2-Paketidentifikationsinformationen.

    Die Option -cleanConfigure TRUE gibt an, dass die vorherigen Konfigurationsinformationen in der pureQueryXML-Datei nicht gespeichert werden.

    Wenn die Option -cleanConfigure nicht angegeben wird, versucht das Dienstprogramm Configure, einige Konfigurationsinformationen zu speichern.

    Wenn die pureQueryXML-Datei konfiguriert ist, enthält sie die notwendigen Paket- und Abschnittsinformationen und kann sie vom pureQuery-Dienstprogramm StaticBinder zum Erstellen und Binden von Paketen für die DB2-Datenbank verwendet werden.

  3. Binden Sie die erfassten SQL-Anweisungen mit dem pureQuery-Dienstprogramm StaticBinder.
    Führen Sie das Dienstprogramm StaticBinder mit dem folgenden Befehl aus. Geben Sie die Ziel-URL, die Benutzer-ID, das Kennwort, die pureQueryXML-Datei und die Option -isolationLevel an:
    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

    Die Option -showDetails true zeigt die Details des Bindeprozesses an.

    Die Ausgabe des Befehls ähnelt dem folgenden Beispiel:
      IBM Optim pureQuery Runtime 2.2.1.1 Build 2.28.45
      Lizenziertes Material - Eigentum von IBM
      5724-U16
      (c) Copyright IBM Corp. 2006, 2011. Alle Rechte vorbehalten.
    
      ================================================================================
    
      Das Dienstprogramm StaticBinder beginnt die Bindeoperation für die pureQueryXml-Datei 'capture.pdqxml'.
    
      Start der Verarbeitung von Optionen:  -url "jdbc:db2://localhost:50000
        /SAMPLE:retrieveMessagesFromServerOnGetMessage=1;"
        -username "*****" -password "*****" 
        -pureQueryXml "capture.pdqxml" -isolationLevel "CS" -showDetails "TRUE"
    
      Das Dienstprogramm StaticBinder hat das Paket 'TESTPKG2' für die Isolationsstufe 'CS' erfolgreich gebunden.
    
      Statistik für diese Anweisungsgruppe:
          Gesamtzahl Anweisungen in dieser Anweisungsgruppe: 5
          Anzahl SQL-Anweisungen, für die die Ausführung einer Bindeoperation 
              versucht wurde: 5
          Größte verwendete Abschnittsnummer: 5
    
      Die Bindeoperation wurde für 'capture.pdqxml' erfolgreich beendet.
    
          Anzahl der Anweisungsgruppen, für die das Dienstprogramm versuchte, Pakete zu binden: 1: [TESTPKG2]
          Anzahl Anweisungsgruppen, für die das Attribut "isBindable"" für die Anweisungsgruppe auf "false" gesetzt ist: 0
          Anzahl der Anweisungsgruppen, die keine bindbaren Anweisungen enthalten, obwohl das Attribut "isBindable"" für die Anweisungsgruppe auf "true" gesetzt ist: 0
          Gesamtzahl Anweisungsgruppen in der pureQueryXML-Datei: 1
    
      ================================================================================
    
      Ergebnisse der Aktivität des Dienstprogramms StaticBinder:
    
         Anzahl der Elemente, für die die Bindeoperation ERFOLGREICH war: 1
    Wenn die Bindung erfolgreich ist, wird das Paket mit dem Namen TESTPKG2 erstellt. Der Befehl erstellt nur ein Paket, weil Sie -isolationLevel CS angegeben haben. Das Dienstprogramm StaticBinder erstellt standardmäßig vier Pakete für die vier Isolationsstufen.
  4. Führen Sie die SQL-Anweisungen mit pureQuery Runtime statisch aus.
    1. Bearbeiten Sie die zuvor erstellt Datei pdq.properties.
      Setzen Sie executionMode auf STATIC sowie captureMode auf OFF und speichern Sie die Datei. Die Datei enthält die folgenden Zeilen:
      pdq.captureMode=OFF
      pdq.pureQueryXml=capture.pdqxml
      pdq.allowDynamicSQL=TRUE
      pdq.executionMode=STATIC

      Der Standardwert der pureQuery Runtime-Eigenschaft allowDynamicSQL lautet TRUE und ist in der Eigenschaftendatei nicht erforderlich. Die Aufnahme der Eigenschaft in die Datei weist lediglich noch einmal auf den Standardwert hin. In pureQuery Runtime können von der Anwendung ausgegebene SQL-Anweisungen standardmäßig dynamisch ausgeführt werden, selbst wenn die jeweilige SQL-Anweisung zuvor nicht erfasst wurde.

    2. Führen Sie die Anwendung aus.

      Die Anwendung führt die in der pureQueryXML-Datei aufgelisteten SQL-Anweisungen statisch aus.

    Anmerkung: Sie können ermitteln, ob die SQL-Anweisungen statisch ausgeführt werden, indem Sie das Paket löschen. Wenn Sie das Paket TESTPKG2 aus der Datenbank löschen, kann die Anwendung die in der pureQueryXML-Datei aufgelisteten SQL-Anweisungen nicht ausführen.

    Wenn Sie das Dienstprogramm StaticBinder mit der pureQueryXML-Datei ausführen, um das Paket neu zu erstellen, führt die Anwendung die SQL-Anweisungen statisch aus.

    Sie können auch mithilfe eines Datenbanküberwachungstools wie Tivoli OMEGAMON XE for DB2 on z/OS prüfen, ob das SQL statisch ausgeführt wird.

Nächste Schritte

Bei einem komplexeren Anwendungsszenario können Sie SQL-Anweisungen wiederholt aus der Anwendung erfassen. Wenn Sie SQL-Daten wiederholt erfassen, führen Sie die erfassten SQL-Daten in einem zusätzlichen Schritt mit der konfigurierten pureQueryXML-Datei zusammen, bevor Sie die SQL-Anweisungen konfigurieren und binden.

Die Dienstprogramme Configure und StaticBinder unterstützen eine Optionsdatei, in der alle Implementierungsinformationen mit verschiedenen, für die Pakete geltenden Optionen aufgelistet werden können. Nach der Erstellung einer Optionsdatei können Sie das Dienstprogramm mit der Option -optionsFile zur Angabe der Datei aufrufen.

Sie können auch ein Shell-Script erstellen, das Dienstprogrammbefehle zum Wiederholen und Automatisieren des vier Schritte umfassenden Prozesses enthält. Wenn sich die pureQuery-JAR-Dateien in CLASSPATH befinden, sind alle Dienstprogramme als Java-Programme verfügbar.

Sie können in IBM® Optim Development Studio ein Java-Projekt für pureQuery-Unterstützung aktivieren und in Eclipse IDE Java-Anwendungen entwickeln, die für die pureQuery-Clientoptimierung aktiviert sind.


Feedback