Oracle Datenbank Indizierung (DEU)

Warum sollten Sie an diesem Workshop teilnehmen?

Indizierung gehört zu den wichtigsten Themen bei der Entwicklung und Wartung von Applikationen, die auf einer relationalen Datenbank aufbauen.

Leider sind auch heute noch viele Missverständnisse weit verbreitet, wenn es um dieses Thema geht und welche Aspekte für eine gute Indizierung zu beachten sind.

Daher soll dieser Workshop ein grundsätzliches Verständnis vermitteln, wie B*Tree und Bitmap Indizes in der Oracle Datenbank funktionieren und welche Konsequenzen sich daraus ergeben.

Darauf aufbauend wird anhand vieler konkreter Beispiele erarbeitet, was beim Design von Indizes relevant ist, wie daher eine sinnvolle Vorgehensweise aussieht und welche Faktoren dieses Design beeinflussen.

Mittels einer relativ einfachen Berechnungsmethode und dazugehöriger Formel können dann unterschiedliche Indizierungsvarianten schnell bewertet werden, um eine qualifizierte und quantifizierte Entscheidungsgrundlage zu haben, welche Variante in welchem Szenario bevorzugt werden sollte.

Dabei werden nicht nur Einzelzugriffe auf Tabellen bewertbar gemacht, sondern auch Joins. Die Auswirkungen von Top N / Pagination Abfragen werden dabei ebenso berücksichtigt.

Zusätzliche Aspekte, die beim Design relevant sein können, werden ebenso abgedeckt - sowohl die Möglichkeit, Indizes flexibler nutzen zu können mittels INDEX SKIP SCAN Operationen, und was es diesbezüglich zu beachten gibt, als auch die Optimierung von Speicherplatz mittels Index Kompression.

Je nach verfügbarer Zeit können auch noch viele andere Themen rund um die Indizierung behandelt werden, siehe optionale Kursinhalte weiter unten.

Ziele des Workshops

  • Vermittlung von Grundlagen: Wie ist ein B*Tree Index in der Datenbank aufgebaut? Wie ein Bitmap Index? Was passiert beim Verändern einer solchen Index Struktur?

  • Index Design: Welche Aspekte sind beim Design relevant? Welche unterschiedlichen Varianten kann es geben und wie können diese bewertet werden?

  • Indexzugriffswege bewerten: Welche Zugriffswege haben welche Auswirkungen - wie können diese quantifiziert werden? Praktische Übungen mit einer dafür geeigneten Berechnungsformel

  • Abdeckung weiterer optionaler Themen rund um die Indizierung: Die verschiedenen Optionen der Oracle Datenbank bezüglich Indizierung, Index Monitoring, Indizes und Constraints, DML Optimierungen, Wartung von Indizes, Partitionierung
Voraussetzungen

Grundlegendes Verständnis der Oracle Architektur, SQL

Zielpublikum

DBAs und Entwickler

Kursinhalte

In diesem Seminar werden die wichtigsten Themen bezüglich Indizierung mit B*Tree und Bitmap Indizes in der Oracle Datenbank behandelt – Text / XML / JSON / Domain Indizes werden zwar je nach verfügbarer Zeit erwähnt und beschrieben, aber es wird nicht ausführlich darauf eingegangen – der Schwerpunkt liegt eindeutig auf den B*Tree / Bitmap Indizes:

- Grundlagen: Wie ist ein B*Tree Index aufgebaut, wie ein Bitmap Index und welche Konsequenzen ergeben sich daraus? Wie verändert sich ein Index bei DML Operationen und was ergibt sich daraus?

- Index Access, Filter und Clustering von Daten: Welche Operationen sind beim Index-Zugriff wann wie kostspielig? Warum wird der sogenannte Clustering Factor von Indizes häufig falsch berechnet von der Datenbank und was kann man dagegen machen? Warum kann ein Full Table Scan deutlich effizienter als ein Zugriff per Index sein? Indizes und der Optimizer – was wird bei der Kostenberechnung berücksichtigt, was nicht? OPTIMIZER_INDEX_COST_ADJ / OPTIMIZER_INDEX_CACHING, System Statistiken etc.

- Index Design: Auf was ist beim Design von Indizes zu achten? Was ist für die Reihenfolge von mehreren Ausdrücken in einem Index relevant? Wann ist ein Bitmap Index sinnvoll? Was sind Function Based Indizes? Was sind virtuelle Spalten? Wie hängen diese Features zusammen und wann verwendet man welches dieser Features?

- Index Compression: Wie funktioniert dieses Feature und was bringt es? Welche Auswirkungen gibt es? Unterschied zwischen Basic und Advanced Low / High Compression

Optionale Themen, je nach verfügbarer Zeit

- Index Options: Invisible / Unusable / Virtual / Partial Indizes. Primary Key / Unique / Deferred Constraints und Indizes.

- Indizes und DML: Was sind die Auswirkungen von Indizes bei DML Operationen auf einer Tabelle? Typische Szenarien bei gleichzeitiger Veränderung von Tabellen und welche Maßnahmen hier helfen können – was sind die potentiellen Auswirkungen dieser Maßnahmen?

- Index Monitoring: Wie kann ich eine bestehende Applikation bezüglich der Indizierung überwachen und auf was ist dabei zu achten?

- Foreign Keys und Indizes: Wann sollten Foreign Keys indiziert sein, wann ist es nicht notwendig?

- Index Rebuild: Wann ist es sinnvoll, einen Index aktiv zu reorganisieren? Welche Möglichkeiten gibt es dafür und wie unterscheiden sie sich?

- Partitionierte Indizes: Was ist der Unterschied zwischen lokalen und globalen Indizes? Wie können Indizes partitioniert werden? Welche neuen Features gibt es seit 12c diesbezüglich und wie können diese nützlich sein?

- Case Insensitive / Linguistic Indizes / Collation: Case Insensitive suchen mittels Index, neue Features diesbezüglich seit 12.2

- Über B*Tree und Bitmap Index hinaus – was für Möglichkeiten gibt es noch? Index Organized Tables, Hash und Indexed Cluster, Attribute Clustering, Konzept Domain Indizes allgemein, Volltext / XML / JSON Indizes

- Automatic Indexing: Diese Option steht nur auf Exadata Umgebungen zur Verfügung (On Premise / Cloud / Autonomous Database) – wie funktioniert dieses Feature? Auf was ist zu achten? Was ist derzeit noch nicht unterstützt? Welche Einsatzmöglichkeiten ergeben sich daraus in der Praxis?

No comments:

Post a Comment