DE4220198A1 - Wiederherstellungsprotokollieren bei vorliegen von schnappschuss-dateien durch ordnen des pufferspeicherladens - Google Patents

Wiederherstellungsprotokollieren bei vorliegen von schnappschuss-dateien durch ordnen des pufferspeicherladens

Info

Publication number
DE4220198A1
DE4220198A1 DE4220198A DE4220198A DE4220198A1 DE 4220198 A1 DE4220198 A1 DE 4220198A1 DE 4220198 A DE4220198 A DE 4220198A DE 4220198 A DE4220198 A DE 4220198A DE 4220198 A1 DE4220198 A1 DE 4220198A1
Authority
DE
Germany
Prior art keywords
volatile
memory
snapshot
state
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE4220198A
Other languages
English (en)
Other versions
DE4220198C2 (de
Inventor
Peter M Spiro
Ananth Raghavan
Tirumanjuna K Rengarajan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of DE4220198A1 publication Critical patent/DE4220198A1/de
Application granted granted Critical
Publication of DE4220198C2 publication Critical patent/DE4220198C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/87Monitoring of transactions

Description

Die vorliegende Erfindung betrifft ganz allgemein Trans­ aktionsverarbeitung, und insbesondere ein Transaktionsverar­ beitungssystem und ein Transaktionsverarbeitungsverfahren, bei denen Transaktionen auf alte Kopien des Zustandsspei­ chers des Systems Bezug nehmen. Die vorliegende Erfindung betrifft weiterhin ein Verfahren zum Sicherstellen einer geeigneten Wiederherstellung in solch einem System, wenn die Ergebnisse jeder Transaktion in ein Nach-Wiedergabe-Pro­ tokoll übertragen werden, und nicht in einen nicht flüch­ tigen Zustandsspeicher nach jeder Transaktion eingeschrie­ ben werden.
Eine wünschenswerte Eigenschaft eines Computersystems ist die Fähigkeit, sich von teilweisen Systemausfällen bzw. Fehlern zu erholen, die Speicherschreiboperationen unter­ brechen können. Wenn ein Applikationsprogramm bzw. Anwen­ dungsprogramm eine Speicherschreiboperation zum Zeitpunkt des Systemausfalls unter Bearbeitung hat, ist es möglich, daß ein Speichereintrag (record) bzw. Datensatz fehlerhaft wird. Um die Wiederherstellung von Speichereinträgen nach einem Teilsystemausfall zu ermöglichen, ist es für das An­ wendungsprogramm notwendig, Sicherungskopien (backup copies) der Einträge in einem nicht flüchtigen Speicher abzulegen. Wenn das Computersystem wieder gestartet wird, werden die Speichereinträge, die wiederhergestellt werden sollen, durch die Sicherungskopien ersetzt.
Um die Erzeugung von Sicherungskopien und die Wiederher­ stellung (recovery) von Speichereinträgen zu erleichtern, stellt das Betriebssystem typischerweise einen eingerichte­ ten Satz von Speicherverwaltungsprozeduren zur Verfügung, die von einem Anwendungsprogramm aufgerufen oder gerufen werden können, um eine "Wiederherstellungseinheit" (recove­ ry unit) zu definieren. Die Wiederherstellungseinheit be­ steht aus Programmanweisungen zwischen einer "START-Anwei­ sung und einer "ÜBERTRAGE (commit)"-Anweisung.
Alle Anweisungen in der "Wiederherstellungseinheit" müssen abgeschlossen bzw. ausgeführt sein, bevor die Speicherein­ träge, die durch die Anweisungen der Wiederherstellungsein­ heit modifiziert wurden, für die nachfolgende Verarbeitung verfügbar gemacht werden. Die Anweisungen der Wiederherstel­ lungseinheit spezifizieren Operationen einer einzigen "Transaktion". Bei der Erholung nach einem teilweisen Sys­ temausfall deckt die Überprüfung des nicht flüchtigen Spei­ chers auf, daß die Operationen der einzelnen "Transaktion" entweder alle abgeschlossen sind oder keine von ihnen abge­ schlossen ist.
Die Operationen in einer einzelnen Transaktion können eine Anzahl von Dateien modifizieren und die Dateien können auch von anderen Prozessen verwendet werden. Während der Trans­ aktion können die Dateien eine Zeit lang inkonsistent sein, obwohl die Dateien nach Abschluß der Transaktion konsistent sein werden. Ein typisches Beispiel dafür ist ein Transfer von Geldern von einem Konto zum anderen, wobei ein erstes Konto belastet wird, und kurz darauf, auf ein anderes Konto gutgeschrieben wird. In der Zwischenzeit sind die beiden Konten inkonsistent zueinander, da die Summe der beiden Konten nicht den Gesamtgeldern auf den zwei Konten ent­ spricht. Aufgrund der Inkonsistenz, wenn Dateien von einer Transaktion abgeändert bzw. modifiziert werden, ist es be­ kannt zu verhindern, daß andere Prozesse auf die Dateien zugreifen, bis die Modifikation abgeschlossen ist.
Transaktionen sind typischerweise in Transaktionsverarbei­ tungssystemen verteilt, und zwar so, daß die Durchführung einer zweiten Transaktion begonnen wird, bevor die Ergeb­ nisse einer ersten Transaktion feststehen bzw. übertragen werden. Um eine einfache Wiederherstellung sicherzustellen, wird die zweite Transaktion gewöhnlicherweise davon ausge­ schlossen, irgendwelche Ergebnisse der ersten Transaktion zu lesen, bevor die erste Transaktion abgeschlossen bzw. ausgeführt ist.
Z. B. plaziert eine Transaktion in einem Datenbanksystem "Schreibsperren" (write locks) auf alle Datenbankeinträge, die je von der Transaktion modifiziert werden oder wurden. Um eine Konsistenz von Daten sicherzustellen, die durch eine Transaktion gelesen werden, kann die Transaktion auch "Lesesperren" (read locks) auf die Datenbankeinträge legen, die von der Transaktion gelesen werden.
Der Gebrauch von Speichersperren sperrt bzw. verhindert die Gleichzeitigkeit bzw. Konkurrenz zwischen Transaktio­ nen, die ein Absenken der Transaktionsverarbeitungsgeschwin­ digkeit verursacht. In einigen Systemen, wie z. B. "Rdb/VMS" und "VAX DBMS" der Digital Equipment Corporation eliminiert ein "Schnappschuß (snapshot)"-Mechanismus das Erfordernis von Lesesperren und verhindert auch das Blockieren von Lese­ operationen durch Schreibsperren. Der "Schnappschuß"-Mecha­ nismus erlaubt einer Transaktion, zu irgendeiner Zeit eine konsistente Version der Daten zu erhalten, die zum Zeit­ punkt des Beginns der Transaktion existieren.
In den auf "Rdb/VMS" und "VAX DBMS"-Systemen der Digital Equipment Corporation wird die Wiederherstellung durch Aus­ sondern bzw. Laden (flushing) der "Vor-Wiedergaben bzw. Abbilder (before images)" der zu aktualisierenden Datenein­ träge in einem "undo"-Protokoll (undo-log) und dann durch Aussondern der aktualisierten Dateneinträge zu einem Zu­ standsspeicher sichergestellt, bevor eine Transaktion abge­ schlossen ist. Wenn ein Zusammenbruch bzw. Ausfall (crosh) auftritt, werden die aktualisierten Einträge durch "Vor-Wie­ dergaben" ersetzt, die von dem "undo"-Protokoll" erhalten werden, um die Effekte der Transaktion "ungeschehen (undo)" zu machen.
Die "Rdb/VMS" und "VAX DBMS" Systeme haben eine optionale Eigenschaft, die als "After Image Journaling" bezeichnet wird, die es ermöglicht, Aktualisierungen (updates) einer Datenbank, die von einer Sicherungskopie zurückgeladen wer­ den, "vorwärts zu rollen (roll forward)". Der Protokollme­ chanismus (journaling mechanism) bewahrt Kopien von Einträ­ gen auf, nachdem sie modifiziert worden sind, und zwar zu­ sammen mit weiteren Informationen, die eine Rekonstruktion der Änderungen, die in der Datenbank durchgeführt wurden, erlauben.
Der "undo"-Wiederherstellungsmechanismus des "Rdb/VMS" und des "VAX DBMS" ermöglicht eine sehr schnelle Wiederherstel­ lung bzw. Erholung, da nur die Effekte ausgefallener bzw. fehlgeschlagener Transaktionen ungeschehen gemacht werden müssen. Ein bemerkenswerter Betrag an Verarbeitungszeit wird jedoch beim Aussondern aktualisierter Einträge zum Zustandsspeicher verbraucht, wenn jede Transaktion ausge­ führt ist. In einer stabilen Umgebung, wo Systemausfälle sehr selten sind, ist eine schnelle Wiederherstellung nicht besonders wichtig. Für Transaktionen, die die glei­ chen Einträge für mehrere Transaktionen aktualisieren, und für Transaktionen, die kurz sind und nicht viele Seiten aktualisieren, wird jedoch durch das Aussondern aktualisier­ ter Einträge zu dem Zustandsspeicher am Ende jeder Transak­ tion ein bemerkenswerter Betrag an Verarbeitungszeit ver­ braucht.
Aufgabe der vorliegenden Erfindung ist es, ein Verfahren bzw. ein System für Transaktionsverarbeitung anzugeben, bei dem bei der Wiederherstellung von Dateneinträgen Verar­ beitungszeit bzw. Rechnerzeit eingespart wird.
Diese Aufgabe wird durch das Verfahren nach Anspruch 1 bzw. Anspruch 11 und durch das Transaktionsverarbeitungssystem nach Anspruch 15 gelöst.
Die vorliegende Erfindung beruht auf dem Einsatz einer "redo"-Wiederherstellungseinrichtung, die aktualisierte Einträge zum Zustandsspeicher nicht nach jeder Transaktion aussondert (flush). Statt dessen werden aktualisierte Ein­ träge sequentiell in ein Nach-Wiedergabe-Protokoll (after­ image log) geschrieben und alle aktualisierten Einträge werden zu dem Zustandsspeicher nur ausgesondert, wenn ge­ wisse "Prüfpunkte (checkpoints)" auftreten.
Die Prüfpunkte treten z. B. nach einer spezifizierten Anzahl von Transaktionen oder nachdem eine vorgegebene Anzahl von Bytes in das Nach-Wiedergabe-Protokoll nach dem letzten Prüfpunkt geschrieben worden ist. Der "redo"-Wiederherstel­ lungsmechanismus erlaubt es deshalb, daß aktualisierte und übertragene Einträge im flüchtigen Speicher bleiben können. Wenn ein Systemzusammenbruch oder Ausfall auftritt, wird der flüchtige Zustandsspeicher, der am Ende der letzten durchgeführten Transaktion vorgelegen hat, durch Auslesen der Zustandsspeichereinträge die zum Zeitpunkt des letzten Prüfpunkts vorgelegen haben, aus dem nicht flüchtigen Zu­ standsspeicher und durch erneutes Durchführen der Modifika­ tionen, die in dem Nach-Wiedergabe-Protokoll aufgezeichnet wurden, rekonstruiert. Z. B. wird das Nach-Wiedergabe-Proto­ koll sequentiell ausgelesen, und zwar während der erneuten Ausführung der Modifikationen.
Die vorliegende Erfindung betrifft insbesondere einen Schnappschuß-Mechanismus, der in Verbindung mit einem "re­ do"- Wiederherstellungsmechanismus verwendet wird. Unglück­ licherweise ist der herkömmliche Schnappschuß-Mechanismus inkonsistent mit einem "redo"-Wiederherstellungsmechanis­ mus, der den herkömmlichen Nach-Wiedergabe-Protokoll-Mecha­ nismus verwendet. Der herkömmliche Schnappschuß-Mechanismus schreibt in den nicht flüchtigen Speicher alte Versionen modifizierter Zustandsspeichereinträge, nachdem jede Schreib-Transaktion abgeschlossen worden ist (committed), bzw. jedesmal dann, nachdem eine Schreibtransaktion beendet worden ist, was inkonsistent mit der Aufgabe des "redo"-Me­ chanismusses ist, die darin besteht, ein Aussondern (flush­ ing) modifizierter Zustandsspeichereinträge zu dem nicht flüchtigen Speicher nur bei den Prüfpunkten durchzuführen. Alternativerweise kann der herkömmliche Nach-Wiedergabe-Pro­ tokoll-Mechanismus eingesetzt werden um Modifikationen für flüchtige Schnappschuß-Einträge zu protokollieren bzw. auf­ zuzeichnen. Aber diese Alternative würde die Größe bzw. den Umfang des Nach-Wiedergabe-Protokolls ungefähr verdoppeln und außerdem eine zusätzliche Verarbeitungszeit zum Proto­ kollieren (logging) der Modifikationen für die Schnapp­ schuß-Einträge bedeuten.
Die vorliegende Erfindung besteht in einem System und in einem Verfahren zum Betreiben eines Digitalcomputers zum Verarbeiten von Transaktionen, wobei das Verfahren die fol­ genden Schritte aufweist:
  • a) Es werden die Einträge des nicht flüchtigen Zustands­ speichers gelesen und es werden die Zustandseinträge (state records) in einen flüchtigen Zustandsspeicher-Cache ge­ schrieben;
  • b) Es werden Schnappschuß-Kopien in einem flüchtigen Schnappschuß-Speicher-Cache von ausgewählten Zustandseinträ­ gen des flüchtigen Zustandsspeicher-Cache erstellt, ein entsprechender Satz aus Schnappschuß-Kopien wird in dem flüchtigen Schnappschuß-Speicher-Cache von jedem ausgewähl­ ten Zustandseintrag des flüchtigen Zustandsspeicher-Cache gehalten, Modifikationen, die durch die Transaktionen für die ausgewählten Zustandseinträge des flüchtigen Zustands­ speicher-Cache spezifiziert werden, werden ausgeführt und die Modifikationen, die durch die Transaktionen spezifi­ ziert werden, werden zu einem Nach-Wiedergabe-Protokoll in einen nicht-flüchtigen Speicher übertragen; und dann
  • c) werden die Schnappschuß-Kopien aus dem flüchtigen Schnappschuß-Speicher-Cache gelesen und die Schnappschuß­ kopien werden in den nicht-flüchtigen Schnappschuß-Speicher geschrieben und die ausgewählten Zustandseinträge von dem flüchtigen Zustandsspeicher-Cache werden gelesen und die ausgewählten Zustandseinträge werden in den nicht-flüchti­ gen Zustandsspeicher geladen, wobei der entsprechende Satz der Schnappschuß-Kopien jedes ausgewählten Zustandseintrags aus dem flüchtigen Schnappschuß-Speicher-Cache gelesen wird und in den nicht-flüchtigen Schnappschuß-Speicher geschrie­ ben wird, bevor jeder ausgewählte Zustandseintrag von dem flüchtigen Zustandspeicher-Cache gelesen wird und in den nicht-flüchtigen Zustandsspeicher geschrieben wird.
Bei der vorliegenden Erfindung werden Schnappschuß-Einträge in einem flüchtigen Speicher zusammen mit flüchtigen Zu­ standsspeichereinträgen abgespeichert und Modifikationen der flüchtigen Zustansdspeichereinträge durch Transaktionen werden in einem Nach-Wiedergabe-Protokoll in einem nicht­ flüchtigen Speicher für die Wiederherstellung der flüchti­ gen Zustandsspeichereinträge protokolliert. Aber für die Wiederherstellung der Schnappschuß-Einträge des flüchtigen Speichers, wenn irgendeiner der Einträge des flüchtigen Zustandsspeichers aus dem flüchtigen Speicher in den nicht­ flüchtigen Zustandsspeicher geschrieben werden soll, wird der Satz aus flüchtigen Schnappschuß-Einträgen, die denjeni­ gen Einträgen des flüchtigen Zustandsspeichers entsprechen, zuerst von einem flüchtigen Schnappschuß-Speicher in einen nicht-flüchtigen Schnappschuß-Speicher geschrieben. Diese Reihenfolge des Zwischenspeicher-Aussonderns (buffer pool flushing) erlaubt die Wiederherstellung der flüchtigen Schnappschuß-Einträge aus dem nicht-flüchtigen Zustands­ speicher oder von Modifikationen des Nach-Wiedergabe-Proto­ kolls.
Das nachfolgende Beispiel zeigt, daß es die Reihenfolge des Zwischenspeicher-Aussonderns ermöglicht, die Schnappschuß- Einträge wiederzugewinnen. Es wird vorausgesetzt, daß eine Transaktion einen flüchtigen Zustandsspeichereintrag X aktu­ alisiert, was den alten flüchtigen Zustandsspeichereintrag dazu veranlaßt, zum flüchtigen Schnappschuß-Speicher als Schnappschuß-Eintrag Xn übertragen zu werden, und daß die Transaktion dann beendet ist, was den neuen Zustandsspei­ chereintrag X dazu zwingt, in dem Nach-Wiedergabe-Proto­ koll protokolliert zu werden.
Einerseits wird angenommen, daß der aktualisierte Eintrag im flüchtigen Zustandsspeicher dann in den nichtflüchtigen Zustandsspeicher ausgesondert worden ist (was die Aussonde­ rung (flush) des Eintrags X dazu veranlaßt, in der Nach-Wie­ dergabe-Protokolldatei aufgenommen zu werden), ohne daß die zugeordneten flüchtigen Schnappschußversionen des Eintrags X zuerst in den nichtflüchtigen Schnappschuß-Speicher ausge­ sondert werden, und daß dann das System ausfällt. (Die Aus­ sonderung wurde z. B. in Antwort darauf ausgeführt, daß der Zwischenspeicher (buffer pool) des flüchtigen Speichers voll ist, oder in Antwort darauf, daß ein anderer Prozeß nach dem Eintrag X nachfragt.) In diesem Fall ist die Aktu­ alisierung (update) des Eintrags X bereits im nichtflüchti­ gen Zustandsspeicher und die Aussonderung des Eintrags X würde in der Nach-Wiedergabe-Protokolldatei notiert wer­ den, so daß diese Aktualisierung bezüglich des Eintrags X vom nichtflüchtigen Zustandsspeicher erhalten werden könnte. Es wäre jedoch nicht möglich, den Schnappschuß-Ein­ trag Xn wiederherzustellen. Der Schnappschuß-Eintrag Xn würde nicht zum nichtflüchtigen Schnappschuß-Speicher ausge­ sondert worden sein, noch würde er im nichtflüchtigen Zu­ standsspeicher untergebracht sein, da jede vorherige bzw. alte Version des Eintrags X des nichtflüchtigen Zustands­ speichers von der Aussonderung des aktualisierten Eintrags X in den nichtflüchtigen Zustandsspeicher überschrieben worden wäre. Andererseits, wenn man annimmt, daß alle zuge­ ordneten nichtflüchtigen Schnappschuß-Versionen des Ein­ trags X, einschließlich des Schnappschuß-Eintrags Xn in dem nichtflüchtigen Schnappschuß-Speicher ausgesondert wor­ den wären, dann der aktualisierte Eintrag X in den nicht­ flüchtigen Speicher ausgesondert worden ist und wieder die Transaktion ausgeführt worden wäre und das System ausfällt. In diesem Fall würde man alle zugeordneten Schnappschuß-Ver­ sionen des Eintrags X, einschließlich des Schnappschuß-Ein­ trags Xn, in dem nichtflüchtigen Speicher finden.
Im gewöhnlichen Fall wäre weder der Eintrag X des nicht­ flüchtigen Zustandsspeichers noch der Schnappschuß-Eintrag Xn in den flüchtigen Speicher ausgesondert bzw. übertragen worden, wenn der Systemausfall aufgetreten wäre. In diesem Fall wird vorausgesetzt, daß die Transaktion den Eintrag X des flüchtigen Zustandsspeichers aktualisiere, was den al­ ten Eintrag des flüchtigen Zustandsspeichers dazu veran­ laßt, in den flüchtigen Schnappschuß-Speicher als Schnapp­ schuß-Eintrag aufgezeichnet zu werden, und daß dann die Transaktion abgeschlossen ist, was den neuen Eintrag X des Zustandsspeichers dazu veranlaßt, in das Nach-Wiedergabe- Protokoll aufgenommen zu werden, und daß schließlich das System ausfällt bzw. zusammenbricht. In dieser Situation würden der Zustandsspeicher und der Schnappschuß-Spei­ cher wiedergeladen bzw. wiederhergestellt werden, indem die Modifikationen, die in dem Nach-Wiedergabe-Protokoll no­ tiert sind, erneut ausgeführt (re-doing) werden. Während z. B. das Nach-Wiedergabe-Protokoll gelesen wird, wird der Eintrag X des Zustandsspeichers erneut bei Erreichen der letzten Modifikation X des Speichereintrags X gespeichert, wobei aber die alte Version des Eintrags X des Zustands­ speichers des nichtflüchtigen Zustandsspeichers zuerst in den Schnappschuß-Eintrag X geladen wird.
Weitere vorteilhafte Weiterbildungen der vorliegenden Erfin­ dung sind den Unteransprüchen zu entnehmen.
Weitere Vorteile und Anwendungsmöglichkeiten der vorliegen­ den Erfindung sind aus der nachfolgenden Beschreibung von Ausführungsbeispielen der Erfindung in Verbindung mit den Zeichnungen ersichtlich. Es zeigt
Fig. 1 ein Blockdiagramm eines digitalen Computers, der für Transaktionsverarbeitung ausgelegt ist;
Fig. 2 ein Flußdiagramm eines Programmablaufs zum Durchführen einer Transaktionsverarbeitung in dem Computer nach Fig. 1, bei der ein "undo"- Wiederherstellungsverfah­ ren eingesetzt wird;
Fig. 3 ein Zeitsteuerungsdiagramm, das erläutert, wa­ rum Schnappschüsse in einem Transaktionsverarbeitungssystem nützlich sind;
Fig. 4 ein Diagramm, das eine Datenstruktur erläutert, welche Zeiger auf verbundene Einträge des flüchtigen Zu­ standsspeichers und auf flüchtige Schnappschuß-Einträge in eine Suchtabelle (hash table) verwendet, um zu ermöglichen, daß ein bestimmter Eintrag im flüchtigen Speicher gefunden werden kann;
Fig. 5 ein Flußdiagramm eines Ablaufs zum Holen eines gesuchten bzw. gewünschten Eintrags unter Verwendung der Zeiger der Datenstruktur nach Fig. 4;
Fig. 6 ein Flußdiagramm eines Ablaufs zum Erzeugen von Schnappschuß-Einträgen aus Zustandsspeichereinträgen, wenn die Zustandsspeichereinträge durch eine Transaktion aktualisiert werden;
Fig. 7 ein Diagramm, das eine bevorzugte Organisation für Einträge als Seite mit Segmenten variabler Länge zeigt; und
Fig. 8 ein Blockdiagramm einer Organisation des nicht­ flüchtigen Speichers des Digitalcomputers nach Fig. 1 in Übereinstimmung mit einer bestimmten Ausführungsform der vorliegenden Erfindung.
In Fig. 1 wird ein Blockdiagramm eines Digitalcomputers 20 gezeigt, der für eine Transaktionsverarbeitung ausgelegt ist. Der Computer 20 enthält eine zentrale Verarbeitungsein­ heit (CPU) 21 zum Ausführen von programmierten Befehlen; einen flüchtigen Speicher mit wahlfreiem Zugriff (RAM) 22 zum Halten bzw. Abspeichern von Instruktionen oder Daten; einen nichtflüchtigen Speicher 23 wie z. B. ein Festplatten­ laufwerk; und eine Eingabe/Ausgabe-Einheit 24. Der nicht­ flüchtige Speicher 23 enthält einen Programmspeicher 24, in dem Programme gespeichert sind. Typischerweise führt der Digitalcomputer 20 Programme aus, die von dem Programm­ speicher 25 in den flüchtigen Speicher mit wahlfreiem Zu­ griff transferiert worden sind.
Ein allgemeines Problem, das bei dem Digitalcomputer 20 vorkommt, besteht in der Wahrscheinlichkeit, das die Ausfüh­ rung der Instruktionen durch die zentrale Verarbeitungsein­ heit wegen eines Hardwareausfalls, eines Softwarefehlers oder eines Ausfalls der Spannungsversorgung bzw. Stromver­ sorgung unterbrochen wird. Ein Ausfall der Stromversorgung führt z. B. zum Verschwinden von Daten und Programmen, die in dem flüchtigen Speicher mit wahlfreiem Zugriff 22 gespei­ chert sind. Das Problem des Verlustes von Daten in dem flüchtigen RAM 22 wegen eines Ausfalls der Spannungsversor­ gung kann gelöst werden, indem Sicherungskopien (back-up copies) der Daten in dem nichtflüchtigen Speicher 23 gespei­ chert werden. Die Sicherungskopien müssen jedoch auf eine solche Art und Weise erstellt werden, die die Möglichkeit eines Ausfalls während einer Schreiboperation in den nicht­ flüchtigen Speicher 23 berücksichtigt.
Um mit dem Problem eines möglichen Ausfalls während des Schreibens in dem nichtflüchtigen Speicher fertig zu wer­ den, ist ein Programmierverfahren verwendet worden, das mit "Transaktionsverarbeitung (transaction processing)" bezeichnet wird und das sicherstellt, daß ein Abschnitt bzw. Bereich des nichtflüchtigen Speichers (der nachfolgend als "Zustandsspeicher" 26 bezeichnet wird) entweder durch eine Transaktion unbeeinflußt wird oder in geeigneter Weise durch die Ergebnisse der Transaktion bei Vorliegen eines Ausfalls aktualisiert wird. Die Transaktionsverarbeitung basiert auf der Technik des Erstellens einer Sicherungsko­ pie in einer der Protokolldateien 27, 28 (logfiles), und zwar bevor die Ergebnisse der Transaktion in den Zustands­ speicher geschrieben werden.
Es wird angenommen, daß gewisse adressierbare Dateneinhei­ ten, die nachfolgend als "Einträge (records)" bezeichnet werden, in den nichtflüchtigen Speicher eingeschrieben bzw. von diesem gelesen werden können. Zusätzlich wird angenom­ men, daß die Protokolldateien 27, 28 auf "Kern (atomic)"- Art aktualisiert werden, und zwar so, daß, wenn eine Schreiboperation eines Eintrags in eine Protokolldatei durch einen Ausfall wie z. B. einen Ausfall der Spannungsver­ sorgung unterbrochen wird, die Protokolldatei entweder in ihrem Originalzustand oder in einem Zustand gefunden wird, der eine korrekte Kopie des Eintrags aufweist, der in die Protokolldatei eingeschrieben worden ist. Diese Bedingung der Kerneigenschaft (atomicity) wird durch die Betriebssys­ teme und die nichtflüchtigen Speicher der meisten Computer sichergestellt. Des weiteren ist es bei Computern (wie z. B. billigen "Personalcomputern") möglich, in denen das Betriebs­ system und der nichtflüchtige Speicher die Kern-Eigenschaft von Schreiboperationen in nichtflüchtigen Speicher nicht sicherstellen, ein bekanntes Protokoll zu verwenden, das die Kerneigenschaft (atomicity) der Schreiboperationen sicherstellt. Bei diesem Protokoll wird zuerst ein Eintrag in einen Sicherungsbereich des nicht-flüchtigen Speichers geschrieben, anschließend wird ein Schalter bzw. ein Kenn­ zeichen (switch) in dem nichtflüchtigen Speicher gesetzt, wonach der Eintrag in die gewünschte Stelle des nichtflüch­ tigen Speichers eingeschrieben wird, und schließlich wird der Schalter in dem nichtflüchtigen Speicher wieder ge­ löscht (cleared). Bei der Wiederherstellung nach einem Aus­ fall wird der Schalter aus dem nichtflüchtigen Speicher gelesen und wenn der Schalter als gesetzt vorgefunden wird, wird die Schreiboperation durch Kopieren des Eintrags aus dem Sicherungsbereich des nichtflüchtigen Speichers in die gewünschte Speicherstelle des nichtflüchtigen Speichers wiederholt. Danach wird der Schalter bzw. das Schalterzei­ chen oder der Schaltereintrag in dem nichtflüchtigen Spei­ cher gelöscht bzw. aufgehoben.
Es wird ebenfalls angenommen, daß es nach einem Ausfall möglich ist, das Ende einer Protokoll-Datei zu finden. Dies kann durch Aktualisieren eines Dateiende-Zeigers in dem Protokolldatei-Kopf immer dann durchgeführt werden, wenn das Protokoll aktualisiert wird.
Bevorzugterweise wird das Ende der Protokolldatei gekenn­ zeichnet, so daß es durch eine schnelle Suche gefunden wer­ den kann, ohne daß es erforderlich ist, den Protokolldatei- Kopf immer dann zu aktualisieren, wenn das Protokoll aktu­ alisiert wird. Z. B. wird jedes Bit der Protokolldatei an­ fänglich auf eine logische Eins gesetzt, so daß das Ende der Datei gefunden werden kann, wenn eine Kette aus logi­ schen Einsen während der Suche gefunden wird.
Immer dann, wenn eine Transaktion das Lesen des Zustands­ speichers 26 spezifiziert, kann der nichtflüchtige Zustands­ speicher 26 gelesen werden. Unglücklicherweise haben her­ kömmliche nichtflüchtige Speicher wie z. B. magnetische Fest­ plattenspeicher bzw. Laufwerke, eine sehr lange Zugriffs­ zeit verglichen mit der Zugriffszeit eines herkömmlichen flüchtigen Speichers 22, wie z. B. eines dynamischen Spei­ chers mit wahlfreiem Zugriffs (RAM = Random Access Memory).
Deshalb werden für gewöhnlich Kopien der Zustandsspeicher­ einträge in einem Zustandsspeicher-Cache 29 des flüchtigen Speichers 29 zwischengespeichert. Die Kopien der Zustands­ speichereinträge, die in dem Zustandsspeicher-Cache 29 resi­ dent vorhanden sind, werden in einem Suchtabellenindex 30 (hash table index) indiziert. Die Verwendung eines Suchta­ bellenindexes während einer Speicherzugriffsoperation wird weiter unten mit Bezug auf die Fig. 4 und 5 beschrieben.
In dem Digitalcomputer 20 wird für gewöhnlich die Verarbei­ tung der Transaktionen so verteilt, daß die Durchführung einer zweiten Transaktion begonnen wird, bevor die Ergeb­ nisse einer ersten Transaktion feststehen oder übertragen werden. Das Planen oder Einteilen (scheduling) der Opera­ tionen für die Transaktionen wird typischerweise durch ein Multitasking oder Vielverarbeitungsbetriebssystemprogramm durchgeführt, das eine Transaktionsschlange bzw. Warte­ schlange anbietet bzw. einrichtet. Bei solch einem System wird der Transaktion am Anfang bzw. am Kopf der Schlange die Priorität eingeräumt und die Transaktion wird verarbei­ tet, außer diese Transaktion am Anfang der Schlange muß auf den Abschluß einer Eingangs/Ausgangsoperation oder einer Speicherzugriffsoperation auf den nichtflüchtigen Speicher warten. In dieser Situation kann die Transaktion, die die Priorität hat, die Ausführung an das Betriebssystem zurück­ zugeben und das Betriebssystem wird die Ausführung (execu­ tion) an die nächste Transaktion mit Priorität übergeben. Bei Abschluß der Eingangs/Ausgangs- oder der Speicherzu­ griffsoperation tritt jedoch ein Eingangs/Ausgangs- oder ein Speicherinterrupt (Unterbrechung) auf, der verursacht, daß die Ausführung für ein Interrupt-Steuerprogramm unter­ brochen wird, das die Ausführung an das Betriebssystem zu­ rückgibt. Das Betriebssystem wird dann die Ausführung an eine Transaktion am Anfang der Schlange übergeben, die auf den Abschluß der Eingangs/Ausgangs- oder Speicherzugriffs­ operation gewartet hat. Auf diese Art und Weise werden die Einheiten des Computers 20 effektiver verwendet. Da Mehr­ verarbeitungs- und Vielverarbeitungsbetriebssysteme bekannt sind und kommerziell von den großen Computerherstellern erhältlich sind, wird das Betriebssystemprogramm des Com­ puters 20 nicht im weiteren Detail beschrieben.
Um eine einfache Wiederherstellung in der Situation sicher­ zustellen, wo eine zweite Transaktion angefangen wird, be­ vor eine erste Transaktion abgeschlossen ist, wird die zwei­ te Transaktion normalerweise davon ausgeschlossen, irgend­ welche Ergebnisse der ersten Transaktion zu lesen, bevor die erste Transaktion ausgeführt bzw. abgeschlossen ist (commit). In dem Computer 20 plaziert eine Transaktion z. B. "Schreibsperren (write locks)" für die Zustandsspeicherein­ träge, die durch die Transaktion modifiziert werden, wie nachfolgend mit Bezug auf die Fig. 6 beschrieben wird, und diese "Schreibsperren" werden entfernt, wenn die Transak­ tion abgeschlossen (committed) ist, wie weiter unten mit Bezug auf Fig. 2 erläutert wird.
Um eine Konsistenz der von der Transaktion gelesenen Daten sicherzustellen, kann die Transaktion "Lesesperren (read locks)" bezüglich irgendwelcher Zustandsspeichereinträge plazieren bzw. einrichten, die von der Transaktion gelesen werden. Die Verwendung von Speichersperren hemmt jedoch den gleichzeitigen Ablauf von Transaktionen, was eine Herab­ setzung der Transaktionsverarbeitungsgeschwindigkeit verur­ sacht. Deshalb verwendet das System 20 einen bekannten "Schnappschuß"-Mechanismus (snapshot), um das Erfordernis von Lesesperren zu eliminieren und um ein Blockieren von Leseoperationen durch Schreibsperren zu verhindern. Der "Schnappschuß"-Mechanismus erlaubt einer Transaktion, zu irgendeiner Zeit eine konsistente Version irgendeines Zu­ standsspeichereintrags zu lesen, der zum Zeitpunkt des Be­ ginns der Transaktion vorliegt. Wie weiter unten mit Bezug auf die Fig. 3 und 4 beschrieben wird, wird eine konsis­ tente Version eines spezifizierten Zustandsspeichereintrags entweder aus dem Zustandsspeicher 26, 29 oder aus dem "Schnappschuß"-Speicher 31, 32 gelesen.
Der Schnappschuß-Speicher 31, 32 ist in bekannten Transak­ tionsverarbeitungssystemen in Kombination mit einer "undo"- Wiederherstellungsprozedur verwendet worden, die in dem Flußdiagramm nach Fig. 2 erläutert wird. Wenn der Computer (20 in Fig. 1) eingeschaltet wird, z. B. nach einem Ausfall der Stromversorgung, beginnt die Ausführung bzw. Verarbei­ tung durch die zentrale Verarbeitungseinheit (21 in Fig. 1) beim ersten Schritt 40. Beim Schritt 40 werden der Zu­ standsspeicher-Cache und der Schnappschuß-Speicher-Cache gelöscht (cleared), (durch Löschen eines "Suchtabellen (hash table)" Indexes 30 in Fig. 3). Dann liest die Zentral­ verarbeitungseinheit 21 die Vor-Wiedergabe-Protokolldatei (before-image loge file) (27 in Fig. 1), um die Aktualisie­ rungen der ausgefallenen Transaktionen ungeschehen bzw. rückgängig (undo) zu machen. (D. h. derjenigen Transaktio­ nen, die begonnen haben, aber noch nicht abgeschlossen sind, zu dem Zeitpunkt, wo der Ausfall die Verarbeitung der Transaktionen unterbrochen hat.) Insbesondere wird das Ende der Vor-Wiedergabe-Protokoll-Datei gefunden und während des Lesens der Vor-Wiedergabe-Protokolldatei in umgekehrter chronologischer Reihenfolge, werden die Vor-Wiedergaben (before-images) bzw. Abbilder der aktualisierten Einträge in den nichtflüchtigen Zustandsspeicher (26 der Fig. 2) kopiert.
Es ist möglich, die Vor-Wiedergaben einer Anzahl unter­ schiedlicher Transaktionen in der gleichen Vor-Wiedergabe- Protokolldatei zu protokollieren. In diesem Fall werden die Vor-Wiedergaben der aktualisierten Einträge in den nicht­ flüchtigen Zustands-Speicher gespeichert, bis ein "Abschluß (commit)"-Eintrag gefunden wird. Der "Abschluß"-Eintrag identifiziert z. B. eine Transaktion, die abgeschlossen wor­ den ist, und enthält ebenfalls eine Aktiv-Liste von Transak­ tionen, die zu diesem Zeitpunkt noch nicht abgeschlossen bzw. ausgeführt worden sind (uncommitted). Diese Liste wird aufbewahrt und, während mit dem Lesen der Vor-Wiedergabe- Datei in umgekehrter chronologischer Reihenfolge fortgefah­ ren wird, müssen nur die Aktualisierungen der nicht abge­ schlossenen Transaktionen in den nichtflüchtigen Zustands­ speicher kopiert werden. Des weiteren kann der Anfang einer Transaktion in dem Vor-Wiedergabe-Protokoll durch einen "Transaktion-Anfang"-Eintrag protokolliert werden. Bei Er­ reichen eines "Transaktion-Anfang"-Eintrags in dem Vor-Wie­ dergabe-Protokoll wird die Transaktion, für die die Ausfüh­ rung begonnen hat, aus der "Aktiv"-Liste entfernt bzw. ge­ strichen und, wenn die "Aktiv"-Liste leer wird, ist Schritt 41 beendet.
Bevorzugterweise wird jedoch eine separate Vor-Wiedergabe- Datei (before-image file) jedem Prozeß in einem vielprozeß­ verarbeitenden System zugewiesen und die Datei für jeden Prozeß enthält die Vor-Wiedergaben für die gegenwärtig akti­ ve Transaktion des Prozesses. Nachdem die Transaktion abge­ schlossen worden ist, wird deren Protokoll der Vor-Wiederga­ ben nicht länger benötigt und die Vor-Wiedergabe-Protokoll­ datei wird für die Wiederbenutzung durch die nächste Trans­ aktion des Prozesses gekürzt. Kein "Abschluß-Eintrag (com­ mit record)" wird benötigt, da die Vor-Wiedergabe-Protokoll­ datei leer sein wird, bis die Datei durch eine andere Trans­ aktion wiederverwendet wird. Dies erlaubt die Wiederherstel­ lung eines einzelnen Prozesses, der in einem Vielverarbei­ tungssystem ausgefallen ist. In diesem Fall wird die gesam­ te Vor-Wiedergabe-Protokolldatei für den ausgefallenen Pro­ zeß rückwärts abgetastet, um die Effekte einer ausgefalle­ nen Transaktion für den ausgefallenen Prozeß ungeschehen zu machen. Um sich von allen unterbrochenen Prozessen im Fall eines Ausfalls der Spannungsversorgung erholen zu können, hält das Betriebssystem in dem nichtflüchtigen Speicher eine Liste von aktiven Prozessen aufrecht. Deshalb wird bei der Wiederherstellung nach einem Ausfall der Spannungsver­ sorgung auf diese Liste der Prozesse, die aktiv waren, zuge­ griffen, um die unterbrochenen Prozesse zu finden, und dann wird die Vor-Wiedergabe-Protokolldatei jedes unterbrochenen Prozesses abgetastet bzw. durchgearbeitet, um die Effekte jeder ausgefallenen Transaktion ungeschehen zu machen.
Wenn der nichtflüchtige Zustandsspeicher einmal wiedergela­ den (restored) worden ist, kann die Transaktionsverarbei­ tung beim Schritt 42 wieder aufgenommen werden. Beim Schritt 42 wird ein Anfangseintrag für eine ausgewählte Transaktion Tx in das Vor-Wiedergabe-Protokoll eingeschrie­ ben. Beim Schritt 43 werden Einträge aus dem nichtflüchti­ gen Zustandsspeicher (26 in Fig. 1) gelesen und in den flüchtigen Zustandsspeicher (29 in Fig. 1) geschrieben. Als nächstes werden beim Schritt 44 Einträge des flüchtigen Zustandsspeichers, die durch die Transaktion modifiziert werden sollen, in das "Vor-Wiedergabe"-Protokoll einge­ schrieben und beim Schritt 45 werden die Einträge, die modi­ fiziert werden sollen, auch in den flüchtigen Schnappschuß- Speicher (32 in Fig. 1) geschrieben, wie weiter unten mit Bezug auf Fig. 4 erläutert wird. Als nächstes werden die Einträge beim Schritt 46 gesperrt und dann in Übereinstim­ mung mit den Ergebnissen der Transaktion modifiziert. Ein Vielverarbeitungsbetriebssystem (wie z. B. das VMS Betriebs­ system von Digital Equipment Corporation) stellt jedoch typischerweise einen Sperrmanager (lock manager) zur Verfü­ gung, der eine separate Suchindextabelle (hash index table) für einen Cache mit Sperren enthält. In diesem Fall wird der Cache mit Sperren beim Schritt 40 indiziert, bevor ein Eintrag geholt wird, um zu bestimmen, ob ein Eintrag be­ reits gesperrt ist und um einen freien Eintrag, der aktuali­ siert werden soll, zu sperren. Ein solcher Sperrmanager ist in Vielverarbeitungssystemen (multi-processing systems) wünschenswert, um die Ablaufplanung (scheduling) zu verein­ fachen.
Eine Anzahl solcher Modifikationen kann in dem Nach-Wieder­ gabe-Protokoll protokolliert werden und in nichtflüchtigen Speichereinträgen durchgeführt werden, und eine Anzahl ande­ rer Transaktionen kann anfangen, bis eine Transaktion Ty bereit ist, abgeschlossen zu werden, wie es beim Schritt 47 vorgefunden wird. Dann werden die Sperren auf die Einträge, die durch Ty modifiziert werden, aufgehoben und beim Schritt 49 werden die Einträge, die durch die Transaktion Ty modifiziert worden sind, in den nichtflüchtigen Zustands­ speicher 28 geschrieben. Schließlich wird beim Schritt 50 ein "Abschluß-Ty"- Eintrag in das Vor-Wiedergabe-Protokoll für den Fall geschrieben, in dem ein einzelnes Vor-Wiederga­ be-Protokoll verwendet wird, ansonsten wird, im bevorzugten Fall, in dem eine separate Vor-Wiedergabe-Protokoll-Datei für jeden Prozeß verwendet wird, die Vor-Wiedergabe-Proto­ kolldatei für den Prozeß der Ty-Transaktion gekürzt. Die Verarbeitung weiterer Transaktionen fährt beim Schritt 45 fort.
Fig. 2 wurde bezüglich einer Vielzahl von Transaktionen beschrieben, die begonnen worden sind, bevor einige aus der Vielzahl der Transaktionen abgeschlossen worden sind. In dieser Situation führt ein Betriebssystemprogramm eine Zeit­ aufteilung (time-sharing) der Ausführung unter der Vielzahl der Transaktionen während der Transaktionsverarbeitungs­ schritte 43, 44, 45 und 46 durch. Beim Schritt 46 plaziert die Transaktion "Schreibsperren" bezüglich einer Gruppe von Einträgen, die in einer konsistenten Art und Weise modifi­ ziert werden sollen, um andere Transaktionen daran zu hin­ dern, auch in diese zu schreiben, und um andere Transaktio­ nen daran zu hindern, inkonsistente Einträge zu lesen. Des weiteren, damit das relativ einfache Wiederherstellungs­ schema nach Fig. 2 in einer solchen Umgebung mit verteilter Transaktion arbeiten kann, werden die Schreibsperren, die durch eine Transaktion eingerichtet worden sind, bis zum Schritt 48 nicht aufgehoben, wenn die Transaktion abge­ schlossen ist.
Um zu verhindern, daß eine Transaktion blockiert wird, wenn die Transaktion Daten aus einem Eintrag lesen muß, der schreibgesperrt in einem System ist, das das "undo"-Wieder­ herstellungsschema nach der Fig. 2 verwendet, ist es be­ kannt, einen Schnappschuß-Wiederherstellungsmechanismus einzusetzen, der eine ausreichende Anzahl an Versionen von "Vor-Wiedergaben" der Einträge hält, um sicherzustellen, daß jede Transaktion zu irgendeinem Zeitpunkt eine Version irgendeines Eintrags erhalten kann, der zu einem Zeitpunkt existiert, an dem die Verarbeitung der Transaktion beginnt. Diese "Vor-Wiedergaben" der Einträge werden als Schnapp­ schuß-Einträge bezeichnet. Insbesondere wird ein "Schnapp­ schuß" des Eintrags gerade, bevor ein Eintrag modifiziert wird, gemacht. Es ist jedoch möglich, daß ein früherer "Schnappschuß" des gleichen Eintrags auch existieren kann. Deshalb stellt der Schnappschuß-Mechanismus Mittel zum Be­ stimmen der korrekten Version eines spezifizierten Ein­ trags, der von der Transaktion gelesen werden soll, zur Verfügung. Der Schnappschußmechanismus stellt ebenfalls Mittel zum Eliminieren alter Schnappschüsse zur Verfügung, die nicht länger von irgendeiner Transaktion gelesen werden müssen.
Um die Serienverarbeitung von Transaktionen einer verteil­ ten Umgebung sicherzustellen, ist jede Transaktion entweder als "Nur-Lese"-Transaktion oder als "Lese/Schreib"-Transak­ tion spezifiziert. Eine "Nur-Lese"-Transaktion kann einen Schnappschuß-Eintrag lesen, aber eine "Nur-Lese"-Transak­ tion kann einen eigentlichen Eintrag bzw. Nutzeintrag (live record) nicht modifizieren. Eine "Lese/Schreib"-Transaktion kann einen Schnappschuß-Eintrag nicht lesen, kann aber einen Nutzeintrag lesen und modifizieren.
In Fig. 3 wird ein Zeitsteuerungsdiagramm für eine Anzahl von Transaktionen gezeigt. Jeder Transaktion ist eine Trans­ aktionsreihenfolgenummer (TSN = transaction sequence numb­ er) zugeordnet, wenn die Verarbeitung der Transaktion ge­ startet wird. Eine Transaktionsreihenfolgennummer von Null wird dem Anfangszustand des Zustandsspeichers zugeordnet.
Um eine eindeutige Eintragsversion, die von irgendeiner "Nur-Lese"-Transaktion gelesen werden soll, zu definieren, wird angenommen, daß eine "Nur-Lese"-Transaktion mit TSN=Y, die eine Leseoperation bezüglich des Zustandsspeichers für einen Eintrag X durchführt, die Ergebnisse durchsieht, die zuletzt in den Eintrag X, zu dem Zeitpunkt, zu dem die Ver­ arbeitung der Transaktion Y anfängt, übertragen wurden. Des weiteren wird angenommen, daß der Schnappschuß-Mechanismus zu irgendeinem Zeitpunkt während der Verarbeitung der Trans­ aktion Y aufgerufen werden kann, um diese spezielle Version des Eintrags X zurückzugeben. Diese spezielle Version des Eintrags X kann entweder als ein Nutzeintrag (live record) eines flüchtigen Zustandsspeichers, als ein Schnappschuß- Eintrag eines flüchtigen Schnappschuß-Speichers, als ein Nutzeintrag eines nicht-flüchtigen Speichers oder als ein Schnappschuß-Eintrag in einem nichtflüchtigen Speicher exi­ stieren. Es wird auch davon ausgegangen, daß jeder nicht gesperrte Nutzeintrag und jeder Schnappschußeintrag mit einer "Eintrag-Transaktion-Reihenfolge-Nummer (record trans­ action sequence number)" gekennzeichnet ist, die die Trans­ aktion angibt, welche die Version des Eintrags ausgeführt bzw. übertragen hat (C in Fig. 3). Des weiteren wird davon ausgegangen, daß, wenn eine Sperre für einen Nutzeintrag X durch eine Transaktion Z plaziert bzw. eingerichtet worden ist, eine Schnappschuß-Kopie des Eintrags in das Vor-Wieder­ gabe-Protokoll (before-image log) eingeschrieben wird, um die Steuerung bzw. Verwaltung und Abarbeitung möglicher Abbrüche zu erleichtern. Der gesperrte Eintrag kann mit TSN=Z gekennzeichnet sein. Wenn aber die Transaktion Z abge­ brochen wird (A in Fig. 3), wird die Vor-Wiedergabe-Kopie aus dem Vor-Wiedergabe-Protokoll zurück in den Nutzeintrag kopiert (wobei die TSN des Nutzeintrags auf die TSN der Vor-Wiedergabe zurückgeführt wird) und der Nutzeintrag wird freigegeben.
Unter diesen Bedingungen folgt, daß, wenn die Nur-Lese- Transaktion TSN=Y zum Anfangen eingeteilt ist, eine Liste der anderen Transaktionen, die zu diesem Zeitpunkt aktiv sind, aufgestellt wird und der Transaktion Y zugeordnet wird, wie es in Fig. 3 erläutert wird. Die gewünschte Ver­ sion des Eintrags X, die von der Nur-Lese-Transaktion Y gelesen werden soll, ist der Nutzeintrag X, und zwar solan­ ge, wie der Nutzeintrag X eine Transaktionsreihenfolgennum­ mer hat, die weder größer als Y ist noch in der aktiven Liste der Transaktion von Y ist. Ansonsten kann der gewün­ schte Eintrag in dem allerletzten Schnappschuß des Eintrags X gefunden werden, der eine Transaktionsreihenfolgennummer hat, die weder größer ist als Y noch in der aktiven Liste der Transaktion Y ist.
Aus den o. a. Bedingungen folgt, daß es nicht notwendig ist, irgendeinen Schnappschuß-Eintrag aufzuheben, der eine Trans­ aktionsreihenfolgennummer des Eintrags hat, die kleiner als eine bestimmte "Grenz-TSN" (cutoff TSN) ist, welche der Transaktionsreihenfolge der frühesten aktiven Transaktion entspricht (d. h. derjenigen aktiven Transaktion mit der kleinsten Transaktionsreihenfolgennummer). In Fig. 3 wird z. B. die Grenz-TSN zu den Zeitpunkten gezeigt, zu denen jede der Transaktionen 1 bis 7 anfängt. Zum Identifizie­ ren von Schnappschuß-Einträgen, die gestrichen werden sol­ len bzw. nicht mehr berücksichtigt werden sollen, ist es wünschenswert, die Grenz-TSN zu bestimmen und jeder Transak­ tion zuzuordnen, wenn jede Transaktion nach Plan beginnen soll. Eine Transaktion kann z. B. den Bereich eines Schnapp­ schuß-Eintrags im flüchtigen Speicher zum Wiedergebrauch immer dann belegen, wenn die Schnappschuß-TSN des Schnapp­ schuß-Eintrags kleiner ist als die Grenz-TSN der Transak­ tion.
In Fig. 4 wird eine Datenstruktur gezeigt, die Zeiger (poin­ ter) auf verbundene Einträge im flüchtigen Zustandsspeicher des Zustandsspeichercache 29 und auf Schnappschuß-Einträge des Schnappschußspeicher-Cache 32 so verwendet, daß jeder freie Pufferspeicher wie z. B. der freie Pufferspeicher 61, als Teil entweder des Zustandsspeichercache 29 oder des Schnappschuß-Speichers verwendet werden kann, und des weite­ ren so, daß ein Eintrag von dem Zustandsspeicher-Cache 29 zu dem Schnappschuß-Speicher-Cache oder von dem Schnapp­ schußspeicher-Cache 32 zu dem Zustandsspeicher-Cache 29 nur durch Ändern der Zeiger transferriert werden kann.
In dem Beispiel nach Fig. 4 enthält jeder Nutzeintrag (wie z. B. der Nutzeintrag 62) einen Kopf bzw. Anfang mit einem Sperrzeichen (lock flag) 63 und mit einer Transaktionsrei­ henfolgennummer 64 für einen Eintrag, einen Nachsatz mit einem Zeiger 65, der null ist oder auf einem anderen Nutz­ eintrag des flüchtigen Zwischenspeichers (volatile memory buffer pool) zeigt und einen Zeiger 66, der entweder null ist oder auf den allerletzten Schnappschuß des Eintrags zeigt. Das Format der Schnappschuß-Einträge (wie z. B. des Schnappschuß-Eintrags 67) ist insoweit ähnlich, daß es eine Sperre 68, eine Eintrag-Transaktion-Reihenfolge-Nummer 69 und einen Zeiger 70 hat, der entweder null ist oder auf einen früheren Schnappschuß des Eintrags zeigt.
Um einen spezifizierten Eintrag X zu aktualisieren, wird die Suchindextabelle 30 (hash index table) mit der Eintrags­ nummer X indiziert, um nach einer Nutzversion des Eintrags X in den Zustandsspeicher-Cache zu suchen. Der Suchtabellen­ index 30 indiziert jedoch nicht jeden Nutzeintrag 29 des Zustandsspeicher-Cache. Anders ausgedrückt wird der Suchta­ bellenindex 30 nicht durch die vollständige Nummer des Ein­ trags indiziert. Statt dessen wird der Suchtabellendindex nur durch einen niedrigstwertigen Abschnitt (least signifi­ cant portion) der Eintragsnummer indiziert. Für jede gege­ bene Eintragsnummer gibt die Indizierung des Suchtabellen­ index 30 in dieser Auslegung entweder Null, was angibt, daß der gewünschte Nutzeintrag nicht in dem Zustandsspeicher- Cache 29 ist, oder einen Zeiger zurück, der auf den gewün­ schten Eintrag zeigen kann oder auf eine Liste mit Nutzein­ trägen zeigen kann, die den gewünschten Nutzeintrag ent­ hält. Wie in Fig. 4 gezeigt wird, wenn mit der Eintragsnum­ mer "B" adressiert wird, gibt der Suchtabellenindex einen Zeiger auf den Eintrag A zurück, der einen Eintragszeiger RB auf den gewünschten Eintrag B enthält.
Wenn eine Nur-Lese-Transaktion einen Eintrag lesen will, kann jedoch ein weiteres Suchen erforderlich sein, um eine geeignete Version des Eintrags zu finden. Der Nutzeintrag wird zuerst überprüft und dann werden die Schnappschuß-Ein­ träge in Sequenz, beginnend mit dem allerletzten Schnapp­ schuß, überprüft, bis ein Eintrag gefunden wird, der eine Transaktionsreihenfolgennummer des Eintrags hat, die weder größer als die Transaktionsreihenfolgennummer der gegenwär­ tigen Transaktion ist, noch in der aktiven Liste für die gegenwärtige Transaktion enthalten ist. Wenn eine Nur-Lese- Transaktion z. B. einen Eintrag B lesen will, wird die Trans­ aktionsreihenfolgennummer des Nutzeintrags B (TSN6 in die­ sem Fall) mit der Transaktionsreihenfolgennummer der Nur-Le­ se-Transaktion verglichen. Wenn der Nutzeintrag B nicht eine geeignete Version ist, dann wird der Schnappschuß-Zei­ ger (S2 in diesem Fall) des Nutzeintrags B überprüft, um zu bestimmen, ob der Schnappschuß-Speicher-Cache 32 irgendwel­ che Schnappschüsse des Eintrags B enthält. Wenn das der Fall ist, werden die Transaktionssequenznummern des Ein­ trags des Schnappschusses in der Reihenfolge der Schnapp­ schüsse überprüft, bis eine geeignete Version des Eintrags B gefunden wird. Wenn eine geeignete Version des Eintrags B nicht gefunden wird, muß auf den nichtflüchtigen Speicher 23 zugegriffen werden, um eine geeignete Version des Ein­ trags zu finden. Im Beispiel nach Fig. 4 ist z. B. der Schnappschuß 1 ein früherer Schnappschuß des Nutzeintrags A und der Schnappschuß 3 ist ein späterer Schnappschuß des Nutzeintrags A.
Der Vorgang zum Holen eines gewünschten Eintrags wird im weiteren Detail in dem Flußdiagramm nach Fig. 5 gezeigt. Bei einem ersten Schritt 71 wird der Suchtabellenindex (30 in Fig. 1) mit dem niedrigstwertigen Abschnitt der Eintrags­ nummer indiziert, dann wird beim Schritt 72 die indizierte Eintragung (entry) in den Suchtabellenindex überprüft, um zu bestimmen, ob sie null ist oder ob sie ein Zeiger auf einen Puffer in dem nichtflüchtigen Pufferbereich (60 in Fig. 4) ist. Wenn die Eintragung null ist, dann wird der gewünschte Eintrag nicht indiziert und der gewünschte Ein­ trag muß aus dem nichtflüchtigen Speicher (23 in Fig. 1) geholt werden. Deshalb bzw. dafür wird beim Schritt 75 der Wert eines Zeigers für freien Pufferspeicher (72 in Fig. 4) mit dem Grenzwert des Pufferbereichs im flüchtigen Speicher (60 in Fig. 4) verglichen, um zu bestimmen, ob es einen freien Puffer bzw. Zwischenspeicher gibt. Wenn das der Fall ist, wird der gewünschte Eintrag aus dem Zustandsspeicher 26 aus dem nicht-flüchtigen Speicher 23 beim Schritt 76 gelesen und in den freien Pufferspeicher geschrieben. Des weiteren wird der freie Pufferspeicher mit dem Suchtabellen­ index verbunden. Unter der Voraussetzung, daß der Eintrag vorher nicht identifiziert worden ist, wird ein Zeiger auf den freien Pufferspeicher in der Suchindextabelle eingerich­ tet. Ansonsten, wenn der Eintrag vorhergehend indiziert worden ist, wird der freie Pufferspeicher dann mit einer Kette aus indizierten Einträgen des Zustandsspeicher-Cache 29 verbunden.
Wenn ein freier Pufferspeicher beim Schritt 75 nicht gefun­ den wurde, wird beim Schritt 77 eine Liste von Pufferspei­ chern, die von dem gegenwärtig laufenden Prozeß verwendet werden (eine Pufferspeicherschlange) überprüft, um den älte­ sten Pufferspeicher zu finden, der beim Schritt 76 ausgeson­ dert und wiederverwendet wird.
Bei den bekannten "Rdb DBMS"- und "VAX DBMS"-Systemen wird z. B. eine Liste von Einträgen, die aus dem nicht-flüchtigen Zustandsspeicher gelesen worden sind, festgehalten. Wenn ein Nutzeintrag aktualisiert wird und ein Schnappschuß ge­ macht wird, werden die aktualisierten Einträge und Schnapp­ schuß-Einträge in der Liste markiert. Wenn jede Transaktion ausgeführt bzw. abgeschlossen ist, werden die markierten Einträge in den nicht-flüchtigen Speicher ausgesondert (flushed) und die Liste wird gelöscht (cleared). Beim Schritt 78 ist der Eintrag, der in den freien Pufferspeicher beim Schritt 76 eingelesen wurde, der gewünschte Eintrag, wenn die Transaktion, die den Eintrag X holt, eine "Lese/ Schreib"-Transaktion ist. Wenn die Transaktion jedoch eine "Nur-Lese"-Transaktion ist, wird beim Schritt 79 die Trans­ aktionsreihenfolgennummer des Eintrags überprüft, um zu bestimmen, ob der Nutzeintrag eine geeignete Version für die Nur-Lese-Transaktion ist. Eine Schnappschuß-Version ist z. B. erforderlich, wenn die Transaktionsreihenfolgennum­ mer des Nutzeintrags größer als die Transaktionsreihenfol­ gennummer der Transaktion ist oder wenn die Transaktionsrei­ henfolgennummer des Nutzeintrags in der aktiven Liste für die Transaktion gefunden wird. Wenn ein Schnappschuß ge­ braucht wird, dann muß der allerletzte Schnappschuß aus dem nicht-flüchtigen Schnappschuß-Speicher geholt werden. Beim Schritt 90 wird der Wert des Zeigers für freien Puffer­ speicher (72 in Fig. 4) mit dem Grenzwert des Pufferspei­ cherbereichs des flüchtigen Speichers (16 in Fig. 4) ver­ glichen, um zu bestimmen, ob es einen freien Pufferspeicher gibt. Wenn das der Fall ist, wird der allerletzte Schnapp­ schuß des Eintrags X aus dem Schnappschuß-Speicher 31 des nicht-flüchtigen Speichers gelesen und in den freien Puffer­ speicher beim Schritt 92 geschrieben. Des weiteren wird der freie Pufferspeicher mit dem Suchtabellenindex über den Nutzeintrag X verbunden. Wenn beim Schritt 90 kein freier Pufferspeicher gefunden wurde, wird beim Schritt 91 die Pufferspeicherschlange überprüft, um den ältesten Pufferspeicher zu finden, der dann ausgesondert wird und beim Schritt 92 wiederverwendet wird.
Beim Schritt 93 wird der Schnappschuß, der aus dem nicht­ flüchtigen Speicher beim Schritt 92 gelesen wurde, über­ prüft, um zu bestimmen, ob der Schnappschuß eine geeignete Version für die Nur-Lese-Transaktion ist. Wenn das nicht der Fall ist, kehrt die Ausführung schleifenmäßig zum Schritt 90 zurück, um den nächsten und allerletzten Schnapp­ schuß aus dem nicht-flüchtigen Schnappschuß-Speicher beim Schritt 90 zu holen, und die Verarbeitung bzw. der Prozeß fährt schrittweise fort, bis eine geeignete Version für die Nur-Lese-Transaktion erhalten wird.
Wenn beim Schritt 72 gefunden wird, daß ein Eintrag in dem Suchtabellenindex indiziert wurde, wird beim Schritt 80f der indizierte Eintrag überprüft, um beim Schritt 81 zu entscheiden, ob der indizierte Eintrag der gewünschte bzw. gesuchte Eintrag ist. Wenn das nicht der Fall ist, wird beim Schritt 82 der Bereich für Eintragszeiger des Eintrags überprüft, um zu sehen, ob der indizierte Eintrag auf einen anderen Eintrag zeigt. Wenn das nicht der Fall ist, ver­ zweigt die Ausführung bzw. der Programmablauf zum Schritt 75, um den gewünschten Eintrag von nicht-flüchtigen Spei­ chern zu erhalten. Wenn der Bereich für Eintragszeiger einen Zeiger auf einen anderen Eintrag enthält, dann wird beim Schritt 83 der Eintrag, auf den gezeigt wird, über­ prüft und der Ablauf führt in der Schleife zurück zum Schritt 81, um die gesamte Kette aus Nutzeinträgen zu durch­ suchen, bis entweder das Ende der Kette beim Schritt 82 gefunden wird oder der gewünschte Eintrag beim Schritt 81 gefunden wird.
Wenn der gewünschte Eintrag beim Schritt 81 gefunden wird, verzweigt der Ablauf beim Schritt 84 in Abhängigkeit davon, ob der Eintrag für eine Nur-Lese-Operation benötigt wird. Wenn das nicht der Fall ist, dann kann der Eintrag solange verwendet werden, solange er nicht durch eine andere Trans­ aktion gesperrt wird, was beim Schritt 85 überprüft wird. Wenn der Eintrag durch eine andere Transaktion gesperrt wurde bzw. wird, wird die gegenwärtig ablaufende Transak­ tion blockiert und die Ausführung bzw. der Ablauf (execu­ tion) verzweigt zu dem Betriebssystem, um die Ausführung an eine andere Transaktion zu übergeben, wie z. B. zu der Trans­ aktion, die den Eintrag gesperrt hat. Wenn beim Schritt 84 ermittelt wird, daß die Transaktion eine Nur-Lese-Transak­ tion ist, wird beim Schritt 86 der Nutzeintrag überprüft, um zu bestimmen, ob die Nutzversion des Eintrags eine geeig­ nete Version ist. Eine Schnappschuß-Version wird z. B. benö­ tigt, wenn die Transaktionsreihenfolgennummer des Nutzein­ trags größer als die Transaktionsreihenfolgennummer der Transaktion ist oder wenn die Transaktionsreihenfolgennum­ mer des Nutzeintrags in der aktiven Liste für die Transak­ tion gefunden wird. Wenn ein Schnappschuß benötigt wird, dann wird beim Schritt 87 der Schnappschuß-Zeiger aus dem Bereich für Schnappschuß-Zeiger des Nutzeintrags geholt und der Schnappschuß-Zeiger wird dazu verwendet zu bestimmen, ob ein Schnappschuß-Eintrag in dem Schnappschuß-Speicher- Cache vorhanden ist. Wenn das nicht der Fall ist, wird bei den Schritten 90 bis 93 die geeignete Version des Eintrags aus dem nicht-flüchtigen Schnappschuß-Speicher gelesen.
Ansonsten, wenn auf einen Schnappschuß-Eintrag gezeigt wird, wird beim Schritt 88 der Schnappschuß-Eintrag, auf den gezeigt wird, überprüft, um beim Schritt 89 zu bestim­ men, ob er eine geeignete Version des Eintrags ist. Wenn das nicht der Fall ist, dann verzweigt der Ablauf zurück zum Schritt 87, bis entweder das Ende der Kette aus Schnapp­ schüssen erreicht wird und eine geeignete Version aus der Art des Eintrags aus dem nichtflüchtigen Speicher beim Schritt 74 gelesen wird oder die geeignete Version des Ein­ trags beim Schritt 89 gefunden wird.
In Fig. 6 wird ein Flußdiagramm einer Prozedur bzw. eines Programmablaufs zum Aktualisieren eines Eintrags gezeigt, wobei die Datenstruktur nach Fig. 4 beibehalten wird. Bei einem ersten Schritt 101 wird ein freier Pufferspeicher erhalten, um den aktualisierten Eintrag aufzunehmen, und zwar auf die Art und Weise, wie sie bei den Schritten 75 und 77 der Fig. 5 beschrieben wird. Als nächstes wird beim Schritt 102 die Sperre des freien Pufferspeichers gesetzt, die Transaktionsreihenfolgennummer des freien Pufferspei­ chers auf die Transaktionsreihenfolgennummer der aktualisie­ renden Transaktion gesetzt, der Schnappschuß-Zeiger auf den freien Pufferspeicher gesetzt, um auf die Vor-Wiedergabe bzw. Kopie des Eintrags X zu zeigen, und der Eintragszeiger des freien Pufferspeichers wird auf den Eintragszeiger der Vor-Wiedergabe des Eintrags X gesetzt. Schließlich wird beim Schritt 103 ein Eintragszeiger, der auf den freien Pufferspeicher zeigt, in die Kette aus Einträgen von dem Suchtabellenindex 30 eingefügt. Die Prozedur nach Fig. 6 wird z. B. von einer Lese/Schreib-Transaktion verwendet, nachdem ein Versuch durchgeführt worden ist, den Eintrag zu holen, indem die Prozedur nach Fig. 5 verwendet wurde, und nachdem beim Schritt 85 gemäß Fig. 5 gefunden wurde, daß der Eintrag X nicht durch eine andere Transaktionsreihenfol­ gennummer gesperrt wurde. In diesem Fall ist der Eintrag, der von der Prozedur nach Fig. 5 geholt wird bzw. wurde, die "Vor-Wiedergabe (before-image)" des Eintrags X. Anders ausgedrückt wird der Zeiger auf die Vor-Wiedergabe des Ein­ trags X so abgeändert, daß er auf den aktualisierten Ein­ trag zeigt.
In dem Beispiel nach Fig. 4 wird vorausgesetzt, daß die Einträge von festgelegter Größe sind und daß eine Transak­ tionsreihenfolgennummer für den Eintrag mit jedem Eintrag verbunden ist. In der bevorzugten Ausführungsform ist es jedoch wünschenswert, eine Eintragsorganisation zu verwen­ den, wie sie in Fig. 7 gezeigt wird, nach der Seiten (pages) verkettet werden, wie es in Fig. 4 gezeigt wird, und eine Seite eine Anzahl von Segmenten variabler Länge enthalten kann, von denen jedes eine zugeordnete Transak­ tionssequenznummer für einen Eintrag hat. Diese spezifische Organisation hat den Vorteil, daß jede Schnappschuß-Seite eine Anzahl von unterschiedlichen Versionen des gleichen Segments enthalten kann. Wie in Fig. 7 gezeigt wird, ent­ hält eine Schnappschuß-Seite 110 einen Standardseitenkopf 111 mit einem Sperr-Bereich 112, einem freien Bereich 113, einer Dateinummer 114, einer Prüfsumme 115, einem physikali­ schen Bereich 116 und einer Seitenzahl 117. Wenn z. B. das Eintragsformat nach Fig. 7 verwendet wird, addressiert eine Transaktion den Zustandsspeicher durch die Kombination aus einer Dateinummer und einer Seitennummer. Die Seite 110 enthält auch einen Nachsatz oder ein Seitenende 118 mit einem logischen Bereich 119, einer Eintrag-Transaktionsrei­ henfolgennummer einer Schnappschuß-Seite 120, auf die ge­ zeigt wird, einen Schnappschuß-Seiten-Zeiger 121, eine maxi­ male Transaktionsreihenfolgennummer für den Eintrag der Schreiber (writers) in die Schnappschuß-Seite und einen Nutzseitenzeiger 123, der auf die entsprechende Nutzseite zeigt.
Die Schnappschuß-Seite 110 enthält weiterhin einen Weg-In­ dex (line index) 124, der ein Verzeichnis für alle Speicher­ segmente auf der Seite ist. Er enthält den Versatz von dem Anfang der Seite und die Länge jedes Speichersegments, das auf der Seite ist. Als nächstes enthält die Schnappschuß- Seite 110 einen Transaktionsreihenfolgennummer-Index 125, der die Transaktionsreihenfolgennummer der Transaktion iden­ tifiziert, die ursprünglich die Version des Eintrags er­ zeugt hat, der jetzt in der Schnappschuß-Seite gespeichert ist. Des weiteren enthält die Schnappschuß-Seite 110 einen Schnapp-Index 126 (snap index), der jedem Schnappschußweg- Eintrag eine Seiten-Weg-Nummer zuordnet. Der Schnappschuß- Index erlaubt es mehreren Schnappschuß-Versionen eines Nutz­ eintrags auf der gleichen Schnappschuß-Seite enthalten zu sein. Praktischer gesagt, stellt die Verwendung des Schnapp­ schuß-Indexes sicher, daß im typischen Fall nur eine einzi­ ge Schnappschußseite für jede Nutzseite vorhanden ist, ob­ wohl in einigen Fällen zwei Schnappschuß-Seiten für jede Nutzseite vorhanden sein wird und in einigen weniger häufi­ gen Fällen mehr als zwei Schnappschuß-Seiten für jede Nutz­ seite vorhanden sein wird. Der Rest der Schnappschuß-Seite 110 enthält Speichersegmente 127 am Ende der Seite und frei­ en Speicher 128 in der Mitte der Seite für ein Größerwer­ den der Indizes in einer abwärts gerichteten Richtung und für ein Größerwerden bzw. Anwachsen der Speichersegmente in einer aufwärts gerichteten Richtung.
Die Schnappschuß-Seiten 110 haben ein Format, das ähnlich dem Format der Nutzseiten ist. Bevorzugterweise wird jede Schnappschuß-Seite in einer Schnappschuß-Datei gespeichert, die unterschiedlich zu der Datei ist, in der die entspre­ chende Nutzseite gespeichert ist. Deshalb enthält der Such­ tabellenindex in diesem Fall Eintragungen für die Schnapp­ schuß-Seiten des Schnappschuß-Speicher-Cache, die unter­ schiedlich zu den Eintragungen des Suchtabellenindex für die Nutzseiten sind. Die Verbindung bzw. Verkettung der Datei- und Seitennummer entspricht dabei der Eintragsnum­ mer, die in Fig. 4 zum Indizieren des Suchtabellenindex 30 verwendet wird. Des weiteren, wenn das Seitenformat der Fig. 7 verwendet wird, schreitet das Aktualisieren des Ein­ trags fort, wie in Fig. 5 und in Fig. 6 gezeigt wird, ob­ wohl es anstelle der Verwendung eines freien Pufferspei­ chers zum Aufnehmen einer aktualisierten Seite manchmal effizienter ist, einen freien Pufferspeicher zu holen bzw. einzurichten und die Vor-Wiedergabe-Seite (before-image page) in den freien Pufferspeicher zu kopieren. Die Vor-Wie­ dergabe der Seite wird dann für das Aktualisieren gesperrt und die Kopie im freien Pufferspeicher wird als Schnapp­ schuß-Kopie verwendet. In fast jedem Fall ist das Kopieren erforderlich, da im gewöhnlichen Fall eine Transaktion nicht alle Segmente einer Seite aktualisiert.
Wie oben stehend beschrieben wurde, verarbeitet der Compu­ ter 20 Transaktionen, indem er einen "Undo"-Wiederherstel­ lungsmechanismus verwendet, der eine sehr schnelle Wieder­ herstellung (recovery) erzeugt, da nur die Auswirkungen von ausgefallenen Transaktionen ungeschehen gemacht werden müs­ sen. Ein bemerkenswerter Betrag an Verarbeitungszeit wird jedoch dafür verbraucht, die aktualisierten Einträge in den nichtflüchtigen Zustandsspeicher auszusondern bzw. abzuspei­ chern und den nichtflüchtigen Schnappschuß-Speicher zu ak­ tualisieren, wenn jede der Transaktionen abgeschlossen ist. Aber in einer stabilen Umgebung, wo Systemausfälle und -ab­ stürze sehr selten sind, ist eine schnelle Wiederherstel­ lung bzw. Erholung nicht besonders wichtig. Für Transaktio­ nen, die die gleichen Einträge für mehrere Transaktionen aktualisieren, und für Transaktionen, die kurz sind und nicht viele Seiten aktualisieren, wird ein bemerkenswerter Anteil der Verarbeitungszeit durch Aussondern (flushing) der aktualisierten Einträge in den Zustandsspeicher am Ende jeder Transaktion verschwendet bzw. verbraucht.
Die vorliegende Erfindung beruht auf der Verwendung eines "Redo"-Wiederherstellungs-Mechanismus, der aktualisierte Einträge nicht in den Zustandsspeicher nach jeder Transak­ tion aussondert bzw. in diesem abspeichert bzw. umlädt. Statt dessen werden aktualisierte Einträge bzw. Datenein­ träge sequentiell in ein Nach-Wiedergabe-Protokoll geschrie­ ben und alle aktualisierten Einträge werden in den Zustands­ speicher nur ausgesondert bzw. geladen, wenn gewisse "Prüf­ punkte" (check points) auftreten. Die Prüfpunkte treten z. B. auf, nachdem eine spezifizierte Anzahl von Transaktio­ nen ausgeführt worden ist oder nachdem eine vorgegebene Anzahl von Bytes in das Nach-Wiedergabe-Protokoll seit dem letzten Prüfpunkt eingeschrieben worden sind. Der "Redo"- Wiederherstellungsmechanismus erlaubt es deshalb, aktuali­ sierten, übertragenen bzw. ausgeführten Einträgen im flüch­ tigen Speicher zu verbleiben. Wenn ein Systemabsturz auf­ tritt, wird der flüchtige Zustandsspeicher, der am Ende der zuletzt ausgeführten Transaktion vorliegt, rekonstruiert, indem aus dem nichtflüchtigen Speicher die Zustandsspeicher­ einträge gelesen werden, die zu dem Zeitpunkt des letzten Prüfpunktes existiert haben, und indem die Modifikationen erneut ausgeführt werden (re-doing), die in das Nach-Wieder­ gabe-Protokoll eingetragen wurden. Das Nach-Bild-Protokoll wird z. B. sequentiell gelesen, während die Modifikationen erneut ausgeführt werden.
Bei der vorliegenden Erfindung werden Schnappschuß-Einträge in den flüchtigen Speicher zusammen mit Einträgen des flüch­ tigen Zustandsspeichers gespeichert und Modifikationen der Einträge des flüchtigen Zustandsspeichers durch Transaktio­ nen werden in einem Nach-Wiedergabe-Protokoll des nicht­ flüchtigen Speichers zur Wiederherstellung der Einträge des flüchtigen Zustandsspeichers protokolliert.
Aktualisierungen der flüchtigen Schnappschuß-Einträge und Aktualisierungen der Einträge des flüchtigen Zustandsspei­ chers werden an den Prüfpunkten in den nichtflüchtigen Spei­ cher geladen bzw. ausgesondert. Zudem wird ein Aussondern ausgewählter Einträge zwischen den Prüfpunkten erlaubt, und zwar ohne daß eine Aussonderung aller aktualisierten Einträ­ ge zu dieser Zeit erforderlich ist. Des weiteren müssen keine Aktualisierungen der Schnappschüsse in dem Nach-Wie­ dergabe-Protokoll protokolliert werden. Diese Vorteile der vorliegenden Erfindung werden erreicht, indem alle aktuali­ sierten Schnappschüsse des ausgewählten Eintrags in den nichtflüchtigen Speicher geladen werden, bevor der ausge­ wählte Eintrag des Zustandsspeichers in den nichtflüchtigen Speicher ausgesondert bzw. geladen wird.
Die vorliegende Erfindung hat auch den Vorteil, daß die Zwischenspeichereigenschaft des herkömmlichen Zustandsspei­ chers und Schnappschußspeichers zum Beibehalten des Zu­ standsspeicher-Cache und des Schnappschuß-Speicher-Cache verwendet werden kann und daß eine herkömmliche Nach-Wieder­ gabe-Protokolliereigenschaft bzw. -einrichtung zum Aufrecht­ erhalten des Nach-Wiedergabe-Protokolls eingesetzt werden kann. Eine spezifische Ausführungsform der Erfindung, die diese herkömmlichen Einrichtungen bzw. Eigenschaften in dem Digitalcomputer 20 nach Fig. 1 verwendet, wird nachfolgend mit Bezug auf die Fig. 8 beschrieben.
In der Fig. 8 wird ein Flußdiagramm gezeigt, das den Be­ trieb bzw. die Operation des Digitalcomputers (20 in Fig. 1) in Übereinstimmung mit einer spezifischen Ausführungs­ form der Erfindung erläutert.
Der Betrieb des Digitalcomputers beginnt z. B. beim Schritt 150, nachdem die Stromversorgung des Computers nach einem Ausfall der Stromversorgung an den Computer angelegt wird. Beim Schritt 150 wird ein Zähler (COUNTER) zum Zählen der Transaktionen gelöscht (gecleared), die seit dem letzten Prüfpunkt beendet bzw. ausgeführt worden sind (committed). Außerdem wird eine Variable (BYTES) zum Akkumulieren der Anzahl von Bytes, die in der Nach-Wiedergabe-Datei proto­ kolliert bzw. eingetragen werden, zurückgesetzt bzw. auf Null gesetzt und der Zustandsspeicher-Cache (29 in Fig. 1) und der Schnappschuß-Speicher-Cache (32 in Fig. 1) werden gelöscht, indem der Suchtabellenindex (30 in Fig. 4) ge­ cleared wird.
Als nächstes wird beim Schritt 151 das Nach-Wiedergabe -Pro­ tokoll eingesetzt, um den Zustandsspeicher "vorwärtszurol­ len", damit die Aktualisierungen in dem Nach-Wiedergabe-Pro­ tokoll aufgenommen werden, was dem letzten Prüfpunkt nach­ folgt. Dies kann durchgeführt werden, indem das Nach-Wieder­ gabe-Protokoll in entweder einer Vorwärts- oder einer Rück­ wärts-Richtung abgetastet wird, obwohl die herkömmliche Nach-Wiedergabe-Protokollier-Einrichtung des "Rdb/VMS" und "VAX DBMS" das Nach-Wiedergabe-Protokoll in einer Vorwärts- Richtung durchgeht, und zwar beginnend mit dem letzten Prüf­ punkt. Ein Zeiger auf den letzten Prüfpunkt wird z. B. aus einem Kopfeintrag des Nach-Wiedergabe-Protokolls oder bevor­ zugterweise aus einer "Wurzeldatei" (root file) oder aus einem Systemkatalog in dem nichtflüchtigen Speicher gelesen.
Beim Schritt 152 wird das Vor-Wiedergabe-Protokoll gelesen, um die Effekte ausgefallener Transaktionen ungeschehen zu machen (undo), indem Vor-Wiedergaben (before-images) aus dem Vor-Wiedergabe-Protokoll in den nichtflüchtigen Spei­ cher geschrieben werden, wie oben stehend mit Bezug auf das Bezugszeichen 21 der Fig. 2 beschrieben wurde.
Die Verarbeitung der Transaktionen wird beim Schritt 153 unter der Steuerung des Betriebssystems wiederaufgenommen, während Einträge aus dem nichtflüchtigen Speicher in den flüchtigen Speicher gespeichert werden und Einträge, die aktualisiert werden sollen, gesperrt werden, wie oben ste­ hend mit Bezug auf die Schritte 42 bis 46 der Fig. 2 und mit Bezug auf die Fig. 5 und 6 beschrieben wurde.
In Übereinstimmung mit einem Aspekt der vorliegenden Erfin­ dung werden jedoch ausgewählte Nutzeinträge (live records) in dem nichtflüchtigen Zustandsspeicher zwischen den Prüf­ punkten geladen (flush), bei denen alle aktualisierten Ein­ träge in den nichtflüchtigen Speicher geladen werden. Ein ausgewählter Nutzeintrag wird in den nichtflüchtigen Zu­ standsspeicher z. B. geladen, um einen freien Pufferspeicher in dem Pufferspeicherbereich, entsprechend den Schritten 77 und 91 der Fig. 5, zu erzeugen. Ein ausgewählter Zustands­ speichereintrag kann auch in den nichtflüchtigen Speicher ausgesondert bzw. geladen werden, um eine Datenkonsistenz bei Vielverarbeitungs- oder Vielprozessorsystemen sicherzu­ stellen, wenn ein anderer Prozeß auf den ausgewählten Ein­ trag zugreifen will.
Wenn ein ausgewählter (nicht gesperrter) Nutzeintrag in den Zustandsspeicher geladen werden soll, wie es beim Schritt 154 bestimmt wird, wird dann beim Schritt 156 das Programm bzw. die Routine der Fig. 10 verwendet, um den flüchtigen Nutzeintrag in den nichtflüchtigen Zustandsspeicher umzula­ den. In Übereinstimmung mit einer wichtigen Eigenschaft bzw. mit einem wichtigen Aspekt der vorliegenden Erfindung umfaßt dieses Laden (flush) zuerst das Laden beim Schritt 155 aller aktiver Schnappschüsse des Nutzeintrags von dem flüchtigen Schnappschuß-Speicher in den nichtflüchtigen Schnappschuß-Speicher, bevor der flüchtige Nutzeintrag in den nichtflüchtigen Zustandsspeicher ausgesondert bzw. gela­ den wird.
Beim Schritt 157 verzweigt der Ablauf zum Schritt 167, wenn eine Transaktion Ty bereit für die Ausführung (commit) ist. Jede Transaktion ist z. B. ein Programm, das eine "Ab­ schluß"- bzw. "Übertragungs (COMMIT)"- oder eine Ende-Anwei­ sung enthält, welche den Ablauf dazu veranlaßt, zum Schritt 158 überzugehen. Beim Schritt 158 wird die Transaktion Ty ausgeführt, indem der Zähler (COUNTER) inkrementiert wird und die Sperren auf den aktualisierten Einträgen freigege­ ben bzw. gelöst werden und indem dann beim Schritt 159 die Anzahl der Bytes (BYTES) durch die Anzahl der Bytes in ih­ ren aktualisierten Einträgen erhöht werden und ihre aktuali­ sierten Einträge in die Nach-Wiedergabe-Protokoll-Datei eingeschrieben werden. Als nächstes wird beim Schritt 160 ein "commit Ty"-Eintrag in das Vor-Wiedergabe-Protokoll für den Fall eingeschrieben, in dem eine einzelne Vor-Wiederga­ be-Protokoll-Datei verwendet wird, ansonsten wird im bevor­ zugten Fall, in dem eine separate Vor-Wiedergabe-Protokoll- Datei für jeden Prozeß verwendet wird, dann die Vor-Wieder­ gabe-Protokoll-Datei für die Verarbeitung der Ty-Transak­ tion gekürzt (truncated). Schließlich verzweigt der Ablauf in Abhängigkeit davon, ob ein Prüfpunkt erreicht wird oder nicht, beim Schritt 161. Für diesen Zweck wird die Anzahl der Transaktionen, die bei den Schritten 158 bis 160 ausge­ führt worden sind bzw. beendet worden sind seit dem letzten Prüfpunkt (COUNTER) mit einem vorgegebenen Grenzwert ver­ glichen und außerdem wird die Anzahl der Bytes (BYTES), die in der Nach-Wiedergabe-Protokoll-Datei protokolliert wur­ den, mit einem vorgegebenen Grenzwert verglichen. Wenn kei­ ner der Grenzwerte überschritten wird, verzweigt der Ablauf zum Schritt 153, um die Verarbeitung der Transaktionen fort­ zusetzen. Ansonsten verzweigt der Ablauf bzw. die Ausfüh­ rung zum Schritt 162 um ein Laden am Prüfpunkt zu starten. In Übereinstimmung mit der Erfindung werden die Schnapp­ schuß-Einträge ausgesondert bzw. geladen, bevor ihre jewei­ ligen Nutzeinträge ausgesondert bzw. geladen werden.
Beim Schritt 162 werden der Zähler (COUNTER) und der Byte Akkumulator (BYTES) gelöscht. Dann werden beim Schritt 163 die aktiven Schnappschuß-Einträge des Schnappschuß-Spei­ cher-Cache, die seit dem letzten Prüfpunkt aktualisiert wurden, in den nichtflüchtigen Schnappschuß-Speicher ge­ schrieben. (Ein Schnappschuß-Eintrag ist aktiv, wenn seine Transaktion-Reihenfolgennummer für den Eintrag größer oder gleich der Grenz-Transaktion-Reihenfolgennummer der vorlie­ genden Transaktion ist.) Beim Schritt 164 werden dann die aktualisierten Zustandsspeicher-Cache-Einträge in den nicht­ flüchtigen Zustandsspeicher geschrieben. Schließlich wird beim Schritt 165 ein Prüfpunkt-Eintrag in dem Nach-Wiederga­ be-Protokoll protokolliert und der Ort des Prüfpunkt-Ein­ trags wird auch in den Kopf des Nach-Wiedergabe-Protokolls oder in die "Wurzeldatei" geschrieben.
Wie oben stehend beschrieben wurde, wurde vorausgesetzt, daß die Protokoll-Dateien aktualisiert werden, indem Kern- Schreib-Operationen (atomic write operations) verwendet werden. Es wird jedoch darauf hingewiesen, daß eine Kern- Operation zum Durchführen eines Schreibens der Aktualisie­ rungen des Cache-Speichers am Prüfpunkt beim Schritt 163 der Fig. 8 nur in einem System notwendig sind, wo das Nach- Wiedergabe-Protokoll die Änderungen (wie z. B. die Segmente) für nur Abschnitte der Einträge enthält, die in den Cache -Speicher beim Schritt 163 eingeschrieben wurden. In diesem Fall können nur die geänderten Abschnitte, und notwendiger­ weise nicht die ungeänderten Abschnitte beim Schritt 151 rekonstruiert werden, außer die Rekonstruktion startet bei unverfälschten Kopien der vollständigen Einträge. In jedem Fall ist ein Kern-Schreiben (atomic write) bei den Schrit­ ten 155 oder 162 zum Aussondern der Schnappschuß-Einträge in den nichtflüchtigen Schnappschuß-Speicher nicht erforder­ lich. Bei den meisten Computersystemen sind diese Vorausset­ zungen bzw. Überlegungen jedoch inkonsequent, da bei den meisten Computern einzelne Einträge immer kernweise (atomi­ cally) in den nichtflüchtigen Speicher geschrieben werden.
Obenstehend ist eine Technik des "Redo"-Protokollierens beschrieben worden, die ein Aussondern von aktualisierten Zustandseinträgen in einen nichtflüchtigen Zustandsspeicher bei vorgegebenen Prüfpunkten durchführt und die Schnapp­ schuß-Einträge in dem nichtflüchtigen Speicher wiederher­ stellt, ohne daß die Schnappschuß-Einträge in einem Nach- Wiedergabe-Protokoll protokolliert werden müssen. Statt dessen wird die Wiederherstellung der Schnappschuß-Einträge durch Schreiben der aktiven aktualisierten Schnappschüsse eines aktualisierten Zustandseintrags in den nichtflüchti­ gen Speicher sichergestellt, bevor der aktualisierte Zu­ stands-Eintrag in den nichtflüchtigen Speicher ausgesondert bzw. geladen wird. Da alle aktiven Schnappschüsse wiederher­ gestellt werden, kann die Verarbeitung verteilter Transak­ tionen leicht wiederaufgenommen werden, nachdem Aktualisie­ rungen in einem Nach-Wiedergabe-Protokoll von dem letzten Prüfpunkt in dem Protokoll erneut durchgeführt wurden. Die­ se Wiederherstellung von Schnappschüssen ist insbesondere von Vorteil in einer Vielverarbeitungsumgebung (multi-pro­ cessing environment), in der nur einer von vielen Prozessen möglicherweise ausfällt. In dieser Situation wird der Aus­ fall eines Prozesses detektiert bzw. festgestellt und der Wiederherstellungsprozeß der Schritte 151 und 152 der Fig. 8 wird durchgeführt, um die Transaktionen des ausgefallenen Prozesses wiederherzustellen. Deshalb werden die anderen Prozesse durch den Prozeß, der ausgefallen ist, nicht beein­ flußt.
In einem Transaktionsverarbeitungssystem werden Schnapp­ schuß-Einträge in einem flüchtigen Speicher zusammen mit Einträgen des flüchtigen Zustandsspeichers abgespeichert und Modifikationen für die Einträge des flüchtigen Zustands­ speichers durch Transaktionen werden in einem Nach-Wiederga­ be-Protokoll des nichtflüchtigen Speichers zur Wiederher­ stellung der Einträge des flüchtigen Zustandsspeichers pro­ tokolliert. Für die Wiederherstellung der Schnappschuß-Ein­ träge des flüchtigen Speichers werden, wenn irgendeiner der Einträge des flüchtigen Zustandsspeichers von dem flüchti­ gen Speicher in den nichtflüchtigen Zustandsspeicher ge­ schrieben werden muß, die flüchtigen Schnappschuß-Einträge des flüchtigen Zustandsspeicher-Eintrags zuerst von dem flüchtigen Schnappschuß-Speicher in den nichtflüchtigen Schnappschuß-Speicher geschrieben. Diese Reihenfolge des Zwischenspeicherbereichs-Ladens erlaubt die Wiederherstel­ lung der flüchtigen Schnappschuß-Einträge aus einem nicht­ flüchtigen Zustandsspeicher oder von Modifikationen des Nach-Wiedergabe-Protokolls. Des weiteren kann die Wiederher­ stellung ohne ein Schreiben der Modifikationen für die flüchtigen Schnappschuß-Einträge in ein Nach-Wiedergabe-Pro­ tokoll oder ein Laden der Schnappschuß-Einträge unter Ver­ wendung einer Kern-Operation durchgeführt werden.

Claims (20)

1. Verfahren zum Betreiben eines digitalen Computers zum Verarbeiten von Transaktionen, wobei das Verfahren die fol­ genden Schritte aufweist:
  • a) Lesen der Zustandseinträge aus einem nichtflüchtigen Zustandsspeicher und Schreiben der Zustandseinträge in ei­ nen flüchtigen Zustandsspeicher-Cache;
  • b) Erstellen von Schnappschuß-Kopien in einem flüchtigen Schnappschuß-Speicher-Cache von ausgewählten Zustandseinträ­ gen des flüchtigen Zustandsspeicher-Cache, Aufrechterhalten eines entsprechenden Satzes aus diesen Schnappschuß-Kopien in dem flüchtigen Schnappschuß-Speicher-Cache von jedem ausgewählten Zustandseintrag des flüchtigen Zustandsspei­ cher-Cache, Erstellen von Modifikationen, die durch die Transaktionen für die ausgewählten Zustandseinträge des flüchtigen Zustandsspeicher-Cache spezifiziert wurden, und Übertragen der Modifikationen, die durch die Transaktionen spezifiziert wurden, in ein Nach-Wiedergabe-Protokoll des nichtflüchtigen Speichers; und dann
  • c) Lesen der Schnappschuß-Kopien aus dem flüchtigen Schnappschuß-Speicher-Cache und Schreiben der Schnappschuß- Kopien in den nichtflüchtigen Schnappschuß-Speicher und Lesen der ausgewählten Zustandseinträge aus dem flüchtigen Zustandsspeicher-Cache und Schreiben der ausgewählten Zu­ stands-Einträge in den nichtflüchtigen Zustandsspeicher, wobei der entsprechende Satz von Schnappschuß-Kopien jedes ausgewählten Zustandseintrags aus dem flüchtigen Schnapp­ schuß-Speicher-Cache gelesen wird und in den nichtflüchti­ gen Schnappschuß-Speicher geschrieben wird, bevor jeder ausgewählte Zustandseintrag aus dem flüchtigen Zustandsspei­ cher-Cache gelesen wird und in den nichtflüchtigen Zustands­ speicher geschrieben wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Schritte b) und c) sequentiell wiederholt werden und daß der Schritt c) durchgeführt wird, nachdem die Modifika­ tionen, die durch die vorgegebene Vielzahl der Transaktio­ nen spezifiziert wurden, im Schritt b) ausgeführt wurden.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Schritte b) und c) sequentiell wiederholt werden und daß der Schritt c) durchgeführt wird in Antwort auf einen Betrag an Speicherplatz in dem Nach-Wiedergabe-Protokoll, der durch die ausgeführten Modifikationen eingenommen wird.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Lesen und das Schreiben eines bestimmten der ausgewähl­ ten Zustandseinträge aus dem flüchtigen Zustandsspeicher- Cache bzw. in den nichtflüchtigen Zustandsspeicher durchge­ führt wird, um einen flüchtigen Zustandsspeicherplatz zu erzeugen, in den ein anderer Zustandsspeichereintrag einge­ schrieben wird, nachdem der andere Zustandsspeichereintrag aus dem nichtflüchtigen Zustandsspeicher gelesen wurde.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß weiterhin der Schritt des Wiederherstellens nach einem Aus­ fall vorgesehen ist, der den flüchtigen Zustandsspeicher- Cache und den flüchtigen Schnappschuß-Speicher-Cache löscht bzw. stört, wobei der Schritt des Wiederherstellens nach dem Ausfall das Durchführen der Modifikationen, die in das Nach-Wiedergabe-Protokoll eingegeben wurden, für Zustands­ einträge, die aus dem nichtflüchtigen Zustandsspeicher gele­ sen werden, und dann das Wiederaufnehmen der Verarbeitung der Transaktionen enthält.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß das Wiederaufnehmen der Verarbeitung der Transaktionen das Lesen aus dem nichtflüchtigen Schnappschuß-Speicher von Schnappschuß-Kopien aufweist, die in den nichtflüchtigen Schnappschuß-Speicher vor dem Ausfall eingeschrieben wurden.
7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Beibehalten eines entsprechenden Satzes der Schnapp­ schuß-Kopien in dem flüchtigen Schnappschuß-Speicher-Cache jedes ausgewählten Zustandsspeichers des flüchtigen Zu­ standsspeicher-Cache durchgeführt wird, indem eine verbunde­ ne Liste von Schnappschuß-Kopien, die in dem entsprechenden Satz enthalten sind, eingerichtet wird, wobei die verbunde­ ne Liste mit jedem der ausgewählten Zustandseinträge des flüchtigen Zustandsspeichers verbunden ist.
8. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß weiterhin der Schritt des Suchens nach einer übertragenen bzw. ausgeführten Version eines Zustandseintrags vorgesehen ist, der zu einem Zeitpunkt existiert, wenn die Verarbei­ tung einer spezifizierten Transaktion aus den Transaktionen anfängt.
9. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Erstellen von Schnappschuß-Kopien durchgeführt wird, indem Zeiger zum Transferrieren von Pufferspeichern, die Zustandseinträge festhalten, von dem flüchtigen Zustands­ speicher-Cache zu dem flüchtigen Schnappschuß-Speicher- Cache geändert werden und indem freie Pufferspeicher dem flüchtigen Zustandsspeicher-Cache zugewiesen werden, um modifizierte Versionen der Zustandseinträge aufzunehmen.
10. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Erstellen von Schnappschuß-Kopien durchgeführt wird, indem freie Pufferspeicher dem flüchtigen Schnappschuß-Spei­ cher-Cache zugewiesen werden und indem Zustandsspeicher-Ein­ träge in die freien Pufferspeicher kopiert werden, die dem flüchtigen Schnappschuß-Speicher-Cache zugewiesen wurden.
11. Verfahren zum Betreiben eines digitalen Computers zum Verarbeiten von Transaktionen, wobei das Verfahren die fol­ genden Schritte aufweist:
  • a) Lesen von Zustandseinträgen aus einem nichtflüchtigen Zustandsspeicher und Schreiben der Zustandseinträge in ei­ nen flüchtigen Zustandsspeicher-Cache;
  • b) Erstellen von Schnappschuß-Kopien in einem flüchtigen Schnappschuß-Speicher-Cache von ausgewählten Zustandseinträ­ gen des flüchtigen Zustandsspeicher-Cache, Beibehalten ei­ nes entsprechenden Satzes dieser Schnappschuß-Kopien in dem flüchtigen Schnappschuß-Speicher-Cache für jeden ausge­ wählten Zustandseintrag des flüchtigen Zustandsspeicher- Cache, Durchsuchen des flüchtigen Zustandsspeicher-Cache und des Schnappschuß-Speicher-Cache nach Versionen spezifi­ zierter Zustandseinträge, die zu Zeitpunkten existiert ha­ ben, wo die Verarbeitung spezifizierter Transaktionen aus den Transaktionen begonnen hat, Erstellen von Modifikatio­ nen, die durch die Transaktionen spezifiziert sind, für die ausgewählten Zustandseinträge in dem flüchtigen Zustands­ speicher-Cache und Übertragen der Modifikationen, die durch die Transaktionen spezifiziert wurden, in ein Nach-Wiederga­ be-Protokoll des nichtflüchtigen Speichers, wobei Modifika­ tionen, die von einer Vielzahl der Transaktionen spezifi­ ziert wurden, durchgeführt werden, bevor die Modifikationen einiger aus der Vielzahl der Transaktionen ausgeführt wer­ den; und dann
  • c) Lesen der Schnappschuß-Kopien aus dem flüchtigen Schnappschuß-Speicher-Cache und Schreiben der Schnappschuß- Kopien in den nichtflüchtigen Schnappschuß-Speicher und Lesen der ausgewählten Zustandseinträge aus dem flüchtigen Zustandsspeicher-Cache und Schreiben der ausgewählten Zu­ standseinträge in den nichtflüchtigen Zustandsspeicher, wobei der entsprechende Satz mit Schnappschuß-Kopien jedes der ausgewählten Zustandseinträge aus dem flüchtigen Schnappschuß-Speicher-Cache gelesen wird und in den nicht­ flüchtigen Schnappschuß-Speicher geschrieben wird, bevor der jeweils ausgewählte Zustandseintrag aus dem flüchtigen Zustandsspeicher-Cache gelesen wird und in den nichtflüchti­ gen Zustandsspeicher geschrieben wird, und dann;
  • d) Wiederherstellen nach einem Ausfall, der den flüchti­ gen Zustandsspeicher-Cache und den flüchtigen Schnappschuß- Speicher-Cache löscht bzw. stört, wobei das Wiederherstel­ len nach dem Ausfall das Durchführen der Modifikationen, die in das Nach-Wiedergabe-Protokoll übertragen wurden, für Zustandseinträge, die von dem nichtflüchtigen Zustandsspei­ cher gelesen wurden, und dann das Wiederaufnehmen der Verar­ beitung der Transaktionen enthält, wobei das Wiederaufneh­ men der Verarbeitung der Transaktionen das Lesen aus dem nichtflüchtigen Schnappschuß-Speicher der Schnappschuß-Ko­ pien umfaßt, die in den nichtflüchtigen Schnappschuß-Spei­ cher vor dem Ausfall eingeschrieben worden sind.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß die Schritte b) und c) sequentiell wiederholt werden und daß der Schritt c) durchgeführt wird, nachdem die Modi­ fikationen, die durch die vorgegebene Vielzahl von Transak­ tionen spezifiziert werden, beim Schritt b) ausgeführt wur­ den.
13. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß die Schritte b) und c) sequentiell wiederholt werden und daß der Schritt c) durchgeführt wird in Antwort auf einen Wert an Speicherplatz in dem Nach-Wiedergabe-Proto­ koll, der von den ausgeführten bzw. beendeten Modifikatio­ nen eingenommen wird.
14. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß das Lesen und Schreiben eines bestimmten Eintrags aus den ausgewählten Zustandseinträgen aus dem flüchtigen Zu­ standsspeicher-Cache in den nichtflüchtigen Zustandsspei­ cher durchgeführt wird, um einen flüchtigen Speicherplatz bereit zustellen, in den ein anderer Zustandsspeichereintrag eingeschrieben wird, nachdem der andere Zustandsspeicherein­ trag aus dem nichtflüchtigen Zustandsspeicher gelesen wurde.
15. Transaktionsverarbeitungssystem, das aufweist:
einen flüchtigen Speicher;
einen nichtflüchtigen Speicher;
eine Einrichtung zum Lesen von Zustandseinträgen aus dem Zustandsspeicher in den nichtflüchtigen Speicher und zum Schreiben der Zustandseinträge in den Zustandsspeicher- Cache des flüchtigen Speichers;
eine Einrichtung zum Erstellen von Schnappschuß-Kopien in einem Schnappschuß-Speicher-Cache des flüchtigen Speichers aus ausgewählten Zustandseinträgen in dem flüchtigen Zu­ standsspeicher-Cache;
eine Einrichtung zum Beibehalten eines zugeordneten Satzes der Schnappschuß-Kopien in dem Schnappschuß-Speicher-Cache von jedem ausgewählten Zustandseintrag des Zustandsspeicher­ -Cache;
eine Einrichtung zum Durchsuchen des Zustandsspeicher-Cache und des Schnappschuß-Speicher-Cache nach einer Version ei­ nes spezifizierten Zustandseintrags, der zu einem Zeitpunkt existierte, wo die Verarbeitung einer spezifierten Transak­ tion von den Transaktionen anfing;
eine Einrichtung zum Erstellen von Modifikationen, die durch die Transaktionen spezifiziert werden, für die ausge­ wählten Zustandseinträge in dem Zustandsspeicher-Cache;
eine Einrichtung zum Übertragen der Modifikationen, die in den Transaktionen spezifiziert werden, in ein Nach-Wiederga­ be-Protokoll des nichtflüchtigen Speichers; und
eine Cache-Aussonderungseinrichtung zum Lesen der Schnapp­ schuß-Kopien aus dem Schnappschuß-Speicher-Cache und zum Schreiben der Schnappschuß-Kopien in den Schnappschuß-Spei­ cher des nichtflüchtigen Speichers und zum Lesen der ausge­ wählten Zustandseinträge aus dem Zustandsspeicher-Cache und zum Schreiben der ausgewählten Zustandseinträge in den Zu­ standsspeicher des nichtflüchtigen Speichers, wobei die Cache-Aussonderungs-Einrichtung eine Einrichtung zum Lesen des zugeordneten Satzes von Schnappschuß-Kopien jedes ausge­ wählten Zustandseintrags aus dem Schnappschuß-Speicher- Cache und eine Einrichtung zum Schreiben des zugeordneten Satzes von Schnappschuß-Kopien jedes ausgewählten Zustands­ eintrags in den Schnappschuß-Speicher des nichtflüchtigen Speichers aufweist, bevor jeder ausgewählte Zustandseintrag aus dem Zustandsspeicher-Cache gelesen wird und in den Zu­ standsspeicher des nichtflüchtigen Speichers geschrieben wird.
16. Transaktionsverarbeitungssystem nach Anspruch 15, da­ durch gekennzeichnet, daß eine Einrichtung zum Wiederher­ stellen nach einem Ausfall der Stromversorgung vorgesehen ist, indem die Modifikationen, die in das Nach-Wiedergabe- Protokoll übertragen wurden, für Zustandseinträge, die aus dem Zustandsspeicher in den nichtflüchtigen Speicher gele­ sen wurden, durchgeführt werden und dann die Verarbeitung der Transaktionen wieder aufgenommen wird.
17. Transaktionsverarbeitungssystem nach Anspruch 15, da­ durch gekennzeichnet, daß weiterhin eine Einrichtung zum Aktivieren der Cache-Aussonderungs-Einrichtung vorgesehen ist, nachdem die Einrichtung zum Übertragen die Modifikatio­ nen, die durch eine vorgegebene Vielzahl der Transaktionen spezifiziert werden, in das Nach-Wiedergabe-Protokoll über­ trägt.
18. Transaktionsverarbeitungssystem nach Anspruch 15, da­ durch gekennzeichnet, daß weiterhin eine Einrichtung zum Aktivieren der Cache-Aussonderungseinrichtung vorgesehen ist, nachdem die Einrichtung zum Übertragen die Modifikatio­ nen, die durch die Transaktionen spezifiziert werden, in das Nach-Wiedergabe-Protokoll übertragen hat, wobei die übertragenen Modifikationen einen vorgegebenen Betrag an Platz in dem Nach-Wiedergabe-Protokoll einnehmen.
19. Transaktionsverarbeitungssystem nach Anspruch 15, ge­ kennzeichnet durch eine Aussonderungseinrichtung für einen Zustandseintrag zum Lesen von Schnappschuß-Kopien eines ausgewählten Zustandseintrags aus dem Schnappschuß-Speicher­ -Cache und zum Schreiben der Schnappschuß-Kopien in den Schnappschuß-Speicher des nichtflüchtigen Speichers und dann zum Lesen des ausgewählten Zustandseintrags aus dem Zustandsspeicher-Cache und zum Schreiben des ausgewählten Zustandseintrags in den Zustandsspeicher des nichtflüchti­ gen Speichers.
20. Transaktionsverarbeitungssystem nach Anspruch 19, ge­ kennzeichnet durch eine Einrichtung zum Aktivieren der Aus­ sonderungseinrichtung für einen Zustandseintrag, um einen flüchtigen Pufferspeicher, der vorher zum Speichern des ausgewählten Zustandseintrags verwendet wurde, freizuma­ chen, und durch eine Einrichtung zum Schreiben eines ande­ ren Zustandsspeicher-Eintrags in den flüchtigen Pufferspei­ cher.
DE4220198A 1991-06-18 1992-06-19 Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem Expired - Lifetime DE4220198C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/717,212 US5369757A (en) 1991-06-18 1991-06-18 Recovery logging in the presence of snapshot files by ordering of buffer pool flushing

Publications (2)

Publication Number Publication Date
DE4220198A1 true DE4220198A1 (de) 1993-01-14
DE4220198C2 DE4220198C2 (de) 1997-10-09

Family

ID=24881145

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4220198A Expired - Lifetime DE4220198C2 (de) 1991-06-18 1992-06-19 Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem

Country Status (4)

Country Link
US (1) US5369757A (de)
JP (1) JP2679779B2 (de)
DE (1) DE4220198C2 (de)
GB (1) GB2256952B (de)

Families Citing this family (201)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5469562A (en) * 1992-06-26 1995-11-21 Digital Equipment Corporation Durable atomic storage update manager
US5530855A (en) * 1992-10-13 1996-06-25 International Business Machines Corporation Replicating a database by the sequential application of hierarchically sorted log records
JPH06266597A (ja) * 1993-03-11 1994-09-22 Fujitsu Ltd ログ取得方式
US5581750A (en) * 1993-03-15 1996-12-03 International Business Machines Corporation System and method for improving data recovery performance
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US7174352B2 (en) 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
US5553279A (en) * 1993-10-08 1996-09-03 International Business Machines Corporation Lossless distribution of time series data in a relational data base network
US5642503A (en) * 1993-12-15 1997-06-24 Microsoft Corporation Method and computer system for implementing concurrent accesses of a database record by multiple users
JP2735479B2 (ja) * 1993-12-29 1998-04-02 株式会社東芝 メモリ・スナップショット方法及びメモリ・スナップショット機能を持つ情報処理装置
US5577226A (en) * 1994-05-06 1996-11-19 Eec Systems, Inc. Method and system for coherently caching I/O devices across a network
EP0764302B1 (de) * 1994-06-10 1998-12-02 Texas Micro Inc. Hauptspeichervorrichtung und wiederanlaufkennzeichnungsverfahren für ein fehlertolerantes rechnersystem
US5682471A (en) * 1994-10-06 1997-10-28 Billings; Thomas Neal System for transparently storing inputs to non-volatile storage and automatically re-entering them to reconstruct work if volatile memory is lost
US5596710A (en) * 1994-10-25 1997-01-21 Hewlett-Packard Company Method for managing roll forward and roll back logs of a transaction object
US5608865A (en) * 1995-03-14 1997-03-04 Network Integrity, Inc. Stand-in Computer file server providing fast recovery from computer file server failures
US6044475A (en) * 1995-06-16 2000-03-28 Lucent Technologies, Inc. Checkpoint and restoration systems for execution control
US5778168A (en) * 1995-09-11 1998-07-07 Sun Microsystems, Inc. Transaction device driver technique for a journaling file system to ensure atomicity of write operations to a computer mass storage device
US5864657A (en) * 1995-11-29 1999-01-26 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
US5751939A (en) * 1995-11-29 1998-05-12 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system using an exclusive-or memory
US5870758A (en) * 1996-03-11 1999-02-09 Oracle Corporation Method and apparatus for providing isolation levels in a database system
DE19758588B4 (de) * 1996-12-16 2006-01-05 Fujitsu Ltd., Kawasaki Computersystem mit Prüfpunkteinrichtung
US5996088A (en) * 1997-01-22 1999-11-30 Oracle Corporation High-speed database checkpointing through sequential I/O to disk
US5933838A (en) * 1997-03-10 1999-08-03 Microsoft Corporation Database computer system with application recovery and recovery log sequence numbers to optimize recovery
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
JP4363676B2 (ja) * 1997-10-31 2009-11-11 株式会社東芝 コンピュータシステム
US6182086B1 (en) * 1998-03-02 2001-01-30 Microsoft Corporation Client-server computer system with application recovery of server applications and client applications
US6799224B1 (en) * 1998-03-10 2004-09-28 Quad Research High speed fault tolerant mass storage network information server
US6260155B1 (en) 1998-05-01 2001-07-10 Quad Research Network information server
US6351754B1 (en) * 1998-06-23 2002-02-26 Oracle Corporation Method and system for controlling recovery downtime
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US6370528B1 (en) * 1999-05-28 2002-04-09 Unisys Corporation High speed method for flushing data buffers and updating database structure control information
US6351744B1 (en) * 1999-05-28 2002-02-26 Unisys Corporation Multi-processor system for database management
US6738757B1 (en) * 1999-06-02 2004-05-18 Workwise, Inc. System for database monitoring and agent implementation
DE10059006B4 (de) * 1999-12-30 2004-04-15 International Business Machines Corp. Verfahren und System zur sicheren Verwaltung von Dateien in nichtflüchtigen Speichern
US6647473B1 (en) * 2000-02-16 2003-11-11 Microsoft Corporation Kernel-based crash-consistency coordinator
US6651075B1 (en) * 2000-02-16 2003-11-18 Microsoft Corporation Support for multiple temporal snapshots of same volume
US6658596B1 (en) * 2000-03-13 2003-12-02 International Business Machines Corporation Automated queue recovery using element- based journaling
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US7043504B1 (en) * 2000-04-10 2006-05-09 International Business Machines Corporation System and method for parallel primary and secondary backup reading in recovery of multiple shared database data sets
US7263476B1 (en) 2000-06-12 2007-08-28 Quad Research High speed information processing and mass storage system and method, particularly for information and application servers
US7072916B1 (en) * 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6654912B1 (en) * 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US7565353B2 (en) * 2001-05-21 2009-07-21 Mudalla Technology, Inc. Trusted transactional internet kiosk
US6717847B2 (en) * 2001-09-17 2004-04-06 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US20030055809A1 (en) * 2001-09-18 2003-03-20 Sun Microsystems, Inc. Methods, systems, and articles of manufacture for efficient log record access
JP2005505045A (ja) 2001-09-28 2005-02-17 コムヴォールト・システムズ・インコーポレーテッド クイックリカバリボリュームを作成及び管理する方法及び装置
NZ532773A (en) * 2001-11-01 2005-11-25 Verisign Inc Transactional memory manager
US6857001B2 (en) * 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7823060B2 (en) * 2002-06-07 2010-10-26 Microsoft Corporation Undo/redo architecture across multiple files
US7844577B2 (en) 2002-07-15 2010-11-30 Symantec Corporation System and method for maintaining a backup storage system for a computer system
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
JP2004086721A (ja) * 2002-08-28 2004-03-18 Nec Corp データ複製システム、中継装置、データ送受信方法およびストレージ内のデータを複製するためのプログラム
GB2393273A (en) * 2002-09-20 2004-03-24 Sharp Kk Method and apparatus for detecting an error in writing to persistent memory
US7568080B2 (en) 2002-10-07 2009-07-28 Commvault Systems, Inc. Snapshot storage and management system with indexing and user interface
JP3974538B2 (ja) * 2003-02-20 2007-09-12 株式会社日立製作所 情報処理システム
US6925523B2 (en) * 2003-03-03 2005-08-02 Agilent Technologies, Inc. Managing monotonically increasing counter values to minimize impact on non-volatile storage
JP4165747B2 (ja) 2003-03-20 2008-10-15 株式会社日立製作所 記憶システム、制御装置及び制御装置のプログラム
US7890466B2 (en) * 2003-04-16 2011-02-15 Oracle International Corporation Techniques for increasing the usefulness of transaction logs
US7111136B2 (en) * 2003-06-26 2006-09-19 Hitachi, Ltd. Method and apparatus for backup and recovery system using storage based journaling
US7398422B2 (en) * 2003-06-26 2008-07-08 Hitachi, Ltd. Method and apparatus for data recovery system using storage based journaling
US20050015416A1 (en) 2003-07-16 2005-01-20 Hitachi, Ltd. Method and apparatus for data recovery using storage based journaling
US20050022213A1 (en) * 2003-07-25 2005-01-27 Hitachi, Ltd. Method and apparatus for synchronizing applications for data recovery using storage based journaling
JP4124348B2 (ja) 2003-06-27 2008-07-23 株式会社日立製作所 記憶システム
JP4321705B2 (ja) * 2003-07-29 2009-08-26 株式会社日立製作所 スナップショットの取得を制御するための装置及び記憶システム
US7412581B2 (en) * 2003-10-28 2008-08-12 Renesas Technology America, Inc. Processor for virtual machines and method therefor
GB2425198B (en) 2003-11-13 2008-04-09 Commvault Systems Inc System and method for performing a snapshot
US7734578B2 (en) 2003-11-13 2010-06-08 Comm Vault Systems, Inc. System and method for performing integrated storage operations
US7281023B2 (en) * 2003-12-15 2007-10-09 At&T Knowledge Ventures, L.P. Architecture of database application with robust online recoverability
US7440966B2 (en) * 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
US7313720B1 (en) 2004-02-12 2007-12-25 Network Appliance, Inc. Technique for increasing the number of persistent consistency point images in a file system
US20050203903A1 (en) * 2004-03-10 2005-09-15 Rajan Rajeev B. System and method for locking and isolation in a storage platform
US7146386B2 (en) * 2004-03-29 2006-12-05 Microsoft Corporation System and method for a snapshot query during database recovery
US7213103B2 (en) * 2004-04-22 2007-05-01 Apple Inc. Accessing data storage systems without waiting for read errors
US8074030B1 (en) * 2004-07-20 2011-12-06 Oracle America, Inc. Using transactional memory with early release to implement non-blocking dynamic-sized data structure
US7703098B1 (en) 2004-07-20 2010-04-20 Sun Microsystems, Inc. Technique to allow a first transaction to wait on condition that affects its working set
US8090691B2 (en) 2004-08-13 2012-01-03 Computer Associates Think, Inc. System and method for variable block logging with log-ahead buffers
US7653665B1 (en) * 2004-09-13 2010-01-26 Microsoft Corporation Systems and methods for avoiding database anomalies when maintaining constraints and indexes in presence of snapshot isolation
US8959299B2 (en) 2004-11-15 2015-02-17 Commvault Systems, Inc. Using a snapshot as a data source
US7711709B2 (en) * 2004-12-27 2010-05-04 Siebel Systems, Inc. Efficient storing and querying of snapshot measures
US7440979B2 (en) * 2005-03-30 2008-10-21 Sap Ag Snapshots for instant backup in a database management system
DE102005027873A1 (de) * 2005-06-16 2006-12-28 Siemens Ag Verfahren zur Steigerung der Performanz bei einem so genannten Flash-Dateisystems
US8495015B2 (en) * 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US7809777B2 (en) * 2005-07-01 2010-10-05 Qnx Software Systems Gmbh & Co. Kg File system having deferred verification of data integrity
US7970803B2 (en) 2005-07-01 2011-06-28 Qnx Software Systems Gmbh & Co. Kg Optimized startup verification of file system integrity
US20070005874A1 (en) * 2005-07-01 2007-01-04 Dan Dodge File system storing transaction records in flash-like media
US8959125B2 (en) 2005-07-01 2015-02-17 226008 Ontario Inc. File system having inverted hierarchical structure
US7873683B2 (en) * 2005-07-01 2011-01-18 Qnx Software Systems Gmbh & Co. Kg File system having transaction record coalescing
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US7606975B1 (en) 2005-09-28 2009-10-20 Sun Microsystems, Inc. Trace cache for efficient self-modifying code processing
US8037285B1 (en) * 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7877630B1 (en) * 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US7651593B2 (en) 2005-12-19 2010-01-26 Commvault Systems, Inc. Systems and methods for performing data replication
US7636743B2 (en) 2005-12-19 2009-12-22 Commvault Systems, Inc. Pathname translation in a data replication system
CA2632935C (en) 2005-12-19 2014-02-04 Commvault Systems, Inc. Systems and methods for performing data replication
US7606844B2 (en) 2005-12-19 2009-10-20 Commvault Systems, Inc. System and method for performing replication copy storage operations
US7962709B2 (en) 2005-12-19 2011-06-14 Commvault Systems, Inc. Network redirector systems and methods for performing data replication
US8655850B2 (en) 2005-12-19 2014-02-18 Commvault Systems, Inc. Systems and methods for resynchronizing information
US7617262B2 (en) 2005-12-19 2009-11-10 Commvault Systems, Inc. Systems and methods for monitoring application data in a data replication system
US7797670B2 (en) * 2006-04-14 2010-09-14 Apple Inc. Mirrored file system
US8112396B2 (en) * 2006-06-07 2012-02-07 Emc Corporation Backup and recovery of integrated linked databases
US8726242B2 (en) * 2006-07-27 2014-05-13 Commvault Systems, Inc. Systems and methods for continuous data replication
US7953698B2 (en) * 2006-08-03 2011-05-31 Sybase, Inc. Replication system with methodology for replicating stored procedure calls
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US7908276B2 (en) 2006-08-25 2011-03-15 Qnx Software Systems Gmbh & Co. Kg Filesystem having a filename cache
US8566503B2 (en) 2006-08-25 2013-10-22 Qnx Software Systems Limited Multimedia filesystem having unified representation of content on diverse multimedia devices
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US20080154842A1 (en) * 2006-12-20 2008-06-26 International Business Machines Corporation Enhanced relational database management system and method
US7657769B2 (en) 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US8868504B2 (en) * 2007-03-07 2014-10-21 Oracle International Corporation Database system with active standby and nodes
US8290808B2 (en) 2007-03-09 2012-10-16 Commvault Systems, Inc. System and method for automating customer-validated statement of work for a data storage environment
US7702662B2 (en) * 2007-05-16 2010-04-20 International Business Machines Corporation Method and system for handling reallocated blocks in a file system
US7739547B2 (en) * 2007-06-07 2010-06-15 International Business Machines Corporation Failure recovery and error correction techniques for data loading in information warehouses
US8615496B2 (en) * 2007-10-19 2013-12-24 Apple Inc. File system reliability using journaling on a storage medium
CN101359301A (zh) * 2008-08-19 2009-02-04 成都市华为赛门铁克科技有限公司 一种自动快照的方法及设备
US9542431B2 (en) * 2008-10-24 2017-01-10 Microsoft Technology Licensing, Llc Cyclic commit transaction protocol
JP4886918B1 (ja) 2008-10-30 2012-02-29 インターナショナル・ビジネス・マシーンズ・コーポレーション フラッシュコピー・プロセスを処理する方法、ならびにそのためのシステム、およびコンピュータ・プログラム
US9495382B2 (en) 2008-12-10 2016-11-15 Commvault Systems, Inc. Systems and methods for performing discrete data replication
US8204859B2 (en) 2008-12-10 2012-06-19 Commvault Systems, Inc. Systems and methods for managing replicated database data
US8719767B2 (en) 2011-03-31 2014-05-06 Commvault Systems, Inc. Utilizing snapshots to provide builds to developer computing devices
US9092500B2 (en) 2009-09-03 2015-07-28 Commvault Systems, Inc. Utilizing snapshots for access to databases and other applications
US8595191B2 (en) 2009-12-31 2013-11-26 Commvault Systems, Inc. Systems and methods for performing data management operations using snapshots
CN101876949B (zh) * 2009-11-30 2012-04-25 威盛电子股份有限公司 数据储存系统与方法
US8793288B2 (en) * 2009-12-16 2014-07-29 Sap Ag Online access to database snapshots
WO2011082132A1 (en) 2009-12-31 2011-07-07 Commvault Systems, Inc. Systems and methods for analyzing snapshots
US10275347B2 (en) * 2010-03-08 2019-04-30 Excalibur Ip, Llc System, method and computer program product for managing caches
US8504517B2 (en) 2010-03-29 2013-08-06 Commvault Systems, Inc. Systems and methods for selective data replication
US8504515B2 (en) 2010-03-30 2013-08-06 Commvault Systems, Inc. Stubbing systems and methods in a data replication environment
US8725698B2 (en) 2010-03-30 2014-05-13 Commvault Systems, Inc. Stub file prioritization in a data replication system
US8352422B2 (en) 2010-03-30 2013-01-08 Commvault Systems, Inc. Data restore systems and methods in a replication environment
US8589347B2 (en) 2010-05-28 2013-11-19 Commvault Systems, Inc. Systems and methods for performing data replication
US8589361B2 (en) 2010-08-30 2013-11-19 Oracle International Corporation Reduced disk space standby
IL208641A0 (en) * 2010-10-12 2010-12-30 Eci Telecom Ltd Method for accelerating start up of a computerized system
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US9723074B2 (en) * 2011-11-15 2017-08-01 Alcatel Lucent Method and apparatus for in the middle primary backup replication
US9442948B2 (en) * 2011-06-15 2016-09-13 Sap Se Resource-specific control blocks for database cache
US8868492B2 (en) 2011-06-15 2014-10-21 Oracle International Corporation Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica
US9298715B2 (en) 2012-03-07 2016-03-29 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9471578B2 (en) 2012-03-07 2016-10-18 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9342537B2 (en) 2012-04-23 2016-05-17 Commvault Systems, Inc. Integrated snapshot interface for a data storage system
US10387331B2 (en) * 2012-06-05 2019-08-20 Vmware, Inc. Process for maintaining data write ordering through a cache
US20140201140A1 (en) 2013-01-11 2014-07-17 Commvault Systems, Inc. Data synchronization management
US9886346B2 (en) 2013-01-11 2018-02-06 Commvault Systems, Inc. Single snapshot for multiple agents
US10860557B2 (en) * 2013-03-13 2020-12-08 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing change value indication and historical value comparison
US10152500B2 (en) 2013-03-14 2018-12-11 Oracle International Corporation Read mostly instances
US9436561B2 (en) * 2013-03-28 2016-09-06 Microsoft Technology Licensing, Llc Recovery processing using torn write detection
US9110847B2 (en) 2013-06-24 2015-08-18 Sap Se N to M host system copy
US10311154B2 (en) 2013-09-21 2019-06-04 Oracle International Corporation Combined row and columnar storage for in-memory databases for OLTP and analytics workloads
US9740571B1 (en) * 2013-10-11 2017-08-22 EMC IP Holding Company LLC Intelligent continuous data protection snapshot based backups
US9767178B2 (en) 2013-10-30 2017-09-19 Oracle International Corporation Multi-instance redo apply
US9558080B2 (en) 2013-10-31 2017-01-31 Microsoft Technology Licensing, Llc Crash recovery using non-volatile memory
US10152247B2 (en) 2014-01-23 2018-12-11 Hewlett Packard Enterprise Development Lp Atomically committing write requests
US9639426B2 (en) 2014-01-24 2017-05-02 Commvault Systems, Inc. Single snapshot for multiple applications
US9753812B2 (en) 2014-01-24 2017-09-05 Commvault Systems, Inc. Generating mapping information for single snapshot for multiple applications
US9632874B2 (en) 2014-01-24 2017-04-25 Commvault Systems, Inc. Database application backup in single snapshot for multiple applications
US9495251B2 (en) 2014-01-24 2016-11-15 Commvault Systems, Inc. Snapshot readiness checking and reporting
US9774672B2 (en) 2014-09-03 2017-09-26 Commvault Systems, Inc. Consolidated processing of storage-array commands by a snapshot-control media agent
US10042716B2 (en) 2014-09-03 2018-08-07 Commvault Systems, Inc. Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent
US9648105B2 (en) 2014-11-14 2017-05-09 Commvault Systems, Inc. Unified snapshot storage management, using an enhanced storage manager and enhanced media agents
US9448731B2 (en) 2014-11-14 2016-09-20 Commvault Systems, Inc. Unified snapshot storage management
US9619506B2 (en) * 2014-11-25 2017-04-11 Sap Se Method and system to avoid deadlocks during a log recovery
US11100083B2 (en) * 2015-01-29 2021-08-24 Hewlett Packard Enterprise Development Lp Read only bufferpool
US10311150B2 (en) 2015-04-10 2019-06-04 Commvault Systems, Inc. Using a Unix-based file system to manage and serve clones to windows-based computing clients
WO2017012667A1 (en) 2015-07-22 2017-01-26 Huawei Technologies Co., Ltd. Hardware transactional memory in non volatile memory with log and no lock
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
US10747752B2 (en) 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US10503753B2 (en) 2016-03-10 2019-12-10 Commvault Systems, Inc. Snapshot replication operations based on incremental block change tracking
WO2017188484A1 (ko) * 2016-04-29 2017-11-02 주식회사 울프슨랩 메모리 관리 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체
US10698771B2 (en) 2016-09-15 2020-06-30 Oracle International Corporation Zero-data-loss with asynchronous redo shipping to a standby database
US10891291B2 (en) 2016-10-31 2021-01-12 Oracle International Corporation Facilitating operations on pluggable databases using separate logical timestamp services
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US10831775B2 (en) * 2017-01-06 2020-11-10 International Business Machines Corporation Efficient representation, access and modification of variable length objects
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10691722B2 (en) 2017-05-31 2020-06-23 Oracle International Corporation Consistent query execution for big data analytics in a hybrid database
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US11675761B2 (en) 2017-09-30 2023-06-13 Oracle International Corporation Performing in-memory columnar analytic queries on externally resident data
US10732885B2 (en) 2018-02-14 2020-08-04 Commvault Systems, Inc. Block-level live browsing and private writable snapshots using an ISCSI server
US11170002B2 (en) 2018-10-19 2021-11-09 Oracle International Corporation Integrating Kafka data-in-motion with data-at-rest tables
US11042318B2 (en) 2019-07-29 2021-06-22 Commvault Systems, Inc. Block-level data replication
US11809285B2 (en) 2022-02-09 2023-11-07 Commvault Systems, Inc. Protecting a management database of a data storage management system to meet a recovery point objective (RPO)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4507751A (en) * 1982-06-21 1985-03-26 International Business Machines Corporation Method and apparatus for logging journal data using a log write ahead data set
US4752910A (en) * 1984-10-30 1988-06-21 Prime Computer, Inc. Method and apparatus for continuous after-imaging
JPS63133240A (ja) * 1986-11-25 1988-06-06 Hitachi Ltd 常駐テ−ブルの内容保証方式
JPS63307551A (ja) * 1987-06-08 1988-12-15 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 先書きロギング型のトランザクシヨン向けシステム中のロールバツク方法
JPH01113836A (ja) * 1987-10-28 1989-05-02 Hitachi Ltd トランザクション処理方式
US4945474A (en) * 1988-04-08 1990-07-31 Internatinal Business Machines Corporation Method for restoring a database after I/O error employing write-ahead logging protocols
US4949251A (en) 1988-07-18 1990-08-14 Digital Equipment Corporation Exactly-once semantics in a TP queuing system
US5175849A (en) 1988-07-28 1992-12-29 Amdahl Corporation Capturing data of a database system
JPH033046A (ja) * 1989-05-31 1991-01-09 Hitachi Ltd ログ記録管理方式
JP2759499B2 (ja) * 1989-06-01 1998-05-28 キヤノン株式会社 粉体の粉砕方法
US5193162A (en) * 1989-11-06 1993-03-09 Unisys Corporation Cache memory with data compaction for use in the audit trail of a data processing system having record locking capabilities
US5201044A (en) * 1990-04-16 1993-04-06 International Business Machines Corporation Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory
US5287496A (en) 1991-02-25 1994-02-15 International Business Machines Corporation Dynamic, finite versioning for concurrent transaction and query processing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DE-Z: Hard and Soft 6, 1989, Nr. 3, S. 44-47 *

Also Published As

Publication number Publication date
DE4220198C2 (de) 1997-10-09
US5369757A (en) 1994-11-29
JP2679779B2 (ja) 1997-11-19
JPH05197598A (ja) 1993-08-06
GB9212530D0 (en) 1992-07-22
GB2256952A (en) 1992-12-23
GB2256952B (en) 1994-11-30

Similar Documents

Publication Publication Date Title
DE4220198C2 (de) Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem
DE60213867T2 (de) Vorrichtung zur verwaltung von datenreplikation
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
EP0163096B1 (de) Einrichtung zur Rettung eines Rechnerzustandes
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE112005002402B4 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE69816686T2 (de) Hochfrequenzabtastung von Leistungszählern
DE4435751B4 (de) Dateiname- und Verzeichnis- Erfassungsverfahren zur Verwendung mit einem Betriebssystem
US6651073B1 (en) Method and apparatus for insuring database data integrity without data recovery logging
DE4216871C2 (de) Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
US6567928B1 (en) Method and apparatus for efficiently recovering from a failure in a database that includes unlogged objects
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE60317815T2 (de) Verfahren und system zur bereitstellung einer dauerhaften speicherung von benutzerdaten
US6185699B1 (en) Method and apparatus providing system availability during DBMS restart recovery
US4498145A (en) Method for assuring atomicity of multi-row update operations in a database system
DE602004006404T2 (de) Flashback-datenbank
DE69836796T2 (de) Datenverarbeiter mit lokalisierter gedächtnisreklamierung
DE60019173T2 (de) Verfahren und system zum hochparallelen protokollierungs- und wiederherstellungsbetrieb in hauptspeicher-transaktionsverarbeitungssystemen
DE69831944T2 (de) Vorrichtung und verfahren zur sicherung eines plattenspeichersystem
DE4210126C2 (de) Verfahren zur dynamischen Dateierweiterung in einem Online-Datenbanksystem und Vorrichtung zur Durchführung des Verfahrens
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE60030872T2 (de) Verfahren und anordnung um atomische aktualisierungen durchzuführen durch verwendung eines logischen flaschspeichergerätes
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8127 New person/name/address of the applicant

Owner name: ORACLE CORP., REDWOOD SHORES, CALIF., US

D2 Grant after examination
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: ORACLE INTERNATIONAL CORP., REDWOOD SHORES, CALIF.

R071 Expiry of right
R071 Expiry of right