Seite | ||||||
Datum | ||||||
Wert | 10 | 40 | 20 | 50 | 30 | 60 |
Die folgende Tabelle zeigt die Historie der verzahnten Ausführung zweier Transaktionen und auf dieser Datenbank:
Schritt | ||
1. | BOT | |
2. | ||
3. | BOT | |
4. | ||
5. | ||
6. | ||
7. | ||
8. | ||
9. | ||
10. | ||
11. | ||
12. | ||
13. | ||
14. | commit | |
15. | ||
16. | ||
17. | ||
18. | ||
19. | commit |
Handelt es sich um eine rücksetzbare Historie?
Erstellen Sie die zu der Historie zugehörige Log-Datei unter Verwendung der physischen Protokollierung.
Angenommen, nach dem 16. Schritt tritt ein Absturz des Datenbanksystems auf. Welche Transaktion ist Winner, welche Loser? Wie sieht der Ablauf des Wiederanlaufs aus und was sind dabei die Redo- und Undo-Operationen?
Begründen Sie jeweils Ihre Antwort!
Musterlösung vom 06.07.2008:
Es handelt sich um eine rücksetzbare Historie. Nur auf die Daten und greifen beide Transaktionen zu, und in beiden Fällen greift erst nach dem commit von zu.
Als Log-Einträge ergeben sich folgende Werte:
Schedule | Log | ||
Schritt | [LSN, TA, PageID, Redo, Undo, PrevLSN] | ||
1. | BOT | [#1, , BOT] | |
2. | |||
3. | BOT | [#2, , BOT] | |
4. | |||
5. | |||
6. | |||
7. | |||
8. | [#3, , , , ,#1] | ||
9. | |||
10. | [#4, , , , ,#2] | ||
11. | |||
12. | |||
13. | [#5, , , , , #3] | ||
14. | commit | [#6, , commit,#5] | |
15. | |||
16. | |||
17. | |||
18. | [#7, , , , ,#4] | ||
19. | commit | [#8, , commit,#7] |
Im Gegensatz zur logischen Protokollierung, bei der jeweils eine logische Undo- und eine Redo-Anweisung für eine Schreiboperation angegeben wird, wird bei der physischen Protokollierung ein Before-Image und ein After-Image, also die konkreten Werte eines Datums vor und nach der Operation in einem Log-Eintrag abgelegt.
Im Falle eines Absturzes nach Schritt 16 ist ein Loser und ein Winner, da im Gegensatz zu ein commit aufweisen kann. Bei einem Wiederanlauf würden die protokollierten Änderungen in richtiger Reihenfolge bis zur Absturzstelle erneut in die Datenbasis eingebracht, anschließend wird die Log-Datei in umgekehrter Richtung durchlaufen, um die Undo-Werte aller Loser-Einträge zurückzuschreiben.