DB2 und der BIND-Parameter REOPT

Werbung
Abfrageoptimierung mit der Bindeoption REOPT
Damit eine Abfrageoptimierung (bzw. Reoptimierung) für statische und dynamische SQL-Anweisungen, die
Hostvariablen, Sonderregister oder Parametermarken enthalten, ausgeführt werden kann, binden Sie das
Paket mit der Bindeoption REOPT. Wenn diese Option verwendet wird, wird der Zugriffspfad für eine SQLAnweisung, die sowohl zu dem Paket gehört als auch Hostvariablen, Parametermarken oder
Sonderregister enthält, mit den Werten dieser Variablen, und nicht mit Standardschätzwerten, die der
Compiler auswählt, optimiert. Die Optimierung erfolgt bei der Ausführung der Abfrage, wenn die Werte
verfügbar sind.
Zugehörige Konzepte:
1.
Auswirkungen von REOPT bei "static SQL"
Die Bind Option REOPT kann "static SQL" Statements, die "host variables" oder "special register"
enthalten, veranlassen, sich wie "incremental-bind" Statements zu verhalten. Das bedeutet, dass diese
Statements zum Zeitpunkt der EXECUTE oder OPEN Anweisung kompiliert werden, anstatt zur "bind time".
Währen dieser Kompilation wird der "access plan" auf der Basis der "echten" Werte in diesen Variablen
festgelegt.
Mit REOPT ONCE wird der "access plan" nach dem ersten OPEN / EXECUTE "gecached" und für folgende
Ausführungen des Statements genutzt. Mit REOPT ALWAYS wird der "access plan" für jeden OPEN /
EXECUTE "equest immer wieder neu generiert und die jeweilig aktuelle- "host variable"-, "parameter
marker"- und/oder Spezialregister- Werte werden zur Erzeugung des neuen Plans verwendet.
2.
Auswirkungen von REOPT bei "dynamic SQL"
Wird die Option REOPT ALWAYS angegeben, so verschiebt DB2(R) das "preparing" jedweden Statements,
das "host variable", "parameter marker" oder Spezialregister enthält, bis zu dem Zeitpunkt, an dem es ein
OPEN oder EXECUTE Statement erkennt. Dann werden die werte für diese Variablen erkennbar und der
"access plan" kann erzeugt werden. Folgende OPEN / EXECUTE Requests für dasselbe Statement
veranlassen ein "recompile" und "reoptimize" des Plans mit den aktuellen Werten aus den Variablen und
die Ausführung des neu erzeugten Plans.
Mit REOPT ONCE erreicht man eiun ähnliches Resultat, mit der Ausnahme, dass der Plan nur ein einziges
Mal optimiert wird. Der Plan wird im Cache abgelegt und von späteren Anforderungen genutzt.
Nachzulesen in: Application Development Guide: Programming Client Applications. Und unter:
Systemverwaltung und Optimierung.
Herunterladen