Algorithmen für die Wiederherstellungs- und Isolierungsausnutzungssemantik

In der Informatik sind Algorithmen für die Wiederherstellungs- und Isolierungsausnutzungssemantik oder WIDDER ein Wiederherstellungsalgorithmus, der entworfen ist, um mit einer, Diebstahl-Datenbankannäherung ohne Kräfte zu arbeiten; es wird von IBM DB2, Microsoft SQL Server und vielen anderen Datenbanksystemen verwendet.

Drei Hauptgrundsätze liegen hinter dem WIDDER

  • Schreiben Sie vorn Protokollierung: Jede Änderung zu einem Gegenstand wird zuerst im Klotz registriert, und der Klotz muss der stabilen Lagerung geschrieben werden, bevor Änderungen zum Gegenstand der Platte geschrieben werden.
  • Das Wiederholen der Geschichte während tut Nochmals: Auf dem Wiederanfang nach einem Unfall verfolgt WIDDER die Handlungen einer Datenbank vor dem Unfall zurück und bringt das System dem genauen Staat zurück, dass es in vor dem Unfall war. Dann macht es die in der Unfall-Zeit noch aktiven Transaktionen auf.
  • Protokollierung von Änderungen während macht Auf: Mit der Datenbank vorgenommene Änderungen, während man Transaktionen aufmacht, werden geloggt, um sicherzustellen, dass solch eine Handlung im Falle wiederholter Wiederanfänge nicht wiederholt wird.

Protokollierung

Für den WIDDER-Algorithmus, um zu arbeiten, müssen mehrere Klotz-Aufzeichnungen während der Operation der Datenbank geschaffen werden. Klotz-Einträge werden mit Folge-Zahlen folgend numeriert.

Gewöhnlich wird der resultierende logfile auf der so genannten "stabilen Lagerung" versorgt, die ein Speichermedium ist, das, wie man annimmt, Unfälle und Hardware-Misserfolge überlebt. Um die notwendige Information für die Protokollierung von zwei datastructures zu sammeln, müssen aufrechterhalten werden: der schmutzige Seitentisch (DPT) und der Transaktionstisch (TT).

Der schmutzige Seitentisch behält Aufzeichnung aller Seiten, die modifiziert und noch nicht der Scheibe und der ersten Folge-Zahl zurückgeschrieben worden sind, die diese Seite veranlasst hat, schmutzig zu werden. Der Transaktionstisch enthält alle Transaktionen, die zurzeit laufen und die Folge-Zahl des letzten Klotz-Zugangs, den sie verursacht haben.

Wir schaffen Klotz-Aufzeichnungen der Form (Folge-Zahl, Transaktionspersonalausweis, Seitenpersonalausweis, tun Sie Nochmals, Machen Sie Vorherige Folge-Zahl Auf). Nochmals zu tun, und Macht Felder Auf behalten Information über die Änderungen, die diese Klotz-Aufzeichnung spart, und wie man sie aufmacht. Die Vorherige Folge-Zahl ist eine Verweisung auf die vorherige Klotz-Aufzeichnung, die für diese Transaktion geschaffen wurde. Das Verwenden der Vorherigen Folge-Zahlen, die es zum Beispiel möglich ist, zur Protokolldatei in umgekehrter Reihenfolge zu überqueren und alle Handlungen einer spezifischen Transaktion aufzumachen, im Falle dass es abbricht.

Jedes Mal, wenn eine Transaktion beginnt oder begeht, schreiben wir einen Beginnen Transaktionszugang oder, beziehungsweise, ein Ende des Klotz-Zugangs für diese Transaktion.

Während einer Wiederherstellung, oder während man die Handlungen einer abgebrochenen Transaktion aufmacht, wird eine spezielle Art der Klotz-Aufzeichnung, Compensation Log Record (CLR) geschrieben, um das zu registrieren, die Handlung ist bereits aufgemacht worden. CLRs sind der Form (Folge-Zahl, Transaktionspersonalausweis, Seitenpersonalausweis, Tun Sie Vorherige Folge-Zahl Nochmals, Machen Sie Als nächstes Folge-Zahl Auf). Das Aufmachen Feld wird weggelassen, weil diese Information bereits in der ursprünglichen Klotz-Aufzeichnung für diese Handlung versorgt wird.

Wiederherstellung

Die Wiederherstellung arbeitet in drei Phasen. Die erste Phase, Analyse, schätzt die ganze notwendige Information vom logfile. Die Nochmals tun Phase stellt die Datenbank zum genauen Staat am Unfall einschließlich aller Änderungen von unbegangenen Transaktionen wieder her, die zu diesem Zeitpunkt liefen. Die Aufmachen Phase macht dann alle unbegangenen Änderungen auf, die Datenbank in einem konsequenten Staat verlassend.

Analyse

Während der Analyse-Phase stellen wir die ABTEILUNG und den TT wieder her, wie sie zur Zeit des Unfalls waren.

Wir bohren den logfile (vom Anfang oder dem letzten Kontrollpunkt) durch und fügen alle Transaktionen hinzu, für die wir uns begegnen, Beginnen Transaktionseinträge zum TT. Wann auch immer ein Endklotz-Zugang gefunden wird, wird die entsprechende Transaktion entfernt. Die letzte Folge-Zahl für jede Transaktion wird natürlich auch aufrechterhalten.

Während desselben Laufs füllen wir auch den schmutzigen Seitentisch, indem wir einen neuen Zugang hinzufügen, wann auch immer wir auf eine Seite stoßen, die modifiziert wird und noch nicht in der ABTEILUNG. Das schätzt jedoch nur eine Obermenge aller schmutzigen Seiten zur Zeit des Unfalls, da wir die wirkliche Datenbankdatei nicht überprüfen, ob die Seite der Lagerung zurückgeschrieben wurde.

Nochmals tun

Von der ABTEILUNG können wir die minimale Folge-Zahl einer schmutzigen Seite schätzen. Von dort müssen wir anfangen, die Handlungen bis zum Unfall nochmals zu tun, im Falle dass sie bereits nicht angedauert wurden.

Das Durchbohren der Protokolldatei, die wir für jeden Zugang überprüfen, ob die modifizierte Seite im ABTEILUNGS-Tisch ist, und ob die Folge-Zahl in der ABTEILUNG kleiner ist als die Folge-Zahl der Aufzeichnung (d. h. ob die Änderung im Klotz neuer ist als die letzte Version, die angedauert wurde). Wenn es ist, holen wir die Seite von der Datenbanklagerung herbei und überprüfen die Folge-Zahl auf dem wirklichen, wenn es kleiner ist als die Folge-Zahl auf der Klotz-Aufzeichnung. Diese Kontrolle ist notwendig, weil die wieder erlangte ABTEILUNG nur eine konservative Obermenge der Seiten ist, die wirklich wiederholt anzuwendende Änderungen brauchen. Letzt wenden wir die nochmals tun Handlung wiederholt an und versorgen die neue Folge-Zahl auf der Seite. Es ist auch für die Wiederherstellung von einem Unfall während der Nochmals tun Phase wichtig, weil nochmals zu tun, zweimal auf dieselbe Seite nicht angewandt wird.

Aufmachen

Nach der Nochmals tun Phase widerspiegelt die Datenbank den genauen Staat am Unfall. Jedoch müssen die Änderungen von unbegangenen Transaktionen aufgemacht werden, um die Datenbank zu einem konsequenten Staat wieder herzustellen.

Dafür bohren wir umgekehrt den Klotz für jede Transaktion durch (jene Läufe können natürlich in einen verbunden werden) das Verwenden der Vorherigen Numerischen Folge-Felder in den Aufzeichnungen. Für jede Aufzeichnung machen wir die Änderungen auf (die Information im Aufmachen Feld verwendend), und schreiben eine Entschädigungsklotz-Aufzeichnung der Protokolldatei. Wenn wir auf eine Beginnen Transaktionsaufzeichnung stoßen, schreiben wir eine Endklotz-Aufzeichnung für diese Transaktion.

Die Entschädigungsklotz-Aufzeichnungen machen es möglich, während eines Unfalls zu genesen, der während der Wiederherstellungsphase vorkommt. Das ist nicht so ungewöhnlich, wie man denken könnte, weil es für die Wiederherstellungsphase möglich ist, ziemlich lange zu nehmen. CLRs werden während der Analyse-Phase gelesen und während der Nochmals tun Phase nochmals getan.

Kontrollpunkte

Um zu vermeiden, den ganzen logfile während der Analyse-Phase wiederzuscannen, ist es ratsam, die ABTEILUNG und den TT regelmäßig zum logfile zu sparen, einen Kontrollpunkt bildend. Anstatt die ganze Datei durchbohren zu müssen, ist es gerade notwendig, umgekehrt zu laufen, bis ein Kontrollpunkt gefunden wird. Von diesem Punkt ist es möglich, die ABTEILUNG und den TT wieder herzustellen, wie sie zur Zeit des Unfalls waren, indem sie den logfile vorwärts wieder gelesen haben. Dann ist es möglich, wie gewöhnlich damit weiterzugehen, tun Nochmals und machen Auf.

Der naive Weg für checkpointing schließt Blockierung der ganzen Datenbank ein, um Änderungen zur ABTEILUNG und dem TT während der Entwicklung des Kontrollpunkts zu vermeiden. Krause Protokollierung überlistet das durch das Schreiben von zwei Klotz-Aufzeichnungen. Krause Klotz-Anfänge Hier registrieren und, nach der Vorbereitung der Kontrollpunkt-Daten, des wirklichen Kontrollpunkts. Zwischen den zwei Aufzeichnungen kann anderer logrecords geschaffen werden. Während der Wiederherstellung ist es notwendig zu finden, dass beide Aufzeichnungen einen gültigen Kontrollpunkt erhalten.

Externe Verweise


Ölfrühlingsbedenken / Instruktionsniveau-Parallelismus
Impressum & Datenschutz