Datenbankoptimierung

Ähnliche Dokumente
Aufbau Datenbanksysteme

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

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

Datenbanksysteme 2013

Anfrageoptimierung Physische Optimierung

Wiederholung VU Datenmodellierung

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Wiederholung VU Datenmodellierung

Performance in der Oracle Datenbank von Anfang an

Oracle 9i Einführung Performance Tuning

Physische Anfrageoptimierung

Kapitel 8: Datenintegrität

Oracle 10g Einführung

SQL Wiederholung. Datenbanktechnologien. Verbunde. Aggregation und Gruppierung. Unterabfragen. Hochschule für Technik und Wirtschaft Berlin

Introduction to Data and Knowledge Engineering. 6. Übung SQL

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

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

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

Übersicht der wichtigsten MySQL-Befehle

Anfragebearbeitung. Logische Optimierung Physische Optimierung (Kostenmodelle Tuning ) Kapitel 8 1

(4 Punkte) Aufgabe 1: Relationenalgebra - Relationenkalkül

1 Einführung Ziele der Vorlesung Die Idee Lernkarte Selbsttest-Frage 3 Literaturhinweise 3

[W, T4, D, 15] [start_transaction, T3] [W, T3, C, 30] [W, T4, A, 20] [commit, T4] [W, T2, D, 25] System Crash

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

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

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Datenbank-Tuning. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

Übungsblatt 8 Lösungsvorschläge

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Relationentheorie grundlegende Elemente

Physischer DB-Entwurf

Oracle 9i Einführung. Performance Tuning. Kurs. Teil 12 Materialized Views. Universität Hannover. Praxisbeispiel. Migration.

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Materialized Views. Jan-Peter Timmermann. DOAG Regiotreffen Hamburg: Materialized Views Seite 1

Abfragen (Queries, Subqueries)

Anfrageverarbeitung. Einführung

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

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

Nutzung der Oracle Database InMemory Option für SAP BW

ACCESS SQL ACCESS SQL

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

Grundlagen von Datenbanken. Referentielle Aktionen, Sichten, Serialisierbarkeit und Locking

Oracle 10g Einführung

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

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Datenbanken Implementierungstechniken SS2015

Oracle Indexing Primer

GROUP BY, HAVING und Sichten

Datenbanksysteme Kapitel 5: SQL Data Manipulation Language

Aufgabe 1: Verschachtelte Anfragen

ZWISCHEN ALBTRAUM UND OPTIMALER PERFORMANCE

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

SQL - Datenbankdesign - Aufbau

Übung ERM. Beispiel: Erstellung einer relationalen Datenbank

Datenintegrität. Kapitel 5 1

SQL mit ORACLE. Wolf-Michael Kahler

Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5

Anfragebearbeitung 2. Vorlesung Datenbanksysteme vom

Datenbanksysteme I Anfragebearbeitung und -optimierung Felix Naumann

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

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Datenbanksysteme Kapitel 5: SQL - Grundlagen

Probeklausur Datenbanktechnologie

Query Languages (QL) Relationale Abfragesprachen/Relational

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Datenbanken. Zusammenfassung. Datenbanksysteme

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

Datenbanksysteme Kapitel 2: SQL Data Definition Language

Datenbanksysteme Kapitel 5: SQL Grundlagen Teil 1

Datenbank und Tabelle mit SQL erstellen

Relationales Datenbanksystem Oracle

Datenintegrität. Kapitel 5 1

Datenbanken. Seminararbeit. Einführung in das wissenschaftliche Arbeiten

Web-Technologien. Prof. Dr. rer. nat. Nane Kratzke SQL. Praktische Informatik und betriebliche Informationssysteme

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

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

Es geht also im die SQL Data Manipulation Language.

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

Datenbanken im WI-Unterricht mit

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

Sachverzeichnis. Symbole,67 -Verbund, 56, 85 \, 5,53 C C, 166, 188

Explain verstehen. Hans-Jürgen Schönig.

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Aufgabe 1 Indexstrukturen

Transkript:

Datenbankoptimierung Lehrveranstaltung Datenbanktechnologien Prof. Dr. Ingo Claßen Prof. Dr. Martin Kempa Hochschule für Technik und Wirtschaft Berlin Hardware c Ingo Claßen, Martin Kempa

Architektur: Shared Memory (Symmetrische Multiprocessing, SMP) Alle CPUs teilen sich einen gemeinsamen Speicher Gemeinsamer Zugriff auf Sekundärspeicher Schlechte Skalierbarkeit, Bus ist Flaschenhals Einfache Struktur: keine verteilte Zwischenspeicherung und Sperrverwaltung c Ingo Claßen, Martin Kempa 2/29 Datenbankoptimierung

Architektur: Shared Disk (Cluster aus SMP-Systemen) Kein gemeinsamer Hauptpeicher Gemeinsamer Zugriff auf Sekundärspeicher Skalierbarkeit besser als shared memory aber nicht optimal Komplexer verteilter Cache, komplexes verteiltes Sperrmanagement c Ingo Claßen, Martin Kempa 3/29 Datenbankoptimierung

Architektur: Shared Nothing (Massive Parallelverarbeitung, MPP) Getrennte Ressourcen Optimale Skalierbarkeit, gut für Data-Warehouse-Systeme Keine verteilten Caches notwendig, keine verteilte Sperrverwaltung Problem: Partitionierung der Daten c Ingo Claßen, Martin Kempa 4/29 Datenbankoptimierung

Speicher Festplatten Anbindung Lokal, NAS, SAN Technologie Raid 1, Raid 5, Raid 10,... Verteilung der Daten auf verschiedene Festplatten Eigene Festplatte für Protokolle Getrennte Festplatten für Daten und Hauptspeicher Datenbankpuffer Sortierspeicher Speicher für Hashtabellen c Ingo Claßen, Martin Kempa 5/29 Datenbankoptimierung

Partitionierung Zerlegung einer logischen Einheit in mehrere physische Verwaltung sehr großer Relationen Effizientes Einfügen/Löschen ganzer Teile einer Datenbasis Effizienzsteigerung bei der Überspringen von Partitionen Parallele Bearbeitung von Partitionen c Ingo Claßen, Martin Kempa 6/29 Datenbankoptimierung

Horizontale Partitionierung Formen der Aufteilung Range-Partitionierung Hash-Partitionierung Student MatrNr Name Vorname Studiengang 50101 Clausen Claus WI 50102 Svenson Sven WI 50103 Jensen Jens AI 50104 Jansen Jan AI Student (WI) MatrNr Name Vorname Studiengang 50101 Clausen Claus WI 50102 Svenson Sven WI Student (AI) MatrNr Name Vorname Studiengang 50103 Jensen Jens AI 50104 Jansen Jan AI Masterrelation Partition c Ingo Claßen, Martin Kempa 7/29 Datenbankoptimierung

Vertikale Partitionierung Verteilung der Spalten auf Partitionen Für Rekonstruierbarkeit muss gemeinsames Attribut in jeweils zwei Partitionen existieren Student MatrNr Name Vorname Studiengang 50101 Clausen Claus WI 50102 Svenson Sven WI 50103 Jensen Jens AI 50104 Jansen Jan AI Projektion Projektion Student (Name) MatrNr Name Vorname 50101 Clausen Claus 50102 Svenson Sven 50103 Jensen Jens 50104 Jansen Jan Student (Studiengang) MatrNr Studiengang 50101 WI 50102 WI 50103 AI 50104 AI c Ingo Claßen, Martin Kempa 8/29 Datenbankoptimierung

Beispiele für Range-Partitionierung create table STUDENT ( MATRNR integer not null primary key, NAME varchar(20) not null, VORNAME varchar(20), IMMATRIKULATIONSDATUM date, STUDIENGANG char(2), foreign key (STUDIENGANG) references STUDIENGANG(KURZNAME) ) partition by range (MATRNR) ( partition STUDENT_10 values less than (51000), partition STUDENT_11 values less than (52000),... ) c Ingo Claßen, Martin Kempa 9/29 Datenbankoptimierung

Beispiel für Hash-Partitionierung create table STUDENT ( MATRNR integer not null primary key, NAME varchar(20) not null, VORNAME varchar(20), IMMATRIKULATIONSDATUM date, STUDIENGANG char(2), foreign key (STUDIENGANG) references STUDIENGANG(KURZNAME) ) partition by hash (NAME) partitions 4 store in (STUDENT_01, STUDENT_02, STUDENT_03, STUDENT_04) c Ingo Claßen, Martin Kempa 10/29 Datenbankoptimierung

Materialisierung Speicherung der Ergebnisse von Sichten (Abfragen) Automatisches (transparentes) Umschreiben von Abfragen durch den Abfrageoptimierer, so dass die gespeicherten Ergebnisse benutzt werden Studiengang Kurzname Bezeichnung WI Wirtschaftsinformatik...... Student MatrNr Name Vorname Studiengang 50101 Clausen Claus WI............ Join Join Aggregation Student Studiengang View MatrNr Name Studiengang 50101 Clausen Wirtschaftsinformatik......... Studentenanzahl Studiengang View Studiengang Anzahl WI 82...... c Ingo Claßen, Martin Kempa 11/29 Datenbankoptimierung

Beispiel für Materialisierung create materialized view STUDENTENANZAHL_PRO_STUDIENGANG tablespace EXAMPLE build immediate refresh complete enable query rewrite as select SG.BEZEICHNUNG as STUDIENGANG, count(s.matrnr) as ANZAHL_STUDENTE from STUDENT S inner join STUDIENGANG SG on S.STUDIENGANG = SG.KURZNAME group by SG.KURZNAME, SG.BEZEICHNUNG; c Ingo Claßen, Martin Kempa 12/29 Datenbankoptimierung

Selektivität von Bezeichnet das Verhältnis der Ergebnismenge zu allen Daten Beispiel Primärschlüssel: 1/Anzahl Datensätze Beispiel Geschlecht: Anzahl M bzw. W zu allen Datensätzen = 1/2 Je geringer der Wert für die Selektivität, desto besser der Index Annahme: Gleichverteilung der Werte Achtung: In der Literatur finden sich unterschiedliche Definitionen Bis zu welchem Wert ist eine Selektivität noch gut Durch einen Index soll die Anzahl der Zugriffe auf Datenseiten minimiert bzw. sogar elimiert werden Daumenregel: Selektivität sollte 5% sein Ansonsten ist Tablescan wegen Vorausladen von Datenseiten besser c Ingo Claßen, Martin Kempa 13/29 Datenbankoptimierung

Daumenregeln für Primärschlüssel sollten immer einen Index erhalten Fremdschlüssel sollten meistens einen Index erhalten Spalten, die in einer Where-Klausel auftauchen, sind gute Kandidaten für Die Selektivität darf aber nicht zu schlecht sein auf Spalten, die häufig verändert werden, sollten vermieden werden Ein geclusterter Index sollte sorgfältig ausgewählt werden, da nur einer pro Tabelle möglich ist Überdeckende sollten vorsichtig eingesetzt werden Redundante sollten vermieden werden sollten regelmäßig gewartet werden c Ingo Claßen, Martin Kempa 14/29 Datenbankoptimierung

Daumenregeln für bei Spalten in Where-Klauseln Sinnvoll bei Spalten... die mit AND verknüpft sind (zusammengesetzter Index) die in Verbunden verwendet werden nach denen häufig sortiert wird nach denen häufig gruppiert wird Nicht sinnvoll bei... Funktionen oder arithmetischen Operationen, die auf Spalten angewendet werden Vergleichsoperator ist ungleich LIKE-Vergleich, der mit % beginnt Vergleichen, die auf NULL oder NOT NULL lauten NULL-Werten in Spalten, nach denen sortiert wird c Ingo Claßen, Martin Kempa 15/29 Datenbankoptimierung

sschritte Interndarstellung Syntaktische Analyse, Kontextanalyse (Syntaxbaum) Zugriffs- und Integritätskontrolle Einfügen von Prüfoperatoren Abfrageoptimierung / Codeerzeugung Transformation auf logischer Ebene (Relationenalgebra) Abbildung auf physische Operatoren (Abfrageplan) Ausführung Überwachung der Abfrageabarbeitung Pipelining Ergebnisbereitstellung (Cursor) c Ingo Claßen, Martin Kempa 16/29 Datenbankoptimierung

Statistische Information zur Abfrageoptimierung Anzahl der Seiten pro Tabelle, Anzahl der nichtleeren Seiten Verhältnis von Überlaufzeilen zu Gesamtzahl der Zeilen pro Tabelle Gesamtzahl der Zeilen pro Tabelle Anzahl der verschiedenen Werte in einer Spalte Verteilung von Spaltenwerten Clustereigenschaft eines Indexes, d. h. Ausmaß der Übereinstimmung von Indexsortierung und physischer Zeilenreihenfolge Indexhöhe und Anzahl der Blattseiten c Ingo Claßen, Martin Kempa 17/29 Datenbankoptimierung

Operatoren Operatoren zum Durchwandern von Datensätzen (Scan-Operatoren) Tabellen-Scan Index-Scan Verbundoperatoren Geschachtelte Schleifen (nested loop join) Mischverknüpfung (merge join) Hash-Verknüpfung (hash join) Sonstige Extrahieren von Datensätzen über TID/RID Anwendung von zusätzlichen Prädikaten über die im Tabellenbzw. Index-Scan hinaus Sortierung (mit oder ohne Gruppierung) Gruppierungen Operatoren auf TID/RID: Und-/Oder-Verknüpfung von Erstellung temporärer Tabellen c Ingo Claßen, Martin Kempa 18/29 Datenbankoptimierung

Verbundoperatoren s s s r r r Nested Loop Join vergleicht jedes Tupel von r mit jedem Tupel von s Prinzip der geschachtelten Schleifen Merge Join Mischen vorsortierter Relationen vergleicht nur marginal mehr Tupel als verbunden werden Hash Join nutzt Hash- Verfahren bildet Unterbereiche (Buckets) Hashtabelle sollte in Hauptspeicher passen c Ingo Claßen, Vergleiche Martin Kempa sind grau, erfolgreiche Joins 19/29 sind grün dargestellt Datenbankoptimierung

Verbundoperation: Nested-Loop-Join T A... 2... 3... 3... U... A... 3... 2... 2... 3... 1 Algorithmus: Durchlauf (scan) durch die Zeilen t von T Für jede Zeile t: Durchlauf (scan) durch die Zeilen u von U Übernahme von (t, u) in das Ergebnis wenn t.a = u.a c Ingo Claßen, Martin Kempa 20/29 Datenbankoptimierung

Verbundoperation: Merge-Join Algorithmus: Voraussetzung: Sortierung auf Spalte A liegt vor Lies erste Zeile t von T (*) Lies Zeilen von U bis eine Zeile u mit t.a = u.a gefunden wird Übernahme von (t, u) in das Ergebnis Lies Zeilen von U bis eine Zeile ux mit t.a ux.a gefunden wird oder keine Zeile in U mehr vorhanden ist Übernahme aller bis dahin gelesener U-Zeilen in das Ergebnis Gehe auf Zeile u zurück Solange noch Zeilen in T vorhanden sind: Lies nächste Zeile von T und verfahre wie bei (*) c Ingo Claßen, Martin Kempa 21/29 Datenbankoptimierung

Verbundoperation: Hash-Join Erzeugung einer Hash-Tabelle für U Durchlauf (scan) durch die Zeilen t von T Für jede Zeile t: Berechnung des Hash-Wertes von t.a Ermittlung der passenden u aus U über die Hash-Tabelle Übernahme von (t, u) in das Ergebnis c Ingo Claßen, Martin Kempa 22/29 Datenbankoptimierung

Datenmodell für Abfragebeispiele Student MatrNr Name Vorname Studiengang 50101 Clausen Claus WI 50102 Svenson Sven WI 50103 Jensen Jens AI 50104 Jansen Jan AI Kurzname WI AI WM Studiengang Bezeichnung Wirtschaftsinformatik Angewandte Informatik Wirtschaftsmathematik c Ingo Claßen, Martin Kempa 23/29 Datenbankoptimierung

Abfrage ohne Index Abfrage select * from STUDENT where STUDIENGANG = WI Explain Table-Scan: Durchlauf durch alle Zeilen der Tabelle c Ingo Claßen, Martin Kempa 24/29 Datenbankoptimierung

Abfrage von Zeilen mit Index Index create index IX_STUDENT_SG on STUDENT(STUDIENGANG) Abfrage select * from STUDENT where STUDIENGANG = WI Explain Index-Scan: Durchlauf nur durch Zeilen der Tabelle, die den Wert STUDIENGANG = WI haben c Ingo Claßen, Martin Kempa 25/29 Datenbankoptimierung

Abfrage von Zeilen nur mit Index Abfrage select MATRNR from STUDENT where MATRNR > 50000 Explain Der Zugriff über den Index ist ausreichend, da keine weiteren Werte aus den Zeilen benötigt werden c Ingo Claßen, Martin Kempa 26/29 Datenbankoptimierung

Abfrage mit Verbund Abfrage select S.MATRNR, S.NAME, SG.BEZEICHNUNG from STUDENT S inner join STUDIENGANG SG on S.STUDIENGANG = SG.KURZNAME where S.STUDIENGANG = WI Explain Table-Scan notwendig, da kein Index auf dem Fremdschlüssel STUDIENGANG in der Tabelle STUDENT c Ingo Claßen, Martin Kempa 27/29 Datenbankoptimierung

Abfrage mit Verbund und Index Index create index IX_STUDENT_SG on STUDENT(STUDIENGANG) Abfrage select S.MATRNR, S.NAME, SG.BEZEICHNUNG from STUDENT S inner join STUDIENGANG SG on S.STUDIENGANG = SG.KURZNAME where S.STUDIENGANG = WI Explain Index-Scan mit Index auf Fremdschlüssel c Ingo Claßen, Martin Kempa 28/29 Datenbankoptimierung

Abfrage mit Verbund Abfrage select S.MATRNR, S.NAME, SG.BEZEICHNUNG from STUDENT S inner join STUDIENGANG SG on S.STUDIENGANG = SG.KURZNAME Explain Da die Tabelle STUDIENGANG nur wenige Zeilen enthält, wird der Hash-Join verwendet, der eine Hashtabelle im Speicher aufbaut. Das ist effizienter als ein Nested-Loop-Join und ein mehrmaliger Index-Scan auf Tabelle STUDIENGANG. c Ingo Claßen, Martin Kempa 29/29 Datenbankoptimierung