SQL-Optimizer und Optimierung bei DB2



Ähnliche Dokumente
Zugriffe auf DB2-Datenbanken

SQL Performance - Tips Do's & Don'ts

Kosten-Leistungsrechnung Rechenweg Optimales Produktionsprogramm

Informatik 12 Datenbanken SQL-Einführung

Datenbanken Microsoft Access 2010

MIN oder MAX Bildung per B*Tree Index Hint

Waimea Phone Monitor. Handbuch. Anzeige von eingehenden Anrufen auf Telefonanlagen mit TAPI-Interface

Software- und Druckerzuweisung Selbstlernmaterialien

Erfahrungen mit Hartz IV- Empfängern

Abfragen: Grundbausteine

Oracle-Statistiken im Data Warehouse effizient nutzen

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

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

Professionelle Seminare im Bereich MS-Office

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

7.3 Einrichtung 13. Monatslohn. Auszahlung Ende Jahr / Ende der Beschäftigung

So gehts Schritt-für-Schritt-Anleitung

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

1. EINLEITUNG 2. GLOBALE GRUPPEN Globale Gruppen anlegen

Lineare Gleichungssysteme

Bedingungen. Bedingungen. Bedingungen

MS Access 2010 Kompakt

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Die Tabellenvorlage im Katalog für Tabellen speichern... 2 Weiteres zu Schnellbausteinkatalogen EDV + Didaktik - Dr. Viola Vockrodt-Scholz

MS Excel 2010 Kompakt

Dazu stellen Sie den Cursor in die Zeile, aus der eine Überschrift werden soll, und klicken auf die gewünschte Überschrift.

Webalizer HOWTO. Stand:

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

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Gefahrgutfahrer - Infos

Bürokaufmann/Bürokauffrau

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

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

SmartDispatch DMR-Dispatcher. Bestellablauf. SmartDispatch-Bestellablauf V1.0

Stand: Adressnummern ändern Modulbeschreibung

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

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

An die Gläubiger der ALPHA Events UG

Lubuntu als Ersatz für Windows

Lehrer: Einschreibemethoden

Sonderrundschreiben. Arbeitshilfe zu den Pflichtangaben in Immobilienanzeigen bei alten Energieausweisen

Im Jahr t = 0 hat eine Stadt Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. z(t) = at + b

Wir machen neue Politik für Baden-Württemberg

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Logistikmanagement aus Kundensicht, ein unterschätztes Potenzial

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Kurzanleitung RACE APP

Mean Time Between Failures (MTBF)

W-Rechnung und Statistik für Ingenieure Übung 11

Einführung in. Logische Schaltungen

Dokumentation Bonuspunkteverwaltung. Verfasser(in) / Autor: Check it Consulting

Mathematischer Vorbereitungskurs für Ökonomen

Hardware - Software - Net zwerke

Simplex-Umformung für Dummies

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005


STATISTIK. Erinnere dich

IBM SPSS Statistics Version 22. Konfigurieren von Technologie für behindertengerechte Bedienung

Planen mit mathematischen Modellen 00844: Computergestützte Optimierung. Autor: Dr. Heinz Peter Reidmacher

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Melanie Kaspar, Prof. Dr. B. Grabowski 1

Bericht für Menschen mit Gehbehinderung und Rollstuhlfahrer

= äquivalente stat. Lagerbelastung = radial/axial Komponente der größten statischen Belastung = Radial.-/Axialfaktor des Lagers (!

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

FH-SY Chapter Version 3 - FH-SY.NET - FAQ -

Lichtbrechung an Linsen

Bericht über die Untersuchung zur Erblichkeit von Herzerkrankungen beim PON

Umgang mit Veröffentlichungsfehlern

FIW Forschungs-Institut Würtenberger Fragebogen Hauptbefragung bodylife Award bodylife AWARD Fragebogen. 0 Ja, sofort 0 Ja, später 0 Nein

Teambildung. 1 Einleitung. 2 Messen der Produktivität

Optimierung von Heizungsanlagen. Hydraulischer Abgleich Arbeitsweise der Software

Anleitung für die Online-Bewerbung über LSF auf Lehrveranstaltungen aller Lehramtsstudiengänge

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Arbeiten mit Pivot-Tabellen

10.6 Programmier-Exits für Workitems

1 PIVOT TABELLEN. 1.1 Das Ziel: Basisdaten strukturiert darzustellen. 1.2 Wozu können Sie eine Pivot-Tabelle einsetzen?

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Dokumentation Datamining

> Soft.ZIV. Maple Mathematisches Software System

Mandanteninformation Die neue amtliche Muster-Widerrufsbelehrung Art Abs. 3 Satz 1 Anlage 1 EGBGB

Berechnung der Erhöhung der Durchschnittsprämien

Übungsaufgaben Tilgungsrechnung

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

Korrelation (II) Korrelation und Kausalität

Kundenspezifische Preise im Shop WyRu Online-Shop

Trainingsplan 16-wöchiger Trainingsplan für einen Triathlon (Volkstriathlon), Einsteiger

SEK II. Auf den Punkt gebracht!

1.3.2 Resonanzkreise R L C. u C. u R. u L u. R 20 lg 1 , (1.81) die Grenzkreisfrequenz ist 1 RR C . (1.82)

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Word 2010 Schnellbausteine

Das neue Reisekostenrecht 2014

Media Teil III. Begriffe, Definitionen, Übungen

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Studienplatzbeschaffung

Technical Note Nr. 101

Transkript:

SQL-Optimizer und Optimierung bei DB2 S.K. Consulting GmbH, München DB2_SQL_PERF - 1 -

Inhaltsverzeichnis 1. Optimierung bei DB2 1.1 Einflussfaktoren auf die Entscheidung des Optimizers 1.2 Übersicht über die Prädikate 1.3 Filterung und Filterfaktoren 1.3.1 Verteilung von Datenwerten 1.3.2 Filterfaktoren für die Prädikattypen 1.3.3 Interpolationsformeln für "uniform distribution" 1.3.4 Ermittlung der FF - Beispiele S.K. Consulting GmbH, München DB2_SQL_PERF - 2 -

Nach einer Zugriffspfadanalyse entscheidet sich der Optimizer von DB2 für einen Plan, der die Daten dem User möglichst effizient zur Verfügung stellen soll. 1.1 Einflussfaktoren auf die Entscheidung des Optimizers Der Optimizer versucht bei der Pfadanalyse die Zugriffskostenn zu errechnen und zu bewerten. Dabei helfen ihm folgende Faktoren: I/O und CPU-Nutzung! Wahl des Bufferpools! CPU-Modell Status der Tabellen/statistische Daten! Anzahl Zeilen(CARD)! Anzahl bei Pages (NPAGES)! Prozent genutzte Pages(PCTPAGES) Verfügbare Indizes und Index-Aufbau! Unique! Clustered(CLUSTERRATIO)! Index Keys (single, compound)! "multiple index" - Access SQL-Query-Formulierung! Typ(einfach, komplex)! SELECT-Auswahlliste! Prädikate und Verarbeitungsebenen! Klauseln (GROUP BY, ORDER BY) S.K. Consulting GmbH, München DB2_SQL_PERF - 3 -

1.2 Übersicht über die Prädikate Die Qualität und Art der Prädikate bei SQL sind in hohem Masse entscheidend für die Effizienz des Zugriffs auf die erforderliche Datenmenge. Prädikate können in folgende Kategorien eingeteilt werden: "simple" oder "compound"-prädikate ein Prädikat, das mit AND bzw. OR verknüpft ist ist "COMPOUND", ansonsten wird es als "SIMPLE" eingestuft. Desweiteren qualifiziert man Prädikate nach Operationstyp. "SIMPLE" Prädikate weren durch folgende Operationstypen definiert: subquery PERSNR IN ( SELECT ABTLTNR FROM... ) equal PERSNR = '12345' oder DAUER IS NULL IN-List PERSNR IN ( '12345', '34598', '78954' ) range EINSTELLUNGSDATUM > '1.1.1999' oder EINSTELLUNGDATUM BETWEEN '1.01.1999' AND '30.6.1999' NOT EINSTELLUNGSDATUM <> '1.1.1999' oder EINSTELLUNGDATUM NOT BETWEEN '1.01.1999' AND '30.6.1999' ON ON MITARBEIER.PERSNR = ABTEILUNG.ABTLTNR Local oder JOIN Ein Prädikat, das mehr als eine Tabelle umfasst, oder eine Korrelation enthältheisst JOIN-Prädikat. Alle anderen Prädikate werden als LOKALE Prädikate bezeichnet. indexable oder non-indexable Ein Prädikat, für das über die Index-Hierarchien ein oder mehr Index-Einträge gefunden werden ist INDEXABLE. S.K. Consulting GmbH, München DB2_SQL_PERF - 4 -

STAGE1 oder STAGE2 Ein Prädikat, für das die WHERE-Klausel die Beschränkung der Daten beim Lesen übernimmt ist STAGE1. Alle anderen Klauseln sind STAGE2. Boolean Term (BT) kann ein "simple" oder "combound"-prädikat sein. Wird ein Boolean Term für eine Zeile als "false" klassifiziert, sind alle diese Zeile betreffenden WHERE-Bedingungen "false". Beispiel: WHERE col1 = x AND (col4 > y OR col2 = z) ist ein "compound" Boolean Term Prädikat. BT Prädikate sind effizienter als "non-bt" Prädikate, da sie helfen die Qualität einer Zeile ("false" / "true" ) möglichst früh zu bestimmen. BT-Prädikate werden für "Matching Index"-Scans verwendet. Ggf. versucht der Optimizer eine Indexnutzung über einen "multiple index access" zu erreichen. S.K. Consulting GmbH, München DB2_SQL_PERF - 5 -

1.3 Filterung und Filterfaktoren Aus der gelesenen Datenmenge müssen bei Projektion, Gruppierung, usw. Daten gefiltert werden. Eine Filterung bei DB2 wird auf zweierlei Wesen unterstützt: Indexnutzung: aufgrund der WHERE-Klausel werden Indexeinträge gesucht und beim Hit ein Datenzugriff (phys. I/O) eingeleitet. Filter auf Datenebene: aufgrund der WHERE-Bedingung werden Datenzeilen untersucht. Ein Filterfaktor (FF) kalkuliert die Anzahl Zeilen, die in die Resultatsbearbeitung miteinbezogen werdeen müssen - sie sind aufgrund der WHERE-Bedingung als "true" qualifiziert worden. Der FF eines Prädikats ist eine Wahrschein-lichkeitszahl ( 0 <= z <= 1). Jekleiner FF, umso weniger Zeilen können im Ergebnis erwartet werden. Die Filterfaktoren haben eine enorme Auswirlung auf die Performance, da sie die Anzahl zu verarbeitender Zeilen bewerten. Sie werden bei der Ermittlung der I/ O- und Verarbeitungskosten herangezogen. Der Optimizer benötigt hierzu die Aussagen aus dem RUNSTATS-Utility über die Kardinalität der Werte (Häufigkeit) und der Nutzungmöglichkeiten von Indizes. Stehen keine Statistikwerte zur Verfügung, werden Default-Filter-Faktoren benutzt. S.K. Consulting GmbH, München DB2_SQL_PERF - 6 -

1.3.1 Verteilung von Datenwerten Am effizientesten kann der Optimizer arbeiten, wenn die Daten bei der Datenverteilung dem Prinzip der "uniform distribution" folgen. DB2 kenn folgende Verteilungsprinziopien: Uniform Distribution oder Gleichmässige Verteilung Die Datenwerte sind gleichförmig über den Gesamtdatenbestand verteilt. Non-Uniform Distribution oder Ungleichmässige Verteilung Die Datenwerte sind nicht gleichförmig über den Gesamtdatenbestand verteilt. z.b.:! Daten in einem PTS werden aufdgrund des "partitioned index" verteilt Daten! Daten besitzen eine unterschiedliche Kardinalität mit hoher Varianz ( Kunden mit viel und sehr wenig Aufträgen... ) Eine Bewertung der Verteilung für die Filterung bei DB2 gestaltet sich dann schwierig, wenn beim BIND-Prozess noch keinen Hinweise auf die konkrete Datenanforderung vorliegen: Bei Einbezug von Hostvariablen in die SQL-Formulierung ist dies IMMER der Fall. S.K. Consulting GmbH, München DB2_SQL_PERF - 7 -

1.3.2 Filterfaktoren für die Prädikattypen Bei "Simple Predicates" wird der FF durch folgende Kriterien beeinflusst: Statistiken der Spalten im Katalog Konstante aus der Query (bei Hostvariablen nicht erkennbar) Operator des Prädikats Bei "compound Predicates" wird der FF durch folgende Kriterien beeinflusst: Anzahl übereinstimmender Werte beim "single index access" Ergebnis aller Prädikate bezogen auf die Daten einer Tabelle Ergebnis der RID-Kandidatenliste eines "multiple index access" Folgende Typen von FF werden genutzt: "default"-statistikwerte: wenn keine Statistiken verfügbar (COLCARDF = -1) "uniform distribution filter factors": bei einer angenommenen gleichförmigen Verteilung werden Standardwerte eingesetzt. Eine gleichmässsige Verteilung wird angenommen, wenn Statistikdaten vorhanden sind (COLCARDF <> -1) und keine zusätzlichen Statistiken vorhanden sind - z.b. in SYSCOLDIST. Angewandt werden Interpolationsformeln. Werden Host-Variable verwendet, sind "default-ff" definiert. "other distribution filter factors": bei ungleichmässiger Verteilung können über RUNSTATS die häufigsten Inhaltswerte von Index- Spalten aufgezeichnet werden. Dies werden dann in der Spalte SYSCOLDIST geführt. Beispiel: Wert: München Häufigkeit: 678 FF: 6,78 oder 0,0678 S.K. Consulting GmbH, München DB2_SQL_PERF - 8 -

1.3.3 Interpolationsformeln für "uniform distribution" Prädikattyp COL = <wert> COL IS NULL COL >, >= <wert> COL <>, <= <wert> COL BETWEEN <wert1> AND <wert2> COL LIKE '<literal>%' COL IN (<literal-liste>) COL = <ausdruck> <ausdruck> = <wert> <ausdruck> ^= <wert> <ausdruck> op <wert> COL ^ = <wert> COL IS NOT NULL COL NOT BETWEEN <wert1> AND <wert2> COL NOT LIKE '<literal>%' COL NOT IN (<literal-liste>) COL LIKE '%<literal>' COL LIKE '_<literal>' T1.COL = Tx.COL T1.COL ^ = Tx.COL T1.COL op Tx.COL COL = (<subquery>) COL ^ = (<subquery>) COL >, > = (<subquery>) COL <, < = (<subquery>) COL IN (<subquery>) COL NOT IN (<subquery>) COL = ANY,ALL (<subquery>) COL ^= ANY,ALL (<subquery>) <prädikat1> AND <prädikat2> <prädikat1> OR <prädikat2> Filterfaktoren(FF) 1/COLCARDF 1/COLCARDF (HIGH2KEY-<wert>)/(HIGH2KEY- LOW2KEY) (<wert>-low2key)/ (HIGH2KEY-LOW2KEY) (<wert2>-<wert1>)/(high2key-low2key) <analog> BETWEEN <literal> X'00' AND <literal> X'FF' <anzahl literale> (1 / COLCARDF) 1-1 / COLCARDF 1-1 / COLCARDF 1 - (<wert2>-<wert1>) / (HIGH2KEY- LOW2KEY) <analog> NOT BETWEEN <literal> X'00' AND <literal> X'FF' 1 - (<anzahl literale> (1 / COLCARDF)) <analog> BETWEEN <literal> X'00' AND <literal> X'FF' <analog> BETWEEN <literal> X'00' AND <literal> X'FF' MIN(FF(<col1>), FF(<col2>)) 1 - MIN(FF(<col1>), FF(<col2>)) 1/COLCARDF 1-1/COLCARDF (HIGH2KEY-<wert>)/(HIGH2KEY- LOW2KEY) (<wert>-low2key)/(high2key- LOW2KEY) FF(<subquery>) 1 - FF(<subquery>) FF(<subquery>) 1 - FF(<subquery>) FF(<prädikat1>) FF(<prädikat2>) FF(<prädikat1>) + FF(<prädikat2>) - FF(<prädikat1>) FF(<prädikat2>) Default FF = Wert n 1/25 n 0,04 1-1/25 0,96 1/3 0,33 1-1/25 0,96 1-1/25 0,96 1/3 0,33 1/3 0,33 1 - (n 1/25) 1 - (n 0,04) 1 1 1 1 1-1/25 0,96 1/3 0,33 1-1/25 0,96 1/10 0,10 1-1/10 0,90 1/10 0,10 1-1/10 0,90 S.K. Consulting GmbH, München DB2_SQL_PERF - 9 -

1.3.4 Ermittlung der FF - Beispiele "Ausgangsdaten" indizierte Spalten KURS, REFERENT, TERMIN FULLKEYCARDF 2500 unterschiedliche IX-Werte FIRSTKEYCARDF 50 unterschiedliche KURSE COLCARDF auf REFERENT 20 unterschiedliche REFERENTEN CARDF 10.000 Tabellenzeilen Anforderung ermittelter FF WHERE KURS = 'ORA_01' FF = 1/FIRSTKEYCARDF = 1/50 = 0,02 WHERE KURS = 'ORA_01' AND FF = 1/FIRSTKEYCARDF = 1/2500 = 0,0004 REFERENT = 'Kraus' AND TERMIN = '01.10.1999' WHERE KURS = 'ORA_01' AND REFERENT = 'Kraus' FF = (1/FIRSTKEYCARDF 1/COLCARDF von REFERENT) = (1/50 1/20) = (0,02 0,05) = 0,001 WHERE KURS BETWEEN FF = ( 'ORA_04' - 'ORA_01') / (HIGH2KEY - 'ORA_01' AND 'ORA_04' LOW2KEY). Es werden die EBCIDIC- Differenzen binär ermittelt. Anstelle der COLCARDF wird bei IX-Nutzung mit FULLKEYCARDF oder FIRSTKEYCARDF gearbeitet S.K. Consulting GmbH, München DB2_SQL_PERF - 10 -