Datenbanktechnik

Vorlesung Datenbanktechnik, 4. Semester Studiengang Wirtschaftsinformatik

Vorlesung Datenbanktechnik, 4. Semester Studiengang Wirtschaftsinformatik


J. H.
Diese Lernkarten behandelt fortgeschrittene Konzepte der Datenbanktechnik auf Universitätsniveau. Sie konzentriert sich auf Themen wie Transaktionen, Sperrprotokolle, Indexstrukturen und Optimierung von Datenbankoperationen. Besonders hervorgehoben werden die ACID-Eigenschaften, verschiedene Join-Algorithmen und die Optimierung von Anfragen. Das Lernset richtet sich an Studierende und Fachleute, die ihr Verständnis von Datenbanktechnik vertiefen und effiziente Datenbankanwendungen entwickeln möchten.
Flashcards
65
Students
12
Language
German
Category
Computer Science
Level
University
Created / Updated
24.03.2014 / 14.02.2020

Flashcards

Berechungsformel: lineare Suche

AnzBZ = b/2 (wenn s = 1, andernfalls AnzBZ = b)

 

AnzBZ: Anzahl Blockzugriffe

b: Anzahl Blöcke

s: Selektionskardinalität

 

Berechnungsformel: binäres Suchen

AnzBZ = LOG 2 (b) + (s/bfr) - 1 (wenn nur ein eniziges Schlüsselattribut gesucht: AnzBZ = LOG 2 (b) )

 

AnzBZ: Anzahl Blockzugriffe

b: Anzahl Blöcke

s: Selektionskardinalität

bfr: Blockfaktor

Berechnungsformel: Index-Suche

AnzBZ = x + s

 

AnzBZ: Anzahl Blockzugriffe

x: Anzahl Ebenen

s: Selektionskardinalität, ist 1 wenn Schlüsselattribut

Berechnungsformel: Index-Suche bei Vergleichsbedingungen

AnzBZ = x + (bi1 / 2) + (r / 2)

 

AnzBZ: Anzahl Blockzugriffe

bi1: Anzahl Indexblöcke auf unterster Ebene

r: Anzahl Datensätze

Nested Loop Join

  • falls keine Ordnung vorhanden
  • jeden Satz der einen Relation mit jedem der anderen Relation vergleichen

 

AnzBZ = Anzahl Blöcke Relation A * Anzahl Blöcke Relation B + Anzahl Blöcke Relation A

Single Loop Join

  • eines der beiden Attribute hat eine Zugriffsstruktur (Index)
  • lese eine Relation sequentiell (Single Loop) ein und ermittle über Zugriffstruktur der anderen die Lösungssätze

AnzBZ = AnzBZ Relation A + (AnzSuchanfragen erfolgreich Relation B * (x + s)) + (AnzSuchanfragen erfolglos B * x)

hierbei gilt: eine Suchanfrage je Datensatz der Relation A!

Sort Merge Join

  • falls beide Join-Attribute als physisches Sortierkriterium existieren
  • parallel beide Relationen Blöcke einlesen und Sätze vergleichen

AnzBZ = AnzBZ Relation A + AnzBZ Relation B

 

Oder über Index-Blöcke:

AnzBZ = bi1 Relation A + bi1 Relation B + 2 * erfolgreiche Blockzugriff Relation B

Optimierung der Auswertungsreihenfolge - der Optimizer

  • bestimmt einen effizienten Ausführungsplan
  • meist nicht optimal, da Bestimmung zu teuer

Optimierung der Auswertungsreihenfolge - der Datenbank-Prozessor

  • Ausfühung compilierter Code
  • bestimmt effiziente Knotenauswertung

Optimierung der Auswertungsreihenfolge

  • aus jedem Select-Statetement entsteht 1 Anfragebraum, d.h. geschachtelte Statements getrennt optimiert (innere zuerst)
  • Relationen als Blätter
  • Operationen als innere Knoten

Regeln für die Optimierung des Anfragebaumes

  • frühzeitig Selektionen ausführen (WHERE-Bedingungen)
    • Selektionen im Baum möglichst weit nach unten
    • dadurch weniger Sätze
  • restriktive Selektionen/Joins zuerst ausführen lassen
    • Blätter bzw. Teilbäume umstellen
    • Selektionen/Joins weiter nach links unten bringen
  • kartesische Produkte durch Joins beseitigen
  • führzeitig Projektionen ausführen
    • Projektionen möglichst weit nach unten

Anfrageoptimierung in DB2

  • System-R (70er Jahre): einzelne Operationen Kosten schätzen
  • Starbust (84-92): Weiterenwicklung System-R; Graph manipulieren
  • System-RX (00-05): Weiterentwicklung System-R & Starbust; realtionale Speicherung und XML
  • System-S (04-09): völlig neues Paradigma "Stream Computing"; Echtzeitanalyse

 

Kostenbasierter Optimierer

  • Aufwand für Beantwortung einer SQL-Anfrage
  • künstiliche Einheit "timerons"
  • Kosten auf Statistiken berechnet
  •  

Warum Transaktionsverarbeitung?

  • Mehrbenutzerkontrolle (concurrency control)
  • Wiederherstellung der Datenbank im Fehlerfall (Recovery)

Was ist eine Transaktion?

  • logische Einheit der DB-Verarbeitung
  • gekennzeichnet durch begin transaction und end transaction
  • umfasst eine oder mehrere DB-Zugriffsoperationen
  • wird ganz oder gar nicht ausgeführt

Das Lost Update Problem

Veränderter Wert eines Prozesse geht verloren, da dieser noch nicht wieder zurückgeschrieben war und Prozess 2 mit dem alten Wert gerechnet hat.

Das Dirty Read Problem

Ein Prozess arbeitet mit einem geänderten Wert, der aber dann durch den Prozesse, der die Änderung verursacht hat, wieder rückgängi gemacht wird.

Das Incorrect Summary Problem

Ein Prozess bildet Summe, bevor einer der Summanden durch anderen Prozess geändert wurde.

Das Unrepeatable Read Problem

Prozess 1 liest Flag, bekommt Signal "OK." Prozess 2 setzt Flag auf "NOK", Prozess 1 liest Flag erneut und erhält jetzt "NOK" -> Abbruch

Transaktionszustände

  • beginn transaction
  • read/write
  • commit
    • erfolgreich
    • permanente Speicherung
  • abort/rollback
    • fehlerhafte Verarbeitung
    • alles Rückgängig anhand Systemlog

Das ACID-Prinzip

Atomicity: ganz oder gar nicht

Consistency: konsistente Zustände

Isolation: als ob keine anderen Transaktionen

Durability: dauerhafte Speicherung

Schedule

= Ausführungsplan

Reihenfolge der DB-Operationen von parallel (=interleaved) ablaufenden Transaktionen

Die Recovery-Grundsätze

  • Rollback nur, wenn Transaktion ohne Commit im System Log
  • vor Commit werden Werte vom HS in System Log geschrieben

Wann ist ein Schedule recoveryfähig?

Wenn keine Leseabhängigkeiten bestehen, d.h. Prozess 1 schreibt und Prozess 2 liest denselben Wert => commit/abort in gleicher Reihenfolge

Das Zwei-Phasen-Sperr-Protokoll

  • zur Mehrbenutzerkontrolle benötigt
  • ermöglicht Serialisieren durch Sperren von DB-Objekten
  • Locks
    • shared lock (read_lock)
    • exlusive lock (write_lock)
    • no lock (unlock)
  • Phasen
    • Wachstumsphase (alle lock-Operationen)
    • Schrumpfungsphase (alle unlock-Operationen)

Deadlock

  • zwei oder mehr Transaktionen warten aufeinander
  • Lösung
    • Wait-die-Verfahren: ältere Transaktion wartet, jüngere stribt
    • Wound-wait-Verfahren: ältere Transation beendet, jüngere wartet

Study