Database Reference
In-Depth Information
3ODQKDVKYDOXH
_,G_2SHUDWLRQ_1DPH_6WDUWV_( 5RZV_(%\WHV_&RVW&38_(7LPH
_$5RZV_$7LPH_%XIIHUV_20HP_0HP_8VHG 0HP_
__6(/(&767$7(0(17______
_______
__+$6+-2,1______
____._._._
__7$%/($&&(66)8//_7_____
_______
__7$%/($&&(66%<,1'(;52:,'_7_____
_______
__,1'(;5$1*(6&$1_,B7_____
_______
Mit dem Skript test_case_adaptive_cursor_sharing_rows_processed.sql kann man dieses
Beispiel mit allen Details durchspielen.
P.: „ Wird das ACS-Verfahren für die Cursor aus dem Session Cursor Cache angewendet?
L: „ Das ist eine sehr gute Frage, Peter. Man könnte denken, dass Oracle solche Cursor ohne
jegliche Prüfung immer wieder verwendet. In der Tat wird das ACS-Verfahren auch bei den
Cursorn aus dem Session Cursor Cache angewendet.
P.: „ Das ACS-Verfahren führt im Allgemeinen zu einer größeren Anzahl der Child Cursor.
Kann das Performanz-Probleme verursachen?
L.: „ Normalerweise nicht. Sollte es doch zu einem Performanz-Problem kommen, kann
man das ECS-Verfahren abschalten. Dies kann man für das ganze System, für eine Session
oder für eine SQL-Anweisung tun.
P.: „ Wird das ACS-Verfahren für eine SQL-Anweisung mit Hints angewendet?
L.: „ Die Optimizer Hints hindern die Anwendung von ACS nicht. Mit dem Skript test_
case_adaptive_cursor_sharing_hint.sql kannst Du das überprüfen. Anders sieht es mit den
Outlines aus. Outlines in einer SQL-Anweisung schalten das ACS-Verfahren für diese SQL-
Anweisung aus. Das Skript test_case_adaptive_cursor_sharing_outline.sql demonstriert das.
Hast Du noch Fragen?
P.: „ Im Moment keine.
L.: „ Dann fahren wir mit dem ACS- bzw. mit dem ECS-Verfahren fort.
Ein wichtiges Detail dieses Verfahrens wurde noch gar nicht angesprochen. Angenom-
men, die Selektivitäten der Prädikate für den neuen Satz der Bind-Werte liegen außerhalb
der Selektivitätsgrenzen eines bestehenden Cursors. In diesem Fall macht Oracle ein hartes
Parsing und benutzt beim Erstellen des Ausführungsplans den neuen Satz der Bind-Werte.
Wenn der neue Ausführungsplan sich von dem bestehenden unterscheidet, wird ein neuer
Cursor angelegt. Diese beiden Cursor können bei künftigen Parse Calls benutzt werden
(die Spalte IS_SHAREABLE der View V$SQL hat für diese beiden Cursor den Wert 'Y').
Search WWH ::




Custom Search