Grundlagen der Datenbanken

Transaktion T1 setzte eine exklusive Sperre auf Zeile A und forderte dann eine Sperre auf Zeile B an, während T2 eine exklusive Sperre auf Zeile B setzte und dann eine Sperre auf Zeile A anforderte, sodass keine von beiden weiterkommt. Was tut ein DBMS üblicherweise, wenn es diese Situation erkennt?

  1. AEs lässt beide weiter warten; eine der Sperren wird irgendwann von selbst freigegeben
  2. BEs führt für eine Transaktion ein Rollback aus, um deren Sperren freizugeben, und lässt die andere weiterlaufen
  3. CEs schreibt die Änderungen von T1 und T2 beide unverändert fest
Antwort und Erläuterung anzeigen

Antwort: B. Es führt für eine Transaktion ein Rollback aus, um deren Sperren freizugeben, und lässt die andere weiterlaufen

Ein Zustand, in dem zwei oder mehr Transaktionen gegenseitig auf die Freigabe von Sperren warten, sodass keine weiterkommt, heißt Deadlock (Verklemmung). Durch bloßes Warten löst er sich nie auf; viele DBMS erkennen einen Deadlock daher, etwa wenn im Wartegraphen, der zeigt, welche Transaktion auf welche wartet, ein Zyklus entsteht, und führen für eine der Transaktionen (das Opfer) ein Rollback aus, um deren Sperren freizugeben. Die zurückgesetzte Transaktion wird später erneut ausgeführt. Ein anderer Ansatz ist eine Obergrenze (Timeout) für das Warten auf Sperren, bei deren Überschreitung die Transaktion zurückgesetzt wird. Als Vorbeugung ist es wirksam, alle Transaktionen Sperren in einer festen Reihenfolge setzen zu lassen, etwa Zeile A vor Zeile B.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. 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?
  2. 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?
  3. 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?
  4. 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?
  5. Welche Aussage beschreibt unter den als NoSQL bezeichneten Datenbanken die Eigenschaften eines Key-Value-Stores im Allgemeinen richtig?