Kurs Oracle 9i Einführung Performance Tuning Teil 14 Index-Organized Tables Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 13 Seite 1 von 13
1. Anordnung von Zeilen in einer Tabelle 2. Einführung 3. Vergleich von Tabellen (Standardtabellen und Index-Organized Tables) 4. 5. Optimierung 6. 7. 8. 9. Timo Meyer Wintersemester 2005 / 2006 Seite 2 von 13 Seite 2 von 13
1. Anordnung von Zeilen in einer Tabelle Tabelle Cluster Index-Organisierte Tabelle zufällig gruppiert geordnet Timo Meyer Wintersemester 2005 / 2006 Seite 3 von 13 Seite 3 von 13
2. Einführung Datensätze werden nicht sequentiell, sondern als B*Tree-Index (Balanced Tree) gespeichert Im Index werden neben dem Primärschlüssel (PK) auch alle anderen Daten gespeichert Nicht ROWID sondern PK ist eindeutiger Identifizierer Zeilen besitzen keine ROWIDs Es kommt oft zu starker Fragmentierung Alle Daten werden im Index 1 gespeichert = neue Daten, neuer Index-Aufbau und evtl. Lücken Einführung Installation 1 Vgl. Oracle 9i Einführung Performance Tuning. Teil 8 Indizes Timo Meyer Wintersemester 2005 / 2006 Seite 4 von 13 Seite 4 von 13
2. Einführung Indexed Access on Table ROWID Accessing Index-Organized Table Einführung Installation Timo Meyer Wintersemester 2005 / 2006 Seite 5 von 13 Non-Key Columns Key Column Row Header Seite 5 von 13
3. Vergleich von Tabellen Standardtabelle Zeilen durch ROWID identifiziert ROWID vorhanden und verschiedene Indizes möglich Full Table Scan gibt Zeilen ungeordnet wieder Unique Constraints gestattet Verteilung, Replikation und Partitionierung unterstützt Index-Organized-Table Zeilen werden über Primär Schlüssel (PK) identifiziert Keine ROWID vorhanden und sekundäre Indizes möglich Full Index Scan gibt Zeilen in Anordnung des PK wieder Keine Unique Constraints gestattet Verteilung, Replikation, etc. wird nicht unterstützt Seite 6 von 13 Timo Meyer Wintersemester 2005 / 2006 Seite 6 von 13
4. von Index-Organized Tables CREATE TABLE scott.sales ( office_cd NUMBER(3), qtr_end DATE, revenue NUMBER(10,2), review VARCHAR2(1000), CONSTRAINT sales_pk PRIMARY KEY(office_code, qtr_end) ) ORGANIZATION INDEX TABLESPACE data01 PCTTHRESHOLD 20 OVERFLOW TABLESPACE data02; Timo Meyer Wintersemester 2005 / 2006 Seite 7 von 13 Seite 7 von 13
5. Optimierung Überlaufbereich anlegen (Overflow) Angabe durch Parameter PCTTHRESHOLD beim Anlegen der IOT (% der Zeile, die im Index-Segment verbleiben sollen, Rest in Overflow-Tablespace) Getrennte Speicherung von PK-Daten und restlichen Zeilendaten Wird Wert überschritten (freier Platz im Block in Prozent) = Verschiebung der Nicht-PK-Wertes in den Überlaufbereich Überlaufbereich sollte separaten Tablespace haben Durch INCLUDIG-Parameter werden angegebene Spalten nicht in Überlauf geschrieben (alternativ zu PCTTHRESHOLD) Timo Meyer Wintersemester 2005 / 2006 Seite 8 von 13 Neue Optimierung Funktionen Seite 8 von 13
6. IOT Tablespace Segment = PK Name Type = Index Overflow Tablespace Segment = SYS_IOT_OVER_n Type = Table Zeilen außerhalb Block PCTTHRESHOLD Zeilen innerhalb PCTTHRESHOLD Timo Meyer Wintersemester 2005 / 2006 Seite 9 von 13 Seite 9 von 13
7. Primärschlüsselbasierte Abfragen Schnell, da alle Daten mit Primärschlüssel zusammen gespeichert werden Normale Tabelle: Index-Zugriff um ROWID zu finden, dann Tabellenzugriff IOT: kein zugehöriger Index vorhanden Bereichsabfragen gehen schneller, da alle Elemente der Zeile nahe bei einander sind Timo Meyer Wintersemester 2005 / 2006 Seite 10 von 13 Seite 10 von 13
8. Nicht für breite Tabellen verwenden, also keine langen bzw. großen Datensätze Satzlänge sollte 75% der Blockgröße nicht überschreiten, UPDATE auf Zeile soll möglich sein ohne Zeilenverkettung Sekundäre Indizes lassen sich anlegen; Primary Key (PK) wird an Stelle ROWID eingesetzt und ein Mapping der Tabelle wird somit benötigt Timo Meyer Wintersemester 2005 / 2006 Seite 11 von 13 Seite 11 von 13
9. Neuaufbau des Tabellen-Indexes zusammen mit dem Überlaufbereich, wenn Performance drastisch sinkt (nicht zu oft wiederholen!) ALTER TABLE test1 MOVE TABLESPACE OVERFLOW TABLESPACE overflow; Timo Meyer Wintersemester 2005 / 2006 Seite 12 von 13 Seite 12 von 13
Anordnung 3 Neuaufbau 12 B*Tree-Index (Balanced Tree) 4 Optimierung 8 Overflow 8, 12 Constraints 6 Parameter Datensätze 4 PCTTHRESHOLD 8, 9 SYS_IOT_OVER_N 9 Einführung 5 9 Elemente 10 Partitionierung 6 7 Replikation 6 Fragmentierung 4 Full Table Scan (FTS) 6 Satzlänge 11 Index-Organisierte-Tabelle (IOT) 6 Überlaufbereich 8 Hinweis: Die Folien sind in Anlehnung an Schulungsunterlagen von der dama.go GmbH Potsdam zur Ausbildung zum Oracle Certified Professional Database Administrator 9i entstanden. Timo Meyer Wintersemester 2005 / 2006 Seite 13 von 13 Seite 13 von 13