Title: IN0008_GDB / GDB: Kapitel 10: Fehlerbehandlung und Recovery
On every note of this deck, unless a note says otherwise:
Title: IN0008_GDB::GDB: Kapitel 10: Fehlerbehandlung und Recovery
Logo: tum_logo.png

Front: Welche arten von Fehlern gibt es?
Back: - R1: Lokaler fehler einer transaktion
- R2: Verlust des Hauptspeichers, abgeschlossene TA muss erhalten bleiben
- R3: Verlust des Hauptspeichers, unabgeschlossene TA muss zurückgesetzt werden
- R4: Verlust des Hintergrundspeichers

Front: Was ist der DBMS Puffer?
Back: - Puffer im Hauptspeicher
- Wenn Seite benötigt wird, wird zuerst im Puffer nachgeschaut
- Oft benötigte Seiten sollten im Puffer liegen
- Deutlich schnellerer Zugriff

Front: Was passiert wenn der DBMS Puffer voll ist?
Back: - Um eine neue Seite zu puffern muss eine alte Seite entfernt werden
- Verschiedene Ersetzungstrategien (steal, force, Least recently used, Least frequently used...)

Front: Was sind "steal" strategien bei der ersetzung von DBMS Pufferseiten
Back: - steal: Alle Seiten können ersetzt werden
- no steal: Seiten die von einer aktiven Transaktion modifiziert werden könne nicht ersetzt werden

Front: Was sind "force" strategien bei der ersetzung von DBMS Pufferseiten
Back: - force: Änderungen im Puffer werden sofort auf die Disk geschrieben
- no force: geänderte Seiten können im Puffer bleiben

Front: Was ist das problem bei force strategien?
Back: Sehr langsam, da random access auf die disk

Front: Was sind Einbringungsstrategien?
Back: Strategie, Seiten im Puffer in den Hintergrundspeicher zu synchronisieren

Front: Wie funktioniert das Twin Block Verfahren?
Back: - Jede Seite wird in zwei Blöcke dupliziert
- parity bit gibt an, welcher Block aktuell ist
- anderer Block wird modifiziert
- Bei Fehler kann der aktuelle Block auf den modifizierten Block kopiert werden

Front: Was bedeutet "update in place"?
Back: - Jede Seite hat eine "fixe" Position auf der Disk
- D.h. Es wird ein Teil der Datei in den hauptspeicher gemappt (mmap)

Front: Wozu dient logging?
Back: - Jede Änderung wird protokolliert
- Bei Fehler / Crash kann über die Logs der Zustand recovered werden

Front: Was ist die LSN in einem Logeintrag?
Back: - Log Sequence Number
- ID des Log eintrags

Front: Welche Komponenten hat ein Logeintrag (in der Vorlesung)?
Back: - Log Sequence Number, LSN
- Transaktionskennung, TA
- PageID (ID der modifizierten Seite)
- Redo
- Undo
- prevLSN (Vorgängerlogeintrag)

Front: Welche Komponenten hat ein Recovery Logeintrag (in der Vorlesung)?
Back: - Log Sequence Number, LSN
- Transaktionskennung, TA
- PageID (ID der modifizierten Seite)
- Redo
- Undo
- prevLSN (Vorgängerlogeintrag)
- UndoNextLSN
- Wichtig: Dreiecksklammern

Front: Was ist der BOT Eintrag?
Back: Begin of Transaction

Front: Was besagt das WAL Prinzip?
Back: - TA Logs müssen zu Disk geschrieben werden bevor die TA committed wird
- Bevor modifizierte Seiten ausgelagert werden, müssen die Modifikationen geloggt werden

Front: Was ist der Unterschied zwischen logischer Protokollierung und physischer Protokollierung?
Back: - Logisch: Beim Log eintrag werden die Operationen welche die Operation ausführt geloggt: z.b. += 10
- Physisch: Es werden die Vorher / Nachher Zustände geloggt: z.b. 100, 110

Front: Wie kann man erkennen, ob für einen bestimmten Log-Eintrag das Before-Image oder das After-Image in der Seite steht?
Back: Wenn eine Seite in den Hintergrundspeicher geschrieben wird, wird der derzeitige LSN-Eintrag mitkopiert.
Erkennung:
- Wenn die LSN der Seite einen kleinern Wert als die LSN des Log-Eintrags enthält, handelt es sich um das Before-Image.
- Ist die LSN der Seite größer oder gleich der LSN des Log-Eintrags, dann war schon das After-Image bezüglich der protokollierten Änderungsoperation auf den Hintergrundspeicher propagiert worden.

Front: Wie ist ein Log-Eintrag aufgebaut?
Back: [LSN, Transaktions-ID, Seiten-ID, Redo-Information, Undo-Information, PrevLSN]

Front: Wie sieht ein Begin-of-Transaction (BOT) Log-Eintrag aus?
Back: [LSN, Transaktions-ID, BOT, 0]

Front: Wie sieht ein commit Log-Eintrag aus?
Back: [LSN, Transaktions-ID, commit, PrevLSN]

Front: Wie ist ein Compensation Log Record (CLR) aufgebaut?
Back: <LSN, Transaktions-ID, Seiten-ID, Redo-Information, PrevLSN, UndoNxtLSN>

Front: Wie wird ein fertiger TA-Rollback im Log-Eintag markiert?
Back: <LSN, Transaktions-ID, -, -, PrevLSN, 0>

Front: In welche richtung wandern die Zeiger im Log Ringpuffer?
Back: Gegen den Uhrzeigersinn

Front: Was passiert wenn der Log Puffer voll is?
Back: Er wird zur Disk geschrieben

Front: Welche zwei wichtigen Operationen zur recovery gibt es?
Back: undo und redo von Transaktionen

Front: Wie funktioniert das lokale Zurücksetzen einer Transaktion
Back: Die zur TA gehörenden Log-Einträge müssen in chronologisch umgekehrter Reihenfolge abarbeitet werden
1. Ermittelung des letzten zur TA gehörenden Log-Eintrags
2. Mit Hilfe der Rückwärtsverkettung zum Anfang traversieren und dabei mit den Undo-Informationen die TA zurücksetzen. Vor der Ausführung wird ein entsprechender CLR protokolliert.

Q: Eine TA welche abgeschlossen ist und vollständig nachvollzogen werden kann nennt man [...]
Eine TA welche fehlerhaft ist nennt man [...]. Sie muss [...] gemacht werden
A: Winner; Loser; Rückgängig
Title: IN0008_GDB::GDB: Kapitel 10: Fehlerbehandlung und Recovery

Front: Welche Phasen des Wiederanlaufs gibt es?
Back: - Analyse: Log Datei wird gescannt, winner und loser werden ermittelt
- Redo der Winner: Protokollierte änderungen werden durchgeführt
- Undo der Loser

Front: Was sind Sicherungspunkte?
Back: Punkte in der Loghistory ab denen alle vorherigen Logenträge zur recovery nicht mehr betrachtet werden müssen.

Front: Welche drei Arten von Sicherungspunkten gibt es?
Back: 1. (globale) transaktionskonsistente Sicherungspunkte
2. aktionskonsistente Sicherungspunkte
3. unscharfe (fuzzy) Sicherungspunkte

Front: Wie kann bei aktionskonsistenten Sicherungspunkten der erste relevante UNDO-Eintrag ermittelt werden?
Back: - Ermittlung der kleinsten LSN (Da LSN streng monoton wachsend) aller zu diesem Zeitpunkt aktiven TAs

Front: Was sind TA konsistente sicherungspunkte?
Back: Sicherungspunkte welche nur abgeschlossene Transaktionen sichern

Front: Was sind Aktionskonsistente sicherungspunkte?
Back: Sicherungspunkte welche auch zwischen Teilaktionen von Transaktionen sichern können

Front: Was sind fuzzy Sicherungspunkte?
Back: - Verwendung bei modernen DBMS mit sehr großen Puffern
- Anstatt modifizierte Seiten auszuschreiben, werden nur die LSN notiert. Wir nennen diese Menge DirtyPages.
- Ermittlung von MinDirtyPageLSN: LSN mit der die am längesten nicht mehr ausgeschriebene Seite in den Hintergrundspeicher propagiert wurde.
Um dies effizient durchzuführen merkt man sich zu jeder Seite im Puffer die LSN der ältesten noch nicht ausgeschriebenen Änderungsoperation.

Front: Wie kann R4 Recovery durchgeführt werden?
Back: Durch laden von Backups, z.b. aus tertiärem Speicher