DOAG Index Tuning

Ähnliche Dokumente
Oracle Index Tuning &Admin

10 Gründe warum Ihr Index nicht verwendet wird

DOAG Nürnberg Oracle Index Tuning & Administration. Marco Patzwahl

Oracle 9i Einführung. Performance Tuning. Kurs. Teil 8 Indizes. Universität Hannover. Installation. Index-Typen. Anhang.

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

Warum wird mein Index nicht benutzt?

Automatisierung von Tabellen- und Index-Reorganisationen

Performance in der Oracle Datenbank von Anfang an

Index Rebuild. DOAG Konferenz , Nürnberg DOAG Konferenz , Nürnberg Martin Hoermann Martin Hoermann

Tabellen und Indizes Reorganisieren, aber wann?

Index Rebuild. DOAG Konferenz , Nürnberg. Martin Hoermann

DOAG Regionaltreffen TABLE REORG. Klaus Reimers. Leiter Beratung & Entwicklung, ORDIX AG, Paderborn

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

Inhalt. 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index

Übersicht der wichtigsten MySQL-Befehle

Sind wir eigentlich ganz dicht? - Revisited. Eero Mattila Principal Systems Consultant

Online Table Shrink. Freigabe von ungenutztem Speicherplatz. Autor: Ralf Durben, ORACLE Deutschland GmbH

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

Oracle 9i Einführung Performance Tuning

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken II B: DBMS-Implementierung Klausur

Indizes B+Bäume in Oracle. Jörg Winkler

select DISTINCT Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf - DISTINCT steht dass keine Zeile mehrfach vorkommt

Oracle 9i Einführung Performance Tuning

Oracle 10g Einführung

Abfragen (Queries, Subqueries)

Donnerstag, 10. November h00, Musensaal Database. LogMiner im Einsatz. Marco Patzwahl MuniQSoft GmbH, Unterhaching b.

Tuning the Mobile Server

Anfrageoptimierung Ausführungspläne, Hints, Statistikinformationen, IDEs

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

Oracle Datenbank - Tuning

Ich muss gestehen, initial hätte ich mir auch so eine Syntax gewünscht. Bei genauerer Betrachtung stelle ich aber fest:

Kurs. Teil 7 UNDO-Management. Universität Hannover. Agenda. Einführung. Nutzung RBS Oracle 9i Einführung Performance Tuning.

Housekeeping -2

Oracle Indexing Primer

Gliederung. 1) Speicherplatz-Zuordnung und -Verwaltung 2) Indizes 3) Explain Plan 4) Join-Operationen 5) Der Optimizer 6) Parallelisieren

Indexbasiertes SQL Tuning

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

Datenbank Objekte (Tabellen, Segemente, Extents, Blöcke)

Housekeeping -2

Oracle Datenbank 11g Advanced Compression Option

Oracle 10g Einführung

ORACLE DATENBANKOPTIMIERUNG (BASICS)

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

Erzeugung und Veränderung von Tabellen

Indexing und Performance Tuning

Oracle 9i Einführung. Performance Tuning. Kurs. Teil 10 Stored Outlines. Universität Hannover. Eigenschaften. Migration. Erstellen mit OEM.

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Übungsaufgaben mit Lösungen

SQL: Abfragen für einzelne Tabellen

Nested Tables Types als Ergänzung zu Pivot XML

Martin Bracher Technische Background Info und Trivadis Scripts

Row Chaining & Row Migration Alte Bekannte - immer noch aktuell! DOAG 2014 Datenbank Dierk Lenz

DOAG München Die etwas anderen Oracle Performance-Tipps. Marco Patzwahl

Datenbanken II B: DBMS-Implementierung Musterlösung zur Klausur

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

Willkommen zum DOAG Regionaltreffen

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

Kurs Oracle 9 i Einführung Performance Tuning Teil 5 Buffer Cache

Oracle Tuning - Theorie und Interpretation

MIN oder MAX Bildung per B*Tree Index Hint

Indexe. Ein Index = eine Struktur auf Platte, die einer Tabelle oder Sicht zugeordent ist, um die Tupeln in der Tabelle oder Sicht schneller abzurufen

DOAG ORACLE LogMiner

5.8 Bibliotheken für PostgreSQL

Partitioning mit Oracle Text 9i

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

Create-Table-Befehl. CREATE TABLE Tabellenname ( { Spalte { Datentyp Gebietsname } [ Spaltenbedingung [ ] ] Tabellenbedingung }

12 BG EDV Access / Inf-SQL1 Theodor-Heuss-Schule Wetzlar

Speed up your Query Strategien zur Optimierung von SQL-Queries. Juni 2012 Ulrike Brenner

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

Bekanntes und Unbekanntes aus dem SQL-Reich. So was geht auch mit SQL? 1

Andrea Held. Motivation ILM: Definition und Strategien Lösungen für Oracle Datenbanken. Empfehlungen

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

Es geht also im die SQL Data Manipulation Language.

Oracle 9i Einführung Performance Tuning

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

Vorlesung Datenbanken II B Nachklausur

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Johannes Ahrends Geschäftsführer CarajanDB GmbH CarajanDB GmbH

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

ZWISCHEN ALBTRAUM UND OPTIMALER PERFORMANCE

PostgreSQL Wartungsstrategien

Übung PL/SQL Trigger Lösungen

Space The Final Frontier

Johannes Ahrends Geschäftsführer CarajanDB GmbH CarajanDB GmbH

Oracle Advanced Compresion 10g versus 11g

Informatik 12 Datenbanken SQL-Einführung

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL structured query language

SQL als Zugriffssprache

Erzeugen von Constraints

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Vorstellung DIE QSC AG. Datum:

Performanter Aufbau von Materialized Views im ETL-Prozess Vorgehen und ein Framework für den OWB. Reinhard Mense Geschäftsführer ARETO Consulting

Inhaltsverzeichnis. Installationsübersicht. A. Installationsübersicht

Grundlagen der Datenbanksysteme 2 (M-DB2) Dr. Karsten Tolle

DOAG 2015 Oracle Probleme & Lösungen

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

Transkript:

DOAG Index Tuning 2010-1

DOAG Index Tuning 2010-2

DOAG Index Tuning 2010-3

DOAG Index Tuning 2010-4

DOAG Index Tuning 2010-5

Ausführliche Syntax: CREATE [UNIQUE] INDEX [<owner>.]<index_name> ON TABLE [<owner>.]<tab_name> (<spalten_name> [ASC DESC], <spalten_name> [ASC DESC],...) [LOGGING NOLOGGING] [ONLINE] [TABLESPACE <tablespace_name>] [COMPRESS <int> NOCOMPRESS] [NOSORT] [PARALLEL <int> NOPARALLEL] [PCTFREE <int>] [PCTUSED <int>] [INITRANS <int>][maxtrans <int>] [STORAGE ([INITIAL <int>[k M]] [NEXT <int>[k M]] [MINEXTENTS <int>] [MAXEXTENTS <int>]] )]; Stichwörter: Index Syntax DOAG Index Tuning 2010-6

DOAG Index Tuning 2010-7

Hinweis: Wenn Der Datensatz "ALLEN" gesucht wird geht der Index wie folgt vor: Lese Index-Start-Block (1) Buchstaben A-J befindet sich im Unterblock 2 Buchstabe A befindet sich im Leaf-Block 4 Datensatz "ALLEN" hat die folgende ROWID AABJJHTFGG... Aus der Rowid kann die Block-Nummer, datei-nummer und Zeilen-Nummer des Datensatz ermittelt werden Der Datenblock wird gelesen Fertig Dafür waren nur 3 Index und 1 Datenblock (+ Segmentheader Block) notwendig Stichwörter: Index B-Tree DOAG Index Tuning 2010-8

Hinweis: Index zu groß? SELECT owner, segment_name, bytes/1024/1024 FROM dba_segments WHERE segment_type='index' AND owner NOT IN ('SYS','SYSTEM') ORDER BY 3 DESC; Welcher Index wird nicht benutzt? SELECT * FROM dba_objects WHERE object_id IN (SELECT i.obj# FROM sys.icol$ i, sys.col_usage$ c WHERE i.bo# =c.obj#(+) AND i.col# =c.intcol#(+) AND c.obj# IS NULL ) AND owner NOT IN ('SYS','SYSTEM','OUTLN','WMSYS','XDB','EXFSYS','SYSMAN','HR','OLAPSYS', 'MDSYS','FLOWS_030000','OE','IX','DBSNMP','PERFSTAT','CTXSYS','ORDDATA','ORDS YS','APEX_030200'); DOAG Index Tuning 2010-9

Hinweis: Prüfen Sie, welche Objekte auf welchem Tablespace liegen mit folgendem Select: SELECT tablespace_name, segment_type, COUNT(*) FROM dba_segments WHERE owner='scott' GROUP BY tablespace_name, segment_type; Verschieben Sie Indizes ggf. mittels: ALTER INDEX scott.my_index REBUILD ONLINE /* ONLINE geht nur in EE */ TABLESPACE my_index_tbs; DOAG Index Tuning 2010-10

Hinweis: EMPNO Lieblingsfarbe 7839 rot 7840 grün 7841 gelb 7842 blau ROWID BITMAP INDEX AABCDFJKMNDF 00 AABCDFJKMNDG 01 AABCDFJKMNDH 10 AABCDFJKMNDI 11 Empfohlene Hints für Bitmap-Indizes: INDEX_COMBINE AND_EQUAL Stichwörter: Bitmap Index DOAG Index Tuning 2010-11

Weitere Nachteile: Für OLTP Transaktionen ist der Index ungeeignet. Beispiel: CREATE TABLE bm_test AS SELECT rownum nr,decode(floor(dbms_random.value(0,4)),0, 'Nord',1,'Süd',2,'Ost',3,'West') region FROM dba_objects; -- auf 1 Mio Zeilen auffüllen CREATE BITMAP INDEX bm_ind ON bm_test(region) TABLESPACE indx; EXEC dbms_stats.gather_index_stats( ownname=>'scott',indname=>'bm_ind'); SELECT blevel, leaf_blocks, distinct_keys, avg_leaf_blocks_per_key FROM DBA_INDEXES WHERE index_name='bm_ind'; => 1,170,4,42 (Bitmap Index) => 2,4440,4,1110 (Für Nonuniqe Index, >Faktor 26 ) > SELECT region, count(*) FROM bm_test GROUP BY region; REGION COUNT(*) ------ -------- Nord 1915 Ost 1932 Süd 1882 West 1881 Stichwörter: Bitmap Index Beispiel DOAG Index Tuning 2010-12

Nachteile Keine Suchbereiche bei Abfragen möglich (BETWEEN 10 AND 20) Index-Blöcke werden nur ca. zu 75% ausgelastet, dadurch werden Fast Full Index Scans langsamer. Hinweis: Nicht dokumentiert ist folgender Index-Typ: CREATE INDEX scott.job_r_ix ON scott.emp REVERSE( job); Folgender Select erzeugt dann keinen FULL Table Scan: SELECT * FROM scott.emp WHERE ename LIKE REVERSE('R%'); Stichwörter: Reverse Key Index DOAG Index Tuning 2010-13

DOAG Index Tuning 2010-14

Weitere Tipps: DBMS_STATS.GATHER_INDEX_STATS regelmäßig durchführen. (Besonders nach einem Index-Rebuild) Indizes nur auf Spalten legen, die in der WHERE-Bedingung benutzt werden. Index in einem eigenen Tablespace ablegen, oder bei partitionierten Tabellen auch auf mehrere Tablespaces verteilen. Die Option NOSORT kann verwendet werden die Index-Einträge bereits sortiert sind. Dies spart eine Menge Zeit. Die Option PARALLEL wird verwendet wenn Multiprozessor-Maschinen und mehrere Platten zur Verfügung stehen DOAG Index Tuning 2010-15

Beispiel für: CREATE INDEX marco.brd_telefon_ix ON MARCO.BRD( CASE WHEN vorwahl='089' THEN vorwahl ELSE NULL END, CASE WHEN vorwahl='089' THEN telefon ELSE NULL END); exec dbms_stats.gather_index_stats('marco','brd_telefon_ix') SELECT dazu: SELECT * FROM MARCO.BRD WHERE (CASE WHEN vorwahl='089' THEN vorwahl ELSE NULL END)='089' AND (CASE WHEN vorwahl='089' THEN telefon ELSE NULL END) LIKE '679090%'; Ausführungsplan dazu: DOAG Index Tuning 2010-16

DOAG Index Tuning 2010-17

Stichwörter: Index Compression DOAG Index Tuning 2010-18

DOAG Index Tuning 2010-19

DOAG Index Tuning 2010-20

DOAG Index Tuning 2010-21

Hinweis: In der Spalte opt_cmpr_count steht die Anzahl der Spalten auf die ein compress gesetzt werden sollte: Beispiel: Index auf a,b,c, opt_cmpr_count=2 Empfehlung: ALTER INDEX i REBUILD ONLINE COMPRESS 2; In der Spalte opt_cmpr_pctsave steht die Prozentzahl an Platz die für die Speicherung des Index eingespart werden kann Stichwörter: Index Reorg DOAG Index Tuning 2010-22

DOAG Index Tuning 2010-23

DOAG Index Tuning 2010-24

DOAG Index Tuning 2010-25

DOAG Index Tuning 2010-26

Hinweis: Anstelle der Option CASCADE kann auch COMPACT verwendet werden, dann wird nur reorganisiert, der überflüssige Speicher jedoch nicht freigegeben. Stichwörter: Segment Shrink DOAG Index Tuning 2010-27

DOAG Index Tuning 2010-28

Hinweis: Ein Rebuild ONLINE ist bei folgenden Indizes bisher nicht möglich (Stand Jan 2005): Function Based Index Reverse Kex Index Kex Compressed Index Zweitindizes auf Index Organized Tables Bitmap Indizes auf IOT Stichwörter: Index Tuning DOAG Index Tuning 2010-29

DOAG Index Tuning 2010-30

DOAG Index Tuning 2010-31

Hinweis: Auschnitt aus dem Beispielskript: REM RESET Skript /opt/reset_perf.sql SET TIMING OFF DROP INDEX marco.brd_ix1; HOST rman target=/ cmdfile=/opt/rman_del.rma STARTUP FORCE ALTER SYSTEM SWITCH LOGFILE; ALTER SYSTEM CHECKPOINT; select 'Startzeit:' to_char(sysdate,'dd.mm.yyyy HH24:MI:SS'),log_mode FROM V$database; SET TIMING ON @&&res_script CREATE INDEX marco.brd_ix1 ON marco.brd(nachname) TABLESPACE tuning_ind_tbs; @&&res_script CREATE INDEX marco.brd_ix1 ON marco.brd(nachname) TABLESPACE tuning_ind_tbs NOLOGGING; @&&res_script CREATE INDEX marco.brd_ix1 ON marco.brd(nachname) TABLESPACE tuning_ind_tbs COMPRESS; @&&res_script CREATE INDEX marco.brd_ix1 ON marco.brd(nachname) TABLESPACE tuning_ind_tbs PARALLEL 4; @&&res_script CREATE INDEX marco.brd_ix1 ON marco.brd(nachname) TABLESPACE tuning_ind_tbs ONLINE; DOAG Index Tuning 2010-32

DOAG Index Tuning 2010-33

DOAG Index Tuning 2010-34

DOAG Index Tuning 2010-35

DOAG Index Tuning 2010-36