< Zurück | Weiter >

Lerneinheit 6: SQL-Anweisungen statisch ausführen

Für die Anwendungen, die Ihr Unternehmen entwickelt, muss SQL für die Datenbank GSDB, die unter DB2 ausgeführt wird, statisch ausgeführt werden. In dieser Lerneinheit binden Sie die in der InventoryLevelsData-Schnittstelle enthaltenen SQL-Anweisungen und führen sie statisch aus.
Statisches SQL bietet die folgenden Vorteile:
Vermeidung des Caches für dynamische Anweisungen
Die Verwendung von statischem SQL reduziert Konflikte im Cache für dynamische Anweisungen von DB2, wodurch die Leistung für Anwendungen gesteigert wird, die dynamisches SQL verwenden.
Konsistenz der Zugriffspfade
Statisches SQL macht Antwortzeiten vorhersagbar und gleichbleibend, indem es Zugriffspfade sperrt, bevor eine Anwendung ausgeführt wird. Im Gegensatz hierzu werden Zugriffspfade für dynamisches SQL während der Laufzeit berechnet.
Mögliche Leistungssteigerung bei Ihren Anwendungen
Statisches SQL kann die Leistung Ihrer Anwendungen steigern.
  • Da die Zugriffspläne vor der Laufzeit festgelegt werden, brauchen während der Laufzeit keine SQL-Anweisungen vorbereitet zu werden.
  • Da keine Anweisung vorbereitet und beschrieben werden muss, erfolgt weniger Datenaustausch im Netz zwischen den Clientanwendungen und den Datenbankservern.
  • Statisches SQL erzwingt Datentypen für Hostvariablen oder Parameter, die in Vergleichselementen verwendet werden. Hierdurch wird sichergestellt, dass die Eingabedaten den Zieltypen in der Datenbank entsprechen.
Verbesserte Sicherheit
Sie können Benutzern das Zugriffsrecht EXECUTE für DB2-Pakete erteilen, anstatt ihnen Zugriffsrechte für Datenbankobjekte zu erteilen.
Einfache Überarbeitung von Paketen
Die Versionssteuerung von DB2-Paketen ermöglicht Ihnen, Pakete erneut zu binden, ohne hierbei Gefahr zu laufen, frühere bessere Zugriffspfade zu verlieren.

Gehen Sie wie folgt vor, um die SQL-Anweisungen, die sich in der InventoryLevelsData-Schnittstelle befinden, zu binden und statisch auszuführen:

  1. Suchen Sie im Paketexplorer die Datei Default.genProps im Ordner pureQueryFolder Ihres Java™-Projekts pureQuery_test: pureQuery_test > pureQueryFolder > Default.genProps. Klicken Sie doppelt auf die Datei, um sie zum Bearbeiten zu öffnen.
  2. Geben Sie das Paket und den Namen der Schnittstelle in einer leeren Zeile der Datei Default.genProps an. Sie können das Paket und den Namen manuell eingeben, pureQuery kann Sie jedoch auch bei der Eingabe unterstützen. Wenn Sie die Unterstützung durch pureQuery wünschen, gehen Sie wie folgt vor:
    1. Halten Sie die Steuertaste gedrückt und drücken Sie die Leertaste. Ein kleines Fenster wird geöffnet.
      Abbildung 1. pureQuery listet die Schnittstellen im Java-Projekt auf
      Fenster mit der Inhaltshilfe
    2. Klicken Sie doppelt auf den Namen der Schnittstelle, deren Name in die leere Zeile gestellt werden soll.
  3. Geben Sie ein Leerzeichen, ein Gleichheitszeichen und ein weiteres Leerzeichen ein, damit die Zeile wie folgt aussieht:
    com.mycompany.pureQuery.test.InventoryLevelsData = 
  4. Legen die Optionen fest, die Sie zum Festlegen des Datensammlungsnamens und des Stammpaketnamens verwenden können. Halten Sie die Steuertaste gedrückt und drücken Sie die Leertaste. Ein anderes kleines Fenster wird geöffnet.
    Tipp: Wenn Sie auf eine Option klicken, wird neben der Liste eine Beschreibung dieser Option angezeigt. Sie können auf die Beschreibung klicken und die Bildlaufleiste unten im gelben Fenster verwenden, um den vollständigen Text anzuzeigen.
    Abbildung 2. Optionen, die Sie für die Schnittstelle in der Datei Default.genProps angeben können
  5. Vervollständigen Sie die Zeile wie folgt:
    com.mycompany.pureQuery.test.InventoryLevelsData = -collection "GOSALES" -rootPkgName "invlevl"
  6. Speichern Sie die Datei und klicken Sie in der daraufhin angezeigten Nachricht auf Ja. pureQuery muss die Werte, die Sie in die Datei Default.genProps eingegeben haben, in der Implementierungsklasse für die Schnittstelle speichern. Beim Binden des in der Schnittstelle befindlichen SQL sucht das pureQuery-Dienstprogramm StaticBinder in der Implementierungsklasse nach diesen Werten, um zu ermitteln, wie die Datenbankpakete erstellt werden müssen.
  7. Überprüfen Sie die Struktur der Pakete, die Sie erstellen wollen. Klicken Sie in der Sicht SQL Outline auf die Registerkarte Datenbankpakete.
    Tipp: Wenn in der Sicht SQL Outline weiterhin die in einer Tabelle angeordneten Leistungsdaten angezeigt werden, klicken Sie auf die Schaltfläche Baumstruktursicht oder Tabellensicht anzeigen (Schaltfläche 'Baumstruktursicht oder Tabellensicht anzeigen').

    In der Sicht wird zwar nur ein Paket angezeigt, aber Sie werden vier Pakete erstellen, eins für jede Isolationsstufe. Dabei ist zu beachten, dass jedes Paket denselben Stammnamen 'invlevl' aufweist und dieselben SQL-Anweisungen enthält. Wenn Sie ein Paket für nur eine Isolationsstufe erstellen wollen, können Sie dazu die Datei Default.bindProps bearbeiten. In dieser Datei können Sie Optionen für das Dienstprogramm StaticBinder angeben, das die Pakete erstellt. In diesem Lernprogramm können Sie jedoch die Standardeinstellungen der Optionen für das Dienstprogramm StaticBinder übernehmen.

  8. Binden Sie das Paket:
    1. Klicken Sie mit der rechten Maustaste auf den Namen des Pakets und wählen Sie Binden aus. Das Fenster Verbindung auswählen wird geöffnet.
    2. Wählen Sie die GSDB-Verbindung aus und klicken Sie auf Fertig stellen.

    pureQuery führt das Dienstprogramm StaticBinder aus und gibt das Ergebnis dieses Dienstprogramms in der Konsolensicht aus:

    ================================================================================
    
    Das Dienstprogramm StaticBinder hat das Paket 'invlevl1' für die Isolationsstufe UR (Nicht festgeschriebener Lesevorgang - Uncommitted Read) erfolgreich gebunden.
    Das Dienstprogramm StaticBinder hat das Paket 'invlevl2' für die Isolationsstufe CS (Cursorstabilität) erfolgreich gebunden.
    Das Dienstprogramm StaticBinder hat das Paket 'invlevl3' für die Isolationsstufe RS (Lesestabilität - Read Stability) erfolgreich gebunden.
    Das Dienstprogramm StaticBinder hat das Paket 'invlevl4' für die Isolationsstufe RR (Wiederholbares Lesen - Repeatable Read) erfolgreich gebunden.
    
    Das Dienstprogramm StaticBinder hat 'com.mycompany.pureQuery.test.InventoryLevelsDataImpl' erfolgreich gebunden.
    
    ================================================================================
    
    
    Ergebnisse der Aktivität des Dienstprogramms StaticBinder:
    
        Anzahl der Implementierungsklassen und pureQueryXml-Dateien, für die die Bindeoperation ERFOLGREICH ausgeführt wurde: 1
    
    
    Das Binden für das Paket 'invlevl' unter Verwendung der GSDB-Verbindung war erfolgreich.
    Sie können die Pakete im Datenquellenexplorer überprüfen. Die Sicht SQL Outline vereinfacht die Paketsuche.
  9. Klicken Sie in der Sicht SQL Outline mit der rechten Maustaste auf den Namen des Pakets und wählen Sie Im Datenquellenexplorer suchen aus. Der Datenquellenexplorer wird geöffnet. In dieser Sicht werden die Ordner der GSDB-Verbindung erweitert, bis die Pakete gefunden wurden und hervorgehoben sind.
  10. Führen Sie die SQL-Anweisungen statisch aus. Sie können die Daten anschließend mit den Daten vergleichen, die bei der dynamischen Ausführung der SQL-Anweisungen erfasst wurden.
    1. Klicken Sie mit der rechten Maustaste auf den Projektordner und wählen Sie Ausführen als > Ausführen-Konfigurationen aus.
    2. Öffnen Sie im Fenster Ausführen-Konfigurationen die Konfiguration, die Sie zum Erfassen der ersten Leistungsdatengruppe verwendet haben. Geben Sie die folgende Zeile in das Feld VM-Argumente der Seite Argumente ein und klicken Sie anschließend auf Anwenden:
      -Dpdq.executionMode="STATIC"
    3. Klicken Sie auf Ausführen.
  11. Klicken Sie im Projektexplorer mit der rechten Maustaste auf den Projektordner und wählen Sie pureQuery > Projekt in SQL Outline aktualisieren aus. Prüfen Sie anschließend die Leistungsdaten.
    1. Wählen Sie in der Sicht SQL Outline das Kontrollkästchen Vergleichen aus. Die Sicht wird aktualisiert. Wenn Ihr Projekt mehr als eine gespeicherte Leistungsdatengruppe enthielt, können Sie eine Gruppe in dem neben dem Kontrollkästchen Vergleichen liegenden Feld auswählen.
      Abbildung 3. Steuerelemente zum Vergleichen von Leistungsdatengruppen
      Steuerelemente zum Vergleichen von Leistungsdatengruppen

      Jede Spalte enthält jetzt eine graue und eine weiße Spalte. Die graue Spalte enthält die aktuellen Leistungsdaten der statischen Ausführung der SQL-Anweisungen. Die weiße Spalte enthält die Leistungsdaten der vorhergehenden dynamischen Ausführung derselben SQL-Anweisungen.

      Die Sicht vergleicht standardmäßig die Zeit für die Ausführung der Anweisungen in Millisekunden.

    2. Verwenden Sie das Feld Anzeigen oben in der Sicht, um die Leistungsdaten auf zwei andere Arten zu vergleichen:
      Differenz
      Die grauen Spalten zeigen die Zeit in Millisekunden für die aktuelle Datei an. Die weißen Spalten zeigen die Differenz zwischen den Zeiten an. Das folgende Beispiel enthält die Statistikdaten für die erste Anweisung in der Sicht.
      Tabelle 1. Die aktuelle Zeit in Millisekunden für die Anweisung im Vergleich zur Differenz zwischen der aktuellen und der vorhergehenden Zeit
      Gesamte Clientzeit Maximale Zeit Durchschnittliche Clientzeit Minimale Zeit
      18,32 11,11 15,92 -0,25 6,11 3,70 1,11 1,08
      Aus den Abbildungen geht hervor, dass für die vorherige Datei Folgendes gilt:
      • Die gesamte Ausführungszeit beträgt 11,11 Millisekunden mehr als in der aktuellen Datei
      • Die maximale Ausführungszeit beträgt 0,25 Millisekunden weniger als in der aktuellen Datei
      • Die durchschnittliche Ausführungszeit beträgt 3,70 Millisekunden mehr als in der aktuellen Datei
      • Die Mindestausführungszeit beträgt 1,08 Millisekunden mehr als in der aktuellen Datei
      Prozentsatz
      Die grauen Spalten zeigen die Zeit in Millisekunden für die aktuelle Datei an. Die weißen Spalten zeigen die Differenz zwischen den Zeiten in Prozent an. Das folgende Beispiel enthält wieder die Statistikdaten für die erste Anweisung in der Sicht.
      Tabelle 2. Die aktuelle Zeit in Millisekunden für die Anweisung im Vergleich zur Differenz zwischen der aktuellen und der vorhergehenden Zeit (in Prozent angegeben)
      Gesamte Clientzeit Maximale Zeit Durchschnittliche Clientzeit Minimale Zeit
      18,32 60,66 % 15,92 -1,56 % 6,11 60,66 % 1,11 97,29 %
      Aus den Abbildungen geht hervor, dass für die vorherige Datei Folgendes gilt:
      • Die gesamte Ausführungszeit ist 60,66 % länger als die Ausführungszeit in der aktuellen Datei
      • Die maximale Ausführungszeit ist 1,56 % kürzer als die Ausführungszeit in der aktuellen Datei
      • Die durchschnittliche Ausführungszeit ist 60,66 % länger als die Ausführungszeit in der aktuellen Datei
      • Die Mindestausführungszeit ist 97,29 % höher als die Ausführungszeit in der aktuellen Datei
< Zurück | Weiter >

Feedback