Database Reference
In-Depth Information
10
User Bind Peeking
In diesem kleinen Abschnitt besprechen wir kurz das Feature User Bind Peeking von Ora-
cle 9i und 10g. Ich glaube, es ist sinnvoll aus den folgenden 2 Gründen:
• einklaresBildüberdiesesFeaturehilftdieVorteilevonAdaptiveCursorSharingbesser
zu verstehen (s. im Abschn. 15.1), welches eine Weiterentwicklung von User Bind Pee-
king in 11g darstellt,
• mankannnachwievordiesesFeatureinOracle11gbenutzen,wennmanAdaptive
Cursor Sharing, bzw. Extended Cursor Sharing ausschaltet (was generell nicht zu emp-
fehlen ist).
Leonid: „
Peter, ich glaube, Du kennst Dich gut mit User Bind Peeking aus.
“
Peter: „
Das hoffe ich.
“
L.: „
Könntest Du bitte sagen, wofür Oracle dieses Feature eingeführt hat?
“
P.: „
Um die Auswertung der Histogramme für SQL-Anweisungen mit Bind-Variablen zu
ermöglichen.
“
L.: „
Wie ist es bei User Bind Peeking realisiert?
“
P.: „
Oracle nimmt den ersten Satz der Bind-Werte bei der ersten Ausführung der SQL-
Anweisung und berücksichtigt die Werteverteilung für diese Bind-Werte beim Erstellen des
Ausführungsplans. Dafür werden die jeweiligen Histogramme herangezogen.
“
L.: „
Was passiert weiter? Was macht Oracle beispielsweise mit dem zweiten Satz der Bind-
Werte?
“
P.: „
Für den zweiten und für die weiteren Sätze der Bind-Werte nimmt Oracle den Aus-
führungsplan, der für den ersten Satz erstellt wurde, weil das Erstellen des Ausführungsplans
für jeden Satz der Bind-Werte zu teuer wäre.
“
L.: „
Ja, und das ist genau die Schwachstelle dieses Features. Kannst Du möglicherweise
sagen, warum?
“
P.: „
Es ist gut möglich, dass der für den ersten Satz der Bind-Werte errechnete Ausfüh-
rungsplan nicht optimal für die anderen Sätze ist.
“