Database Reference
In-Depth Information
11.2
User Bind Peeking bei der Parametereinstellung
CURSOR_SHARING<>EXACT
Leonid: „
Peter, ich habe eine Frage an dich. Wird User Bind Peeking für systemgenerierte
Bind-Variablen bei der Parametereinstellung
cursor
_
sharing
<>
exact
benutzt oder nicht?
“
Peter: „
Warum sollte es nicht benutzt werden?
“
L: „
Oracle hat die jeweiligen Literale in der originellen SQL-Anweisung und kann theore-
tisch diese Literale beim Erstellen des Ausführungsplans ohne User Bind Peeking gebrauchen.
Im Internet findet man verschiedene Meinungen dazu.
“
P.: „
Ist es wichtig für die Praxis?
“
L.: „
Ja, weil es einen direkten Einfluss auf die Performanz hat. Wenn man beispielsweise
User Bind Peeking ausschaltet, wirkt es auf SQL-Anweisungen mit systemgenerierten Bind-
Variablen? Ich denke schon, dass meine Frage für die Praxis wichtig ist.
“
P: „
Ehrlich gesagt, weiß ich nicht, wie Deine Frage zu beantworten ist. Es gibt Pro und
Kontra für jede Variante.
“
L.: „
Dann versuchen wir, die richtige Antwort mit dem Skript test_case_bind_peek_cur-
sor_sharing.sql zu finden.
“
Legen wir eine Tabelle T1 an.
64/!FUHDWHWDEOHWFQXPEHUFQXPEHU
7DEOHFUHDWHG
64/!LQVHUWLQWRWVHOHFWOHYHOIURPGXDOFRQQHFWE\OHYHO
URZVFUHDWHG
64/!LQVHUWLQWRWYDOXHV
URZFUHDWHG
64/!LQVHUWLQWRWYDOXHV
URZFUHDWHG
64/!FRPPLW
&RPPLWFRPSOHWH
64/!H[HFGEPVBVWDWVJDWKHUBWDEOHBVWDWVXVHU7PHWKRGBRSW !)25$//&2/8016VL]H
3/64/SURFHGXUHVXFFHVVIXOO\FRPSOHWHG
Die Tabelle T1 ist so mit den Daten gefüllt, dass 10.000 Datensätze den Wert 1 für die
Spalte „C1“ haben. Für die Werte 2 und 3 gibt es jeweils 1 Datensatz. Zunächst schalten wir
User Bind Peeking ab und führen 2 SQL-Anweisungen aus: eine mit der Bind-Variablen
und mit dem Bind-Wert 2, die andere mit dem Literal 2 und mit der Parametereinstellung
cursor
_
sharing
=
force
.