Grundlagen der Datenbanken
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?
- AT3 und T5
- BT1, T2 und T4
- CT2 und T4
Antwort und Erläuterung anzeigen
Antwort: C. T2 und T4
Bei einem Checkpoint werden die bis dahin im Arbeitsspeicher geänderten Datenbankseiten auf den Speicher geschrieben, und dies wird im Protokoll vermerkt. Die Änderungen von T1, die vor dem Checkpoint festgeschrieben wurde, sind daher bereits in der Datenbank enthalten und brauchen keine Wiederherstellung. T2 und T4, die nach dem Checkpoint, aber vor dem Ausfall festgeschrieben wurden, haben ihren Commit abgeschlossen, doch ein Teil ihrer Änderungen ist möglicherweise noch nicht in die Datenbank geschrieben; sie werden daher mit den Nachher-Werten im Protokoll wiederholt (Rollforward). Bei T3 und T5, die zum Zeitpunkt des Ausfalls nicht festgeschrieben waren, werden etwaige bereits in die Datenbank geschriebene Teiländerungen mit den Vorher-Werten im Protokoll rückgängig gemacht (Rollback). Auch eine vor dem Checkpoint begonnene Transaktion wie T3 wird rückgängig gemacht, wenn sie nicht festgeschrieben war. Checkpoints verkürzen die Wiederherstellung, weil das Protokoll nicht von Anfang an durchlaufen werden muss.