Database Reference
In-Depth Information
Das ist die Grundidee vom ACS-Verfahren: Oracle führt User Bind Peeking häufiger
durch und benutzt gravierende Unterschiede in der Selektivität der Prädikate als Kriterium
dafür. Das ist der Kern vom ACS-Verfahren, der seinen eigenen Namen hat: Extended
Cursor Sharing oder ECS.
15.1.2
Überblick über das Verfahren
Da die Berechnung der Selektivität ziemlich aufwendig ist, versucht Oracle diesen Auf-
wand möglichst im Rahmen zu halten. Dies verkompliziert das Verfahren.
Zunächst werden Cursor ausgefiltert, für die das ECS-Verfahren entweder unmög-
lich oder zu kostspielig ist. Wenn ein Cursor die jeweiligen Prüfungen übersteht, wird er
als „bind sensitive“ gekennzeichnet. Die Spalte IS_BIND_SENSITIVE der View V$SQL
nimmt in diesem Fall den Wert 'Y' an. Dies bedeutet, dass die jeweilige SQL-Anweisung
ein Kandidat für die Anwendung von ECS ist. Der Wert 'N' bedeutet, dass das ECS-Verfah-
ren für den jeweiligen Cursor nicht angewendet wird, alle weiteren Aktivitäten bezüglich
ECS werden somit eingestellt.
Kriterien, bei denen das ECS-Verfahren unmöglich ist, sind zum Teil offensichtlich und
selbstverständlich:
• keineBind-VariableninderjeweiligenSQL-Anweisungvorhanden,
• keineHistogrammefürdiejeweiligenTabellenspaltenvorhanden,
• dasHintNO_BIND_AWAREinderjeweiligenSQL-Anweisung,
• jeweiligeParametereinstellungen,diedasECS-Verfahrenverbieten.
Einige weitere Kriterien dieser Kategorie sind nicht so offensichtlich. Das ECS-Verfahren
wird beispielsweise für keine SQL-Anweisungen mit mehr als 8 Bind-Variablen angewen-
det, weil es zu kostspielig ist. Oracle prüft auch, ob die Prädikate in der SQL-Anweisung
für das ECS-Verfahren geeignet sind. Wenn die jeweilige SQL-Anweisung ausschließlich
nicht geeignete Prädikate enthält, ist das ECS-Verfahren für sie nicht möglich. Das Prädi-
kat „In-list“ gehört zu den Prädikaten dieser Sorte. Das folgende Beispiel illustriert das.
Search WWH ::




Custom Search