Grundlagen der Datenbanken
Welche Aussage beschreibt das für die Nebenläufigkeitskontrolle von Transaktionen verwendete Zwei-Phasen-Sperrprotokoll (2PL) richtig?
- AEine Transaktion darf beliebig oft zwischen Setzen und Freigeben von Sperren wechseln. Dadurch ist garantiert, dass nie Deadlocks auftreten
- BSperren werden nur beim Schreiben gesetzt, nicht beim Lesen. Dadurch werden alle Probleme einschließlich Dirty Reads verhindert
- 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.