Vorlesung4 - Anfragebearbeitung (Teil 2)

Werbung
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Vorlesung #4
Anfragebearbeitung (Teil 2)
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
„Fahrplan“
 Besprechung von Übungsaufgaben
 Widerholung Vorlesung #3
 Logische Optimierung
 Physische Optimierung
 Kostenmodelle
 Selektivitäten
 Kostenabschätzungen für Joins, Sortierung
 Tuning von Datenbankabfragen





Generieren von Statistiken
Kostenpläne (EXPLAIN PLAN)
„Optimizer Hints“
Kostenbasierte vs. regelbasierte Optimierung
Umschreiben von Abfragen, Materialisieren von Teilabfragen
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
2
Kostenmodelle
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Heuristische Methoden für Bestimmung der
Ausführungspläne sollen in kürzester Zeit nahezu
optimale Ergebnisse liefern. Oft entstehen durch
„Raten“ sehr schlechte Pläne
 Ein Kostenmodell ist notwendig, als Basis für
Vergleich von mehreren Ausführungsplänen
 Damit der Aufwand für die Kosten (d.h. Laufzeit)
eines Operatoren der physischen Algebra geschätzt
wird, benötigt man weitrechende Informationen über




Indexe
Ballung (Clustering)
Kardinalitäten (z.B. Anzahl der Zeilen in einer Tabelle)
Verteilungen der Werte (z.B. Normalverteilung)
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
3
Kostenmodelle (2)
© Bojan Milijaš, 10.11.2004
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Vorlesung #4 - Anfragebearbeitung (Teil 2)
4
Selektivitäten
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Bei der Aufwandsabschätzungen spielt die Frage,
wie viele Tupel sich bei der Bedingung p
qualifizieren würden, die entscheidende Rolle
 Die Selektivität eines Suchprädikats p schätzt die
Anzahl der qualifizierenden Tupel relativ zur
Gesamtanzahl der Tupel in der Relation.
 Beispiele
 die Selektivität einer Anfrage, die das Schlüsselattribut einer
Relation R spezifiziert, ist 1/ #R, wobei #R die Kardinalität
der Relation R angibt.
 Wenn ein Attribut A spezifiziert wird, für das i verschiedene
Werte existieren, so kann die Selektivität als (#R/i) / #R oder
1/i abgeschätzt werden.
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
5
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
6
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
7
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
8
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
9
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
10
Tuning von
Datenbankabfragen
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Bei einer langsamen Abfrage schaut man sich den
Ausführungsplan an (Folie #13)
 Wenn es viele „full table scans“ und „nested loop
joins“ gibt, gibt es auch meistens
Optimierungspotential
 Vorher muss man Statistiken erstellen, denn sie
sind die Basis für den Kostenmodell des Optimierers
und müssen per Hand angelegt werden
 Es gibt keinen SQL Standard
ANALYZE TABLE t COMPUTE STATISTICS;
--(Oracle)
runstats on table ... --(DB2)
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
11
Tuning von
Datenbankabfragen (2)
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Auf gleicher Weise werden Index-Statistiken
erstellt
 Das ganze muss periodisch wiederholt
werden
 Die ermittelten Werte werden in Data
Dictionary mit anderen SchemaInformationen gespeichert
 Beispiel (Oracle):
SELECT *
FROM user_tables;
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
12
Tuning von
Datenbankabfragen (3)
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Nächster Schritt ist es, sich den Plan mit
EXPLAIN PLAN FOR
SELECT ...
FROM ...
WHERE ... ;
 anzuschauen, bzw. mit einem
Optimierungswerkzeug
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
13
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
14
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
15
Tuning von
Datenbankabfragen (4)
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Stellt man fest, dass der Optimierer nicht die
optimalen physischen Algebra-Operatoren
gewählt hat, so kann ihm mit Hilfe von
Optimizer Hints „den richtigen Weg weisen“
 Beispiel für die Index-Nutzung-Hint (Oracle)
SELECT /*+ index(Individuals Name)*/
Name, count(1)
FROM Individuals
WHERE Name LIKE `M%´
GROUP BY Name;
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
16
Tuning (5)
regel- vs. kostenbasiert
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Man muss den Optimierungslevel der eingesetzten
DBMS in Erfahrung bringen
 Oft werden aus Aufwandsgründen nur Heuristiken
verwendet (Pushing Selections, Nutzung von
Indexen wann immer möglich usw.) – man spricht
von regelbasierter Optimierung
 Kostenbasierte Optimierung bedeutet viel mehr
Aufwand (Statistiken, Modell, Kostenberechnung und
Vergleiche etc.), produziert aber meistens deutlich
bessere Ausführungspläne als regelbasierte
Optimierung
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
17
Tuning (6)
Umschreiben von Abfragen
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
 Oft ist aber das manuelle Eingreifen eines
Datenbank-Entwicklers nötig. Dabei werden
meistens
 korrelierte Abfragen aufgelöst,
 verschachtelte Schleifen in prozeduralen
Wirtssprachen (wie Java, C oder PL/SQL)
aufgelöst und in effizientere Datenbankabfragen
umgeschrieben
 Teilabfragen in Form von MATERIALIZED VIEWs
oder normalen Tabellen für temporäre Zwecke
materialisiert
© Bojan Milijaš, 10.11.2004
Vorlesung #4 - Anfragebearbeitung (Teil 2)
18
WS 2004/2005
Datenbanken II - 5W
Mi 17:00 – 18:30
G 3.18
Vorlesung #4
Ende
Herunterladen