Änderungen an DB2-Sonderregistern mit pureQuery-Clientoptimierung verfolgen

Wenn die pureQuery-Clientoptimierung SQL-Anweisungen aus einer aktiven Anwendung erfasst, werden Warnungen an die Protokolldatei gesendet, wenn eine SET-Anweisung ausgeführt wird, die eine Sonderregistereinstellung ändert. Während der SQL-Erfassung werden an allgemein verwendeten Sonderregistereinstellungen vorgenommene Änderungen, die sich auf das Verhalten einer SQL-Anweisung auswirken könnten, in der pureQueryXML-Datei aufgezeichnet.

Im Fall von DB2-Datenbanken kann sich die Änderung von Sonderregisterwerten auf das Verhalten der Anwendung auswirken. Beispielsweise kann sich das Sonderregister CURRENT DECFLOAT ROUNDING MODE auf die von einer SQL-Anweisung zurückgegebenen Daten auswirken. Angenommen, der Wert des Sonderregisters ist bei der Erfassung einer SQL-Anweisung auf ROUND_CEILING gesetzt. Dann binden Sie die in der pureQueryXML-Datei enthaltenen SQL-Anweisungen mit der Bindeoption, die das Äquivalent zu ROUND_FLOOR festlegt. Wenn die Anwendung die SQL-Anweisungen im statischen Modus ausführt, werden möglicherweise andere Daten zurückgegeben, falls die Daten vom Wert des Sonderregisters abhängen. Die Ergebnisse können auch dann anders ausfallen, wenn es keine Änderung im Anwendungscode gegeben hat.

Sonderregisterwerte mit der pureQueryXML-Clientoptimierung verfolgen und aufzeichnen

Wenn die pureQuery-Clientoptimierung eine SQL-Anweisung erfasst, während eine Anwendung aktiv ist, werden dabei einige Sonderregisterwerte verfolgt und aufgezeichnet. Beim Zusammenführen und Konfigurieren des erfassten SQL werden die mit der SQL-Anweisung erfassten Sonderregisterinformationen zusammen mit der Anweisung abgelegt.

Es gibt die folgenden pureQuery-Kategorien für Sonderregister:

Verfolgt und aufgezeichnet
Sonderregister, die verfolgt wurden und deren Werte als pureQueryXML-Daten aufgezeichnet wurden. Die in der pureQueryXML-Datei gespeicherten Sonderregisterinformationen können bei der Konfiguration von pureQueryXML-Dateien mit dem Dienstprogramm Configure verwendet werden. Sie werden angezeigt, wenn Sie eine pureQueryXML-Datei in der Workbench bearbeiten. Weitere Informationen zum Dienstprogramm Configure und zu den bei der Bearbeitung einer pureQueryXML-Datei angezeigten Informationen finden Sie über die zugehörigen Links. Informationen zu Werten von DB2-Sonderregistern, die mit der SQL-Anweisung in der pureQueryXML-Datei aufgezeichnet werden, finden Sie in Tabelle 1.
Nicht sicher und nicht aufgezeichnet
Sonderregisterwerte, die nicht aufgezeichnet werden. An ihren Werten vorgenommene Änderungen können sich jedoch unter Umständen auf das Verhalten von SQL-Anweisungen auswirken. Wenn sich der Wert eines nicht sicheren Sonderregisters ändert, wird von pureQuery Runtime aufgezeichnet, dass sich in der pureQueryXML-Datei eine Änderung ergeben hat.
Sicher und nicht aufgezeichnet
Sonderregister, die sicher sind, die aber nicht in der pureQueryXML-Datei aufgezeichnet werden. Im Allgemeinen wirken sich an diesen Sonderregistern vorgenommene Änderungen nicht auf das Verhalten von SQL-Anweisungen aus. So gibt zum Beispiel das Sonderregister CURRENT DEGREE den Grad der Parallelität für die Ausführung von Abfragen an, die dynamisch vom Anwendungsprozess vorbereitet werden. Andere Sonderregister, die zu dieser Kategorie gehören, sind: CURRENT PACKAGE PATH, CURRENT PACKAGESET, CURRENT CLIENT_ACCTNG, CURRENT CLIENT_APPLNAME, CURRENT CLIENT_USERID, CURRENT CLIENT_WRKSTNNAME und CURRENT DEBUG MODE.
Anmerkung: Die Sonderregister PACKAGE PATH und PACKAGE SET werden nicht aufgezeichnet, wirken sich jedoch auf die statische Ausführung aus. Wird PACKAGE SET verwendet, müssen die statischen Pakete in derselben Objektgruppe gebunden werden. Andernfalls wird während der statischen Ausführung ein Fehler -805 ausgegeben.

Die aufgezeichneten Sonderregisterinformationen werden in der pureQueryXML-Datei als Sonderregisterwertegruppen gespeichert. Die Informationen können bei der Konfiguration der pureQueryXML-Dateien mit dem Dienstprogramm Configure zum Erstellen von Anweisungsgruppen verwendet werden. Die erfassten Sonderregisterinformationen sind sichtbar, wenn Sie die pureQueryXML-Datei im pureQueryXML-Editor in der Workbench anzeigen.

Die Optionen groupSQLBySpecialRegisters und -optionsFileForBind des pureQuery-Dienstprogramms Configure unterstützen Sie bei der statischen Ausführung von SQL-Anweisungen. Sie können die Optionen separat oder zusammen verwenden.

Die Option -groupSQLBySpecialRegisters gruppiert SQL-Anweisungen auf der Basis der Sonderregisterinformationen, die beim Erfassen der Anweisungen aufgezeichnet wurden, in Anweisungsgruppen.

Die Option -optionsFileForBind erstellt eine StaticBinder-Optionsdatei. Die StaticBinder-Optionsdatei enthält Bindeoptionen für die Anweisungsgruppen, die in der pureQueryXML-Datei enthalten sind. Die Bindeoptionen basieren auf den Sonderregisterinformationen, die mit den SQL-Anweisungen aufgezeichnet werden. Die Datei enthält außerdem Kommentare mit Informationen und Warnungen zu den Anweisungsgruppen, SQL-Anweisungen und Sonderregisterinformationen der pureQueryXML-Datei.

Mit den Optionen des Dienstprogramms Configure können Sie die SQL-Anweisungen entsprechend der Sonderregisterinformationen gruppieren und eine StaticBinder-Optionsdatei generieren, die die Bindeoptionen enthält. Mithilfe der Bindeoptionen und zusätzlichen Informationen in der Datei können Sie eine Gruppe von Bindeoptionen angeben, sodass das Verhalten einer SQL-Anweisung bei der statischen Ausführung dem Verhalten bei einer dynamischen Ausführung über eine Anwendung vergleichbar ist. Wenn Sie über eine Gruppe von Bindeoptionen verfügen, verwenden Sie das Dienstprogramm StaticBinder, die Optionen und die pureQueryXML-Datei, um Pakete für eine Datenbank zu binden.

Anmerkung: pureQuery Runtime ab Version 2.2.0.3 zeichnet Sonderregisterinformationen in einer pureQueryXML-Datei auf. Wurde Ihre pureQueryXML-Datei mit einer pureQuery Runtime-Version vor Version 2.2.0.3 erstellt, müssen Sie einige SQL-Anweisungen möglicherweise erneut erfassen, um die Sonderregisterinformationen aufzuzeichnen.

In der folgenden Tabelle sind die Sonderregister, die von pureQuery Runtime aufgezeichnet werden, und die Bindeoptionen, die den Sonderregistern zugeordnet sind, aufgelistet.

Tabelle 1. DB2-Sonderregister und die zugeordneten DB2-Bindeoptionen
Sonderregister Bindeoption Notes
CURRENT DECFLOAT ROUNDING MODE1 ROUNDING für DB2 for z/OS und DB2 for System i.

Keine Bindeoption für DB2 for Linux, UNIX and Windows

Die Bindeoption ROUNDING ist nicht für alle DB2-Datenbanken verfügbar. Datenbanken, die diese Bindeoption nicht unterstützen, geben bei ihrer Verwendung eine Warnung aus.
CURRENT PATH FUNCPATH für DB2 for Linux, UNIX and Windows

PATH oder FUNCPATH für DB2 for z/OS und DB2 for System i

Bei der Generierung einer StaticBinder-Optionsdatei gibt das Dienstprogramm Configure die Bindeoption FUNCPATH an.
CURRENT PRECISION2 DEC Der Sonderregisterwert CURRENT PRECISION kann bei Divisionsoperationen die Werte für die Genauigkeit und die Mindestanzahl Kommastellen bei Divisionen einschließen. Der Bindeoptionswert kann den Wert für die Mindestanzahl der Kommastellen bei Divisionen nicht einschließen.

Das Dienstprogramm Configure generiert einen Warnungskommentar, wenn es bei der Generierung einer StaticBinder-Optionsdatei im Wert CURRENT PRECISION einen Wert für die Mindestanzahl der Kommastellen bei Divisionen vorfindet.

CURRENT SCHEMA3 QUALIFIER  
CURRENT SQLID3 QUALIFIER für DB2 for Linux, UNIX and DB2 for System i

Keine Bindeoption für DB2 for z/OS

Das Dienstprogramm Configure generiert einen Warnungskommentar, wenn bei der Generierung einer StaticBinder-Optionsdatei die Werte der Sonderregister CURRENT SCHEMA und CURRENT SQLID nicht identisch sind.

Bei DB2 for z/OS kann in manchen Fällen die Bindeoption OWNER verwendet werden.

Anmerkung:
  1. Das Sonderregister wird unter DB2 for z/OS Version 9.1 und höher und unter DB2 for Linux Windows and UNIX Version 9.5 und höher unterstützt.
  2. Das Sonderregister gibt die Dezimalgenauigkeit an. Das Sonderregister wird nur unter DB2 for z/OS unterstützt. Unter DB2 for Linux, UNIX and Windows und DB2 for System i wird das Sonderregister nicht unterstützt.
  3. Unter DB2 for Linux, UNIX and Windows und DB2 for System i gelten CURRENT SQLID und CURRENT SCHEMA als Synonyme.

Feedback