Indexing und Performance Tuning



Ähnliche Dokumente
PostgreSQL in großen Installationen

Informatik 12 Datenbanken SQL-Einführung

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

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Performance Probleme aufspüren

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Tuning von PostGIS mit Read- Only-Daten von OpenStreetMap

Einstieg in das SQL- und Datenbanktuning Loblied auf den Tabellen-Index!

Die PostgreSQL Performance Schnelldiagnose

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

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

MIN oder MAX Bildung per B*Tree Index Hint

MySQL 101 Wie man einen MySQL-Server am besten absichert

PostgreSQL High-Security

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

ANFRAGEOPTIMIERUNG IN POSTGRESQL

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Aktuelle Entwicklungen

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

SQL. Fortgeschrittene Konzepte Auszug

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Abfrage-Befehle in MySQL -diverse Funktionen -

Beispiel 1: Filmdatenbank

SQL structured query language

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Java Einführung Abstrakte Klassen und Interfaces

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

PostgreSQL Wartungsstrategien

IV. Datenbankmanagement

Der SAS DataStep und die Prozedur SQL Cellent Finance Solutions GmbH Seite: 1

MySQL Performance Tuning für Entwickler

Javakurs 2013 Objektorientierung

7. Übung - Datenbanken

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Oracle: Abstrakte Datentypen:

Cassandra Query Language (CQL)

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

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

DataTables LDAP Service usage Guide

Abfragen: Grundbausteine

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

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

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Objektorientierte Datenbanken

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Datenbanken Microsoft Access 2010

Teile und Herrsche Teil 2

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

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

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Gut für die Region. Sparkasse Neunkirchen. Bankkaufmann/Bankkauffrau Beruf mit Zukunft

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

LINGO: Eine kleine Einführung

Views in SQL. 2 Anlegen und Verwenden von Views 2

MySQL Queries on "Nmap Results"

desk.modul : WaWi- Export

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

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

SQL Intensivpraktikum SS 2008

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

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

Fachhochschule Deggendorf Platzziffer:...

Informatik Datenbanken SQL-Einführung

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

1 topologisches Sortieren

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

DB2 Codepage Umstellung

GSM Scanner Bedienungsanleitung

Praktikum Datenbanken. 1. Erstellen Sie eine Abfrage, die die gesamte Tabelle PC ausgibt

Viele Bilder auf der FA-Homepage

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Oracle 9i Einführung Performance Tuning

SQL und MySQL. Kristian Köhntopp

Der Gabelstapler: Wie? Was? Wer? Wo?

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

SEMINAR Modifikation für die Nutzung des Community Builders

9 Auto. Rund um das Auto. Welche Wörter zum Thema Auto kennst du? Welches Wort passt? Lies die Definitionen und ordne zu.

MS SQL Server: Index Management. Stephan Arenswald 10. Juli 2008

Semantic Web. RDF, RDFS, OWL, and Ontology Engineering. F. Abel, N. Henze, and D. Krause IVS Semantic Web Group

105.3 SQL-Datenverwaltung

MySQL: Einfaches Rechnen.

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Bezwinge den Kreis. Was ist Diskriminierung?

Aufgaben zu XPath und XQuery

Aufgaben zur fachwissenschaftlichen Prüfung Modul 3 Daten erfassen, ordnen, verarbeiten und austauschen: Schwerpunkt Datenbanken

8 Access-Abfragen migrieren

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Transkript:

Indexing und Performance Tuning Cybertec Schönig & Schönig GmbH Hans-Jürgen Schönig

PostgreSQL Indexing - Jeder hat schon einmal ein Telefonbuch Benutzt - Jeder hat schon einmal Suchen durchgeführt

CREATE INDEX test=# \h CREATE INDEX Command: CREATE INDEX Description: define a new index Syntax: CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table [ USING method ] ( { column ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC DESC ] [ NULLS { FIRST LAST } ] [,...] ) [ WITH ( storage_parameter = value [,... ] ) ] [ TABLESPACE tablespace ] [ WHERE predicate ]

Mehr als nur ein Baum - PostgreSQL unterstützt 4 Arten von Indexes: => B-Tree => Gist => GIN => Hashes

Wieso verschiedene? - Nicht jeder Algorithmus passt für jede Art der Abfrage - Verschiedene Indexes erfüllen verschiedene Aufgaben

B-Tree (1) - B-Bäume sind die typischen Indices - Wie ein Telefonbuch => sortiert => in Pages gespeichert

B-Tree (2) Sortierung Root Node Index 8k...... Vorwärtsverkettung Tabelle linp 8k... Row

B-Tree (3) test=# CREATE TABLE t_test AS SELECT * FROM generate_series(1, 100000) AS x; SELECT 100000 test=# CREATE INDEX idx_x ON t_test (x); CREATE INDEX test=# EXPLAIN SELECT * FROM t_test ORDER BY x LIMIT 10; QUERY PLAN ---------------------------------------------------------------------------------- Limit (cost=0.00..0.44 rows=10 width=4) -> Index Scan using idx_x on t_test (cost=0.00..4376.26 rows=100000 width=4) (2 rows)

Gist (1) - Wie sortiert man Gartenteiche?

Gist (2) - Geodaten sind nicht sinnvoll sortierbar => B-Tree ist folglich ungeeignet - alternativ dazu arbeitet man eher mit contains als mit < und >.

Gist (3) - Gist verwendet man für... => Geodaten => Volltextsuche => etc.

- spezielle Traversierungsstrategie ermöglicht Umkreissuche via Gist - Beispiel: test=# SELECT x, 1000 <-> x AS dist FROM t_test ORDER BY 1000 <-> x LIMIT 5; x dist ------+------ 1000 0 1001 1 999 1 1002 2 998 2 (5 rows) KNN-Suche

GIN / Hashes - Hashes sind in der Praxis eher selten - GIN ( Inverted Index ) kann für Volltextsuche verwendet werden.

Wenn das nicht reicht? - PostgreSQL erlaubt die Definition sogenannter Operator Classes - Definition eigener Indizierungsstrategien

Operator classes (1) - Beispiele: => Wie sucht man in Genomen? => Wie findet man ähnliche Farben? => Wir sortiert man Produktnummern? => Sollen Eilzüge vor Regionalzügen gereiht sein?

Operator classes (2) - Jeder Index hat unterschiedliche Strategien, die man je nach Bedarf bauen kann.

Operator classes (3) - B-Tree: less than 1 less than or equal 2 equal 3 greater than or equal 4 greater than 5

Operator classes (4) - Gist: strictly left of 1 does not extend to right of 2 overlaps 3 does not extend to left of 4 strictly right of 5 same 6 contains 7 contained by 8 does not extend above 9 strictly below 10 strictly above 11 does not extend below 12

Viele Indices - Mehr als ein Index pro Abfrage: test=# explain SELECT * FROM t_test WHERE x = 3 OR x = 4; QUERY PLAN -------------------------------------------------------------------------- Bitmap Heap Scan on t_test (cost=8.54..16.16 rows=2 width=4) Recheck Cond: ((x = 3) OR (x = 4)) -> BitmapOr (cost=8.54..8.54 rows=2 width=0) -> Bitmap Index Scan on idx_x (cost=0.00..4.27 rows=1 width=0) Index Cond: (x = 3) -> Bitmap Index Scan on idx_x (cost=0.00..4.27 rows=1 width=0) Index Cond: (x = 4) (7 rows)

Functional Indexing - Indexes auf Funktionen test=# CREATE INDEX idx_cos ON t_test ( cos(x) ); CREATE INDEX test=# explain SELECT * FROM t_test WHERE cos(x) = 0; QUERY PLAN ---------------------------------------------------------------------- Index Scan using idx_cos on t_test (cost=0.00..8.28 rows=1 width=4) Index Cond: (cos((x)::double precision) = 0::double precision) (2 rows)

Putting it all together

Fazit Herzlichen Dank für Ihre Aufmerksamkeit hs@cybertec.at

Finally... Wir suchen Mitarbeiter! Bewerbungen bitte an hs@cybertec.at