DE4220198A1 - Wiederherstellungsprotokollieren bei vorliegen von schnappschuss-dateien durch ordnen des pufferspeicherladens - Google Patents
Wiederherstellungsprotokollieren bei vorliegen von schnappschuss-dateien durch ordnen des pufferspeicherladensInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/87—Monitoring 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.
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.
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)
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)
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 |
-
1991
- 1991-06-18 US US07/717,212 patent/US5369757A/en not_active Expired - Lifetime
-
1992
- 1992-06-12 GB GB9212530A patent/GB2256952B/en not_active Expired - Lifetime
- 1992-06-18 JP JP4159414A patent/JP2679779B2/ja not_active Expired - Lifetime
- 1992-06-19 DE DE4220198A patent/DE4220198C2/de not_active Expired - Lifetime
Non-Patent Citations (1)
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 |