Grundlagen der Datenbanken

Welche Aussage beschreibt das für die Nebenläufigkeitskontrolle von Transaktionen verwendete Zwei-Phasen-Sperrprotokoll (2PL) richtig?

  1. AEine Transaktion darf beliebig oft zwischen Setzen und Freigeben von Sperren wechseln. Dadurch ist garantiert, dass nie Deadlocks auftreten
  2. BSperren werden nur beim Schreiben gesetzt, nicht beim Lesen. Dadurch werden alle Probleme einschließlich Dirty Reads verhindert
  3. CHat eine Transaktion auch nur eine Sperre freigegeben, setzt sie danach keine neuen Sperren mehr. Dadurch ist garantiert, dass gleichzeitige Ausführung dasselbe Ergebnis liefert wie serielle Ausführung, Deadlocks können aber trotzdem auftreten
Antwort und Erläuterung anzeigen

Antwort: C. Hat eine Transaktion auch nur eine Sperre freigegeben, setzt sie danach keine neuen Sperren mehr. Dadurch ist garantiert, dass gleichzeitige Ausführung dasselbe Ergebnis liefert wie serielle Ausführung, Deadlocks können aber trotzdem auftreten

Beim Zwei-Phasen-Sperrprotokoll (2PL) hat jede Transaktion zwei Phasen, eine Phase, in der sie die benötigten Sperren nacheinander setzt (Wachstumsphase), und eine Phase, in der sie sie freigibt (Schrumpfungsphase); hat sie einmal mit der Freigabe begonnen, setzt sie keine neuen Sperren mehr. Halten sich alle Transaktionen an diese Regel, ist garantiert, dass das Ergebnis gleichzeitiger Ausführung dasselbe ist wie bei der Ausführung der Transaktionen nacheinander in irgendeiner Reihenfolge (Serialisierbarkeit). Einen Deadlock, bei dem zwei Transaktionen jeweils auf die Freigabe einer Sperre der anderen warten, kann es jedoch nicht verhindern; daher erkennt das DBMS Deadlocks und behandelt sie, etwa durch ein Rollback einer der Transaktionen. In der Praxis wird häufig das strikte Zwei-Phasen-Sperrprotokoll verwendet, das exklusive Sperren bis zum Commit hält; es verhindert auch, dass andere Transaktionen nicht festgeschriebene Daten lesen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. 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?
  2. 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?
  3. 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?
  4. 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?
  5. 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?