Prof. Dr. T. Kudraß1 DB-Tuning. Prof. Dr. T. Kudraß2 Tuning des konzeptuellen Schemas Das Design des konzeptuellen Schemas ist beeinflußt durch das Lastprofil.

Slides:



Advertisements
Ähnliche Präsentationen
ER-Datenmodell und Abfragen in SQL
Advertisements

Prof. Dr. T. Kudraß1 Hash-Verfahren. Prof. Dr. T. Kudraß2 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
Prof. Dr. T. Kudraß1 Logischer DB-Entwurf. Prof. Dr. T. Kudraß2 Entwurf eines relationalen DB-Schemas Ziel: –Regeln für die Umsetzung eines ER-Modells.
Das Entity-Relationship-Modell
Relationaler Datenbankentwurf (II)
[01] - ERM Modellierung I Basiselemente von E-R-Diagrammen kennen
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
On a Buzzword: Hierachical Structure David Parnas.
Grundlagen Datenbanken
Datenbankdesign und Normalisierung
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Das Relationen-Modell
Relationaler Datenbankentwurf (I)
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Das Relationenmodell 1.
Das Entity-Relationship-Modell
Prof. Dr. T. Kudraß1 Das Relationen-Modell. Prof. Dr. T. Kudraß2 Einführung Geht auf klassische Arbeit von Codd zurück (1970) Meistgenutztes Datenmodell.
Prof. Dr. T. Kudraß1 SQL. Prof. Dr. T. Kudraß2 SQL-Historie Seit 1974 viele Sprachentwürfe: –z.B. SQUARE, SEQUEL, QUEL Entwicklung einer vereinheitlichten.
Prof. Dr. T. Kudraß1 Datenbanken zur Entscheidungsunterstützung - Data Warehousing.
Prof. Dr. T. Kudraß1 Relationenkalkül. Prof. Dr. T. Kudraß2 Relationenkalkül Zwei Ausprägungen: Tupelrelationenkalkül (TRK) und Domänenrelationenkalkül.
Prof. Dr. T. Kudraß1 Relationen-Algebra. Prof. Dr. T. Kudraß2 Relationale Anfragesprachen Query Language (QL): Manipulation und Retrieval von Daten einer.
Prof. Dr. T. Kudraß1 Query-Optimierung. Prof. Dr. T. Kudraß2 Einführung Anfrageoptimierung Von der Anfrage (WAS?) zur Auswertung (WIE?) –Ziel: kostengünstiger.
Übung Datenbanksysteme SQL-Anfragen (2)
Der letzte Schliff für Abfragen Übersicht über die Aggregatfunktionen.
Normalformen Normalisieren Schlüssel
6 Normalformen Normalisieren Schlüssel
Beispielrelation Buchbestellungen H = Menge der bedeutenden Ziele = {a, d} Schwelle T = 4 Stichprobe S = {a, b, a, a, a, a} mit s = |S| = 6 N = Anzahl.
Kapitel 9: Integritätssicherung
Relationentheorie AIFB SS Algorithmen zur Bildung von 3NF-Relationsschemata Algorithmen zur Bildung von 3NF-Relationsschemata (2|8) (2)Synthese.
Grundsätzliche Resultate Theorem: Für jeden Relationstyp R(A 1,...,A n ) und jede Menge von FDs über {A 1,...,A n } gibt es: –eine verlustlose (aber nicht.
2.2 Definition eines Datenbankschemas (SQL-DDL)
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
Übung 1: SQL Übungen finden bei Bedarf anstelle der Vorlesungen statt
Datenbankentwicklung IV-LK
Die Grundterminologie
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
Datenbanksysteme für hörer anderer Fachrichtungen
Copyright Oracle Corporation, All rights reserved. 6 Unteranfragen (Subqueries)
Freiwillige Feuerwehr der Stadt Perg
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Das relationale Modell
Normalisierungsprozess
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Schlüssel Einordnung des Schlüsselbegriffs in Abhängigkeitstheorie:
Vorlesung #5 SQL (Teil 2).
1 Sichten-Änderungen (1) Änderungen von Sichten sind i.d.R. problematisch, da sie in entsprechende Änderungen der Basisrelationen überführt werden müssen.
Integritätsbedingungen (Constraints)
10 Sichten (Views) Ziele Verständnis einer View Erzeugen einer View Lesen von Daten durch eine Sicht Ändern der Definition von Views Einfügen, Ändern.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Informationserhaltende Zerlegungen (1) T R sei Relationstyp mit Attributmenge A R und Ausprägung R Zerlegung in Relationstypen T R 1,...,T R k mit Attributmengen.
Vorlesung Datenbanksysteme vom Anfragebearbeitung  Logische Optimierung.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
IS: Datenbanken, © Till Hänisch 2000 Entwurfstheorie Normalisierung oder "Wie man sich Ärger erspart"
IS: Datenbanken, © Till Hänisch 2000 Relationenalgebra Die mathematische Grundlage von relationalen Datenbanken.
Vorlesung #5 SQL (Teil 2).
Vorlesung #7 SQL (Teil 4).
Indexierung Oracle: indexes Indexierung.
(Structured Query Language)
 Präsentation transkript:

Prof. Dr. T. Kudraß1 DB-Tuning

Prof. Dr. T. Kudraß2 Tuning des konzeptuellen Schemas Das Design des konzeptuellen Schemas ist beeinflußt durch das Lastprofil der Applikation zusätzlich zur Frage der Redundanz. Überlegungen: – 3NF Schema besser geeignet als BCNF? – Lastprofil hat Einfluß auf die Entscheidung über Dekomposition der Relation in 3 NF oder BCNF – Weitere Dekomposition eines BCNF Schemas sinnvoll? – Denormalisierung eines Schemas sinnvoll (d.h. ein Dekompositionsschritt wird rückgängig gemacht) – Hinzufügen von Feldern zu einer Relation – Horizontale Dekomposition (Partitionierung der Tupelmengen einer Relation) Schema-Evolution: Veränderung des Schemas einer Datenbank, die bereits operativ ist (kann einige Probleme verursachen!) Verbergen einiger dieser Änderungen vor den Applikationen durch die Definition von Sichten (Views)

Prof. Dr. T. Kudraß3 Beispiel-Schema Beispiel Contracts, abgekürzt: CSJDPQV. Folgende Integritätsbedingungen (Integrity Constraint IC) sind gegeben: JP C, SD P, C ist Primärschlüssel –Was sind die Schlüsselkandidaten für CSJDPQV? –In welcher Normalform befindet sich das Relationenschema? Contracts (Cid, Sid, Jid, Did, Pid, Qty, Val) Depts (Did, Budget, Report) Suppliers (Sid, Address) Parts (Pid, Cost) Projects (Jid, Mgr)

Prof. Dr. T. Kudraß4 Festlegen 3NF oder BCNF CSJDPQV kann zerlegt werden in SDP und CSJDQV, und beide Relationen sind in BCNF. – Verlustfreie Dekomposition, aber nicht abhängigkeitsbewahrend – Hinzufügen von CJP sichert die Eigenschaft abhängigkeits- bewahrend Annahme, daß folgende Query sehr wichtig ist: – Finde die Anzahl der Kopien, Q, des Teils P, das im Vertrag (Contract) C bestellt wurde. – Erfordert einen Join auf dem dekomponierten Schema, aber kann genauso beantwortet werden durch einen Scan auf der Original- Relation CSJDPQV. – Könnte zu der Festlegung führen, das 3NF Schema CSJDPQV zu verwenden

Prof. Dr. T. Kudraß5 Denormalisierung Angenommen, folgende Anfrage ist wichtig: – Ist der Wert eines Vertrages geringer als das Budget der Abteilung? Um diese Anfrage zu beschleunigen, könnten wir ein Feld budget B zur Relation Contracts hinzufügen – Dies erzeugt eine neue funktionale Abhängigkeit FD D B innerhalb der Relation Contracts. – Somit gilt: Contracts ist nicht mehr in 3NF. Wir könnten entscheiden, Contracts zu modifizieren, wenn die Anfrage hinreichend wichtig und die Performance anderweitig nicht gesteigert werden kann (d.h. durch Anlegen neuer Indexe oder durch eine alternatives 3NF Schema)

Prof. Dr. T. Kudraß6 Wahl der Dekomposition 2 Möglichkeiten, CSJDPQV in die BCNF zu zerlegen: – SDP and CSJDQV; verlustfreier Join, aber nicht abhängigkeitsbewahrend – SDP, CSJDQV and CJP; zusätzlich noch abhängigkeitsbewahrend Der Unterschied zwischen beiden ist der Aufwand, um die FD JP C zu kontrollieren (interrelationale Constraints verursachen hohe Kosten) – 2. Dekomposition: Index auf JP in Relation CJP (JP ist dort Primärschlüssel) – 1. Dekomposition: CREATE ASSERTION CheckDep CHECK ( NOT EXISTS ( SELECT * FROM PartInfo P, ContractInfo C WHERE P.sid=C.sid AND P.did=C.did GROUP BY C.jid, P.pid HAVING COUNT (C.cid) > 1 ))

Prof. Dr. T. Kudraß7 Wahl der Dekomposition (Forts.) Die folgenden ICs sollen kontrolliert werden: JP C, SD P, C ist Primärschlüssel Zusätzlich sei angenommen: Ein bestimmter Lieferant berechnet immer den gleichen Preis für ein bestimmtes Teil SPQ V Wenn CSJDPQV in die BCNF zerlegt werden soll, gibt es nun eine dritte Möglichkeit: – Beginne mit der Zerlegung in SPQV and CSJDPQ – Dann zerlege CSJDPQ (nicht in 3NF) in SDP, CSJDQ – Dies führt zu der verlustfreien Dekomposition: SPQV, SDP, CSJDQ. – Um JP C zu kontrollieren, können wir wieder die Relation CJP hinzufügen Wahl: { SPQV, SDP, CSJDQ } oder { SDP, CSJDQV } ? Mit der Variante { SDP, CSJDQV }: In BCNF und braucht nicht weiter zerlegt zu werden (Annahme, daß alle bekannten ICs FDs sind) Was ist, wenn folgende Anfragen wichtig sind? –Finde die Verträge mit dem Lieferanten S. – Finde die Verträge, an denen Abteilung D beteiligt ist. Weitere Zerlegung von CSJDQV in CS, CD and CJQV könnte diese Queries beschleunigen Andererseits können Anfragen verlangsamt werden, z.B.: –Finde den Gesamtwert aller Verträge mit dem Lieferanten S.

Prof. Dr. T. Kudraß8 Horizontale Dekomposition Bisherige Definition von Dekomposition: Relation wird durch eine Menge von Relationen ersetzt, die Projektionen sind (wichtigster Fall) Manchmal möchten wir eine Relation durch eine Menge von Relationen ersetzen, die Selektionen sind – Jede neue Relation hat gleiches Schema wie Original-Relation, aber nur eine Teilmenge von Tupeln – Zusammen enthalten alle neuen Relationen alle Tupel der Original-Relation, Zerlegung ist disjunkt Angenommen, daß große Verträge (value > 10000) anderen Regeln unterliegen: Somit würden Abfragen häufig die Bedingung val>10000 enthalten Erster Ansatz: Geclusterter B+ Baum-Index auf dem Feld val in Contracts Zweiter Ansatz: Ersetze Contracts durch zwei neue Relationen: LargeContracts und SmallContracts, mit den gleichen Attributen (CSJDPQV). – Verhält sich wie Index auf solchen Anfragen, aber ohne Index-Overhead – Zusätzlich geclusterter Index auf anderen Attributen denkbar

Prof. Dr. T. Kudraß9 Verbergen von Schemaänderungen Die Ersetzung von Contracts durch LargeContracts und SmallContracts kann durch eine View verborgen werden Jedoch müssen Anfragen mit der Bedingung val>10000 an die Relation LargeContracts gestellt werden für effiziente Ausführung Benutzer, für die Performance wichtig ist, müssen von Veränderung erfahren CREATE VIEW Contracts(cid, sid, jid, did, pid, qty, val) AS SELECT * FROM LargeContracts UNION SELECT * FROM SmallContracts

Prof. Dr. T. Kudraß10 Tuning von Queries und Views Wenn eine Anfrage langsamer als erwartet läuft: –Muß Index reorganisiert werden? –Ist die Statistik zu alt? Vielleicht führt das DBMS einen anderen Ausführungsplan als gewünscht aus. Mögliche Schwächen: – Selektionen mit Nullwerten – Selektionen mit arithmetischen oder String-Ausdrücken – Selektionen mit OR Bedingungen – Mangel Ausführungsmerkmalen für die Anfrage wie Index-Only- Strategien oder bestimmte Join-Methoden oder schlechte Größenabschätzung Prüfe den Plan, der verwendet wird! Dann korrigiere die Wahl des Index oder modifiziere die Query/View (Rewrite)

Prof. Dr. T. Kudraß11 Umschreiben von SQL-Queries* Wird komplizierter durch die Interaktion von: – NULL s, Duplikaten, Aggregation, Subqueries Richtlinie: Verwende nur einen Query Block, wenn möglich SELECT DISTINCT * FROM Sailors S WHERE S.sname IN (SELECT Y.sname FROM YoungSailors Y) SELECT DISTINCT S.* FROM Sailors S, YoungSailors Y WHERE S.sname = Y.sname SELECT * FROM Sailors S WHERE S.sname IN (SELECT DISTINCT Y.sname FROM YoungSailors Y) SELECT S.* FROM Sailors S, YoungSailors Y WHERE S.sname = Y.sname Nicht immer möglich... = =

Prof. Dr. T. Kudraß12 Entschachteln von Anfragen (Unnesting)* DISTINCT auf Top-Level: Kann Duplikate ignorieren – Manchmal kann DISTINCT auf Top-Level abgeleitet werden! (z.B. Subquery liefert nur ein einziges Tupel) DISTINCT in Subquery ohne DISTINCT auf Top-Level: Schwer zu konvertieren Subqueries innerhalb von OR: Schwer zu konvertieren ALL Subqueries: Schwer zu konvertieren – EXISTS and ANY sind wie IN Aggregate in Subqueries: Tricky. Good News: Einige DBMS können selbst Anfragen konvertieren, ohne daß der Benutzer das merkt (z.B. DB2)

Prof. Dr. T. Kudraß13 Weitere Tips zum Tuning von Queries Minimiere die Verwendung von DISTINCT : wird nicht gebraucht, wenn Duplikate akzeptable sind, oder wenn das Resultat einen Schlüssel enthält Minimiere die Verwendung von GROUP BY und HAVING : SELECT MIN (E.age) FROM Employee E GROUP BY E.dno HAVING E.dno=102 SELECT MIN (E.age) FROM Employee E WHERE E.dno=102 Untersuche die Verwendung von Indexen durch das DBMS beim Einsatz arithmetischer Ausdrücke: E.age=2*D.age profitiert von einem Index auf E.age, aber wahrscheinlicht nicht von einem Index auf D.age! (mögliche Alternative: E.age/2=D.age )

Prof. Dr. T. Kudraß14 Noch mehr Tips zum Tuning von Queries Vermeide Zwischenrelationen: SELECT * INTO Temp FROM Emp E, Dept D WHERE E.dno=D.dno AND D.mgrname=Joe SELECT T.dno, AVG (T.sal) FROM Temp T GROUP BY T.dno vs. SELECT E.dno, AVG (E.sal) FROM Emp E, Dept D WHERE E.dno=D.dno AND D.mgrname=Joe GROUP BY E.dno and Keine Materialisierung der Zwischenrelation Temp erforderlich Wenn es einen dichtbesetzten B+ Baum Index gibt, kann ein Index-Only-Plan genutzt werden. Somit kein Zugriff auf die Tupel der Relation Emp (wie in der 2. Lösung) erforderlich!

Prof. Dr. T. Kudraß15 Zusammenfassung Das konzeptuelle Schema sollte verfeinert werden unter Berücksichtigung von Performance und Lastprofil: – Wahl von 3NF oder niedriger Normalform gegenüber BCNF – Auswahl unter alternativen Dekompositionen in die BCNF (oder 3NF) basierend auf dem Lastprofil – Wir können denormalisieren oder einige Dekompositionen rückgängig machen – Wir können eine BCNF-Relation weiter dekomponieren! – Wir können eine horizontale Dekomposition für eine Relation wählen – Wie wichtig ist uns die Erhaltung einer bestimmten Abhängigkeit (Integritäts-Constraint)? Bedeutung dieses Constraints für die geforderte Korrektheit der Daten Kosten der Überprüfung des Integritäts-Constraints –Hinzufügen einer Relation, um die Bewahrung der Abhängigkeit zu sichern (bei einer 3NF Relation, nicht BCNF!) –Prüfung der Abhängigkeit durch einen Join

Prof. Dr. T. Kudraß16 Zusammenfassung (Forts.) Nach einer bestimmten Zeit müssen Indexe fein getunt werden (wegwerfen, erzeugen, reorganisieren,...) aus Performance- gründen – Ermittle den Ausführungsplan, der vom System genutzt wird, und korrigiere die Wahl der Indexe entsprechend Wenn das System trotzdem keinen guten Plan findet: – Optimierer des DBMS untersucht nur beschränkten Lösungsraum entsprechend vorgegebener Heuristiken (z.B. Left-Deep entsprechend System R-Ansatz) – Null-Werte, arithmetische Bedingungen, String-Ausdrücke, Verwendung von OR s, etc. kann den Optimierer verwirren Wir können selbst die Query/View umschreiben: – Vermeide geschachtelte Anfragen – Vermeide temporäre Relationen – Vermeide komplexe Bedingungen – Vermeide Operationen wie DISTINCT und GROUP BY