Physischer DB-Entwurf

Ähnliche Dokumente
DB-Tuning. Prof. Dr. T. Kudraß 1

Dateiorganisation und Zugriffsstrukturen. Prof. Dr. T. Kudraß 1

Dateiorganisation und Zugriffsstrukturen

Gleichheitsanfrage vs. Bereichsanfrage

Anfrageverarbeitung. Einführung

Aufgabe 1: Verschachtelte Anfragen

Anfrageverarbeitung. Prof. Dr. T. Kudraß 1

Hash-Verfahren. Prof. Dr. T. Kudraß 1

SQL - Datenbankdesign - Aufbau

Aufgabe 1 Indexstrukturen

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Oracle 9i Einführung Performance Tuning

Listener: Bei Oracle erfolgt die Steuerung (konventionell) via listener.ora (Listener Konfiguration), tnsnames.ora (Client Konfiguration)

Datenbanken: Indexe. Motivation und Konzepte

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Finalklausur zur Vorlesung Datenbanksysteme I Wintersemester 2003/2004 Prüfer: Prof. R. Bayer, Ph.D. Datum: Zeit: 16.

Relationen-Algebra. Prof. Dr. T. Kudraß 1

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Tag 4 Inhaltsverzeichnis

Enrico Genauck IN04

Arbeit mit zusammengesetzten Datentypen

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs Datenbanksysteme. Von den Konzepten bis zur Anwendungsentwicklung ISBN:

Anfrageoptimierung Kostenabschätzung

Nutzung der Oracle Database InMemory Option für SAP BW

Es geht also im die SQL Data Manipulation Language.

Art der Info: Technische Background Info Teil 3 (April 2002)

Kapitel 3: Indices und Sichten

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

Datenbanken Implementierungstechniken SS2015

Art der Info: Technische Background Info Teil 2 (April 2002)

9 Auswertung von Anfrageoperatoren 9.1 Selektion

Query Languages (QL) Relationale Abfragesprachen/Relational

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Erzeugen von Constraints

Wiederholung VU Datenmodellierung

Universität Augsburg, Institut für Informatik Wintersemester 2008/2009 Prof. Dr. W. Kießling 03. Februar Semesterklausur

d.h. zu Definitions-Stelle eindeutiger Funktionswert x X! y Y : (x,y) f umgekehrt: (x 1,y), (x 2,y) f ist o.k. X Y f(x) = y

Erzeugung und Veränderung von Tabellen

Oracle Database 12c Was Sie immer schon über Indexe wissen wollten

Schlüssel. Definition: Ein Schlüssel (key) einer Relation r(r) ist eine Til Teilmenge K von R, so dass für je zwei verschiedene Tupeln t 1

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Logische Optimierung. Im Allgemeinen wird keine optimale Lösung erzielt, sondern nur eine Verbesserung. Logische Optimierung

Download:.../~rieche. gehalten am 2. Februar Stephan Rieche. Vortrag. Thema: Index Selection. von. Seminar Advanced Data Warehouse

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

Kapitel 10: Relationale Anfragebearbeitung

SQL Intensivpraktikum SS 2008

Views erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View?

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Anfragebearbeitung 2. Vorlesung Datenbanksysteme vom

Oracle 10g Einführung

Workstations. Server. Recovery Log. Database. SQL Queries. Query Processing Object Mgmt. Transaction Mgmt. Buffer Mgmt. I/O Layer

Datenbanksysteme. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2015/16.

7.3 Baum-Indexstrukturen

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Kap. 3 Relationenmodell mit relationaler Algebra

Optimiertes Laden in die F-Fakten-Tabelle des SAP BW

Einleitung 19. Teil I Einführung in Datenbanksysteme 25. Kapitel 1 Wozu Datenbanksysteme da sind 27

Datenbankoptimierung

SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit

Datenbanken II. Methodik zur Optimierung der Datenbanken. (Aissa Aarab)

Indexstrukturen in SQL

Data Warehousing. Relationale Datenbanken. Ulf Leser Wissensmanagement in der Bioinformatik

SQL 2. Ziele. Fortgeschrittene SQL-Konstrukte. Aggregatfunktionen revisited. Subqueries. Korrelierte Subqueries

Aggregatfunktionen in der Relationenalgebra?

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Inhaltsverzeichnis Vorwort zur vierten Auflage Vorwort zur dritten Auflage Vorwort zur zweiten Auflage Vorwort zur ersten Auflage Hinweise zur CD

Anfrageoptimierung Logische Optimierung

Inhalt. Datenbanken Vertiefung. Literatur und Quellen. Inhalt. Anfragebearbeitung. Nikolaus Augsten. Wintersemester 2013/14

The Underestimated Subquery Factoring Clause

Tag 4 Inhaltsverzeichnis

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung

Datenbanken zur Entscheidungsunterstützung - Data Warehousing. Prof. Dr. T. Kudraß 1

Anfragebearbeitung. Anfrage. Übersetzer. Ausführungsplan. Laufzeitsystem. Ergebnis

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

SQL: Weitere Funktionen

Datenbanken Grundlagen und Design

Oracle 10g Einführung

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

7. XML-Datenbanksysteme und SQL/XML

Seminar 1 SQL Abfragen DML. MatrNr Name Vorname Age Gruppe Schmidt Hans Meisel Amelie

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

Datenbanksysteme 2013

Matthias Schubert. Datenbanken. Theorie, Entwurf und Programmierung relationaler Datenbanken. 2., überarbeitete Auflage. Teubner

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

GROUP BY, HAVING und Sichten

WITH or WITHout you - Komfort-SQL in Oracle 12c Dr.-Ing. Holger Friedrich sumit AG

Kapitel 3: Datenbanksysteme

Vorlesung DBIS I (WS 2005/2006) Teil 4

SQL als Zugriffssprache

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #4. SQL (Teil 2)

Gliederung. 1) Speicherplatz-Zuordnung und -Verwaltung 2) Indizes 3) Explain Plan 4) Join-Operationen 5) Der Optimizer 6) Parallelisieren

Aufgabe 12.1: JDBC - Datenbankzugriff in Java

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

Transkript:

Physischer DB-Entwurf Prof. Dr. T. Kudraß 1 Überblick Ausgangslage: Konzeptuelles und externes Schema sind erstellt: ER Modell, Schemaverfeinerung und Definition von Sichten Nächster Schritt: Physischer Entwurf: Auswahl von Indexen, Clustering, Verfeinerung von konzeptuellem und externen Schemas (wenn notwendig), um die gewünschte Performance zu erzielen: Dazu erforderlich Analyse des Lastprofils: Die wichtigsten Anfragen und deren Häufigkeit Die wichtigsten Updates und deren Häufigkeit Die benötigte Performance für diese Anfragen und Updates Für jede Anfrage im Lastprofil: Auf welche Relationen wird zugegriffen? Welche Attribute werden zurückgegeben? Welche Attribute sind involviert in Selektion/Join Bedingungen? Wie selektiv werden diese Bedingungen wohl sein? Für jedes Update im Lastprofil: Welche Attribute sind beteiligt in Selektion/Join Bedingung? Wie selektiv sind diese Bedingungen wahrscheinlich? Typ des Updates (INSER T/DELE T E/UPDATE), und die betroffenen Attribute Prof. Dr. T. Kudraß 2

Zu treffende Entscheidungen Welche Indexe sollten angelegt werden? Welche Relationen sollten Indexe haben? Welche Attribute sollten Suchschlüssel im Index sein? Sollten mehrere Indexe auf einer Relation angelegt werden? Für jeden Index: Welche Art von Index sollte es sein? Geclustert oder nicht? Hash- oder Baumbasierter Index Dynamischer oder statischer Index Dicht- oder dünnbesetzter Index Sind Änderungen im konzeptuellen Schema erforderlich? Untersuche alternative normalisierte Schemas (es gibt mehrere Möglichkeiten einer Dekomposition in BCNF etc.) Sollten einige Dekompositionsschritte rückgängig gemacht werden, d.h. Umwandlung in eine niedrigere Normalform (Denormalisierung) Horizontale Partitionierung Replikation Views Prof. Dr. T. Kudraß 3 Auswahl von Indexen Ansatz: Untersuche die wichtigsten Queries Untersuche den besten Ausführungsplan mit den vorhandenen Indexen Falls ein besserer Plan möglich ist mit zusätzlichem Index, erzeuge diesen Vor dem Erzeugen eines Index muß auch der Einfluß von Updates im Lastprofil berücksichtigt werden Trade-Off (Abwägung): ½ Index beschleunigt Abfragen ½ Index verlangsamt Updates ½ Index braucht zusätzlichen Plattenplatz Prof. Dr. T. Kudraß 4

Regeln für Indexauswahl 1. Index benötigt? Indexe so auswählen, daß sie möglichst viele Queries unterstützen (wenn kein Bedarf auf Index verzichten) 2. Wahl des Suchschlüssels Attribute in einer WHER E-Klausel sind Kandidaten für Suchschlüssel eines Index Bedingungen mit exakter Wertübereinstimmung (exact match) verlangen Hash-Index Wertbereichsbedingungen (range query) verlangen Baum-Index ½ Clustering sinnvoll für Wertbereichs-Anfragen, auch nützlich bei Gleichheits-Anfragen, wenn Duplikate vorhanden sind 3. Clustering Nur ein Index kann pro Relation geclustert werden Auswahl entsprechend der wichtigen Queries, die am meisten von diesem Index profitieren können (Kriterium: Häufigkeit, Selektivität) Range Queries profitieren am meisten vom Clustering Prof. Dr. T. Kudraß 5 Auswahl eines Index (Forts.) 4. Mehr-Attribut-Suchschlüssel Suchschlüssel aus mehreren Attributen sollten untersucht werden, wenn eine WHER E-Klausel mehrere Bedingungen enthält Erlauben Index-Only Ausführungspläne (ohne Zugriff auf die eigentliche Relation) für wichtige Queries Wenn Range-Queries erwartet werden: Reihenfolge der Attribute im Suchschlüssel beachten, damit diese den Queries entspricht 5. Unterstützung von Join-Bedingungen B+ Baum i. allg. gut geeignet weil Unterstützung für Lookups und Range Queries ½ Geclusterter B+ Baum auf Join Spalten gut für Sort Merge Join Hash-Index in bestimmten Situationen gut: ½ Unterstützt Index Nested Loop Joins, Suchschlüssel enthält die Join-Spalten, Index auf der inneren Relation Prof. Dr. T. Kudraß 6

Beispiel 1 SELECT E.ename, D.mgr, Dept D WHERE D.dname= Toy AND E.dno=D.dno Hash-Index auf D.dname unterstützt Toy Selektion Damit wird Index auf D.dno nicht benötigt (weil die Tupel von Departments über den dname-index gelesen werden) Hash-Index auf E.dno erlaubt es, die matchenden Tupel der inneren Relation Emp für jedes selektierte Tupel der äußeren Relation Dept zu lesen Was wäre wenn WHERE enthalten würde:... AND E.age=25? Könnten Emp-Tupel lesen mit einem Index auf E.age, dann Join mit den Dept-Tupeln, die die dname Selektionsbedingung erfüllen. Vergleichbar mit der Strategie, die den E.dno Index verwendet Wenn ein E.age Index bereits kreiert wurde, gibt es bei dieser Query viel weniger Motivation einen zusätzlichen Index für E.dno anzulegen Prof. Dr. T. Kudraß 7 Beispiel 2 SELECT E.ename, D.mgr, Dept D WHERE E.sal BETWEEN 10000 AND 20000 AND E.hobby= Stamps AND E.dno=D.dno Emp muß die äußere Relation sein Damit ergibt sich ein Hash-Index auf D.dno. Welcher Index sollte auf Emp kreiert werden? B+ Baum auf E.sal ODER ein Index auf E.hobby könnte genutzt werden. Nur einer davon benötigt. Die Auswahl hängt von der Selektivität der Bedingungen ab ½ Daumenregel: Gleichheitsanfrage ist selektiver als Wertbereichsanfrage. Beide Beispiele zeigen: Auswahl der Indexe wird bestimmt durch die Ausführungspläne, die von einem Optimierer für eine Query angelegt werden Verständnis des Optimierers erforderlich! Prof. Dr. T. Kudraß 8

Beispiele für Clustering B+ Baum Index auf E.age kann genutzt werden, um die qualifizierten Tupel zu erhalten Wie selektiv ist die Bedingung? Ist der Index geclustert? Untersuche die GROUP BY Klausel Mit vielen Tupeln, die die Bedingung E.age > 10 erfüllen, kann die Verwendung eines E.age Index und die Sortierung der erhaltenen Tupel teuer werden Geclusterter E.dno Index kann besser sein! Lookup-Anfragen und Duplikate: Clustering auf E.hobby hilft! SELECT E.dno WHERE E.age>40 SELECT E.dno, COUNT (*) WHERE E.age>10 GROUP BY E.dno SELECT E.dno WHERE E.hobby= Stamps Prof. Dr. T. Kudraß 9 Clustering und Joins SELECT E.ename, D.mgr, Dept D WHERE D.dname= Toy AND E.dno=D.dno Clustering ist vor allem wichtig, wenn innere Tupel zugegriffen werden bei einem Index Nested Loop Join Innere Relation Emp, Emp.dno ist kein Schlüsselkandidat Index auf E.dno sollte geclustert sein (da Lookup auf dno wiederholt aufgerufen wird) Annahme, die WHERE-Klausel wäre wie folgt: WHERE E.hobby= Stamps AND E.dno=D.dno Sort Merge Join sinnvoll, falls viele Angestellte Briefmarken sammeln, mit geclustertem Index auf D.dno (vermeidet das Sortieren der Abteilungen) Ungeclusterter Index nicht gut, weil alle Tupel gelesen werden (mit 1 I/O pro Tupel) Fazit: Cluster sind immer dann sinnvoll, wenn viele Tupel zurückgegeben werden (bei Lesen einzelner Tupel kein Unterschied) Prof. Dr. T. Kudraß 10

Mehr-Attribut-Indexschlüssel Um Emp-Tupel mit der Bedingung age=30 AND sal=4000 zu lesen, wäre ein Index auf <age,sal> besser als ein Index auf age oder ein Index auf sal. Solche Indexe heißen auch komposite oder zusammengesetzte Indexe Wahl des Indexschlüssel orthogonal zur Frage Clustering, dichter oder dünner Index etc. Wenn die Bedingung: 20<age<30 AND 3000<sal<5000: Geclusterter Baum-Index auf <age,sal> oder <sal,age> ist am besten Wenn die Bedingung: age=30 AND 3000<sal<5000: Geclusterter <age,sal> Index viel besser als <sal,age> Index! Komposite Indexe sind größer und werden öfter geändert Prof. Dr. T. Kudraß 11 Index-Only-Pläne Eine Reihe von Queries kann bearbeitet werden, ohne Zugriff auf die eigentlichen Tupel aus einer oder mehreren Relationen, wenn ein passender Index verfügbar ist. <E.dno> <E.dno,E.eid> Baum-Index! <E.dno> <E.dno,E.sal> Baum-Index! <E. age,e.sal> oder <E.sal, E.age> Baum! Ungeclustert SELECT D.mgr FROM Dept D, Emp E WHERE D.dno=E.dno SELECT D.mgr, E.eid FROM Dept D, Emp E WHERE D.dno=E.dno SELECT E.dno, COUNT(*) GROUP BY E.dno SELECT E.dno, MIN(E.sal) GROUP BY E.dno SELECT AVG(E.sal) WHERE E.age=25 AND E.sal BETWEEN 3000 AND 5000 Prof. Dr. T. Kudraß 12

Zusammenfassung Datenbank-Entwurf besteht aus verschiedenen Phasen: Anforderungsanalyse Konzeptueller Entwurf Schemaverfeinerung Physischer Entwurf Tuning Im allgemeinen sind mehrere Iterationen zwischen diesen Phasen notwendig, um einen Datenbank-Entwurf zu verfeinern. Entwurfsentscheidungen in einer Phase haben einen Einfluß auf andere Phasen Das Verständnis des Lastprofils der Anwendung und der Performance-Ziele ist wesentlich für die Entwicklung eines guten Entwurfs: Was sind die wichtigsten Anfragen und Updates? Welche Relationen und Attribute sind beteiligt? Prof. Dr. T. Kudraß 13 Zusammenfassung (Forts.) Indexe müssen eingerichtet werden, um wichtige Anfragen (und auch manche Updates) zu beschleunigen Pflege des Index schafft Overhead bei Updates auf Schlüsselfeldern Wähle Indexe, die viele Anfragen unterstützen wenn möglich Baue Indexe, um Index-Only-Strategien zu unterstützen Clustering ist wichtige Entscheidung: nur ein Index kann auf einer Relation geclustert werden Ordnung der Felder in einem zusammengesetzten Index kann wichtig sein Statische Indexe müssen periodisch reorganisiert werden (z.b. bei zu vielen Überlaufseiten) Statistiken müssen periodisch aktualisiert werden Prof. Dr. T. Kudraß 14