Sebastian Winkler CarajanDB GmbH CarajanDB GmbH
|
|
- Thilo Amsel
- vor 6 Jahren
- Abrufe
Transkript
1 Sebastian Winkler CarajanDB GmbH
2 Experten mit über 20 Jahren Oracle Erfahrung Firmensitz in Erftstadt bei Köln Spezialisten für Oracle Datenbank Administration Hochverfügbarkeit (RAC, Data Guard, Failsafe, etc.) Einsatz der Oracle Standard Edition Oracle Migrationen (HW, Unicode, Konsolidierung, Standard Edition) Replikation (GoldenGate, SharePlex, Dbvisit) Performance Tuning Database Cloning (Actifio, Delphix, CloneDB) Fernwartung Schulung und Workshops (Oracle, Toad) 2
3 Überblick Warum und Wie? Entscheidungshilfe Vorteile, Ziele und Analyse Partitionierungsarten Standard, Composite und Erweiterungen Abschluss Neues mit 12c und Fazit 3
4 - Warum? - Wie?
5 (sehr) große Datenbanken Vor Jahren groß = heute Normalfall Very Large Database und Data Warehouse Größere Datenbanken = größere Herausforderungen im Betrieb Größe, Transaktionsvolumen, Aktivität, Parallele User, Abfragekomplexität, Antwortzeiten, Verfügbarkeit Standardtechnik nicht ausreichend Partitionierung eine der wichtigsten Techniken 5
6 Partitionierung als Vorteil für Administration von (sehr) großen Datenbanken Vereinfacht und beherrschbar durch Löschen, Hinzufügen, Verschieben und Archivieren von Partitionen Oracle Optimizer Effizientere Abfrage-Bearbeitung durch Partition Pruning, partitionsweise Joins und Parallelisierung 6
7 Partitionen arbeiten auf Segmentebene Ein einzelnes Segment wird Tabellen, Indizes physisch Datenbank logisch nach einer bestimmten Vorschrift Partitionierungskriterium beim Anlegen der Tabelle festgelegt Wertebereichen, Wertelisten oder Hash-Werten in mehrere Segmente aufgeteilt. Partitionen Neue Daten werden automatisch einsortiert Datei OS-Block Tablespace Segment / Partition Extent ORACLE Block 7
8 - Vorteile Partitionierung - Optimierungsziele - Einzelfallanalyse
9 Partitionen sind physikalisch unabhängig Ablage und Verwaltung in separaten Tablespaces mit unterschiedlichen Speicherparametern (z.b. PCTFREE, COMPRESSION) möglich Transparent Aus Anwendungssicht alle Daten über den Namen der partitionierten Tabelle les- und schreibbar Optimizer Kennt die physikalisch Aufteilung der Tabelle Kann entsprechend optimierte Zugriffspfade generieren Indizes Zugehörige Indizes lassen sich ebenfalls abhängig oder unabhängig partitionieren Kleinere Partitionssegmente ermöglichen bessere Verwaltbarkeit und effizienteren Aufbau 9
10 Partition Pruning Partitionen gegenüber logischem Objekt eine kleinere Einheit Je nach WHERE-Klausel profitiert eine Table-Scan-Operation durch ausklammern bestimmter Partitionen Flachere Index-Bäume Partitionsspezifisch aufgebaute Index-Bäume können flacher ausfallen Weniger Ebenen reduzieren den I/O-Aufwand bei Zugriffen Partitionsweise Tabellenoperationen Joins lassen sich auf korrespondierende Partitionen reduzieren Partitionsweise Joins lassen sich zudem parallel auf den physisch getrennten Daten ausführen 10
11 Vereinfachung und Verkürzung Partitionen können einzeln hinzugefügt, aufgeteilt und gelöscht werden Datenaustausch zwischen Tabellen und Partitionen über effiziente Switch- Operationen EXCHANGE PARTITION (ohne Locking) 11
12 Vorteile prinzipiell möglich Konkreter Nutzen vom Einzelfall abhängig Voraussetzung: sorgfältige Analyse vor der Implementierung Optimierungsziele priorisieren effizientere Verwaltung oder Optimierung der Zugriffe? Größe der Objekte Partitionierung einer Tabelle mit wenigen Zeilen sinnvoll? 12
13 Art der Zugriffe OLTP Anwendungen profitieren durch sehr selektive Indexzugriffe generell weniger Batch-Anwendung oder DWH mit Scans auf große Bereiche profitieren von dichteren Partitionsbereichen und flacheren Indexstrukturen Art der Datenverwaltung Lässt sich bspw. das Partitionierungskriterium der Tabelle mit dem Löschzyklus einer Rolling-Window-Anwendung synchronisieren 13
14 Partitionierung ist zu empfehlen: Wenn alle zu einer Priorisierung passenden Kriterien erfüllt werden. bei großen Tabellen - im 2-stelligen GB-Bereich wenn große Datenmengen über viele Jahre zur Verfügung stehen müssen (In Database Archiving) 14
15 - Range, List, Hash - Composite - Extension
16 Standardtechniken Wertebereichen - Range Wertelisten - List Hash-Werten - Hash Erweiterungen Intervall, Referenziert, Virtuelle Spalten Zusammengesetzt Composite- oder Sub-Partitionierung zwei Arten werden hierarchisch miteinander kombiniert 16
17 Zusammengesetzte Partitionierung Composite oder Sub-Partitioning Range-Range Range-List Range-Hash List-List List-Range List-Hash Hash-Hash Hash-List Hash-Range 17
18 Erweiterte Partitionierungsmethoden Interval Partitioning Interval Interval-Range Interval-List Interval-Hash Reference Partitioning Virtual column based Partitioning 18
19 Maximale Anzahl Partitionen pro Segment bis 10gR1 64K-1 = Partitionen seit 10gR2 1024K-1 bis heute 12c = Partitionen sowie Sub-Partitionen Händelbarkeit bestimmt die Anzahl und Granularität Einzelne Partitionen sollten nicht über den 2-stelligen GB-Bereich hinauswachsen Bestimmt zugleich die Granularität des Partitionierungskriteriums z.b. Woche, Monat, Quartal oder Jahr 19
20 Partitionierungsspalten Sollten nach dem initialen Einfügen des Datensatzes unveränderlich oder mindestens selten veränderlich sein Seit 11g können auch virtuelle Spalten genutzt werden Teilstring einer Spalte, funktionale Ausdrücke aus mehreren Spalten Achtung Nachträgliches Ändern einer solchen Spalte kann eine andere Partition bedeuten - eine andere Partition bedeutet ein physisches Bewegen der Daten! 20
21 Partitionierung nach Wertebereichen Besonders geeignet für zeitbezogene Daten Partition pro Woche, Monat oder Quartal für Auftragsdatum-Spalte Häufigste Variante in der Praxis Spezialfall Interval-Partitionierung Seit 11g Neue Partitionen bei Bedarf automatisch erstellt 21
22 Partitionierung nach Werteliste Geeignet bspw. für Daten zugeordnet nach Gebieten bspw. Regionen-, Bundesland-Spalte Nicht geeignet für - nach dem initialen Einfügen - häufig ändernde Spalten Bsp. Statusspalten 22
23 Partitionierung nach Hash-Werten Es kommt auf den konkreten Wert der Partitionierungsspalte nicht an Es sollen irgendwelche Partitionen geschaffen werden Häufig für Subpartitionen eingesetzt Range-Hash, List-Hash Beispiel Equi Partitioning Zwei Tabellen werden nach ihrer Join-Spalte Hash-partitioniert Optimizer profitiert von partitionsweisen Joins Partition Pruning lässt sich hier nicht nutzen 23
24 Partitionierung nach einer übergeordneten Tabelle Es kann nach Spalten sortiert werden, die nur in einer per Fremdschlüssel übergeordneten Tabelle vorkommen Bspw. lässt sich eine Auftragstabelle nach dem Bundesland des Kunden partitionieren Logische Fortsetzung und Erweiterung von Equi-Partitioning Vorteil Erleichterung der Administration Unterstützung partitionsweiser Joins der betreffenden Tabelle 24
25 Welche Partitionierungsart? Wie wird typischerweise auf die Daten zugegriffen? Partitionierungsspalte muss in der WHERE-Klausel vorkommen! Optimizer kann nur in diesem Falle Partition Pruning und partitionsweise Joins einsetzen Anstelle der gesamten Tabelle werden nur diejenigen Partitionen, im besten Falle nur eine einzige Partition gelesen oder gejoint 25
26 Grundsätzliches Ob kann nur beim Erstellen einer Tabelle entschieden werden Einführen einer Partitionierung für eine nicht-partitionierte Tabelle bedeutet den kompletten Neuaufbau (Ausnahme: Partition Exchange) Ändern der Partitionierungsart bedeutet den kompletten Neuaufbau Nachträgliches Hinzufügen, Entfernen, Splitten oder Verschmelzen einer Partition einer bereits partitionierten Tabelle problemlos möglich Schwer revidierbare Entscheidungen, daher vorher genau analysieren! 26
27
28 Partitionierungsspalte Große Datenmengen enthalten oftmals ein Datumsfeld Data Warehouse oftmals Detaildaten (Faktentabellen) mit Datum Geeignet sofern überwiegend unveränderlich Partitionierung der Tabellen und zugehörige Indizes nach Datum 28
29 Beispiel: Auftragstabelle SQL> CREATE TABLE order_part ( orderid NUMBER(10) PRIMARY KEY, clientid NUMBER(10) REFERENCES clients (clientid), orderdate DATE, deliverydate DATE, orderstatus CHAR(1) REFERENCES status (statusid) ) PARTITION BY RANGE (orderdate) ( PARTITION q1_15 VALUES LESS THAN (to_date(' ','ddmmyyyy')) TABLESPACE ts01, PARTITION q2_15 VALUES LESS THAN (to_date(' ','ddmmyyyy')) TABLESPACE ts02, PARTITION q3_15 VALUES LESS THAN (to_date(' ','ddmmyyyy')) TABLESPACE ts03, PARTITION q4_15 VALUES LESS THAN (to_date(' ','ddmmyyyy')) TABLESPACE ts04, PARTITION q1_16 VALUES LESS THAN (MAXVALUE) TABLESPACE ts01 ); 29
30 Beispiel: Auftragstabelle Partitionierungskriterien werden durch fest definierte Wertebereiche einer oder mehrerer Spalten vergeben PARTITION BY RANGE (orderdate) Jede Partition erhält per VALUES-Klausel eine entsprechende Obergrenze PARTITION q1_15 VALUES LESS THAN (to_date(' ','ddmmyyyy')) TABLESPACE ts01, Nachvollziehbar welche Daten in welcher Partition Optimizer kann somit bestimmte Partitionen ausklammern und Zugriff auf einzelne Partitionen beschränken 30
31 Beispiel: Auftragstabelle Zugehöriger Equi-partitionierter Index SQL> CREATE INDEX order_part_orderdate ON order_part (orderdate) LOCAL ( PARTITION q1_15 TABLESPACE idxts01, PARTITION q2_15 TABLESPACE idxts02, PARTITION q3_15 TABLESPACE idxts03, PARTITION q4_15 TABLESPACE idxts04, PARTITION q1_16 TABLESPACE idxts01 ); 31
32 Beispiel: Auftragstabelle Vorteil bei der Abfragebearbeitung - es wird ausschließlich auf Partition 3 und 4 zugegriffen = Partition Pruning Wichtig: annäherungsweise Gleichverteilung der Daten SQL> SELECT orderid, orderstatus FROM order_part WHERE orderdate BETWEEN TO_DATE(' ','DD.MM.YYYY') AND TO_DATE(' ','DD.MM.YYYY'); Id Operation Name Pstart Pstop SELECT STATEMENT 1 PARTITION RANGE ITERATOR TABLE ACCESS BY LOCAL INDEX ROWID ORDER_PART 3 4 * 3 INDEX RANGE SCAN ORDER_ORDERDATE
33 DROP PARTITION bzw. EXCHANGE Vorteil: alte Daten können per DDL-Operation gelöscht oder archiviert werden Rolling-Window Zeitfenster für die Betrachtung verschiebt sich 1. Quartal 2015 wird ausgelagert (bspw. auf Read-only-Medium) und ein neues für Q wird angelegt 33
34 SPLIT PARTITION Vorsicht: SPLIT bewirkt, dass alle Daten einer Partition physisch bewegt werden Beispiel: zunächst wird Q angelegt und erst am Ende des Quartals wird Q per Split erzeugt Q1 und Q2 werden komplett neu eingepflegt Undo- und Redolog- Informationen werden erzeugt Besser: immer eine Dummy -Partition benutzen dann auf der leeren Partition die Spaltung durchführen 34
35 Ist sichergestellt, dass keine Daten in die MAXVALUE Partition läuft kann auf diese verzichtet werden PARTITION q1_16 VALUES LESS THAN (MAXVALUE) TABLESPACE ts01); ADD PARTITION zum anlegen einer neuen Partition SQL> ALTER TABLE order_part ADD PARTITION q2_16 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts02; Befehl kann nur genutzt werden, wenn kein MAXVALUE existiert fügt Partition an oberer Partitionsgrenze ein 36
36
37 Rolling-Window Erstellung neuer Range-Partitionen kann seit 11g automatisiert werden Sowohl für neue als auch existierende Range-partitionierte Tabellen möglich Voraussetzung: Partitioniert nach einer einzigen Spalte vom Typ DATE oder NUMBER Keine MAXVALUE Partition als Obergrenze 38
38 Start-Partition Partition mit der höchsten vorhandenen Partitionsgrenze Ausgangspunkt für automatisch erzeugte Partitionen INTERVAL-Klausel INTERVAL (NUMTOYMINTERVAL(3,'MONTH')) Bestimmt die Partitionsbreite STORE IN-Klausel STORE IN (ts01,ts02) Optional in welchen Tablespaces sollen Partitionen erstellt werden Tablespace muss spätestens beim Einfügen der Daten existieren 39
39 SQL> CREATE TABLE order_part ( orderid NUMBER(10) PRIMARY KEY, clientid NUMBER(10) REFERENCES clients (clientid), orderdate DATE, deliverydate DATE, orderstatus CHAR(1) REFERENCES status (statusid) ) PARTITION BY RANGE (orderdate) INTERVAL (NUMTOYMINTERVAL(3,'MONTH')) STORE IN (ts01,ts02) ( PARTITION q1_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts01, PARTITION q2_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts02 ); 40
40 Erstellung bei existierender Auftragstabelle mit Range-Partitionierung SQL> ALTER TABLE order_part SET INTERVAL (NUMTOYMINTERVAL(3,'MONTH')); ALTER TABLE order_part SET STORE IN (ts01,ts02); Genauso lassen sich auch Partitionsbreiten und zu verwendende Tablespaces anpassen Achtung: Wirkt sich nur auf zukünftige Partitionen aus. 41
41 Beispiel: Einfügung neuer Daten SQL> SELECT partition_name AS pname, high_value, tablespcace_name AS tsname, interval FROM user_tab_partitions WHERE table_name = 'ORDER_PART'; Status quo: PNAME HIGH_VALUE TNAME INTERVAL Q1_15 TO_DATE(' :00:00' TS01 NO Q2_15 TO_DATE(' :00:00' TS02 NO 42
42 Beispiel: Einfügung neuer Daten SQL> INSERT INTO order_part (orderid, orderdate) VALUES (500001, TO_DATE (' ', 'DD.MM.YYYY')); 1. Änderung: PNAME HIGH_VALUE TNAME INTERVAL Q1_15 TO_DATE(' :00:00' TS01 NO Q2_15 TO_DATE(' :00:00' TS02 NO SYS_P501 TO_DATE(' :00:00' TS01 YES Spalte INTERVAL gibt Auskunft über manuell und automatisch erzeugte Partition 43
43 Beispiel: Einfügung neuer Daten SQL> INSERT INTO order_part (orderid, orderdate) VALUES (500002, TO_DATE (' ', 'DD.MM.YYYY')); 2. Änderung: PNAME HIGH_VALUE TNAME INTERVAL Q1_15 TO_DATE(' :00:00' TS01 NO Q2_15 TO_DATE(' :00:00' TS02 NO SYS_P501 TO_DATE(' :00:00' TS01 YES SYS_P502 TO_DATE(' :00:00' TS01 YES Neue Partition wird mit systemgenerierten Namen angelegt Keine Vorgabe aber nachträgliches Ändern möglich 44
44 Beispiel: Einfügung neuer Daten SQL> INSERT INTO order_part (orderid, orderdate) VALUES (500003, TO_DATE (' ', 'DD.MM.YYYY')); ROLLBACK; 3. Änderung: PNAME HIGH_VALUE TNAME INTERVAL Q1_15 TO_DATE(' :00:00' TS01 NO Q2_15 TO_DATE(' :00:00' TS02 NO SYS_P501 TO_DATE(' :00:00' TS01 YES SYS_P503 TO_DATE(' :00:00' TS02 YES SYS_P502 TO_DATE(' :00:00' TS01 YES Bei einem Rollback bleibt eine automatisch erzeugte Partition bestehen 45
45 Beispiel: Einfügung neuer Daten bei einem Datensatz jenseits der nächsten anzulegenden Partition, werden nicht alle dazwischen liegenden Partitionen angelegt, sondern nur die eine Partition 2. Änderung: PNAME HIGH_VALUE TNAME INTERVAL Q1_15 TO_DATE(' :00:00' TS01 NO Q2_15 TO_DATE(' :00:00' TS02 NO SYS_P501 TO_DATE(' :00:00' TS01 YES SYS_P502 TO_DATE(' :00:00' TS01 YES Bei Bedarf wird diese automatisch, ohne physisches Bewegen der Zeilen und ohne Invalidierung globaler Indizes, gesplittet 3. Änderung: PNAME HIGH_VALUE TNAME INTERVAL Q1_15 TO_DATE(' :00:00' TS01 NO Q2_15 TO_DATE(' :00:00' TS02 NO SYS_P501 TO_DATE(' :00:00' TS01 YES SYS_P503 TO_DATE(' :00:00' TS02 YES SYS_P502 TO_DATE(' :00:00' TS01 YES 46
46 Automatisiert lediglich das Erstellen >neuer< Partitionen Alte Partitionen können nicht automatisiert gelöscht werden Verwaltung >alter< Partitionen obliegen weiterhin dem Administrator Manuelles Erstellen von Partitionen nicht mehr möglich Deaktivieren der automatischen Partitionserstellung möglich SQL> ALTER TABLE order_part SET INTERVAL(); 47
47
48 Informationen sind nach Gebieten oder sonstigen ungeordneten Wertelisten eingeteilt Relativ unveränderlich Kriterium wird in Abfragen häufig eingeschränkt Lässt sich gut mit virtuellen Spalten kombinieren 49
49 Beispiel: Produkttabelle SQL> CREATE TABLE products_part ( prodid NUMBER(10) PRIMARY KEY, pgrid NUMBER(10), productname VARCHAR(255), pricebuy NUMBER (10,2), pricesale NUMBER (10,2), pgrid_2 VARCHAR(2) AS (SUBSTR(TO_CHAR(pgrid),1,2)) ) PARTITION BY LIST (pgrid_2) ( PARTITION p01 VALUES ('10','11','12','13','14','15') TABLESPACE ts01, PARTITION p02 VALUES ('16','17','18','19') TABLESPACE ts02, PARTITION p03 VALUES ('20','21','22','23','24','25','26') TABLESPACE ts03, PARTITION p04 VALUES ('27','28','29') TABLESPACE ts04, PARTITION p05 VALUES ('30','31','32','33','34','35') TABLESPACE ts01, PARTITION p_rest VALUES (DEFAULT) TABLESPACE ts04 ); 50
50 Beispiel: Produkttabelle Es können keine Spaltenkombinationen verwendet werden, sondern nur eine einzige Spalte PARTITION BY LIST (pgrid_2) Letzte Partition bildet die Rest-Partition und nimmt alle nicht explizit aufgeführten Daten auf PARTITION p_rest VALUES (DEFAULT) TABLESPACE ts04, 51
51 Beispiel: Produkttabelle Jeder Wert der vorkommen kann, sollte also auch zugewiesen werden Ohne Zuweisung oder DEFAULT-Partition Fehler: ORA-14400: inserted partition key does not map to any partition ORA-14400: Eingefügter Partitionsschlüssel kann keiner Partition zugeordnet werden Zusätzlichen Wert hinzufügen: SQL> ALTER TABLE products_part MODIFY PARTITION p05 ADD VALUES ('36'); 52
52 Partition Pruning Voraussetzung: Spalte oder Definitionsausdruck der virtuellen Spalte kommt in der Abfrage vor: SQL> SELECT * FROM products_part WHERE pgrid='201342'; Id Operation Name Pstart Pstop SELECT STATEMENT 1 PARTITION LIST ALL 1 6 * 2 TABLE ACCESS FULL PRODUCTS_PART Optimizer kann Partitionierung nicht berücksichtigen 53
53 Partition Pruning Voraussetzung: Spalte oder Definitionsausdruck der virtuellen Spalte kommt in der Abfrage vor: SQL> SELECT * FROM products_part WHERE SUBSTR(TO_CHAR(pgrid),1,2)='20'; Id Operation Name Pstart Pstop SELECT STATEMENT 1 PARTITION LIST SINGLE KEY KEY * 2 TABLE ACCESS FULL PRODUCTS_PART Optimizer berücksichtigt Filterbedingung Typische Abfrageform entscheidet über Partitionierung 54
54
55 Es lassen sich keine sinnvollen Wertelisten oder Wertebereich finden Empfehlung: es sollten immer zwei oder mehr Tabellen - auf ihren jeweiligen Join-Spalten gleich partitioniert werden Hash-Partitionierung vor allem auf Fremdschlüsselspalten und den jeweils übergeordneten Primärschlüssel- oder Unique-Spalten Nutzen: Partitionsweise Joins kein Partition Pruning Trotzdem erheblicher Vorteil für Optimizer bei großen Tabellen 56
56 Merkmale: Interne Hash-Funktion übernimmt die Zuordnung Anzahl der Partitionen kann bestimmt werden Anzahl der Partitionen sollte ein Vielfaches von 2 sein Nicht Absehbar welcher Spaltenwert in welcher Partition gespeichert wird Macht löschen oder archivieren von Hash-Partitionen wertlos Spalten mit möglichst hoher Selektivität - Optimalfall eindeutige Werte - gewährleisten eine homogene Verteilung 57
57 Beispiel: Kunden- und Auftragstabelle SQL> CREATE TABLE clients_part ( clientid NUMBER(10) PRIMARY KEY, title VARCHAR(5), firstname VARCHAR(50), lastname VARCHAR(50), birthday DATE, image BLOB ) PARTITION BY HASH (clientid) PARTITIONS 16 STORE IN (ts01,ts02,ts03,ts04); CREATE TABLE order_part ( orderid NUMBER(10) PRIMARY KEY, clientid NUMBER(10) REFERENCES clients_part (clientid), orderdate DATE, deliverydate DATE, orderstatus CHAR(1) REFERENCES status (statusid) ) PARTITION BY HASH (clientid) PARTITION 16 STORE IN (ts01,ts02,ts03,ts04); CREATE INDEX order_part_clientid ON order_part (clientid) LOCAL; 58
58 Beispiel: Kunden- und Auftragstabelle Beim Join eines einzelnen Kunden-Datensatzes an die zugehörigen Auftragsdaten muss nun nicht auf die komplette Tabelle zugegriffen werden, sondern nur auf die passende Auftragspartition bzw. den zugehörigen Index hier Partition 7: SQL> SELECT p.firstname, p.lastname, a.orderid, a.orderstatus FROM clients_part p, order_part a WHERE p.clientid = a.clientid AND p.clientid = ; Id Operation Name Pstart Pstop SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS BY GLOBAL INDEX ROWID CLIENTS_PART 7 7 * 3 INDEX UNIQUE SCAN SYS_C PARTITION HASH SINGLE TABLE ACCESS BY GLOBAL INDEX ROWID ORDER_PART 7 7 * 6 INDEX RANGE SCAN ORDER_PART_PERSID
59
60 Equi-Partitionierung abhängiger Tabellen Seit 11g verfügbar Baut auf eine per Fremdschlüssel übergeordnete Tabelle auf, welche bereits partitioniert ist Keine NULL-Werte Alle betreffenden Fremdschlüsselspalten müssen mit NOT-NULL-Constraints versehen sein Andernfalls Fehler: ORA-14652: reference partitioning foreign key is not supported ORA-14652: Refernz-Partitionierungs-Fremdschlüssel wird nicht unterstützt Beispiel: Auftrags- und Positionstabelle Häufige Joins zwischen beiden Tabellen machen eine deckungsgleiche Partitionierung sinnvoll 62
61 Beispiel: Auftrags- und Positionstabelle Bei der Definition muss der Name des Fremdschlüssel-Constraints angegeben werden CREATE TABLE order_part ( orderid NUMBER(10) PRIMARY KEY, clientid NUMBER(10) REFERENCES clients (clientid), orderdate DATE, deliverydate DATE, orderstatus CHAR(1) REFERENCES status (statusid) ) PARTITION BY RANGE (orderdate) ( PARTITION q1_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts01, PARTITION q2_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts02, PARTITION q3_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts03, PARTITION q4_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts04, PARTITION q1_16 VALUES LESS THAN (MAXVALUE) TABLESPACE ts01 ); CREATE TABLE positions_part ( orderid NUMBER(10) NOT NULL, posid NUMBER(10) NOT NULL, prodid NUMBER(10) REFERENCES products (prodid), quantity NUMBER(10,2), unitprice NUMBER(7,2), CONSTRAINT fk_positions_part_order FOREIGN_KEY (orderid) REFERENCES order_part (orderid) ) PARTITION BY REFERENCE (fk_positions_part_order); 63
62 Beispiel: Auftrags- und Positionstabelle Auftrags- und Positionstabelle sind jetzt Equi-Partitioniert Jede Umpartitionierung (Hinzufügen, Löschen, Splitten oder Verschmelzen) der Auftragstabelle vererbt sich automatisch auf die Positionstabelle Administrator muss nicht mehr auf konsistente Partitionierung achten Partitionen der Positionstabelle werden standardmäßig in den selben Tablespace wie die zugehörigen Partitionen der Auftragstabelle abgelegt Eigenständiges Umpartitionieren der Positionstabelle jedoch nicht mehr möglich 64
63 kann sich beliebig breit und tief verzweigen Weitere Tabelle, die per Fremdschlüssel von der Positionstabelle abhängt Weitere Tabellen, die per Fremdschlüssel von der Auftragstabelle abhängen Umpartitionierungen der obersten Tabelle kaskadieren auf alle direkt oder indirekt abhängigen Tabellen durch Übergeordnete Intervall-Partitionierte Tabelle mit 12c Bis 11gR2 nicht möglich Minimiert den Verwaltungsaufwand auf ein Minimum INTERVAL-REFERENCE-Partitioning 65
64 Beispiel: Auftrags- und Positionstabelle Ausnutzung der Equi- bzw. Reference-Partitionierung beim Join SQL> SELECT * FROM order_part a, positions_part p WHERE a.orderid = p.orderid AND a.orderdate BETWEEN TO_DATE(' ','DD.MM.YYYY') AND TO_DATE(' ','DD.MM.YYYY'); Id Operation Name Pstart Pstop SELECT STATEMENT 1 PARTITION RANGE ITERATOR NESTED LOOPS * 3 TABLE ACCESS FULL ORDER_PART 3 4 * 4 TABLE ACCESS FULL POSITIONS_PART Optimizer beschränkt sich auf Partition 3 und 4 durch Reference übernommen für die Positions-Tabelle 66
65
66 Verknüpfung zweier Partitionierungsarten Sinnvoll bei sehr großen Tabellen In erster Instanz Range- oder List-Partition In zweiter Instanz Subpartitionen nach Range-, List- oder Hash-Methode Innerhalb jeder Partition Jede Subpartition ist speichertechnisch unabhängig Kann mit eigenen Speicherparametern ausgestattet sein Administrative Operationen Hinzufügen, Löschen, Splitten, Verschmelzen oder physisches Verschieben für jede Subpartition verfügbar Optimierungsmöglichkeiten Partition-Pruning und partitionsweise Joins für jede Subpartition verfügbar 68
67 Beispiel: Kunden- und Auftragstabelle Generell inkompatibel aber durch Subpartitionierung nach clientid lassen sich partitionsweise Joins nutzen CREATE TABLE order_part SQL> CREATE TABLE clients_part ( clientid NUMBER(10) PRIMARY KEY, title VARCHAR(5), firstname VARCHAR(50), lastname VARCHAR(50), birthday DATE, image BLOB ) PARTITION BY HASH (clientid) PARTITIONS 16 STORE IN (ts01,ts02,ts03,ts04); ( orderid NUMBER(10) PRIMARY KEY, clientid NUMBER(10) REFERENCES clients (clientid), orderdate DATE, deliverydate DATE, orderstatus CHAR(1) REFERENCES status (statusid) ) PARTITION BY RANGE (orderdate) SUBPARTITION BY HASH (clientid) SUBPARTITIONS 16 STORE IN (ts01,ts02,ts03,ts04) ( PARTITION q1_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts01, PARTITION q2_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts02, PARTITION q3_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts03, PARTITION q4_15 VALUES LESS THAN (TO_DATE(' ','DDMMYYYY')) TABLESPACE ts04, PARTITION q1_16 VALUES LESS THAN (MAXVALUE) TABLESPACE ts01 ); 69
68 Beispiel: Kunden- und Auftragstabelle Optimizer erkennt, dass er nur die passenden HASH-Partitionen der Client- Tabelle mit den 5 passenden Subpartition der Orders-Tabelle joinen muss SQL> SELECT p.firstname, p.lastname, a.orderid, a.orderstatus FROM clients_part p, order_part a WHERE p.clientid = a.clientid AND p.clientid = ; Id Operation Name Pstart Pstop SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS BY GLOBAL INDEX ROWID CLIENTS_PART 7 7 * 3 INDEX UNIQUE SCAN SYS_C PARTITION RANGE ALL PARTITION HASH SINGLE ORDER_PART 7 7 * 6 TABLE ACCESS FULL ORDER_PART
69
70 Indizes partitionieren Partitionierte Indizes lassen sich für partitionierte und nicht-partitionierte Tabellen anlegen Partitionierte Tabellen lassen sich auch mit nicht-partitionierten Indizes versehen B*Tree als auch Bitmap-Indizes können verwendet werden Einschränkung: nicht partitionierte Tabellen und partitionierte Bitmap-Indizes nicht möglich Bitmap-Indizes müssen nach gleichen Kriterien partitioniert sein wie die zugeordnete partitionierte Tabelle 72
71 Typen Eigenschaftspaare Lokale und Globale Indizes Prefixed und Non-Prefixed Indizes Local prefixed Index Local non-prefixed Index Global prefixed Index Global non-prefixed Index nicht unterstützt 73
72 Lokale Indizes Index ist lokal, wenn er dieselben Partitionierungskriterien wie die zugrunde liegende Tabelle aufweist Equi-Partitionerung 1:1 Zuordnung zwischen Tabellen- und Indexpartition Partitionsänderungen der Tabelle werden 1:1 auf entsprechenden Index übertragen Lokaler Index wird bei allen Operationen auf partitionierten Tabellen automatisch mitgeführt Besonders geeignet für Rolling-Window Erstellung mit LOCAL 74
73 Globale Indizes Index ist global, wenn er eigene von der Tabelle unabhängige Partitionierungskriterien aufweist oder überhaupt nicht partitioniert ist Operationen auf der zugeordneten partitionierten Tabelle werden nicht direkt übertragen Zugriffe auf eine Tabellenpartition können mehrere Indexpartitionen umfassen und umgekehrt ausschließlich Range- oder Hash-Index-Partitionierung möglich List- oder Composite-Index-Partitionierung nicht möglich Erstellung mit GLOBAL 75
74 Prefixed Indizes Index ist prefixed, wenn die für die Partitionierung benutzten Spalten selbst auch indiziert sind und außerdem in der Liste der Indexspalten ganz vorne stehen Non-Prefixed Indizes Index ist non-prefixed, wenn die Spalte nicht ganz vorne in der Liste der Indexspalten steht oder gar nicht unter den Indexspalten wäre 76
75 Local Prefixed Indizes Einfache Handhabung durch Equi-Partitionierung Nach SPLIT, MOVE, DROP kein Neuaufbau des Index notwendig Optimizer profitiert von 1:1 Zuordnung Tabellen- und Indexpartition Können als Unique-Index definiert werden SQL> CREATE [UNIQUE] INDEX order_part_datum_status ON order_part (orderdate, orderstatus) LOCAL; 78
76 Local Non-Prefixed Indizes Können nur unter bestimmten Umständen als Unique-Index verwendet werden Schlüsselwerte können in mehreren Tabellenpartitionen vorkommen Weniger Möglichkeiten für den Optimizer SQL> CREATE [UNIQUE] INDEX order_part_status_datum ON order_part (orderstatus, orderdate) LOCAL; CREATE INDEX order_part_deliverydate ON order_part (deliverydate) LOCAL; 79
77 Global Prefixed Indizes Können als Unique-Index definiert werden Häufig für Archivdaten benötigt Indizierung nach anderem Kriterium als Datum, welches meist Partitionierungsspalte ist Ausschließlich Range- oder Hash-Partitionierung Neuaufbau bei Partitionsänderungen der Tabelle ALTER TABLE UPDATE GLOBAL INDEXES Wenig Möglichkeiten für den Optimizer SQL> CREATE [UNIQUE] INDEX pk_order_part ON order_part (orderid) GLOBAL; 80
78 - 12c - Fazit
79 Online-Move-Partition MOVE PARTITION ONLINE DML auf die Tabelle während dem MOVE erlaubt Interval-Reference-Partitioning Kombination endlich verfügbar Reference-Partitioning Vererbung der von TRUNCATE und EXCHANGE PARTITION Operationen kaskadierend auf Child-Tabellen SPLIT und MERGE Kommando Erweiterung mit einem einzigen Befehl mehrere (Sub-)Partitionen verarbeiten Indexerzeugung Mehr Flexibilität lokale und globale Indizes auf eine Untermenge von Partitionen der Tabelle erzeugen INDEXING ON / OFF pro Tabelle und / oder pro Partition 83
80 Multi-column list partitioning Auto-list partitioning Interval Subpartitioning Read only partitions Alter table modify online 84
81 Mächtiges Werkzeug zur Optimierung von Zugriffen und Verwaltung (sehr) großer Datenbanken Weiterführende Themen: ILM und Advanced Compression Hot and Cold Data Oracle Partitionierung kann jeder nutzen mit Enterprise Edition und Partitioning Option Durch Transparenz für jede Applikation direkt einsetzbar Einziger Nachteil: Zusätzliche Kosten durch Partitioning Option Flashback Data Archive und Unified Auditing verwenden automatisch Partitioning auch in der SE (allerdings keine Lizenz notwendig) 85
82 Zeit für Ihre Fragen. Kontakt Sebastian Winkler Fon: CarajanDB GmbH Mobil: Siemensstraße 25 Twitter: sjw Erftstadt Blog: 86
Partitionierung für mehr Performance
Partitionierung für mehr Performance Sebastian Winkler CarajanDB GmbH Erftstadt Schlüsselworte Oracle Partitioning, Data Warehouse, VLDB, Archivierung, Zugriffsoptimierung, Range, List, Hash Einleitung
MehrPartitioning Technik und Anwendungsbeispiele
Partitioning Technik und Anwendungsbeispiele Klaus Reimers ORDIX AG Köln Schlüsselworte: Range Partitioning, Hash Partitioning, List partitioning, System Partitioning, Interval Partitioning, Virtual Column
MehrPartitioning mit Oracle Text 9i
Partitioning mit Oracle Text 9i Autor: Andreas Habl, msg systems ag DOAGNews Q1_2005 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung, des Nachdrucks,
MehrPartitionierung Indizes und Statistiken
Partitionierung Indizes und Statistiken DOAG Konferenz + Ausstellung 18.11.2014 Nürnberg Klaus Reimers info@ordix.de www.ordix.de Agenda Einführung Arten der Partitionierung Fragestellungen Indizes Indextypen
MehrOracle Database 12c Was Sie immer schon über Indexe wissen wollten
Oracle Database 12c Was Sie immer schon über Indexe wissen wollten Marco Mischke, 08.09.2015 DOAG Regionaltreffen B* Indexe - Aufbau 0-Level Index A-F G-Z 1-Level Index A-F G-Z 2-Level Index A-F G-M N-Z
MehrOracle 9i Einführung Performance Tuning
Kurs Oracle 9i Einführung Performance Tuning Teil 3 Der Optimizer Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 16 Seite 1 von 16 1. auf Tabellen 2. 3. Optimizer 4. Optimizer RBO 5. Optimizer CBO 6.
MehrIndexstrategien im Data Warehouse
Indexstrategien im Data Warehouse Reinhard Mense areto consulting gmbh Köln Schlüsselworte Business Intelligence, Data Warehouse, Bitmap Index, B*Tree Index, Partial Index, Star Schema, Snowflake Schema,
MehrAndrea Held. Motivation ILM: Definition und Strategien Lösungen für Oracle Datenbanken. Empfehlungen
Andrea Held Motivation ILM: Definition und Strategien Lösungen für Oracle Datenbanken Partitionierung Komprimierung ILM Assistant Flashback Data Archive Empfehlungen 1 Datenwachstum Wachsende Kosten Schlechtere
MehrOracle 9i Einführung Performance Tuning
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.
MehrPartitionierung Indizes und Statistiken
Partitionierung Indizes und Statistiken Klaus Reimers ORDIX AG Paderborn Schlüsselworte Local index, global index, prefixed index, nonprefix index, hash partitioned index, unusable index, orphaned index,
MehrRelationales Datenbanksystem Oracle
Relationales Datenbanksystem Oracle 1 Relationales Modell Im relationalen Modell wird ein relationales Datenbankschema wie folgt beschrieben: RS = R 1 X 1 SC 1... R n X n SC n SC a a : i=1...n X i B Information
MehrPartitionierungsstrategien für Data Vault
ierungsstrategien für Data Vault Dani Schnider Trivadis AG Zürich/Glattbrugg, Schweiz Einleitung Während das Laden von Tabellen in Data Vault in der Regel nicht zeitkritisch ist, stellt uns das effiziente
MehrPhysische Datenbankdefinition in. Arthur Bauer
Physische Datenbankdefinition in Arthur Bauer Inhalt Cluster Index-Cluster Hash-Cluster Vor- und Nachteile Index-Organisierte Tabelle (IOT) Partitionierung STORAGE-Klausel in DDL Indexstrukturen Oracle
MehrOptimiertes Laden in die F-Fakten-Tabelle des SAP BW
Optimiertes Laden in die F-Fakten-Tabelle des SAP BW Schlüsselworte SAP BW Index unusable. Einleitung Jörn Bartels Oracle München Mit Oracle Database 11g Release 2 kann das Laden der F-Fakten Tabelle in
MehrPartitioning in der Datenbank 12c: Was ist neu?
Partitioning in der Datenbank 12c: Was ist neu? Jan Ott, Trivadis AG Die neuen Features sollen die tägliche Wartung der Datenbank vereinfachen, die Verfügbarkeit erhöhen und die Performance verbessern
MehrÜbersicht der wichtigsten MySQL-Befehle
Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit
MehrSeminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.
Seminar 2 SQL - DML(Data Manipulation Language) und DDL(Data Definition Language) Befehle. DML Befehle Aggregatfunktionen - werden auf eine Menge von Tupeln angewendet - Verdichtung einzelner Tupeln yu
MehrSQL. Datendefinition
SQL Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer oder logischer Natur sein. Das folgende Kapitel beschäftigt sich mit der
MehrErzeugen von Constraints
Erzeugen von Constraints Was sind Constraints? Durch Constraints werden Regeln auf einem bestimmtem Tabellen-Level erzwungen. Die folgenden Constraint-Typen sind in Oracle integriert: NOT NULL UNIQUE Key
MehrMySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.
MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt
MehrPartitionieren Sie Ihr Data Warehouse!
Partitionieren Sie Ihr Data Warehouse! Beat Flühmann Trivadis AG Zürich (Schweiz) Schlüsselworte: BI, DWH, Partitionierung, phys. Modellierung Einleitung Die Technik der Partitionierung ist schon seit
MehrReference Partitioning in der Praxis
Reference Partitioning in der Praxis Dr. Frank Haney Consultant Jena Schlüsselworte: Oracle Database, Manageability, Partitionierung Partitionierung von Tabellen Die Partitionierung gehört zur physischen
MehrSQL structured query language
Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query
MehrAuf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13
Auf einen Blick Vorwort... 13 Teil 1 Vorbereitung Kapitel 1 Einleitung... 17 Kapitel 2 SQL der Standard relationaler Datenbanken... 21 Kapitel 3 Die Beispieldatenbanken... 39 Teil 2 Abfrage und Bearbeitung
MehrOracle 10g Einführung
Kurs Oracle 10g Einführung Teil 5 Einführung Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 16 Seite 1 von 16 Agenda 1 Tabellen und Views erstellen 2 Indizes
MehrAuf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13
Auf einen Blick Vorwort 13 Teil 1 Vorbereitung Kapitel 1 Einleitung 17 Kapitel 2 SQL - der Standard relationaler Datenbanken 21 Kapitel 3 Die Beispieldatenbanken 39 Teil 2 Abfrage und Bearbeitung Kapitel
MehrDatenbank und Tabelle mit SQL erstellen
Datenbank und Tabelle mit SQL erstellen 1) Übung stat Mit dem folgenden Befehlen legt man die Datenbank stat an und in dieser die Tabelle data1 : CREATE DATABASE stat; USE stat; CREATE TABLE data1 ( `id`
MehrInhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15
Vorwort..................................................... 13 Kapitel 1 Einleitung.......................................... 15 Kapitel 2 SQL der Standard relationaler Datenbanken... 19 2.1 Die Geschichte................................
MehrDATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER
DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.
MehrKapitel 7: Referentielle Integrität
Kapitel 7: Referentielle Integrität Im Allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen (IB) erfüllen. Integritätsbedingungen
MehrFlashback mal sieben. DOAG Konferenz , Nürnberg. Klaus Reimers
Flashback mal sieben DOAG Konferenz 15.11.2011, Nürnberg Klaus Reimers info@ordix.dede www.ordix.de Agenda Flashback Query Flashback Query Versions Between Flashback Table Flashback Table Drop Flashback
MehrDatenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin
Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,
MehrInhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15
Vorwort 13 Kapitel 1 Einleitung 15 Kapitel 2 SQL-der Standard relationaler Datenbanken... 19 2.1 Die Geschichte 19 2.2 Die Bestandteile 20 2.3 Die Verarbeitung einer SQL-Anweisung 22 2.4 Die Struktur von
MehrDatenschutz: Zugriffsrechte in SQL
12. Datenschutz: Zugriffsrechte in SQL 12-1 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt Datenschutz: Zugriffsrechte in SQL 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten
MehrEs geht also um die sogenannte SQL- Data Definition Language.
In diesem Abschnitt werden wir uns die SQL Befehle ansehen, mit denen ein sogenanntes Datenbankschema angelegt, gepflegt und auch wieder gelöscht werden kann. Es geht also um die sogenannte SQL- Data Definition
MehrGlobale Statistiken im Oracle Data Warehhouse
Globale Statistiken im Oracle Data Warehhouse Dani Schnider Principal Consultant 29. Januar 2012 Aktuelle und vollständige Optimizer-Statistiken sind Voraussetzung für die Ermittlung von guten Execution
MehrIn diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.
1 In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. Zunächst stellt sich die Frage: Warum soll ich mich mit der Architektur eines DBMS beschäftigen?
MehrÜbung PL/SQL Trigger Lösungen
Übung PL/SQL Trigger Lösungen 1) Gebe das aktuelle Datum aus. Wofür steht dual? Ändere das Datum für Deine aktuelle Session auf das Format Jahr (4 Stellen) Monat (2 Stellen) Tag (2 Stellen)[Leerzeichen]Stunde
MehrNeue Features Oracle Database 12.2 Wann denn endlich?
Neue Features Oracle Database 12.2 Wann denn endlich? DOAG 2017 Datenbank Dierk Lenz Erfolgreich seit 1996 am Markt Firmensitz: Burscheid (bei Leverkusen) Beratung, Schulung und Betrieb/Fernwartung rund
MehrEs geht also im die SQL Data Manipulation Language.
1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.
MehrNutzung der Oracle Database InMemory Option für SAP BW
Nutzung der Oracle Database InMemory Option für SAP BW Schlüsselworte Oracle, SAP-BW, InMemory, Star-Schema. Jörn Bartels Oracle München Einleitung In SAP BW wurde bisher ein erweitertes Snow Flake Schema
MehrIndexbasiertes SQL Tuning
Indexbasiertes SQL Tuning Eine Einführung Sebastian Wittig Systementwickler merlin.zwo InfoDesign GmbH & Co. KG 76228 Karlsruhe Spitzenleistung heißt, sich auf seine Stärken zu konzentrieren. merlin.zwo
MehrEinführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten
Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem
MehrAutomatisierte Datenmigration mit dynamischen SQL
Automatisierte Datenmigration mit dynamischen SQL Rolf Wesp Consultant Rolf.Wesp@trivadis.com Düsseldorf, 27. Oktober 2009 Baden Basel Bern Brugg Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br.
MehrOracle Flashback. in der Praxis Dr. Frank Haney 1
Oracle Flashback in der Praxis 15.11.2006 Dr. Frank Haney 1 Benutzerfehler Benutzerfehler stellen eine große Herausforderung für den DBA dar. Solche sind z.b.: Versehentliches oder böswilliges Löschen
Mehr3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7
1 Data Definition Language (DDL)... 2 1.1 Tabellen erstellen... 2 1.1.1 Datentyp...... 2 1.1.2 Zusätze.... 2 1.2 Tabellen löschen... 2 1.3 Tabellen ändern (Spalten hinzufügen)... 2 1.4 Tabellen ändern
MehrLaden von Data Marts auch mal komplex DOAG BI, 9. Juni 2016 Dani Schnider, Trivadis AG
Laden von Data Marts auch mal komplex DOAG BI, 9. Juni 2016 Dani Schnider, Trivadis AG BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA
MehrSQL: statische Integrität
SQL: statische Integrität.1 SQL: statische Integrität Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen erfüllen. Integritätsbedingungen
MehrÜbung 01 Tabellen erstellen
UEB-01-1 Übung 01 Tabellen erstellen Die folgende Musterrechnung dokumentiert eine Miniwelt "Rechnung" in einer Firma. 1. Welche Objekte und Beziehungen lassen sich daraus ableiten? 2. Erstellen Sie ein
MehrErzeugung und Veränderung von Tabellen
Datenbanken - Objekte Erzeugung und Veränderung von Tabellen Objekt Tabelle View Sequence Index Synonym Basiseinheit zum Speichern; besteht aus Zeilen und Spalten; Logische Repräsentation; kann Teilmengen
MehrDatenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs])
Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Hochschule für Technik, Wirtschaft und Kultur Leipzig 06.06.2008 Datenbanken II,Speicherung und Verarbeitung großer Objekte
MehrAnwendungsentwicklung Datenbanken SQL. Stefan Goebel
Anwendungsentwicklung Datenbanken SQL Stefan Goebel SQL Structured Query Language strukturierte Abfragesprache von ANSI und ISO standardisiert deklarativ bedeutet was statt wie SQL beschreibt, welche Daten
MehrDOAG Regionaltreffen TABLE REORG. Klaus Reimers. Leiter Beratung & Entwicklung, ORDIX AG, Paderborn
DOAG Regionaltreffen TABLE REORG Klaus Reimers Leiter Beratung & Entwicklung, ORDIX AG, Paderborn kr@ordix.de Agenda Reorganisationsgründe - Extents - Blockfüllgrad - Migrated Rows Workarounds - Storage
MehrIm Folgenden möchten wir Ihnen einige Beispiele aufzeigen, wie ALTER TABLE gemäß SQL92 verwendet wird:
ALTER TABLE BEFEHLE Im Folgenden möchten wir Ihnen einige Beispiele aufzeigen, wie ALTER TABLE gemäß SQL92 verwendet wird: Fügt die Spalte Adresse zur Tabelle Kunden hinzu: ALTER TABLE Kunden ADD COLUMN
MehrCassandra Query Language (CQL)
Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für
MehrAbfragen (Queries, Subqueries)
Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl
MehrOracle 9i Einführung Performance Tuning
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
MehrKurs. Teil 7 UNDO-Management. Universität Hannover. Agenda. Einführung. Nutzung RBS Oracle 9i Einführung Performance Tuning.
Kurs Oracle 9i Performance Tuning Teil 7 UNDO-Management Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 23 Seite 1 von 23 1. 2. Nutzung des Rollback Segments 3. 4. 5. Größe von UNDO- TBS berechnen 6.
MehrNützliche Oracle 12c Features für Data Warehousing DOAG BI, 8. Juni 2016 Dani Schnider, Trivadis AG
Nützliche Oracle 12c Features für Data Warehousing DOAG BI, 8. Juni 2016 Dani Schnider, Trivadis AG BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART
MehrIntroduction to Data and Knowledge Engineering. 6. Übung SQL
Introduction to Data and Knowledge Engineering 6. Übung SQL Aufgabe 6.1 Datenbank-Schema Buch PK FK Autor PK FK ISBN Titel Preis x ID Vorname Nachname x BuchAutor ISBN ID PK x x FK Buch.ISBN Autor.ID FB
MehrIT-Symposium 2008 05.06.2008
Selftuning Database Ein Traum oder Wirklichkeit Ralf Durben Oracle Deutschland GmbH www.hp-user-society.de 1 Die Arbeitswelt des Gestern, heute und morgen Früher Ein für wenige Datenbanken
MehrOracle Streams Doag Vortrag Claus Cullmann
Oracle Streams Doag Vortrag 27.10.11 Claus Cullmann Oracle Streams Doag Vortrag 27.10.11 Claus Cullmann Oracle Streams Doag Vortrag 27.10.11 Claus Cullmann Anwendungen Datenströme Überblick Oracle Streams
MehrFehlertoleranz und Robustheit von ETL-Prozessen Wie gestalten wir Abläufe möglichst widerstandsfähig. Christian Borghardt I BI Consultant
Fehlertoleranz und Robustheit von ETL-Prozessen Wie gestalten wir Abläufe möglichst widerstandsfähig Christian Borghardt I BI Consultant Über uns areto consulting gmbh Echter Business Intelligence Spezialist
MehrDatenbanken. Zusammenfassung. Datenbanksysteme
Zusammenfassung Datenbanksysteme Christian Moser Seite 1 vom 7 12.09.2002 Wichtige Begriffe Attribut Assoziation API Atomares Attribut Datenbasis DBMS Datenunabhängigkeit Datenbankmodell DDL DML DCL ER-Diagramm
Mehr1.1 Datenbanken Tabellen SQL und die Befehlseingabe Beispieldatenbank 36
Vorwort 11 1 Einleitung 15 1.1 Datenbanken 21 1.2 Tabellen 29 1.3 SQL und die Befehlseingabe 29 1.4 Beispieldatenbank 36 2 Am Anfang 38 2.1 Aufrufen der SQL-Eingabemaske 38 2.2 Schließen der SQL-Eingabemaske
MehrInhalt. 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index
Inhalt 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index 2. Indexverwendung Vergleich von B*Baum und Bitmap Steuerung der Indexverwendung Richtlinien für die Indizierung
MehrAufbau einer Oracle Datenbank
Aufbau einer Oracle Datenbank Eike Florian Petersen 29. Juni 2015 Inhaltsverzeichnis 1. Tablespaces 1.1 Konzept, Arten 1.2 Operationen 2. Arten von Dateien 2.1 Datendateien 2.2 Redolog-Dateien 2.3 Control-Dateien
MehrRavenDB, schnell und skalierbar
RavenDB, schnell und skalierbar Big Data & NoSQL, Aydin Mir Mohammadi bluehands GmbH & Co.mmunication KG am@bluehands.de Immer mehr Mehr Performance Mehr Menge Mehr Verfügbarkeit Skalierung http://www.flickr.com/photos/39901968@n04/4864698533/
MehrInhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung
Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,
MehrEinführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)
Einführung in SQL 1. Grundlagen Structured Query Language Viele Dialekte Unterteilung: i. DDL (Data Definition Language) ii. iii. DML (Data Modifing Language) DRL (Data Retrival Language) 1/12 2. DDL Data
MehrDatenbanken: Datenintegrität. www.informatikzentrale.de
Datenbanken: Datenintegrität Definition "Datenkonsistenz" "in der Datenbankorganisation (...) die Korrektheit der gespeicherten Daten im Sinn einer widerspruchsfreien und vollständigen Abbildung der relevanten
Mehr4.14.3 Bedingungen über Werte. 4.14.4 Statische Integrität. CHECK-Klausel
4.14.3 Bedingungen über Werte 4.14.4 Statische Integrität Zu jeder Tabelle werden typischerweise ein Primärschlüssel und möglicherweise weitere Schlüssel festgelegt (UNIQUE-Klausel). In jeder Instanz zu
MehrISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de
08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren
MehrReferenzielle Integrität SQL
Referenzielle Integrität in SQL aus Referential Integrity Is Important For Databases von Michael Blaha (Modelsoft Consulting Corp) VII-45 Referenzielle Integrität Definition: Referenzielle Integrität bedeutet
MehrSQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99
SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:
MehrBeispiel zur referentiellen Integrität
3. Der SQL-Standard 3.14. Integrität und Trigger Seite 1 Beispiel zur referentiellen Integrität CREATE TABLE T1( k1 NUMERIC NOT NULL PRIMARY KEY); CREATE TABLE T2( k2 NUMERIC NOT NULL PRIMARY KEY, k1 NUMERIC,
MehrDie Anweisung create table
SQL-Datendefinition Die Anweisung create table create table basisrelationenname ( spaltenname 1 wertebereich 1 [not null],... spaltenname k wertebereich k [not null]) Wirkung dieses Kommandos ist sowohl
MehrPostgreSQL unter Debian Linux
Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...
MehrTestklausur 1 Übungsaufgaben aus alten Datenbanken 1 Klausuren zum Data Science-Synchronisationsmodul Datenbanken WS 2016/17
Testklausur 1 Übungsaufgaben aus alten Datenbanken 1 Klausuren Aufgabe 1 10 = 5 + 5 Punkte) DDL Relationenmodell eer-diagramm /10) Gegeben sei das folgende SQL-DDL-Skript zur Generierung eines Oracle-Datenbankschemas:
Mehrinsert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle
Einführung in SQL insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle Quelle Wikipedia, 3.9.2015 SQL zur Kommunikation mit dem DBMS SQL ist
MehrOracle Datenbank 11g Advanced Compression Option
Oracle Datenbank 11g Advanced Compression Option DOAG Regionalgruppe Jena/Thüringen am 30. April 2008 Karin Patenge Oracle Deutschland GmbH karin.patenge@oracle.com Agenda Oracle
MehrOracle 12c: Migrationswege und Konzepte. Dierk Lenz
Oracle 12c: Migrationswege und Konzepte Dierk Lenz Einfache Migrationsverfahren 2 Was ist eine Migration? Neue Hardware oder Neues Betriebssystem oder Neue Oracle-Version Patch Set Update / Security Patch
MehrDatenbank Objekte (Tabellen, Segemente, Extents, Blöcke)
Datenbank Objekte (, Segemente,, Blöcke) 5. Juni 2007 Datenbank Objekte (, Segemente,, Blöcke) Datenbank Objekte (, Segemente,, Blöcke) Aufbau eines Datenblocks Zeilenverkettung und -verschiebung Freispeicherverwaltung
MehrTOAD und Performance Tuning
TOAD und Performance Tuning DOAG Regionaltreffen München / Südbayern Johannes Ahrends Herrmann & Lenz Services GmbH Agenda TOAD als Unterstützung für den DBA Performance Tuning mit TOAD Fragen & Antworten
MehrPartitionieren über Rechnergrenzen hinweg
Partitionieren über Rechnergrenzen hinweg Erkan Yanar erkan.yanar@linsenraum.de Blog: linsenraum.de/erkules Xing: www.xing.com/profile/erkan Yanar 24. November 2011 Was tun wenn: Daten übersteigen die
MehrIndex Rebuild. DOAG Konferenz , Nürnberg DOAG Konferenz , Nürnberg Martin Hoermann Martin Hoermann
Index Rebuild DOAG Konferenz 17.01.2011, Nürnberg DOAG Konferenz 17.11.2011, Nürnberg Martin Hoermann info@ordix.de Martin Hoermann www.ordix.de info@ordix.de www.ordix.de Eine kurze Geschichte der Zeit
MehrDieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.
Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,
MehrIndizes B+Bäume in Oracle. Jörg Winkler
Indizes B+Bäume in Oracle Vortragende: Conrad Kobsch Jörg Winkler Inhalt Allgemeines Aufbau / Eigenschaften von B+Bäumen Vorteile / Nachteile B+Baum-Indexe Kriterien für Indizes Anlegen eines Indizes Anfrageoptimierung
MehrPartitionierung im Data Warehouse mit ORACLE 11g und 12c. Reinhard Wahl DOAG Konferenz Nürnberg, 18.-20. November 2014
Partitionierung im Data Warehouse mit ORACLE 11g und 12c Reinhard Wahl DOAG Konferenz Nürnberg, 18.-20. November 2014 Wir fokussieren mit unseren Services die Herausforderungen des Marktes und verbinden
Mehr1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)
Erstellen einer Mitarbeiter-Datenbank 1 Erstellen einer Mitarbeiter-Datenbank Arbeitsauftrag Ziel der Übung Erstellen von Datenbanken mit Hilfe von SQL-Abfragen Aufgabe (1.) Erstellen Sie eine neue Datenbank
MehrDatenbankstatistiken im Griff mit DBMS_STATS. DOAG 2012 Konferenz + Ausstellung Nürnberg 21. November 2012
Datenbankstatistiken im Griff mit DBMS_STATS DOAG 2012 Konferenz + Ausstellung Nürnberg 21. November 2012 Herrmann & Lenz Services GmbH Herrmann & Lenz Solutions GmbH Erfolgreich seit 1996 am Markt Firmensitz:
MehrInhaltsverzeichnis. jetzt lerne ich
Inhaltsverzeichnis jetzt lerne ich Einführung 15 1 Erste Schritte 21 1.1 Datenbanken und Datenbank-Managementsysteme 21 1.2 Zugriff auf Datenbanken 22 1.3 Was der Großvater noch wusste... 22 1.4 Einordnung
MehrGliederung. 1) Speicherplatz-Zuordnung und -Verwaltung 2) Indizes 3) Explain Plan 4) Join-Operationen 5) Der Optimizer 6) Parallelisieren
Gliederung ) Speicherplatz-Zuordnung und -Verwaltung 2) Indizes 3) Explain Plan 4) Join-Operationen 5) Der Optimizer 6) Parallelisieren ) Speicherplatz-Zuordnung und -Verwaltung.) Tabellenspeicherung:
MehrDatenbanken SQL. Insert, Update, Delete, Drop. Krebs
Datenbanken SQL Insert, Update, Delete, Drop Krebs Inhalt 1. Datensätze einfügen: INSERT 2. Datensätze verändern: UPDATE 3. Datensätze löschen: DROP vs. DELETE Beispiel Datenbank Schule Klasse P_Klasse
MehrDie View von der View von der View PERFORMANTES SQL SCHREIBEN
Die View von der View von der View PERFORMANTES SQL SCHREIBEN Schlüsselworte SQL, Performance, Optimizer Uwe Embshoff Airpas Aviation AG Braunschweig Einleitung Es gibt viel Literatur zum Thema Oracle
MehrJohannes Ahrends CarajanDB GmbH CarajanDB GmbH
Johannes Ahrends CarajanDB GmbH Experten mit über 20 Jahren Oracle Erfahrung Firmensitz in Erftstadt bei Köln Spezialisten für Oracle Datenbank Administration Hochverfügbarkeit (RAC, Data Guard, Failsafe,
MehrWS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)
Vorlesung #3 SQL (Teil 1) Fahrplan Wiederholung/Zusammenfassung Relationales Modell Relationale Algebra Relationenkalkül Geschichte der Sprache SQL SQL DDL (CREATE TABLE...) SQL DML (INSERT, UPDATE, DELETE)
Mehr... Datenintegrität verwalten
13... Datenintegrität verwalten Lektion 13: Datenintegrität verwalten Ziele Ziele Nach dieser Lektion sollten Sie Folgendes können: Datenintegritäts-Constraints implementieren Datenintegritäts-Constraints
Mehr