Kurs Oracle 9i Einführung Performance Tuning Teil 13 Cluster Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 14 Seite 1 von 14
1. Anordnung von Zeilen in einer Tabelle 2. Einführung 3. Cluster 4. Typen von Clustern 5. Reihenfolge Clustererstellung 6. Index-Cluster erstellen 7. erstellen 8. Cluster löschen 9. Nutzung von Clustern Seite 2 von 14 Timo Meyer Wintersemester 2005 / 2006 Seite 2 von 14
1. Anordnung von Zeilen in einer Tabelle Tabelle Cluster Index-Organisierte Tabelle zufällig gruppiert geordnet Timo Meyer Wintersemester 2005 / 2006 Seite 3 von 14 Seite 3 von 14
2. Einführung Physische Gruppe mehrerer Tabellen mit einer oder mehr gemeinsamen Spalten Daten verschiedener Tabellen liegen im selben Block Cluster-Schlüssel wird genutzt Joinen gemeinsamer Zeilen und gemeinsame Speicherung Tabellen werden durch Cluster-Schlüssel vorgejoint Sehr hohe Leistung Reduzieren Speicherplatzanforderungen, da nur ein Schlüssel für zwei Tabellen erstellt werden muss Auf Cluster wird wie auf Tabellen zugegriffen Ein Cluster belegt mit allen Tabellen ein Segment Einführung Installation Seite 4 von 14 Timo Meyer Wintersemester 2005 / 2006 Seite 4 von 14
3. Cluster Unclustered ORD_NO and ITEM tables Timo Meyer Wintersemester 2005 / 2006 Seite 5 von 14 Clustered ORD_NO and ITEM tables Seite 5 von 14
4. Typen von Clustern Index-Cluster Hash-Funktion Timo Meyer Wintersemester 2005 / 2006 Seite 6 von 14 Seite 6 von 14
5. Reihenfolge Clustererstellung 1. Cluster erstellen Index-Cluster 1 2. Index erzeugen Index übernimmt Reservierung einzelner Blöcke für Cluster-Schlüssel Entfällt bei 3. Tabellen im Cluster erstellen 4. Daten einfügen 1 Vgl. Haas. Oracle Tuning in der Praxis. S. 10: Oracle 10 schließlich führte noch den Sorted Hash Cluster ein. Wenn Sie Daten in einen sortierten Hash Cluster einfügen, werden Sie in der Reihenfolge eingefügt, die Sie beim CREATE CLUSTER angeben. Seite 7 von 14 Timo Meyer Wintersemester 2005 / 2006 Seite 7 von 14
6. Index-Cluster erstellen 1. Cluster erstellen CREATE CLUSTER scott.ord_clu (ord_no NUMBER(3)) INDEX SIZE 200 TABLESPACE DATA01 STORAGE(INITIAL 5M NEXT 5M PCTINCREASE 0); gleiche Spalte (ORD_NO) und Wert muss bei Clustererstellung angegeben werden SIZE (optional) in Byte, wie groß ein Cluster-Schlüssel wahrscheinlich wird Index-Cluster Anhang 2. Index erstellen CREATE INDEX scott.ord_clu_idx ON CLUSTER scott.ord_clu TABLESPACE INDX01 STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0); Seite 8 von 14 Timo Meyer Wintersemester 2005 / 2006 Seite 8 von 14
6. Index-Cluster erstellen 3. Tabellen im Cluster erstellen CREATE TABLE scott.ord (ord_no NUMBER(3) CONSTRAINT ord_pk PRIMARY KEY, ord_dt DATE, cust_cd VARCHAR2(3)) CLUSTER scott.ord_clu(ord_no); CREATE TABLE scott.item (ord_no NUMBER(3) CONSTRAINT item_ord_fk REFERENCES scott.ord, prod VARCHAR2(5), qty NUMBER(3), CONSTRAINT item_pk PRIMARY KEY(ord_no,prod)) CLUSTER scott.ord_clu(ord_no); Timo Meyer Wintersemester 2005 / 2006 Seite 9 von 14 Index-Cluster Anhang Seite 9 von 14
7. erstellen 1. Cluster erstellen CREATE CLUSTER scott.off_clu (country VARCHAR2(2),postcode VARCHAR2(8)) SIZE 500 HASHKEYS 1000 TABLESPACE DATA01 STORAGE(INITIAL 5M NEXT 5M PCTINCREASE 0); HASHKEYS 1000 = wie viele Hash-Gruppen sollen erstellt werden 2. Tabellen erstellen CREATE TABLE scott.office ( office_cd NUMBER(3), cost_ctr NUMBER(3), country VARCHAR2(2), postcode VARCHAR2(8) ) CLUSTER scott.off_clu(country,postcode); Timo Meyer Wintersemester 2005 / 2006 Seite 10 von 14 Seite 10 von 14
8. Cluster löschen Cluster inklusive aller Tabellen löschen DROP CLUSTER scott.ord_clu INCLUDING TABLES; oder einfach Tabellen und dann Cluster löschen DROP TABLE scott.ord; DROP TABLE scott.item; DROP CLUSTER scott.ord_clu; Timo Meyer Wintersemester 2005 / 2006 Seite 11 von 14 Seite 11 von 14
9. Nutzung von Clustern Tabellen für Abfragen genutzt, äußerst selten INSERT, UPDATE, DELETE Datensätze der Tabellen im Cluster häufig zusammen abgefragt und in JOIN-Klausel (nur mit Equi-Join) verwendet Sehr gut für nicht mehr veränderbare historische Daten (z.b. aus vergangenem Jahr) und statistische Auswertungen Cluster machen keinen Sinn, wenn Cluster-Schlüssel nicht identisch mit JOIN-Schlüssel ist Wenn oft nur eine Tabelle ausgelesen wird (erhöhte Blockzugriffe), keinen Cluster verwenden Können nicht repliziert oder partitioniert werden Seite 12 von 14 Timo Meyer Wintersemester 2005 / 2006 Seite 12 von 14
Übung Index-Cluster Timo Meyer Wintersemester 2005 / 2006 Seite 13 von 14 Seite 13 von 14
Anordnung 3 Hash-Funktion 6 Hashkeys 10 Block 4 Blockzugriffe 12 Index-Cluster 6, 7 Index-Organized Table (IOT) 3 Cluster-Schlüssel 4, 7, 8 Constraints 10 5 Equi-Join 12 Segment 4 Gruppe 4, 10 Tabelle 3, 12 6, 7 Zeilen 3 Hinweis: Die Folien sind in Anlehnung an Schulungsunterlagen von der dama.go GmbH Potsdam zur Ausbildung zum Oracle Certified Professional Database Administrator 9i entstanden. Buch: Haas, Frank, Oracle Tuning in der Praxis. Rezepte und Anleitungen für Datenbankadministratoren und -entwickler, Carl Hanser Verlag: München 2005. Timo Meyer Wintersemester 2005 / 2006 Seite 14 von 14 Seite 14 von 14