Grundlagen der Datenbanken
Transaktion T1 hält eine gemeinsame Sperre (Shared Lock) auf einer Zeile und liest sie. T2 fordert eine gemeinsame Sperre und T3 eine exklusive Sperre (Exclusive Lock) auf dieselbe Zeile an. Was gilt für den Zeitraum, bis T1 ihre Sperre freigibt?
- AT2 erhält ihre Sperre sofort, T3 muss warten
- BT2 und T3 müssen beide warten
- CT2 und T3 erhalten ihre Sperren beide sofort
Antwort und Erläuterung anzeigen
Antwort: A. T2 erhält ihre Sperre sofort, T3 muss warten
Eine gemeinsame Sperre wird beim Lesen von Daten gesetzt; andere Transaktionen können auf dieselben Daten ebenfalls gemeinsame Sperren setzen und gleichzeitig lesen, aber keine exklusive Sperre zum Schreiben. Eine exklusive Sperre wird beim Ändern von Daten gesetzt, und solange sie besteht, können andere Transaktionen weder gemeinsame noch exklusive Sperren setzen. Hier sind die gemeinsame Sperre von T1 und die von T2 miteinander verträglich, T2 erhält ihre Sperre also sofort und kann lesen. Die exklusive Sperre von T3 ist mit der gemeinsamen Sperre von T1 unverträglich, daher muss T3 warten, bis T1 ihre Sperre freigibt (und da T2 ebenfalls eine gemeinsame Sperre hält, auch bis T2 ihre freigibt). Gleichzeitig laufende Transaktionen auf diese Weise mit Sperren voneinander abzuschirmen, nennt man Nebenläufigkeitskontrolle.