Grundlagen der Datenbanken

Viele DBMS zeichnen bei einer Datenänderung die Änderung in einem Protokoll (Journal, Log) auf und schreiben dieses Protokoll vor der eigentlichen Datenbank auf nichtflüchtigen Speicher (WAL: Write-Ahead Logging). Was ist der Hauptgrund für dieses Vorgehen?

  1. ASelbst nach einem Ausfall können anhand des Protokolls festgeschriebene Änderungen wiederholt und nicht festgeschriebene rückgängig gemacht werden, sodass ein korrekter Zustand wiederhergestellt wird
  2. BDas Protokoll zuerst zu schreiben verkleinert die eigentliche Datenbank
  3. CDas Protokoll kann bei Suchen mit SELECT-Anweisungen als Index verwendet werden
Antwort und Erläuterung anzeigen

Antwort: A. Selbst nach einem Ausfall können anhand des Protokolls festgeschriebene Änderungen wiederholt und nicht festgeschriebene rückgängig gemacht werden, sodass ein korrekter Zustand wiederhergestellt wird

Aus Leistungsgründen werden Datenbankseiten in Puffern im Arbeitsspeicher geändert und erst einige Zeit später auf den Speicher geschrieben. Im Moment eines Ausfalls kann der Speicher daher eine Mischung aus festgeschriebenen Änderungen, die noch nicht geschrieben wurden, und nicht festgeschriebenen Änderungen, die bereits geschrieben wurden, enthalten. Werden die Werte vor und nach jeder Änderung im Protokoll festgehalten und wird das Protokoll vor der eigentlichen Datenbank geschrieben, lassen sich nach einem Ausfall anhand des Protokolls festgeschriebene Änderungen wiederholen (Rollforward, REDO) und nicht festgeschriebene rückgängig machen (Rollback, UNDO), sodass ein korrekter Zustand wiederhergestellt wird. Ein Commit kann als abgeschlossen gelten, sobald der Commit-Eintrag der Transaktion im Protokoll steht; die Datenbankseiten müssen also nicht jedes Mal sofort geschrieben werden, was die Leistung erhält. Dieser Mechanismus trägt die Atomarität und Dauerhaftigkeit der ACID-Eigenschaften.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. Es gibt die Transaktionen T1 bis T5, und vor einem Ausfall wurde einmal ein Checkpoint gesetzt. T1 begann und wurde vor dem Checkpoint festgeschrieben. T2 und T3 begannen vor dem Checkpoint; T2 wurde nach dem Checkpoint, aber vor dem Ausfall festgeschrieben, T3 war zum Zeitpunkt des Ausfalls nicht festgeschrieben. T4 und T5 begannen nach dem Checkpoint; T4 wurde vor dem Ausfall festgeschrieben, T5 nicht. Für welche Transaktionen ist bei der Wiederherstellung nach dem Ausfall ein Rollforward anhand des Protokolls nötig?
  2. Auf der Spalte MitgliedsNr einer Mitgliedertabelle mit 1 Million Zeilen wurde ein B+-Baum-Index angelegt. Welche Kombination aus allgemein zu erwartender Wirkung und deren Preis ist richtig?
  3. Für eine Mitgliedertabelle mit 1 Million Zeilen wird erwogen, auf den Spalten MitgliedsNr (alle verschieden), Präfektur (47 Werte) und Geschlecht (2 Werte, etwa je zur Hälfte) jeweils einen B+-Baum-Index anzulegen. Bei welcher Spalte ist ein Index bei einer Suche, die in der WHERE-Klausel einen Wert für eine Spalte angibt, voraussichtlich am wenigsten wirksam?
  4. Welche Aussage beschreibt unter den als NoSQL bezeichneten Datenbanken die Eigenschaften eines Key-Value-Stores im Allgemeinen richtig?
  5. Welche Beschreibung des CAP-Theorems für eine verteilte Datenbank, die Kopien der Daten auf mehreren Servern hält, ist zutreffend?