Oracle 11g: Index tunen
15.09.2009 16:48
INVISIBLE-Indizes im Praxiseinsatz
Indizes im Rahmen von Tuningmaßnahmen zu optimieren bedeutet, dass Indizes unter Umständen zu löschen oder neu hinzuzufügen sind. Diese Operationen sind bei grossen Tabellen sehr aufwändig und langlaufend. Mit dem Release 11g von Oracle wurden die Invisible Indizes eingeführt, um dieser Problematik Herr zu werden. Der Name des Index beschreibt dabei treffend seine Eigenschaft: Der Index ist für den Optimizer beziehungsweise die Statement-Ausführung unsichtbar. Allerdings ist der Index physikalisch vorhanden und wird bei DML-Operationen mitgepflegt. Um zum Beispiel die Auswirkungen von neuen Indizes zunächst nur für gewisse Statements und Applikationen auszutesten, ist diese Funktion optimal geeignet. Der Index wird im CREATE- oder ALTER-Statement mit der Eigenschaft invisible belegt:
CREATE INDEX customers_marital_bix ON customers (cust_marital_status) INVISIBLE;
Die Standardeinstellung bei der Indexanlage ist visible. Jeder Index kann im Nachhinein die Eigenschaft invisible erhalten:
ALTER INDEX customers_marital_bix INVISIBLE;
Sie nutzen diese Indexeinstellung mit einem Sessionparameter oder auch mit einem Statementhint:
ALTER SESSION SET optimizer_use_3 invisible_indexes=TRUE;
Danach wird die Ausführung eines Statements bereits den unsichtbaren Index nutzen, beispielsweise bei der anschließenden Ausführung der Anweisung (vergleiche Abbildung):
SELECT count(*) FROM customers WHERE cust_marital_status = 'married';
Beispiel für einen unsichtbaren Index.
(Ulrike Schwinn/Heinz-Wilhelm Fabry/am)
