DE4216871A1 - Ausfuehrungsordnen zum sicherstellen der serienherstellbarkeit verteilter transaktionen - Google Patents
Ausfuehrungsordnen zum sicherstellen der serienherstellbarkeit verteilter transaktionenInfo
- Publication number
- DE4216871A1 DE4216871A1 DE4216871A DE4216871A DE4216871A1 DE 4216871 A1 DE4216871 A1 DE 4216871A1 DE 4216871 A DE4216871 A DE 4216871A DE 4216871 A DE4216871 A DE 4216871A DE 4216871 A1 DE4216871 A1 DE 4216871A1
- Authority
- DE
- Germany
- Prior art keywords
- transactions
- transaction
- execution
- order
- operations
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Description
Die vorliegende Erfindung betrifft ganz allgemein eine ver
teile Datenverarbeitung, und insbesondere ein Transaktions
verarbeitungssystem bzw. ein Dialogverarbeitungssystem,
in dem Komponentenoperationen in zugehörigen Transaktionen
so verteilt werden, daß zumindest eine Operation bzw. ein
Arbeitsablauf oder ein Befehl in einer zweiten Transaktion
durchgeführt wird, bevor eine erste Transaktion mit einer
in Konflikt stehenden Operation ausgeführt wird. Die vorlie
gende Erfindung betrifft insbesondere ein Verfahren und
eine Vorrichtung zur (Ablauf-) Planung der Durchführung
von in Konflikt stehenden Operationen gemäß verfügbaren
Systemelementen (resource) und zum Sicherstellen, daß die
Ergebnisse der in Konflikt stehenden Operationen in der
gleichen Reihenfolge wie die Reihenfolge der Durchführung
der in Konflikt stehenden Operationen ausgeführt werden.
Eine erwünschte Eigenschaft eines Datenverarbeitungssystems
besteht in der Fähigkeit des Systems, daß es sich von einem
teilweisen Systemausfall, der Speicherschreiboperationen
unterbricht, wieder erholt. Wenn ein Anwendungsprogramm
gerade eine Speicherschreiboperation zum Zeitpunkt eines
Systemausfalls oder -fehlers ausführt, ist es sehr wahr
scheinlich, daß der Speichereintrag fehlerhaft wird. Um
das Wiedererlangen bzw. Wiederauffinden von Speichereinträ
gen nach einem teilweisen Systemausfall zu ermöglichen,
ist es für ein Anwendungsprogramm notwendig, Sicherungsko
pien (backup copies) der Einträge in einem nicht flüchtigen
Speicher abzuspeichern und zu halten. Wenn das Datenverar
beitungssystem wieder gestartet wird, werden die Speicher
einträge, die wiedergeholt werden sollen, durch die Sicher
heitskopien ersetzt.
Um das Erstellen von Sicherheitskopien und das Heilen von
Speichereinträgen bzw. das Wiedererlangen (recovery) von
Speichereinträgen zu ermöglichen und zu erleichtern, stellt
das Betriebssystem typischerweise einen eingerichteten Satz
von Speichermanagementprozeduren zur Verfügung, die von
einem Anwendungsprogramm aufgerufen werden können, um eine
"Wiederherstellungseinheit" zu definieren. Die Wiederher
stellungseinheit (recovery unit) besteht aus Programmanwei
sungen (program statements) zwischen einer "Start"-Anwei
sung und einer "Ausführ"-Anweisung (commit statement). Alle
Anweisungen in der "Wiederherstellungseinheit" müssen abge
schlossen sein, bevor die Speichereinträge, die durch die
Anweisungen in der Wiederherstellungseinheit modifiziert
werden, für eine nachfolgende Verarbeitung verfügbar ge
macht werden. Die "Start"-Anweisung entspricht der Erstel
lung einer Sicherungskopie in einem nicht flüchtigen Spei
cher und die "Ausführ"-Anweisung entspricht dem Schalten
der Sicherungskopie mit einer modifizierten Version bzw.
dem Ersetzen der Sicherungskopie durch eine modifizierte
Version. Die Anweisungen in der "Wiederherstellungseinheit"
spezifizieren Operationen in einer einzelnen "Transaktion".
Beim Zurückkehren von einem teilweisen Systemfehler wird
die Überprüfung des nicht flüchtigen Speichers (nonvolati
le memory) aufdecken bzw. zeigen, daß die Operationen in
der einzelnen "Transaktion" entweder alle abgeschlossen
sind oder keine von ihnen abgeschlossen ist.
In einem verteilten Datenverarbeitungssystem können die
Operationen in einer einzelnen Transaktion Dateien in unter
schiedlichen Datenbanken modifizieren und auf die Dateien
können andere Prozesse zugreifen. Während des Betriebs der
Transaktion können die Dateien inkonsistent bzw. unstimmig
oder auch widersprüchlich für eine Zeit sein, obwohl die
Dateien nach der Beendigung der Transaktion konsistent sein
werden. Ein typisches Beispiel ist der Transfer von Geldern
von einem Konto auf ein anderes, bei dem ein erstes Konto
belastet wird, und kurz darauf ein anderes Konto kreditiert
wird. Während der Zwischenzeit sind die beiden Konten inkon
sistent, da die Summe der beiden Konten nicht die Gesamtgel
der der beiden Konten wiedergibt. Wegen der Inkonsistenz,
wenn Dateien durch eine Transaktion modifiziert werden, ist
es bekannt, anderen Prozessen zu verbieten, auf die Dateien
zuzugreifen, bis die Modifikation abgeschlossen ist. Die
Wiederherstellbarkeit kann in diesem Beispiel durch Aus
führen einer Überweisung für beide Dateien zum gleichen
Zeitpunkt und gleichen Ort sichergestellt werden. Durch
z. B. das Ändern eines einzelnen Zeichens (flag) können die
Sicherungskopien jeder Datei durch die modifizierten Versio
nen der Dateien zum gleichen Zeitpunkt ersetzt werden. Bei
vielen Anwendungen ist es jedoch wünschenswert, die Opera
tionen bzw. Befehle bzw. Arbeitsabläufe einer Transaktion
auf eine Vielzahl von Prozessoren oder Prozessen in einem
Datenverarbeitungssystem zu verteilen und die Transaktion
durch Ausführen der Operationen in jedem Prozeß oder Pro
zessor auszuführen, wobei eine gewisse Variabilität zwi
schen den Ausführungszeitpunkten zugelassen wird. Bei die
sen Anwendungen wird ein "Kernausführungsprotokoll" (atomic
commitment protocol) typischerweise dazu verwendet, die
Wiederherstellbarkeit sicherzustellen. Das Protokoll erfor
dert den Austausch von Informationen über den Zustand der
Transaktion zwischen den Prozessoren oder Prozessen. Um die
Transaktion zu identifizieren, die ausgeführt wird, wird
der Transaktion typischerweise eine individuelle bzw. ein
zigartige "Transaktionsidentifikationsnummer" (transaction
identification number) zugewiesen.
Ein weit verbreitet verwendetes Kernausführungsprotokoll
ist als "Zweiphasenausführungsprotokoll" (two-phase commit
protocol) bekannt. In einem etwas elementaren Beispiel für
dieses Protokoll wird einem Prozessor oder einem Prozeß
des Datenverarbeitungssystems die Rolle eines Koordinators,
der eine Transaktion initialisiert bzw. auslöst, zugewie
sen. Um eine Transaktion zu beginnen, sendet der Koordina
tor einen Vorbereitungsbefehl (prepare command) an alle
Prozessoren oder Prozesse, die an der Transaktion teilneh
men.
Mit dem Empfang des "Vorbereitungsbefehls" führt jeder Pro
zessor oder Prozeß, der an der Transaktion teilnimmt, eine
"Start"-Operation durch, indem er zuerst "Schreibsperren"
(write locks) für den Speicher, auf den durch die Transak
tion zugegriffen wird, plaziert, die Transaktionsidentifika
tionsnummer in den Dauerspeicher (permanent memory)
schreibt, um daran zu erinnern, daß er für die Transaktion
bereitsteht bzw. vorbereitet ist, und dann eine Bestätigung
bzw. Anerkennung zurück zu dem Koordinationsprozessor sen
det, aber noch nicht seinen Teil der Transaktion durch
führt. Der Koordinator wartet auf die Bestätigungen aller
Teilnehmer. Wenn der Koordinator Bestätigungen von allen
Teilnehmern erhält bzw. empfängt, schreibt der Koordinator
in den Permanentspeicher eine Liste der Teilnehmer und eine
Notiz, daß die Transaktion nunmehr abgeschlossen ist, wo
nach der Koordinator "Ausführ"-Befehle an alle Teilnehmer
sendet bzw. ausgibt. Der Koordinator kann jedoch eine Nach
richt von einem Teilnehmer empfangen, die anzeigt, daß er
sich nicht auf die Transaktion vorbereiten kann, oder es
kann fehlschlagen, daß der Koordinator Bestätigungen von
allen Teilnehmern nach einer vorgegebenen Zeitdauer em
pfängt, möglicherweise nachdem der Koordinator das "Vorbe
reitungs"-Kommando erneut abgesendet hat. In diesem Fall
gibt der Koordinator ein "Abbruch"-Kommando (abort command)
an alle Teilnehmer aus.
Mit dem Empfang des "Ausführung"-Befehls überprüft jeder
Teilnehmer seinen Dauerspeicher nach der Transaktionsidenti
fikationsnummer, um zu bestimmen, ob er sich auf die Trans
aktion vorbereitet hat, und, wenn er sich vorbereitet hat,
führt er seinen Teil der Transaktion durch, und führt dann
eine "Ausführung"-Operation ("COMMIT" operation) bzw. Einga
beoperation oder Übertragungsoperation durch, um den Zu
stand bzw. Status des Dauerspeichers zu aktualisieren und
die Transaktionsidentifikationsnummer (transaction ID) aus
dem Dauerspeicher in einen "Kern"-Schritt ("atomic" step)
zu löschen (clear) und löscht (erase) schließlich die
Schreibsperren (write locks). Dann sendet der Teilnehmer
eine Bestätigung zurück an den Koordinator. Wenn der Koordi
nator die Bestätigung von allen Teilnehmern erhalten hat,
löscht er die Liste der Teilnehmer aus dem Dauerspeicher
und die Transaktion ist abgeschlossen.
In vielen verteilten Datenverarbeitungssystemen ist es den
Prozessoren oder Prozessen gestattet, mehrere Transaktionen
gleichzeitig bzw. simultan durchzuführen. Im gewöhnlichen
Fall führt jeder Prozessor oder Prozeß Transaktionen durch,
die für den Prozessor oder den Prozeß lokal bzw. örtlich
(local) sind, und führt auch Abschnitte von globalen Trans
aktionen durch. Z. B. können in einem verteilten Datenbanksy
stem Abfragen und Aufbereitungen (edits) in der lokalen
Datenbank lokal auftreten und einige der Modifikationen
können global durchgeführt werden. Eine direkte Anwendung
des Zweiphasenausführungsprotokolls, das obenstehend be
schrieben wurde, kann in einem solchen System zufriedenstel
lenderweise durchgeführt werden, solange den globalen Trans
aktionen eine hohe Priorität gegenüber den lokalen Transak
tionen eingeräumt werden kann. Aber den Einsatz von
Schreib- und Lesesperren kann unnötigerweise lokale Transak
tionen einschränken, die gleichzeitig verarbeitet werden
könnten.
Eine zusätzliche Schwierigkeit und Komplexität werden einge
führt, wenn es erwünscht ist, globale Transaktionen gleich
zeitig in mehreren Prozessoren oder Prozessen eines verteil
ten Datenverarbeitungssystems bzw. Verarbeitungssystems
auszuführen. Es ist nicht praktisch, es einem Prozessor
oder einem Prozeß zu gestatten, ein globales Bild aller
Konflikte in allen Prozessoren oder Prozessen zu sehen bzw.
zu haben. Ohne ein globales Bild ist es jedoch schwierig
für einen Prozessor oder einen Prozeß sicherzustellen, daß
es eine Korrelation bzw. einen Zusammenhang zwischen seiner
Serieneinordnung (seriability order) und den Serieneinord
nungen der anderen Prozessoren oder Prozesse gibt. Das Zeit
markieren (time stamping) von Transaktionsnachfragen (trans
action requests) und von Datenaktualisierungen (data up
dates) ist ein Verfahren, das verwendet worden ist, um die
sem Problem der Gleichzeitigkeitssteuerung und -kontrol
le zu begegnen. Im allgemeinen ist eine Gleichzeitigkeits
steuerung in einem verteilten Datenverarbeitungssystem auf
Kosten einer beschränkten Autonomie der lokalen Prozessoren
und Prozesse oder durch Sperren (locking) erreicht worden.
Dem Problem des globalen Systemstillstands bzw. der globa
len Blockierung (global deadlock) muß auch begegnet werden,
wann immer globale Transaktionen gleichzeitig durchgeführt
werden sollen. Eine bekannte Lösung dafür besteht darin,
einen globalen Transaktionsmanager vorzusehen, der entschei
det, ob gleichzeitige globale Transaktionsnachfragen (glo
bal transaction request) gesendet werden oder nicht. Ein
Beispiel dafür wird in Y. Breitbart usw., "Reliable Transac
tion Management in a Multidatabase System", Proc. of the
ACM SIGMOD conf. on Management of Data, Atlantic City, New
Jersey, June 1990, Seiten 215-224 beschrieben. Der globale
Planer (global scheduler) verfolgt globale Transaktionsnach
fragen nach lokalen Sperrungen von Datenbeständen, indem er
einen globalen Sperrmechanismus verwendet. Jedes globale
Datenfeld (data item) hat eine globale Sperre, die ihm
zugeordnet ist. Eine globale Transaktion, die nur ein Daten
feld zu lesen braucht, fragt nach einer globalen Lesesper
re. Sperren stehen in Konflikt zueinander, wenn sie von
zwei unterschiedlichen Transaktionen bezüglich des gleichen
Datenfelds nachgefragt werden und zumindest eine der nachge
fragten Sperren eine Schreibsperre ist. Wenn zwei globale
Transaktionen in Konflikt stehende bzw. unverträgliche bzw.
unzulässige bzw. widersprüchliche (conflicting) globale
Sperren nachfragen, sorgt der Planer dafür, daß eine der
Transaktionen nicht durchgeführt bzw. verarbeitet wird,
da er weiß, daß die beiden Tansaktionen einen Konflikt
auf der lokalen Seite verursachen würden. Der Planer verwen
det ein strenges Zwei-Phasen-Sperren (two-phase locking)
zum Zuweisen globaler Sperren zu globalen Transaktionen und
unterhält einen globalen "Wartegraphen" (wait for graph).
Der globale Wartegraph ist ein gerichteter Graph G=(V, E),
dessen Satz aus Punkten (vertices) V ein Satz aus globalen
Transaktionen ist, wobei eine Kante (edge) Ti→Tj zu E
gehört, wenn und nur wenn die globale Transaktion Ti auf
eine globale Sperre wartet, die einer globalen Transaktion
Tj zugewiesen wird. Wenn eine globale Transaktion auf eine
globale Sperre wartet, dann wird der Transaktionszustand
"blockiert" und die Transaktion ist im "globalen Wartegra
phen" enthalten. Die Transaktion wird nur dann wieder ak
tiv, nachdem sie globale Sperren erhalten kann, auf die sie
gewartet hat. Um einen globalen Stillstand oder eine globa
le Blockierung zu verhindern, wird der "globale Wartegraph"
immer azyklisch erstellt. Um eine Datenkonsistenz beim Vor
kommen von Ausfällen und Fehlern sicherzustellen, verwen
det der Planer ebenfalls einen "Ausführungsgraphen" (commit
graph) und einen "Warte-auf-Ausführungsgraphen" (wait-for-
commit-graph), um zu bestimmen, wann eine Ausführungsopera
tion geplant werden kann. Der Ausführungsgraph CG=<TS, E<
ist ein ungerichteter, zweigeteilter Graph (bipartite
graph), dessen Satz aus Knoten (nodes) TS aus einem Satz
globaler Transaktionen (Transaktionsknoten) und einem Satz
lokaler Plätze (Platzknoten) besteht. Die Kanten von E kön
nen nur Transaktionsknoten mit Platzknoten verbinden. Eine
Kante (Ti, Sj) ist in E, wenn und nur wenn die Transaktion
Ti an einem Platz (site) Sj ausgeführt wurde und die Ausfüh
rungsoperation für Ti für die Verarbeitung eingeplant wor
den ist. Nachdem die Ausführoperation für Ti abgeschlossen
worden ist, wird Ti von dem Ausführungsgraphen zusammen
mit allen Kanten die auf Ti treffen, entfernt. Eine globale
Datenbankkonsistenz wird erreicht bzw. sichergestellt, wenn
der Ausführungsgraph keine Schleifen enthält. Der Warte-auf-
Ausführungsgraph ist ein gerichteter Graph G=(V, E), des
sen Satz an Punkten V aus einem Satz globaler Transaktionen
besteht. Eine Kante Ti→Tj ist in E, wenn und nur wenn
Ti seine Ausführung (execution) abgeschlossen hat, aber
seine Ausführungsoperation (commit operation) noch anhängig
ist, und Tj ist eine Transaktion, deren Ausführungsopera
tion abgeschlossen oder abgebrochen werden sollte, bevor
die Ausführung von Ti geplant werden kann. Der Planer ver
wendet den nachfolgenden Algorithmus zum Aufbauen des War
te-auf-Ausführungsgraphen und zum Planen einer Ausführungs
operation der Transaktion Ti:
- 1. Für jeden Platz Sk an dem Ti ausgeführt wird, addiere kurzfristig die Kante Ti→Sk zum Ausführungsgraphen hinzu.
- 2. Wenn der vergrößerte Ausführungsgraph keinen Zyklus enthält, dann wird die globale Ausführungsoperation zur Verarbeitung vorgelegt und die kurzzeitigen Kanten werden zu dauerhaften Kanten.
- 3. Wenn der vergrößerte Ausführungsgraph einen Zyklus
enthält, dann:
- a) werden die Kanten Ti→Ti1, . . . , Ti→Tim in den Warte-auf-Ausführungsgraphen eingefügt. Der Satz {Ti1, Ti2, . . . , Tim} besteht aus all den Trans aktionen, die in dem Zyklus auftreten, welcher als Ergebnis des Hinzuaddierens der neuen Kanten zu dem Ausführungsgraphen erzeugt worden ist.
- b) Entferne die temporären Kanten aus dem Ausfüh rungsgraphen.
Die Transaktion Ti muß jedoch nicht notwendigerweise auf
die Beendigung jeder Transaktion Tik warten, so daß Ti→Tik
wird. Sie kann für die Einplanung in einer Ausfüh
rungsoperation bereit sein, nachdem einige Transaktionen
Tik erfolgreich ausgeführt worden sind, so daß Ti→Ti1
(0<1<r) ist (und in einigen Fällen, reicht eine erfolgrei
che Ausführung von nur einer dieser Transaktionen aus, um
die Ausführung der Transaktion zu planen!).
Aufgabe der vorliegenden Erfindung ist es, die Serienverar
beitung unter verteilten Transaktionen in einem Verarbei
tungssystem sicherzustellen.
Diese Aufgabe wird durch das Verfahren nach Anspruch 1 bzw.
durch das digitale Computersystem zum Verarbeiten von Trans
aktionen nach Anspruch 16 gelöst.
Die vorliegende Erfindung garantiert eine serielle Verarbei
tung bzw. Serienherstellbarkeit (serializability) unter
verteilten Transaktionen in einem Datenverarbeitungssystem,
indem die Transaktionen selektiv ausgeführt und abgebrochen
werden, um eine Reihenfolge der Ausführung (oder of commit
ment) zu ermöglichen bzw. zu unterstützen, die die gleiche
ist, wie eine Reihenfolge der Durchführung von in Konflikt
stehenden Komponentenoperationen der Transaktionen. Wenn
die Transaktion ausgeführt wird, werden Ergebnisse der Kom
ponentenoperationen einem Zustandsspeicher eingegeben. Wenn
die Operation abgebrochen wird, werden die Ergebnissse der
Komponentenoperationen gelöscht. Z. B. steht eine erste Spei
cherzugriffsoperation in einer ersten Transaktion mit einer
zweiten Speicherzugriffsoperation in einer zweiten Transak
tion in Konflikt, wenn die zwei Speicherzugriffsoperationen
die gleiche Speicherstelle betreffen und zumindest eine
der Operationen eine Schreiboperation ist.
Bei einem typischen bekannten Transaktionsverarbeitungssy
stem kann eine zweite Transaktion nur Daten lesen, die von
einer ersten Transaktion geschrieben worden sind, nachdem
die zweite Transaktion ausgeführt worden ist. Diese Ein
schränkung ist eine ausreichende Bedingung dafür, eine Wie
derherstellung des Systems sicherzustellen. Um die vorlie
gende Erfindung in diesem Fall praktisch umzusetzen, wenn
eine zweite Transaktion eine Leseoperation durchführt, be
vor eine in Konflikt stehende Schreiboperation einer ersten
Transaktion ausgeführt wird, zu einem Zeitpunkt, wenn die
zweite Transaktion noch nicht ausgeführt worden ist, wird
die zweite Transaktion abgebrochen, um sicherzustellen,
daß die Reihenfolge, in der die Transaktionen ausgeführt
werden, nicht unterschiedlich zu der Reihenfolge ist, in
der die in Konflikt stehenden Operationen durchgeführt wer
den bzw. durchgeführt werden müssen.
Die vorliegende Erfindung erlaubt jedoch die Auslegung ei
nes Transaktionsverarbeitungssystems, in dem eine zweite
Transaktion Daten lesen kann, die von einer Schreibopera
tion einer ersten Transaktion geschrieben worden sind, be
vor die erste Transaktion ausgeführt wird. In diesem Fall,
und zwar in Abhängigkeit von der jeweiligen Reihenfolge,
in der die zwei in Konflikt stehenden Operationen auftre
ten, kann eine der beiden Transaktionen abgebrochen werden,
um sicherzustellen, daß die Reihenfolge der Ausführung der
Transaktionen die gleiche ist wie die Reihenfolge der Durch
führung der in Konflikt stehenden Operationen. Des weite
ren, und zwar um eine Wiederherstellbarkeit zu gewährlei
sten, sollten beide Transaktionen in dem Fall abgebrochen
werden, bei dem eine Leseoperation einer Schreiboperation
nachfolgt und die Leseoperation durchgeführt wird, bevor
die Schreiboperation abgebrochen wird. Im allgemeinen wird
in einem Transaktionsverarbeitungssystem, in dem eine zwei
te Transaktion Daten lesen kann, die von einer Schreibopera
tion einer ersten Transaktion geschrieben worden sind, die
Wiederherstellbarkeit durch einen Prozeß kaskadierender
Abbrüche (cascading aborts) unterstützt. Das Abbrechen ei
ner Transaktion erfordert das zusätzliche Abbrechen aller
anderen Transaktionen, die Daten gelesen haben, welche von
abgebrochenen Transaktionen geschrieben worden ist.
In Fällen, wo Speicheradressen oder Speicherzugriffsopera
tionen vor dem Erzeugen oder Vorbereiten der Transaktionen
bekannt sind, kann die erforderliche Ausführungsreihenfolge
vor der Vorbereitung der Transaktionen bestimmt werden.
Ansonsten werden Konflikte festgestellt, wenn die Speicher
adressen während des Vorbereitens der Transaktionen be
stimmt werden.
Die Ausführungsreihenfolge (commitment order) wird durch
Ausführen (commiting) einer ausgewählten Transaktion durchge
führt bzw. erzwungen, für die ein Ergebnis erzeugt worden
ist, und indem andere Transaktionen abgebrochen werden, für
die ein Ergebnis gerade erzeugt bzw. vorbereitet wird und
für die die Ausführung im Gegensatz zu der vorher definier
ten Ausführungsreihenfolge und der Ausführung der ausgewähl
ten Transaktionen steht. Z. B. wird die Transaktion, die
ausgeführt werden soll, ausgewählt, indem Prioritäten, die
den Transaktionen zugeordnet sind, verglichen werden, indem
ein Einreihen bzw. Einordnen der Transaktionen in eine Li
ste durchgeführt wird, indem eine Ausführungsnachfrage von
einem Koordinator gemacht wird oder indem eine Strategie
verwendet wird, um die Anzahl anderer Transaktionen zu mini
mieren, die als Ergebnis der Auswahl abgebrochen werden. In
einem Vielprozessorsystem, in dem ein globaler Koordinator
mit einer Vielzahl von Transaktionsprozessoren mittels "Vor
bereitungs" (prepare)- und "Ausführungs"-Befehlen kommuni
ziert, wird die Minimierungsstrategie bevorzugterweise dazu
verwendet, um die Bestätigung bzw. Anerkennung zu verzö
gern, daß eine Transaktion "vorbereitet" worden ist, bis
der "Abbruchsatz" (abort set) der Transaktion minimiert
worden ist.
Vorteilhafte Weiterbildung der vorliegenden Erfindung sind
den Unteransprüchen zu entnehmen.
Weitere Vorteile und Anwendungsmöglichkeiten der vorliegen
den Erfindung werden aus der nachfolgenden Beschreibung
bevorzugter Ausführungsformen in Verbindung mit den beilie
genden Zeichnungen deutlich. Es zeigt
Fig. 1 ein Blockdiagramm eines digitalen Computers, der
für eine Transaktionsverarbeitung ausgelegt ist;
Fig. 2A ein Flußdiagramm einer Prozedur zum Durchführen
einer Transaktionsverarbeitung in dem Computer der Fig. 1,
indem zwischen zwei Zustandsspeicherbanken geschaltet
wird;
Fig. 2B eine alternative Prozedur zum Betreiben des Digi
talcomputers der Fig. 1 für Transaktionsverarbeitung, indem
die Kopien von nur denjenigen Dateneinträgen des Zustands
speichers bewahrt bzw. geschützt werden, die durch eine
Transaktion modifiziert wurden;
Fig. 3A Verschiedene Planungsmöglichkeiten für in Konflikt
stehende Speicherzugriffsoperationen von verteilten Transak
tionen für den Fall, wo eine zweite Transaktion die Schreib
daten einer ersten Transaktion nur lesen kann, nachdem die
erste Transaktion ausgeführt worden ist;
Fig. 3B verschiedene Planungsmöglichkeiten für in Konflikt
stehende Speicherzugriffsoperationen verteilter Transaktio
nen für den Fall, wo eine zweite Transaktion die Schreibda
ten einer ersten Transaktion lesen kann, bevor die erste
Transaktion ausgeführt wird;
Fig. 4A einen digitalen Computer, der in Übereinstimmung
mit einer bevorzugten Ausführungsform der vorliegenden Er
findung konfiguriert ist, um eine Ausführungsreihenfolge
zu bewirken, in der verteilte Transaktionen in der Reihen
folge, in der in Konflikt stehende Komponentenoperationen
durchgeführt werden, ausgeführt werden;
Fig. 4B ein verteiltes Datenverarbeitungssystem, das eine
Vielzahl von digitalen Computern gemäß Fig. 4A enthält;
Fig. 5 eine Planungsprozedur, die von einer Transaktions
planungskomponente des digitalen Computers nach Fig. 4A
verwendet wird.
Fig. 6 eine Organisation einer Transaktionsliste und zuge
höriger Zeiger (pointer), die von dem Transaktionsplaner
(transaction scheduler) zum Planen der Durchführung von
Komponentenoperationen verteilter Transaktionen verwendet
werden;
Fig. 7 ein schematisches Diagramm, das einer Datenstruktur
entsprechend eines Graphen der Ausführungsreihenfolge zwi
schen verteilten Transaktionen mit in Konflikt stehenden
Komponentenoperationen entspricht;
Fig. 8 ein Pictogramm des Graphen, der den Daten, die in
der Datenstruktur nach Fig. 7 gespeichert sind, entspricht;
Fig. 9 ein Flußdiagramm einer Prozedur, die sich auf die
Datenstruktur nach Fig. 7 bezieht, um die Ausführungsreihen
folge zu bewirken;
Fig. 10 ein Flußdiagramm einer Prozedur zum Auswählen einer
Transaktion, die ausgeführt werden soll;
Fig. 11 eine Prozedur zum Detektieren einer in Konflikt
stehenden Speicherzugriffsoperation während der Vorberei
tung einer Transaktion;
Fig. 12 einen modifizierten Graphen, in dem Schreib/Lese-
Konflikte von anderen Konflikten unterschieden sind;
Fig. 13 ein Flußdiagramm einer rekursiven Prozedur zum Si
cherstellen einer Wiederherstellung beim Durchführen kaska
dierender Abbrüche;
Fig. 14 ein Zustandsdiagramm eines digitalen Computers nach
Fig. 4A, wenn der digitale Computer in einem Vielprozessor
system der Fig. 4B zum Verarbeiten von lokaler und globalen
Transaktionen verwendet wird;
Fig. 15 ein Flußdiagramm von Ausführungsplanungsprozeduren,
die globale Transaktionen auf unterschiedliche Art und Wei
se wie lokale Transaktionen behandeln;
Fig. 16 ein Flußdiagramm einer Prozedur zum Ausführen und
Unterbrechen von Transaktionen in Antwort auf Signale von
einem Koordinator einer globalen Transaktion;
Fig. 17 ein Blockdiagramm, das einen Ausführungsreihenfolge-
Koordinator zeigt, der die vorliegende Erfindung verwendet,
welche in einem herkömmlichen Transaktionsverarbeitungssy
stem zwischen einem Transaktionsmanager und einem Systemele
mentmanager verwendet wird; und
Fig. 18 ein Zustandsdiagramm eines Transaktionsverarbei
tungssystems der Fig. 17
In Fig. 1 wird ein Blockdiagramm gezeigt, das einen digita
len Computer 20 zeigt, der für eine Transaktionsverarbei
tung ausgelegt ist. Der Computer 20 enthält eine zentrale
Verarbeitungseinheit 21 zum Ausführen programmierter Befeh
le; einen flüchtigen Speicher mit wahlfreiem Zugriff 22
(random access memory) zum Halten und Speichern von Instruk
tionen oder Daten; einen nichtflüchtigen Speicher 23 wie
z. B. ein Festplattenlaufwerk, eine Eingangs/Ausgangs-Ein
heit 24 und eine Echtzeituhr 25. Der nichtflüchtige Spei
cher 23 enthält einen Programmspeicher 26, in dem Programme
gespeichert sind und einen Zwischenspeicherbereich 27
(scratch memory area) zum Speichern von Dateneinträgen (da
ta records).
Typischerweise führt der Digitalcomputer 20 Programme aus,
die von einem Programmspeicher 26 zu dem flüchtigen Spei
cher mit wahlfreiem Zugriff 22 transferiert worden sind.
Während der Ausführung eines Programms ist es oft notwen
dig, eine Menge von Daten zu bearbeiten, die die Kapazität
des flüchtigen Ramspeichers 22 übersteigt. In diesem Fall
werden Dateneinträge abwechselnd gespeichert und aus dem
Zwischenspeicherbereich 27 bzw. Kellerspeicher oder Daten
puffer wiederholt.
Ein allgemeines Problem, das bei Digitalcomputern 20 auf
tritt, ist die Wahrscheinlichkeit, daß die Ausführung von
Befehlen durch die zentrale Verarbeitungseinheit (central
processing unit) wegen eines Hardwareausfalls oder -feh
lers, eines Softwarefehlers oder eines Ausfalls der Span
nungsversorgung gestört bzw. unterbrochen wird. Z. B. würde
ein Ausfall der Spannungsversorgung das Verschwinden von
Daten und Programmen verursachen, die in dem flüchtigen
Ramspeicher gespeichert sind. Das Problem des Verlustes
von Daten in dem flüchtigen Ramspeicher 22 aufgrund eines
Ausfalls der Spannungsversorung kann gelöst werden, indem
die Sicherungskopien der Daten in den nicht flüchtigen Spei
cher 23 gespeichert werden. Die Sicherungskopien (back-up
copies) müssen jedoch auf eine Art und Weise gemacht wer
den, die die Möglichkeit eines Ausfalls während einer
Schreiboperation bezüglich des nichtflüchtigen Speichers 23
berücksichtigt. In diesem Fall könnte der Dateneingang, der
durch die Schreiboperation bewerkstelligt worden ist, ver
fälscht worden sein und muß deshalb gelöscht werden.
Zur Lösung des Problems eines möglichen Ausfalls oder Feh
lers bei dem Beschreiben eines nichtflüchtigen Speichers
ist ein Prorammierverfahren entwickelt worden, das als
"Transaktionsverarbeitung" (transaction processing) bezeich
net wird und das sicherstellt, daß ein Abschnitt des nicht
flüchtigen Speichers (der nachfolgend als "Zustandsspei
cher" (state memory) bezeichnet wird) entweder durch eine
Transaktion nicht beeinflußt wird oder geeigneterweise
durch die Ergebnisse einer Transaktion aktualisiert wird,
wenn Ausfälle oder Fehler vorliegen. Eine Transaktionsverar
beitung basiert auf der Technik des Erstellens einer Siche
rungskopie des Zustandsspeichers bevor die Ergebnisse der
Transaktion in den Zustandsspeicher geschrieben werden,
aber auch auf der Technik des Schreibens eines Hinweises in
den nichtflüchtigen Speicher für entweder eine erste Verar
beitungsphase, in der die Sicherungskopie erstellt wird,
oder für eine zweite Verarbeitungsphase, in der die Ergeb
nisse der Transaktion in den Zustandsspeicher geschrieben
werden, um anzuzeigen, welche Kopie während eines Ausfalls
oder Fehlers möglicherweise verfälscht worden ist. Zum Er
stellen einer Sicherungskopie des Zustandsspeichers enthält
der nichtflüchtige Speicher 23 z. B. zweii Zustandsspeicher
banken 28 und 29. Um einen Hinweis dafür zu erzeugen, wel
che Zustandsspeicherbank möglicherweise durch einen Ausfall
verfälscht worden ist, enthält der nichtflüchtige Speicher
23 eine Speicherstelle 30 zum Speichern eines Kennzeichens
oder Zeichens (switch or flag).
Bei der Rückkehr von einem Ausfall ist es wünschenswert,
die Transaktion zu wissen, die zuletzt von der zentralen
Verarbeitungseinheit 21 durchgeführt worden ist, so daß
die Verarbeitung am Punkt der Unterbrechung wieder aufgenom
men werden kann, ohne daß eine Transaktion wiederholt oder
übersprungen wird. Für diesen Zweck wird immer dann, wenn
der Zustandsspeicher in einer der Speicherbanken 28 oder
29 aktualisiert wird, ein Transaktionsidentifikationscode
31, 32 in den Zustandsspeicher zusammen mit den Zeitpunkten
33, 34 eingeschrieben, zu denen die Ergebnisse der Transak
tion zuerst in den Zustandsspeicher eingeschrieben bzw.
übergeben (d. h. eingegeben bzw. ausgeführt (committed))
wurden.
In Fig. 2A wird ein Flußdiagramm einer Prozedur zum Gewähr
leisten dargestellt, daß, wenn nach einem Ausfall weiterge
arbeitet wird, der Zustandsspeicher des Computers 20 nach
Fig. 1 entweder von einer Transaktion unbeeinflußt worden
ist oder durch das Ergebnis der Transaktion in geeigneter
Weise aktualisiert wird. Man nehme z. B. an, daß das Compu
tersystem nach einem Ausfall der Spannungsversorgung wieder
eingeschaltet wird. In einem ersten Schritt 51 liest die
zentrale Verarbeitungseinheit (CPU) 21 den Wert des Kennzei
chens 30, das in dem nichtflüchtigen Speicher 23 gespei
chert ist. Dieses Kennzeichen (switch) zeigt an, welche der
zwei Zustandsspeicherbanken 28, 29 möglicherweise durch den
Ausfall der Spannungsversorgung verfälscht worden ist. Beim
Schritt 52 bezieht sich die zentrale Verarbeitungseinheit
21 auf den Wert des Kennzeichens, um die Zustandsspeicher
bank zu lesen, von der bekannt ist, daß sie nicht ver
fälscht worden ist, und um eine "Arbeitskopie" (working
copy) der Daten in der anderen Zustandsspeicherbank zu ma
chen. Deshalb haben nach dem Schritt 52 beide Zustandsspei
cherbanken 28 und 29 den gleichen Inhalt. Des weiteren kann
der Transaktionsidentifizierer 31, 32 und die Ausführungs
zeit (commit time) 33, 34 überprüft werden, um die Stelle
in einem Programm der nächsten Transaktion, die bearbeitet
werden soll, zu finden.
Beim Schritt 53 wird diese Verarbeitung fortgesetzt, indem
die Daten in der Arbeitskopie des Zustandsspeichers modifi
ziert werden, indem die Ergebnisse der Transaktion, die
verarbeitet wird, geschrieben werden. Das Ende der Verarbei
tung der Transaktion wird beim Schritt 54 erreicht. Um die
Ergebnisse der Transaktion in den Zustandsspeicher zu über
tragen bzw. einzugeben, wird der Wert des Kennzeichens im
Schritt 55 geändert und beim Schritt 56 wird der geänderte
Wert des Kennzeichens in die Kennzeichenstelle 30 des
nichtflüchtigen Speichers geschrieben. Wenn das Kennzeichen
von der zentralen Verarbeitungseinheit 21 während der Rück
kehr von einem Ausfall gesehen wird, dann hat das Schreiben
des geänderten Werts des Kennzeichens in den nichtflüchti
gen Speicher den Effekt des Sicherstellens, daß das übertra
gene bzw. eingegebene Ergebnis der Transaktion entweder
keinen Effekt bezüglich des Zustandsspeichers hat oder in
geeigneter Weise den Zustandsspeicher aktualisiert, und
zwar abhängig davon, ob der Ausfall vor oder nach dem Ein
schreiben des Kennzeichenwertes in den nichtflüchtigen Spei
cher aufgetreten ist oder nicht. Da der Wert des Kennzei
chens 30 ein einzelnes Bit ist und das Kennzeichen 30 in
einem Eintrag gespeichert ist, der unterschiedlich zu den
Einträgen der Zustandsspeicherbanken ist, bleibt jeder Aus
fall, der während des Schreibens dieses einzelnen Bits auf
tritt, ohne Folge. In diesem Fall wird der Zustands
speicherbanken verfälscht bzw. beeinträchtigt, so daß der
Wert des Kennzeichens keine Rolle spielt.
Das Verfahren zum Übertragen des Ergebnisses einer Trans
aktion gemäß Fig. 2A ist ziemlich ineffizient, wenn das
Ergbenis einer Transaktion nur einen kleinen Abschnitt des
Zustandsspeichers modifiziert. In diesem Fall wird beim
Schritt 52 ziemlich viel Zeit für nicht notwendiges Kopie
ren von Dateneinträgen, die nicht modifiziert worden sind,
verbraucht. Dieses nicht notwendige Kopieren kann durch
die etwas komplexere Prozedur gemäß Fig. 2B unterbunden
werden.
Beim ersten Schritt 61 der Fig. 2B wird das Kennzeichen
aus dem nichtflüchtigen Speicher gelesen. Als nächstes über
prüft die zentrale Verarbeitungseinheit beim Schritt 62,
ob das Kennzeichen gesetzt ist. Wenn das der Fall ist, dann
ist ein Ausfall bzw. Fehler während der Verarbeitungsphase
aufgetreten, in der die Ergebnisse einer Transaktion in
den Zustandsspeicher eingegeben worden sind, wie weiter
unten beschrieben wird. Beim Schritt 63 werden deshalb Ein
träge, die in der Zustandsspeicherbank 29 aufbewahrt sind,
in die Zustandsspeicherbank 28 kopiert. Beim Schritt 64
wird dann das Kennzeichen im nichtflüchtigen Speicher ge
löscht.
Um dann eine Transaktion beim Schritt 65 zu verarbeiten,
werden Dateneinträge von der Zustandsspeicherbank 28 gele
sen und in den Zwischenspeicherbereich 27 übertragen. Dann
werden die Einträge des Zwischenspeichers gemäß den Ergeb
nissen der Transaktion modifiziert. Wenn die Transaktion
abgeschlossen ist, was beim Schritt 67 festgestellt wird,
werden beim Schritt 68 die originalen Daten der Einträge,
die modifiziert werden sollen, von der Zustandsspeicherbank
28 in die Zustandsspeicherbank 29 kopiert. Dann wird beim
Schritt 69 das Kennzeichen im nichtflüchtigen Speicher ge
setzt. Beim Schritt 70 werden dann die Ergebnisse der Trans
aktion übertragen (comitted), indem die modifizierten Daten
in die Zustandsspeicherbank 28 eingeschrieben werden.
Schließlich wird beim Schritt 64 das Kennzeichen im nicht
flüchtigen Speicher gelöscht (cleared). Die Verarbeitung
der nächsten Transaktion beginnt im Schritt 65.
Wie oben mit Bezug auf die Fig. 2A oder Fig. 2B beschrieben
wurde, wird angenommen, daß die Transaktionen in einer Se
quenz durch die zentrale Verarbeitungseinheit 21 des Compu
ters 20 nach Fig. 1 abgearbeitet bzw. verarbeitet werden.
Die vorliegende Erfindung erlaubt es jedoch, daß die Verar
beitung der Transaktionen so verteilt wird, daß die Ergeb
nisse für eine zweite Transaktion vorbereitet bzw. erzeugt
werden können, bevor die Ergebnisse der ersten Transaktion
übertragen werden. Wie nachfolgend mit Bezug auf Fig. 5
beschrieben wird, gestattet die vorliegende Erfindung die
Verwendung eines Transaktionsplaners, der ein Echtzeitbe
triebssystem oder einen Planer umfaßt, um die zentrale Ver
arbeitungseinheit während der Zeit effektiver auszunutzen
bzw. zu beschäftigen, während der sie ansonsten auf die
Beendigung von Eingabe/Ausgabe- oder Speicherzugriffsopera
tionen warten würde. Indem es erlaubt wird, daß eine zweite
Transaktion Komponentenoperationen durchführt, bevor eine
erste Transaktion ihre Ergebnisse übertragen bzw. eingege
ben (committed) hat, wird jedoch das Problem der Inkonsi
stenz eingeführt, bis das Planen der Operationen und die
Ausführung bzw. Übertragung der Transaktionen mit einer
bestimmten Durchführungsreihenfolge übereinstimmt. Insbeson
dere sollten die Transaktionen in der gleichen Reihenfolge
ausgeführt werden, wie die Reihenfolge, in der die zugehöri
gen in Konflikt stehenden (d. h. nicht umgewandelten
(non-commuting)) Operationen durchgeführt werden.
Wenn das Planen der Komponentenoperationen und die Ausfüh
rung der Transaktionen diese Eigenschaft der "Ausführungs
reihenfolge" (commitment ordering) haben, kann auch gezeigt
werden, daß in einem verteilten Verarbeitungssystem (wie
es weiter unten in Verbindung mit der Fig. 4B beschrieben
wird) eine globale Serienverarbeitung gewährleistet wird,
wenn nur "Kernübertragung" (atomic comitment) eingesetzt
wird, um die verschiedenen Prozessoren des Systems zu koor
dinieren. Dies wird durch eine ziemlich aufwendige mathema
tische Überprüfung belegt, welche an die vorliegende Be
schreibung angehängt ist (vergleiche Anhang I). Von einem
praktischen Gesichtspunkt bzw. Standpunkt aus bedeutet die
ses Ergebnis, daß die Vorteile der vorliegenden Erfindung
auf ein herkömmliches verteiltes Transaktionsverarbeitungs
system angewendet werden können, indem jeder Transaktions
prozessor oder Knoten des Systems ohne Modifikation des
globalen Planers oder des Protokolls für das Verteilen glo
baler Transaktionen durch das System modifiziert wird.
Ein herkömmliches Transaktionsverarbeitungssystem stellt
sicher, daß eine zweite Transaktion die Schreibdaten einer
ersten Transaktion nur lesen kann, nachdem die erste Trans
aktion ausgeführt worden ist. Dies ist eine ausreichende
aber nicht notwendige Bedingung dafür, eine Wiederher
herstellung sicherzustellen. Bei einer ersten Ausführungs
form der vorliegenden Erfindung kann diese Bedingung bzw.
dieser Zustand auch beibehalten werden, um die erforder
liche Größe des nichtflüchtigen Speichers zu minimieren
und das zu vermeiden, was als "kaskadierende Abbrüche" be
kannt ist, um eine Wiederherstellbarkeit zu erreichen. Bei
dieser ersten Ausführungsform werden Transaktionen im we
sentlichen verarbeitet, wie es in Fig. 2B gezeigt wird,
wobei die Leseoperationen Einträge aus der Zustandsspeicher
bank lesen und diese Einträge zum Zwischenspeicher trans
ferieren, wie es beim Schritt 65 der Fig. 2B gezeigt wird.
Die Schreiboperationen werden vorbereitet, indem die Einträ
ge des Speichers, wie beim Schritt 66 der Fig. 2B gezeigt
wird, modifiziert werden, aber die Ergebnisse jeder Trans
aktion werden in separaten Einträgen des Zwischenspeichers
27 gehalten, auch dann, wenn die Schreiboperationen ver
schiedener Transaktionen die gleichen Einträge in dem Zu
standsspeicher betreffen. Der Grund dafür besteht darin,
daß der Effekt, den solche in Konflikt stehenden Schreibope
rationen auf den Zustandsspeicher haben, durch die Reihen
folge, in der die Transaktionen ausgeführt werden, festge
legt ist.
Fig. 3A zeigt drei unterschiedliche Möglichkeiten für die
Planung einer ersten Transaktion mit einer Schreiboperation
und einer zweiten Transaktion mit einer in Konflikt stehen
den Leseoperation. Im allgemeinen stehen zwei Operationen
miteinander in Konflikt, wenn sie Speicherzugriffsoperatio
nen sind, die auf die gleiche Stelle in dem Zustandsspei
cher zugreifen wollen, und wenn zumindest eine der Operatio
nen eine Schreiboperation ist. Aus einer Überprüfung folgt,
daß von den drei Planungsmöglichkeiten die Möglichkeit (b)
das Erfordernis der Übertragungsreihenfolge verletzt und
deshalb eine Inkonsistenz bezüglich des Zustands des Zu
standsspeichers verursachen kann. Wegen der Tatsache, daß
die Schreiboperation Wx nicht austauschbar mit der Leseope
ration Rx ist, kann das Ergebnis für die Transaktion T₂
für die Planungsmöglichkeit (b) unterschiedlich zu dem Er
gebnis für die Transaktion T₂ für die Planungsmöglichkeit
(a) sein. Um konsistente Ergebnisse zu erhalten, erlaubt
es die vorliegende Erfindung, daß in Konflikt stehende Ope
rationen von zwei Transaktionen in einer ausgewählten Rei
henfolge eingeplant werden können, um die Systemelemente,
die für die zentrale Verarbeitungseinheit erhältlich sind,
möglichst effizient zu nutzen. Sie stellt aber auch die
Konsistenz bzw. Verträglichkeit oder Widerspruchsfreiheit
sicher, indem sie ein Ausführungsreihenfolge festlegt,
die die gleiche ist, wie die Reihenfolge, in der die in
Konflikt stehenden Operationen durchgeführt werden. Inkon
sistente Planungsmöglichkeiten, wie z. B. die Möglichkeit
(b) in Fig. 3A, werden unterbunden, indem eine in Konflikt
stehende Transaktion abgebrochen wird, wenn eine ausgewähl
te Transaktion ausgeführt wird, oder indem die Ausführung
einer ausgewählten Transaktion solange verzögert wird, bis
die in Konflikt stehende Transaktion ausgeführt worden ist.
In dem Beispiel nach Fig. 3A kann man z. B. annehmen, daß
die erste geplante Operation eine Leseoperation Rx der zwei
ten Transaktion T₂ ist, wie es in den Möglichkeiten (b)
und (c) gezeigt wird. Wenn die Transaktion T₂ vor der Trans
aktion T₁ ausgeführt wird, wie es in der Möglichkeit (c)
gezeigt ist, ergibt sich keine Inkonsistenz, da das Planen
in Übereinstimmung mit der Ausführungsreihenfolge ist. Wenn
jedoch die erste Transaktion T₁ vor der zweiten Transaktion
T₂ ausgeführt wird, wie es in der Möglichkeit (b) gezeigt
wird, muß die zweite Transaktion T₂ abgebrochen werden,
da ansonsten die Ausführung der zweiten Transaktion T₂ die
Ausführungsreihenfolge verletzen würde und zu inkonsisten
ten Ergebnissen führen könnte.
Die vorliegende Erfindung ermöglicht weiterhin die Planung
von Operationen so, daß eine zweite Transaktion T₂, die
Schreibdaten einer ersten Transaktion T₁ lesen kann, bevor
die erste Transaktion T₁ ausgeführt wird. In diesem Fall
kann die Wiederherstellbarkeit durch einen Prozeß von kaska
dierenden Abbrüchen garantiert werden, wie es weiter unten
mit Bezug auf die Fig. 12 und 13 beschrieben wird. Für
den Fall einer ersten Transaktion T₁ mit einer Schreibopera
tion Wx und einer zweiten Transaktion T₂ mit einer in Kon
flikt stehenden Leseoperation Rx gibt es sechs Planungsmög
lichkeiten, die in der Fig. 3B als (a) bis (f) angegeben
sind. Zwei dieser Planungsmöglichkeiten können die Ausfüh
rungsreihenfolge (commitment ordering) verletzen und können
deshalb zu inkonsistenten Ergebnissen führen. Die vorliegen
de Erfindung verhindert das Auftreten dieser Planungsmög
lichkeiten, indem sie die Reihenfolge bestimmt in welcher
die in Konflikt stehenden Operationen durchgeführt werden,
und dann die Ausführung einer ausgewählten Transaktion ver
zögert oder eine in Konflikt stehende Operation, wenn not
wendig, abbricht, um eine Ausführungsreihenfolge zu erzwin
gen. Um der Leseoperation in der zweiten Transaktion zu
erlauben, die Schreibdaten einer Schreiboperation einer
ersten Transaktion zu lesen, behält der Digitalcomputer
20 der Fig. 1 z. B. eine Arbeitskopie des Zustandsspeichers
in dem Zwischenspeicherbereich 27. Immer dann, wenn eine
Schreiboperation durchgeführt wird, werden die Ergebnisse
der Schreiboperation in die Arbeitskopie des Zustandsspei
chers in den Zwischenspeicherbereich eingeschrieben und
separate Kopien der geschriebenen Einträge werden in dem
Zwischenspeicher in Verbindung mit jeder Transaktion gehal
ten. Wenn die Transaktion ausgeführt wird, werden nur dann
die Ergebnisse der Schreiboperation der Transaktion in den
Zustandsspeicher eingeschrieben. Bei der Ausführungsform
des Falls 2 bezieht sich die Leseoperation auf die Arbeits
kopie des Zustandsspeichers in dem Zwischenspeicher, und
nicht auf den Zustandsspeicher selbst, wie im Fall 1, so
daß im Fall 2 die Leseoperationen die eingeschriebenen Da
ten früherer Schreiboperationen lesen.
In Fig. 4A wird ein Blockdiagramm der Programmierung und
der Datenstrukturen gezeigt, die in dem digitalen Computer
20 der Fig. 1 für Planungstransaktionen und für das Erzwin
gen der Ausführungsreihenfolge verwendet werden. Um die
Ergebnisse der Transaktionen in den Zustandsspeicher 28,
29 zu übertragen und von Ausfällen bzw. Fehlern zurückzukeh
ren, ist der digitale Computer mit einem Systemelement-Mana
ger (RM) 81 versehen, der z. B. die Operationen, die in Fig. 2B
gezeigt werden, durchführt. Im allgemeinen ist ein Sy
stemelementmanager (RM) eine Softwarekomponente, die die
Zustandsspeicher-Systemelemente, welche durch übertragende
Transaktionen berührt werden, so betreibt, daß der Speicher
zustand der Systemelemente wiederhergestellt bzw. erneut
gespeichert werden kann, bevor die Transaktion übertragen
bzw. ausgeführt wird, indem alle Änderungen, die durch die
Transaktion eingeführt werden, effektiverweise unterdrückt
bzw. rückgängig bzw. gelöscht werden. Anders ausgedrückt,
der Systemelementmanager stellt sicher, daß die Transaktio
nen die Eigenschaft der "Kernigkeit" (atomicity) oder von
"alles oder nichts"-Semantik bezüglich ihrer Zustandsspei
cher-Systemelemente haben. Ein Systemelement ist typischer
weise aber nicht notwendigerweise ein Datenelement oder ein
Datenobjekt. Beispiele für Systemelementmanager (resource
manager) sind typischerweise in Datenbanksystemen (DSB′s=
data base systems) in Listenmanagern und Cache-Managern zu
finden.
Um die Komponentenoperationen der Transaktionen in der effi
zientesten Reihenfolge auf der Basis von verfügbaren Sy
stemelementen für den Computer zu planen, ist ein Transak
tionsplaner (TS=transaction scheduler) 82 vorgesehen.
Bevorzugterweise enthält der Transaktionsplaner 82 eine Art
von Echtzeitbetriebssystem, das eine Transaktionsliste (TL)
83 verwaltet und managed, wie es weiter unten mit Bezug
auf Fig. 5 beschrieben wird.
Bevorzugterweise wird das Vorhandensein von in Konflikt
stehenden Operationen in Echtzeit festgestellt, wenn die
Transaktionen durchgeführt werden, wie weiter unten mit
Bezug auf Fig. 11 beschrieben wird. In Übereinstimmung mit
der Ausführungsreihenfolge bestimmt die Reihenfolge, in
der in Konflikt stehende Operationen durchgeführt werden,
eine erforderliche Reihenfolge der Ausführung der Transaktionen,
und diese erforderliche Reihenfolge der Ausführung
wird in einem Seriengraphen (USG=undecided transactions
serializability graph) für nicht entschiedene Transaktionen
84 aufgezeichnet, der eine Datenstruktur im Speicher ist
und der weiter unten mit Bezug auf die Fig. 7 und 9 beschrieben
wird. Die "nichtentschiedenen Transaktionen" sind
die Transaktionen, die noch ausgeführt werden oder abgebrochen
werden. Um die Ausführungsreihenfolge festzulegen,
werden Transaktionen für die Ausführung ausgewählt und
Transaktionen werden selektiv abgebrochen durch einen Ausführungsreihenfolgen-
Koordinator (COCO=committment order
coordinator) 85, der weiter unten mit Bezug auf die Fig. 10
und 15 beschrieben wird.
Die vorliegende Erfindung kann in Verarbeitungssystemen mit
Einzelprozessor eingesetzt werden, in denen eine Vielzahl
von Transaktionen gleichzeitig durchgeführt werden, indem
Komponentenoperationen geplant werden, oder kann in einem
Multiprozessorsystem eingesetzt werden, in dem Komponentenoperationen
der gleichen Transaktion gleichzeitig in unterschiedlichen
Prozessoren durchgeführt werden. Ein Vielprozessorsystem
90 wird in Fig. 4B erläutert. In diesem Fall
sind drei digitale Computer 91, 92, 93 über einen Kommunikationskanal
94 miteinander verbunden und die Kommunikation
wird durch die Transaktionsplaner (TS) 95, 96, 97 gesteuert.
In dem Multiprozessorsystem 90 kann jeder der Transaktionsplaner
95, 96, 97 die Rolle eines Koordinators annehmen
und globale Transaktionen an die anderen Transaktionsplaner
ausgeben. Diese globalen Transaktionen werden z. B.
gemäß dem bekannten Zwei-Phasenausführungsprotokoll koordiniert,
wie oben mit Bezug auf den Stand der Technik erläutert
worden ist und unten mit Bezug auf die Fig. 14, 15
und 16 weiter erläutert wird.
Die Transaktionsplaner können auch Zustandsinformationen
über den Kommunikationskanal 94 austauschen. Insbesondere
fallen die Transaktionsverarbeitungssysteme allgemein unter
zwei breite Kategorien, die als Datenbankmanagementsysteme
und objektorientierte Systeme bezeichnet werden, was davon
abhängt, ob die Zustandsspeicherinformationen resident in
den nichtflüchtigen Speicherdateien eines bestimmten der
digitalen Computer 91, 92, 93 abgespeichert ist oder nicht
oder ob die Zustandsinformationen mit vordefinierten Objekten
verbunden bzw. diesen zugeordnet sind, die von einem
Computer zum anderen weitergegeben werden. Die vorliegende
Erfindung ist jedoch in beiden Systemtypen anwendbar, da
die vorliegende Erfindung insbesondere das Planen von Komponentenoperationen
der Transaktionen und die Festlegung und
das Erzwingen einer Ausführungsreihenfolge betrifft, und
nicht besonders damit befaßt ist, wo der Zustandsspeicher
im verteilten Verarbeitungssystem physikalisch angesiedelt
oder aufrechterhalten wird.
Fig. 5 zeigt ein Flußdiagramm einer Prozedur, der ein Transaktionsplaner
für Echtzeitplanen von Komponentenoperationen
oder Transaktionen in Übereinstimmung mit erhältlichen Systemelementen
des digitalen Computers nachfolgt. Insbesondere
enthalten die Transaktionen Eingabe/Ausgabe und Speicherzugriffe
auf einen rotierenden Speicher wie z. B. Plattenlaufwerke
und möglicherweise mathematische Berechnungen,
die von einem Coprocessor durchgeführt werden. Ohne Echtzeitplanen
würde die zentrale Verarbeitungseinheit des digitalen
Computers eine relativ lange Wartezeit benötigen,
bis diese Operationen abgeschlossen sind, bevor sie die
Komponentenoperationen anderer Transaktionen durchführen
könnte.
Um die Systemelemente des digitalen Computers effektiver
verwenden zu können, kann eine Transaktion Eingabe/Ausgabe
und Speicherzugriffsnachfragen an die Eingabe/Ausgabe- und
Speichereinheiten des Computers absenden bzw. ausgeben und
dann ein Sperrzeichen (inhibit flag) setzen, das dem Planer
anzeigt, daß die Verarbeitung der gegenwärtigen Transaktion
gehemmt bzw. gesperrt werden soll, bis die Eingabe/Ausgabe-
oder Speicherzugriffsoperation abgeschlossen ist. Schließlich
führt die Transaktion einen Software-Interrupt für den
Transaktionsplaner aus, um dem Transaktionsplaner zu ermöglichen,
die Ausführung (execution) zu einer anderen Transaktion
zu transferieren. Wenn die nachgefragte Eingabe/Ausgabe-
oder Speicherzugriffsoperation abgeschlossen ist, gibt
die Eingabe/Ausgabe- oder Speichereinrichtung einen Abschluß-
Interrupt aus, der von einer Interrupt-Behandlungsroutine
verarbeitet wird, die das Sperrzeichen der Transaktion
zurücknimmt bzw. löscht, welche die Eingabe/Ausgabe-
oder Speicherzugriffsoperation nachgefragt hat. Die Beendigungsinterrupts
der Eingabe/Ausgabe- und Speicherzugriffe
und Bearbeitungsprogramme (device handlers) für solche Interrupts
sind bekannt.
Nachfolgend wird insbesondere auf den ersten Schritt 101
in Fig. 5 Bezug genommen, wobei der Transaktionsplaner auf
einen Interrupt durch Entfernen des Textes der unterbrochenen
Transaktion aus dem Prozessorstapelspeicher des digitalen
Computers und durch Unterbringen des Kontextes in einem
entsprechenden Textspeicher für die unterbrochene Transaktion
reagiert. Der Kontext enthält den Wert des Programmzählers,
der auf die unterbrochene Speicherstelle in dem Transaktionsprogramm
hinweist, und enthält auch den Kontext bzw.
Inhalt weiterer Register allgemeinen Zwecks des digitalen
Computers.
Der Transaktionsplaner kann auch während einer anfänglichen
Hochlaufphase (star-up) des digitalen Computers beim
Schritt 102 betreten werden. Beim Schritt 102 werden die
Transaktionsliste 83 und weitere Datenstrukturen, wie z. B.
der nichtentschiedene Seriengraph (USG) zurückgenommen und
Zeiger (pointers) werden initialisiert.
In den Transaktionsplaner kann auch am Ende der Vorbereitung
für eine Transaktion eingetreten werden. In diesem
Fall wird die Transaktion beim Schritt 103 markiert, um
anzuzeigen, daß sie fertig ist, ausgeführt zu werden. Außerdem
wird die gegenwärtige Zeit, die von der Echtzeituhr
(25 in Fig. 1) angezeigt wird, in einer Speicherstelle abgespeichert,
die der Transaktion zugeordnet ist, um die Zeit
anzugeben, bei der die Transaktion fertig war. Es wird darauf
hingewiesen, daß jedoch einige Programmteile (tasks)
die auf der Transaktionsliste plaziert sind, sogenannte
Hintergrundtasks mit niedriger Priorität sein können, die
niemals abgeschlossen werden und Rechnerzeit, die nach dem
Bedienen aller Transaktionen der Liste verbleibt, der zentralen
Verarbeitungseinrichtung benötigen.
In den Transaktionsplaner kann auch am Ende der Interrupt-
Routine für das Steuerprogramm (device handler) eingetreten
werden. Der Schritt 111 löscht z. B. das Sperrzeichen (I in
der Liste von Fig. 6) für die Transaktion, die die Eingabe/
Ausgabe- oder Speicheroperation nachgefragt hat, wonach
die Ausführung beim Schritt 101 damit fortfährt, die gegenwärtige
bzw. gerade laufende Transaktion zu unterbrechen,
um möglicherweise die Ausführung zu der Transaktion zurückzulenken,
die nach der Eingabe/Ausgabe- oder Speicheroperation
nachgefragt hat.
Der Transaktionsplaner führt drei Hauptaufgaben (major
tasks) durch: er antwortet auf Transaktionsnachfragen durch
Plazieren der Transaktionen auf der Transaktionsliste; er
löste die Ausführung bereitstehender Transaktionen aus und
er plant die Durchführung von Komponentenoperationen der
Transaktionen. Beim Schritt 104 überprüft der Transaktionsplaner
z. B., ob eine Transaktion nachgefragt hat. Ein Transaktionsplaner-
Interrupt kann z. B. in Antwort auf ein Interrupt-
Signal von der Eingabe/Ausgabe-Einheit auftreten, der
anzeigt, daß ein Benutzer oder ein anderer digitaler Computer
nach der Durchführung einer Transaktion nachgefragt
hat. In diesem Fall wird die Transaktionsnachfrage auf der
Transaktionsliste beim Schritt 105 plaziert.
Fig. 6 zeigt ein spezielles Beispiel einer Transaktionsliste
83. Die Transaktionsliste enthält eine Verbindungsliste
(linked list) von Transaktionsedentifikationsnummern 106.
Mit jeder Transaktionsidentifikationsnummer sind ein Zeiger
auf den nächsten Eintrag in der Verbindungsliste und Werte
für eine Anzahl von Zeichen (V, R, I, G, P) verbunden. Diese
Zeichen (flags) enthalten ein Gültigkeitszeichen V, das
anzeigt, ob der Eintrag in der Liste gültige Daten enthält,
ein Zeichen R, das anzeigt, ob die Vorbereitung der Transaktion
abgeschlossen worden ist und die Transaktion bereit
dazu ist, ausgeführt zu werden, ein Zeichen I, das anzeigt,
ob die Vorbereitung der Transaktion gesperrt worden ist,
bis zum Abschluß einer Eingabe/Ausgabe- oder Speicherzugriffsnachfrage,
ein Zeichen G, das angibt, ob die Transaktion
eine lokale oder globale Transaktion ist, und ein Zeichen
P, das angibt, ob der Abschluß der Vorbereitung einer
globalen Transaktion an den Koordinator berichtet worden
ist. Die Zeichen G und B, die mit globalen Transaktionen
verbunden sind, werden nachfolgend mit Bezug auf die Fig. 14
und 15 erläutert.
Mit der Liste 83 sind ein Kopfzeiger (head pointer) 108,
ein Endezeiger 109 und ein Zeiger 110 für die Transaktion,
die durchgeführt wird, verbunden. Der Kopfzeiger 108 hat
z. B. einen negativen Wert, wenn die Liste leer ist, und hat
ansonsten einen positiven Wert, der auf den Listeneintrag
für die erste (höchste Priorität) Transaktion zeigt. Auf
ähnliche Art und Weise hat der Endezeiger 109 einen negativen
Wert, wenn die Liste leer ist, und hat ansonsten einen
positiven Wert, der auf den letzten Eintrag in der Liste
zeigt. Der Zeiger 110 auf die Transaktion, die ausgeführt
wird, wird von dem Transaktionsplaner beim Schritt 101 der
Fig. 5 eingesetzt, wenn auf einen Interrupt geantwortet
wird. Insbesondere wird der Zeiger 110 dazu verwendet, um
die jeweilige Kontextspeicherstelle für die unterbrochene
Transaktion zu finden, wenn Schritt 101 durchgeführt wird.
Gemäß Fig. 5 überprüft der Transaktionsplaner beim Schritt
112, ob eine Transaktion für eine Ausführung bzw. Übertragung
bereit ist. Wenn das der Fall ist, ruft der Transaktionsplaner
beim Schritt 113 den Koordinator 85 für die
Ausführungsreihenfolge auf, die auszuführende Transaktion
auszuwählen und eine Ausführungsreihenfolge mit möglichen
Abbrüchen und Verzögerungen zu erzwingen. Wenn der Koordinator
für die Ausführungsreihenfolge beschließt, die Ausführung
nicht zu verzögern, dann überträgt der Systemelement-
Manager (RM) beim Schritt 115 die Ergebnisse der Transaktion
in den Zustandsspeicher.
Schließlich überprüft der Transaktionsplaner beim Schritt
116 die Transaktionsliste, um zu bestimmen, ob es eine
nichtgesperrte Transaktion gibt, die noch nicht bereit ist.
Wenn das der Fall ist, wählt der Transaktionsplaner beim
Schritt 117 eine der nicht gesperrten Transaktionen aus,
die noch nicht bereit ist. Um die Schritte 116 und 117
durchzuführen, überprüft der Transaktionsplaner z. B. zuerst,
ob die Transaktionsliste leer ist, indem er testet,
ob der Kopfzeiger 108 einen negativen Wert aufweist. Wenn
der Kopfzeiger einen positiven Wert hat, dann überprüft
der Transaktionsplaner die Zeichen L und I für die Transaktion
am Anfang der Liste, um zu bestimmen, ob sie noch
nicht bereit und nicht gesperrt ist. Wenn der erste Eintrag
bereit ist oder gesperrt ist, dann überprüft der Transaktionsplaner
den Endezeiger 109, um zu bestimmen ob das Ende
der Liste erreicht worden ist. Wenn nicht, überprüft der
Transaktionsplaner den Zeiger auf den nächsten Eintrag und
führt die gleichen Schritte durch, bis entweder eine nichtgesperrte
Transaktion, die noch nicht bereit ist, gefunden
wird oder das Ende der Liste erreicht worden ist.
Wenn eine nicht gesperrte Transaktion, die noch nicht bereit
bzw. fertig ist, ausgewählt worden ist, wird beim
Schritt 118 der Kontext der ausgewählten Transaktion in
dem Stapelspeicher plaziert. Bezüglich dieses Vorgangs wird
darauf hingewiesen, daß, wenn eine Transaktion zuerst in
der Transaktionsschlange plaziert ist, ein Anfangskontext
für die Transaktion in dem jeweiligen Kontextspeicher für
die unterbrochene Transaktion plaziert wird. Der Anfangskontext
enthält z. B. einen Programmzählerwert, der auf den
ersten Befehl in dem Programm für die Transaktion zeigt.
Nach dem Schritt 118 wird eine Rückkehr von einem Interrupt
(Unterbrechung) beim Schritt 119 durchgeführt, um die Ausführung
von Instruktionen bzw. Befehlen in dem Programm
für die ausgewählte Transaktion anzufangen oder fortzusetzen.
Fig. 7 zeigt ein spezielles Beispiel einer Datenstruktur
zum Speichern des Seriengraphen (USG) für nicht entschiedene
Transaktionen. Immer dann, wenn eine bestimmte Reihenfolge
für die Durchführung von in Konflikt stehenden Operationen
in einem jeweiligen Paar von Transaktionen eingerichtet
worden ist, wird die Reihenfolge der Durchführung der
in Konflikt befindlichen Operationen in dem Seriengraphen
für nicht entschiedene Transaktionen notiert. Wenn die Speicherzugriffsoperationen,
die von jeder Transaktion durchgeführt
werden, und die Speicherstellen dieser Speicherzugriffsoperationen
zu einem Zeitpunkt bekannt sind, wenn
eine Transaktion in der Liste plaziert bzw. untergebracht
wird, dann ist es im Fall 1 der Fig. 3A zu diesem Zeitpunkt
möglich, die Reihenfolge des Durchführens der in Konflikt
stehenden Operationen zu bestimmen. In dieser Hinsicht wird
darauf hingewiesen, daß für den Fall 1, wie er in Fig. 3A
angegeben ist, Schreiboperationen wirksam sind, die zu dem
Zeitpunkt der Transaktionsausführung (commitment) durchgeführt
werden. Außer in diesem bestimmten Fall wird die Reihenfolge
der Durchführung von in Konflikt stehenden Operationen
bestimmt, wenn eine zweite der in Konflikt stehenden
Operationen für die Durchführung durch den Transaktionsplaner
eingeplant wird und die Speicherstelle, auf die durch
die in Konflikt stehende Operation zugegriffen wird, bestimmt
wird.
Zu diesem Zeitpunkt wird das Vorhandensein eines Konflikts
festgestellt, wie es weiter unten mit Bezug auf Fig. 11
erläutert wird, und die Reihenfolge der Durchführung wird
in dem Seriengraphen für nicht entschiedene Transaktionen
aufgezeichnet. Die Daten des Graphen der Fig. 7 sind in
bildlicher Form in Fig. 8 dargestellt. Die Zeichen, die in
der Datenstruktur nach Fig. 7 gesetzt sind, entsprechen den
Kanten 131 in der bildlichen Darstellung der Fig. 8. Die
Richtung einer Kante 131 gibt die Reihenfolge der Durchführung
der in Konflikt stehenden Operationen der Transaktionen
an. Wenn diese Reihenfolge der Durchführung einmal eingerichtet
ist, wird sie durch Abbrechen von Transaktionen
oder Verzögern von Transaktionen oder zusätzlichen in Konflikt
stehenden Operationen erzwungen.
Das Erzwingen der Ausführungsreihenfolge durch Abbrechen
von Transaktionen wird durch die Schritte 141 und 142 in
Fig. 9 erläutert. Beim Schritt 141 wird eine für die Ausführung
fertige Transaktion ausgewählt. In Situationen, wo
es eine Anzahl von fertigen Transaktionen bzw. bereiten
Transaktionen gibt, wird eine bestimmte fertige Transaktion
ausgewählt, z. B. durch Auswählen einer der ersten dieser
Transaktionen in der Liste, indem vorgegebene Prioritäten,
die mit den Transaktionen verbunden sind, verglichen werden
oder in Antwort auf die Auswahl von einem Koordinator. Für
die Liste 106 der Fig. 6 können z. B. globale Transaktionen
Priorität über lokale Transaktionen in dem Auswahlvorgang
haben.
Beim Schritt 142 wird die Ausführungsreihenfolge durch Abbrechen
der Transaktionen erzwungen, für die die Ausührung
bzw. Übertragung im Gegensatz zur Ausführungsreihenfolge
und der Ausführung der ausgewählten Transaktion steht. Bei
der Ausführungsreihenfolge, die durch den Graphen in Fig. 8
dargestellt wird, werden z. B., wenn die Transaktion T₁ ausgewählt
wird, die Transaktionen T₀ und T₃ abgebrochen, um
die Ausführungsreihenfolge zu erzwingen. Das Abbrechen einer
Transaktion umfaßt das Löschen der Ergebnisse jeder
Transaktion. Bei lokalen Transaktionen kann eine Transaktion
durch Zurücksetzen der Inhalte ihrer jeweiligen Kontextspeicher
auf ihren Anfangskontext abgebrochen werden.
Anders ausgedrückt wird der gegenwärtige Wert des Programmzählers
für die Transaktion auf den Anfang des Programms
für die Transaktion zurückgesetzt. Zudem müssen die Transaktionsliste
106 und der Seriengraph 84 für nicht entschiedene
Transaktionen neu initialisiert werden. Bei globalen
Transaktionen wird eine abgebrochene Transaktion wenn überhaupt
von dem Koordinator neu gestartet. In diesem Fall
wird die Transaktion vollständig aus der Transaktionsliste
gestrichen bzw. entfernt.
Fig. 10 zeigt ein Flußdiagramm, das eine Prozedur 150 zum
Auswählen einer für die Ausführung bereiten Transaktion
zeigt, was oben stehend mit Bezug auf den Schritt 141 der
Fig. 9 angerissen wurde. Beim ersten Schritt 151 der
Fig. 10 wird die Transaktionsliste 106 mit dem Anfang bzw.
Kopf der Liste beginnend nach der ersten bereiten Transaktion
durchsucht. Zudem wird ein Ausführungszeichen (commit
flag) zurückgenommen, das später in Fig. 10 verwendet wird.
Als nächstes wird beim Schritt 152 die Anzahl der Teilnehmer
in dem "Abbruchsatz" (abort set) der ausgewählten Transaktionen
gezählt. Mit Bezug auf den Seriengraphen 84 für
nicht entschiedene Transaktionen der Fig. 8 enthält z. B.
der Abbruchsatz jeder Transaktion in dem Graphen seine
vorhergehenden Transaktionen. Anders ausgedrückt enthält
der Abbruchsatz für die Transaktion T₁ die Transaktionen T₀
und T₃ und die Anzahl der Teilnehmer des Abbruchsatzes von
T₁ ist zwei. Analog dazu haben die Transaktionen T₀ und T₄
keine Teilnehmer in ihren Abbruchsätzen. Geht man von der
speziellen Datenstruktur der Fig. 7 aus, so werden die Teilnehmer
eines Abbruchsatzes einer Transaktion durch die Kantenzeiten
(edge flags) bestimmt, die entlang einer Spalte
der Datenstruktur gesetzt sind. Die Anzahl der Teilnehmer
in dem Abbruchsatz wird durch Zählen der Anzahl der Zeichen,
die in der entsprechenden Spalte für die Transaktion
gesetzt sind, berechnet. Wenn der Abbruchsatz der ausgewählten
Transaktion null ist (er hat keine Teilnehmer), was bei
dem Schritt 153 überprüft wird, dann fährt die Ausführung
beim Schritt 154 damit fort, möglicherweise die Ergebnisse
der Transaktion in den Zustandsspeicher zu übertragen, was
weiter unten mit Bezug auf die Fig. 15 für ein Transaktionsverarbeitungssystem
beschrieben wird, das lokale und globale
Transaktionen verarbeitet bzw. verwaltet.
Wenn der Abbruchsatz der ausgewählten Transaktion nicht
Null ist, wird ein Versuch gemacht, die Ausführung der
Transaktion zu verzögern, so daß die Anzahl der Teilnehmer
in ihrem Abbruchsatz abnehmen kann. Diesbezüglich wird angemerkt,
daß der Abbruchsatz einer bereitstehenden Transaktion
nie zunehmen kann, aber abnehmen kann, da er jedesmal
um Eins abnimmt bzw. verkleinert wird, wenn ein Teilnehmer
ihres Abbruchsatzes ausgeführt bzw. eingegeben wird. Die
Ausführung einer ausgewählten Transaktion sollte jedoch
nicht unbestimmt lange verzögert werden, da ansonsten das
System blockiert werden könnte. Die Verzögerung einer ausgewählten
Transaktion wird deshalb beendet bzw. abgeschlossen,
wenn die Verzögerung eine vorgegebene Verzögerungszeit
überschreitet. Beim Verarbeiten von globalen Transaktionen
ist es auch wünschenswert, die Verzögerung in Antwort auf
ein Abbruchsignal bzw. Beendungssignal von dem Koordinator
zu beenden, wie weiter unten mit Bezug auf Fig. 15 beschrieben
wird. Beim Schritt 157 der Fig. 10 wird die Verzögerungszeit
als Differenz zwischen der gegenwärtigen Zeit
und der Bereitzeit bzw. Fertigzeit für die Transaktion (die
beim Schritt 103 der Fig. 5 gespeichert wurde) berechnet.
Wenn die Verzögerungszeit eine vorgegebene Grenze bzw. einen
vorgegebenen Grenzwert überschreitet, wie es im Schritt
158 überprüft wird, wird beim Schritt 159 ein Ausführungszeichen
(commit flag) gesetzt.
Beim Schritt 160, wenn es zusätzliche fertige Transaktionen
in der Transaktionsliste gibt, verzweigt die Ausführung
zum Schritt 156, um die nächste fertige Transaktion zu bekommen
und die Ausführung geht in der Schleife zurück zum
Schritt 152. Ansonsten wird beim Schritt 161 das Ausführungszeichen
überprüft und, wenn es nicht gesetzt wurde,
dann fährt die Ausführung ohne eine Entscheidung fort, die
ansonsten gemacht wird, um irgendeine der fertigen Transaktionen
auszuführen. Ansonsten wird die fertige Transaktion
mit der minimalen Anzahl von Teilnehmern in ihrem Abbruchsatz
ausgewählt.
In Fig. 11 ist ein Flußdiagramm 170 einer Prozedur zum Bestimmen
der Ausführungsreihenfolge von in Konflikt stehenden
Komponentenoperationen der Transaktionen gezeigt. Die
Prozedur 170 wird während der Vorbereitung einer Speicherzugriffsoperation,
wie z. B. des Lesens oder Schreibens aufgerufen.
Beim Schritt 171 wird die Adresse der Speicherzugriffsoperation
bestimmt. Als nächstes wird beim Schritt
172 die Adresse mit der Adresse der früheren Operationen,
die in Konflikt stehen könnten, verglichen. Dies wird durchgeführt,
indem eine Liste der Adressen früherer Operationen
für jede Transaktion in der Transaktionsliste durchsucht
wird. Wenn die vorliegende Operation eine Leseoperation
ist, kann die Leseoperation mit früheren Schreiboperationen
in Konflikt stehen. Wenn die vorliegende Operation eine
Schreiboperation ist, kann die Schreiboperation mit einer
früheren Leseoperation (oder im Fall 2 der Fig. 3B, einer
früheren Schreiboperation) in Konflikt stehen. Wenn es eine
Adreßübereinstimmung gibt, wie es beim Schritt 173 getestet
wird, wird beim Schritt 180 die gegenwärtige Reihenfolge
der Transaktion in dem Seriengraphen für nicht entschiedene
Transaktionen (84 in Fig. 7) aufgezeichnet. Insbesondere
treten Konflikte für den Fall 1 der Fig. 3A nur zwischen
einer Leseoperation und einer Schreiboperation auf
und die Reihenfolge der Operationen ist Lesen, dann Schreiben.
Im Fall 2 der Fig. 3B muß die vorliegende Reihenfolge
für die gegenwärtige Transaktion nach der vorhergehenden
Transaktion durchgeführt werden. Beim Schritt 181 verzweigt
die Ausführung zurück zum Schritt 172, wenn es zusätzliche
frühere Speicherzugriffsoperationen zu überprüfen gibt.
Ansonsten wird die Vorbereitung des Speicherzugriffs beim
Schritt 177 durch Addieren der Adresse, die beim Schritt
171 festgelegt worden ist, zu einer Adreßliste für Lese-
und Schreiboperationen der gegenwärtigen Transaktion fortgesetzt.
Dann ist die Operation beim Schritt 178 vorbereitet
oder wird beim Schritt 178 durchgeführt. Die Ausführung der
Prozedur kehrt dann zu der Transaktion zurück.
Fig. 12 zeigt einen vergrößerten Seriengraphen für nicht
entschiedene Transaktionen, in dem sich Kanten für Schreib/
Lesekonflikte von Kanten anderer Konflikte unterscheiden.
Ein solcher vergrößerter Graph kann in einer Datenstruktur
ähnlich zu der Datenstruktur nach Fig. 7 gespeichert werden,
aber jede Kante wird durch ein Paar von Zeichen (flags)
wiedergegeben, die aus einem ersten Zeichen, das jede Art
von Konflikt angibt, und aus einem zweiten Zeichen bestehen,
das einen Schreib/Lesekonflikt angibt. Der vergrößerte
Graph der Fig. 12 wird eingesetzt, um kaskadierende Abbrüche
durchzuführen, damit die Wiederherstellbarkeit in einem
System, in dem eine zweite Transaktion die Schreibdaten
der ersten Transaktion lesen kann, bevor die erste Transaktion
ausgeführt wird, sichergestellt wird, wie zuvor mit
Bezug auf Fig. 3B beschrieben worden ist. Eine Prozedur zum
Durchführen eines kaskadierenden Abbruchs wird in dem Flußdiagramm
190 der Fig. 13 gezeigt. Man nehme z. B. an, daß T₅
als zur Ausführung fertige Transaktion ausgewählt wird. Um
die Ausführungsreihenfolge zu erzwingen, müssen dann die
Transaktionen T₃ und T₄ der Fig. 12 abgebrochen werden.
Nimmt man jedoch an, daß das Transaktionsverarbeitungssystem
so arbeitet, wie es oben mit Bezug auf Fig. 3B beschrieben
wurde, wird, wenn eine Transaktion abgebrochen
wird, um die Ausführungsreihenfolge zu erzwingen, jede
Transaktion, die Schreibdaten der abgebrochenen Transaktion
gelesen hat, auch abgebrochen werden müssen. Aus dem vergrößerten
Graphen der Fig. 12 ist zu sehen, daß, wenn die
Transaktion T₄ abgebrochen wird, dann die Transaktion T₇
auch abgebrochen werden muß, da die Transaktion T₇ wegen
des Schreib/Lesekonflikts zwischen den Transaktionen T₄ und
T₇ auch negativ betroffen sein kann. Des weiteren, wenn
die Transaktion T₇ abgebrochen wird, dann muß auch die
Transaktion T₈ abgebrochen werden, da die Transaktion T₈
Daten gelesen hat, die durch die Transaktion T₇ geschrieben
wurden.
Gemäß Fig. 13 wird bei der kaskadierenden Abbruchprozedur
190 zum Abbrechen der Transaktion Tx beim ersten Schritt
191 der vergrößerte Graph durchsucht, um alle Transaktionen
Ty zu finden, die Daten gelesen haben, welche durch Tx geschrieben
worden sind. Dann wird bei Schritt 192 die Transaktion
Tx abgebrochen. In einem letzten Schritt 192 wird
das Unterprogramm 190 der Fig. 13 rekursiv aufgerufen, um
jede der Transaktionen Ty abzubrechen.
In der Fig. 14 wird ein Zustandsdiagramm eines Transaktionsverarbeitungssystems
gezeigt, das sowohl lokale als auch
globale Transaktionen verarbeitet. Die lokalen Transaktionen
werden z. B. von einem lokalen Benutzer 201 ausgegeben
und die globalen Transaktionen werden von einem Koordinator
202 ausgegeben. In jedem Fall empfängt der Transaktionsplaner
die Transaktionsnachfrage und setzt die Transaktionsnachfrage
in einen Eintrag der Transaktionsliste ein. Zu
diesem Zeitpunkt wird die Transaktion als in Vorbereitung
(preparation) befindlich bezeichnet. Der Transaktionsplaner
transferiert schließlich die Ausführung zu der in Vorbereitung
befindlichen Transaktion und die Transaktion wird ausgeführt,
bis sie entweder gesperrt wird oder fertig wird.
Wie oben stehend in Verbindung mit Fig. 5 erläutert wurde,
kann eine Transaktion sich selbst nach der Nachfrage nach
einer Eingabe/Ausgabe- oder Speicheroperation sperren und
nach der Beendigung einer Eingabe/Ausgabe- oder Speicheroperation
wird die Transaktion freigegeben. Eine Transaktion,
die entweder in Vorbereitung, gesperrt oder fertig bzw.
abgeschlossen ist, kann abgebrochen werden, um eine Ausführungsreihenfolge
zu erzwingen.
Der Transaktionsplaner kann eine fertige lokale Transaktion
ausführen. Um eine globale Synchronisation in einem verteilten
Transaktionsverarbeitungssystem sicherzustellen, wird
jedoch eine fertige globale Transaktion nur nach einer Quittierung
(handshake) mit dem Koordinator ausgeführt. Diese
Quittierung stellt sicher, daß eine globale Transaktion
nicht ausgeführt wird, bis alle Prozessoren, die zugewiesene
Abschnitte der Transaktion verarbeiten, ebenfalls fertig
sind, oder bereit sind, ihre zugewiesenen Abschnitte
der globalen Transaktion auszuführen bzw. zu übertragen.
Deshalb, wenn der Transaktionsplaner den Zustand einer globalen
Transaktion von "in Vorbereitung befindlich" in den
"fertig"-Zustand ändert, gibt der Transaktionsplaner ein
"Vorbereitet"-Signal an den Koordinator 202 ab.
Wenn der Koordinator 202 die "Vorbereitet"-Signale von allen
Transaktionsplanern, die an einer Transaktion teilnehmen,
empfangen hat, sendet der Koordinator einen "Ausführungs"-
Befehl an den Transaktionsplaner zurück. Wenn der
Koordinator jedoch nicht ein "Vorbereitet"-Signal von allen
teilnehmenden Transaktionsplanern empfängt, kann der Koordinator
ein "Abbruch"-Signal an den Transaktionsplaner senden.
In Fig. 14 werden diese Quittierungssignale durch gepunktete
Linien angegeben.
Wenn eine lokale Transaktion ausgeführt wird, entfernt der
Transaktionsplaner die Transaktion aus der Liste und zeigt
dem lokalen Benutzer an, daß die Transaktion abgeschlossen
worden ist. Auf ähnliche Art und Weise, wenn eine globale
Transaktion ausgeführt wird, entfernt der Transaktionsplaner
die globale Transaktion von der Transaktionsliste und
sendet ein Signal an den Koordinator, das angibt, daß die
Transaktion abgeschlossen bzw. ausgeführt worden ist. Des
weiteren, wenn eine globale Transaktion abgebrochen wurde,
wird die globale Transaktion aus der Transaktionsliste und
aus dem Seriengraphen für nicht entschiedene Transaktionen
entfernt und der Transaktionsplaner sendet ein Signal an
den Koordinator, um den Abbruch zu bestätigen. Für lokale
Transaktionen kann es jedoch von Vorteil sein, die Vorbereitung
der Transaktion erneut zu starten. In diesem Fall ist
es nur notwendig, den Anfangskontext der Transaktion erneut
zu setzen, den Seriengraphen für nicht entschiedene Transaktionen
zu löschen (clear) und den Zustand der Transaktion
zurück in "Vorbereitung" zu setzen, indem die R- und I-Zeichen
in dem Listeneintrag der Transaktion zurückgesetzt
werden.
In Fig. 15 ist ein Flußdiagramm der Schritte, denen der
Ausführungskoordinator zum Planen der Ausführung von globalen
Transaktionen unterliegt. Die Prozedur der Fig. 10 kann
z. B. entschieden haben, fortzufahren ohne eine Transaktion
auszuführen. Beim Schritt 211 kann der Transaktionsplaner
z. B. ein "Beende-Verzögerung"-Signal (terminate delay signal)
von dem Koordinator empfangen haben. Dieses Signal
kann ein spezielles Signal vom Koordinator sein oder es
kann eine erneute Sendung einer vorher zugesendeten Transaktionsnachfrage
sein. Wenn ein solches Signal empfangen
wird, wird beim Schritt 212 das R-Zeichen für die Transaktion
in der Transaktionsliste überprüft, um zu bestimmen,
ob die globale Transaktion fertig ist. Wenn nicht, dann
kann die globale Transaktion nicht ausgeführt werden. Ansonsten
werden dann die Teilnehmer des Abbruchsatzes für
die Transaktion beim Schritt 213 überprüft, um zu bestimmen,
ob irgendeiner der Teilnehmer eine globale Transaktion
mit einem gesetzten P-Zeichen ist. Der Schritt 213 wird
auch bei globalen oder lokalen Transaktionen durchgeführt,
für die die Prozedur nach Fig. 10 die Transaktion ausgewählt
hat, nach Möglichkeit ausgeführt zu werden. Wenn der
Abbruchsatz für die Transaktion, die für die Ausführung
ausgewählt wurde, eine globale Transaktion mit einem gesetzten
P-Zeichen aufweist, kann die ausgewählte Transaktion
nicht vor der globalen Transaktion mit dem gesetzten P-Zeichen
ausgeführt werden. Deshalb wird die Ausführung in dem
Transaktionsplaner fortgesetzt. Ansonsten verzweigt die
Ausführung beim Schritt 211 in Abhängigkeit davon, ob die
auszuführende Transaktion eine globale Transaktion ist oder
nicht. Wenn sie eine globale Transaktion ist, kann sie
nicht ausgeführt werden, bis der Transaktionsplaner ein
Vorbereitungs-Anerkennungssignal an den Koordinator abgesendet
hat und ein bestätigendes "Ausführungs"-Signal (commit
signal) empfangen hat. Bei einer globalen Transaktion wird
deshalb das Vorbereitungs-Anerkennungs-Signal ("vorbereitet"
in Fig. 14) an den Koordinator beim Schritt 216 gesendet,
das P-Zeichen für die globale Transaktion in der Transaktionsliste
wird gesetzt und die Ausführung im Transaktionsplaner
wird fortgesetzt. Ansonsten werden bei einer
auszuführenden lokalen Transaktion beim Schritt 215 die
Transaktionen in dem Abbruchsatz abgebrochen (und der "kaskadierende
Abbruch" der Fig. 13 wird im Fall 2 der Fig. 3A
verwendet) und die Ergebnisse der ausgewählten lokalen
Transaktion werden zum Zustandsspeicher übertragen. Die
Ausführung fährt dann im Transaktionsplaner fort.
Fig. 16 zeigt ein Flußdiagramm 220 zum Abarbeiten bzw. Verwalten
vorbereiteter globaler Transaktionen in Antwort auf
einen Ausführungs- oder Abbruch-Interrupt des Koordinators.
Beim Schritt 221 verzweigt die Ausführung in Abhängigkeit
davon, ob der Interrupt für eine Ausführung oder einen Abbruch
ist. Im Fall eines Abbruchs wird beim Schritt 222
die globale Transaktion abgebrochen, indem die Transaktion
aus der Transaktionsliste entfernt wird und entsprechende
Zeichen in dem Seriengraphen für unentschiedene Transaktionen
zurückgesetzt bzw. gelöscht werden. Schließlich wird
beim Schritt 223 eine Anerkennung des Abbruchs zurück zum
Koordinator gesendet und dann kehrt die Ausführungsprozedur
vom Interrupt zurück.
Wenn beim Schritt 221 bestimmt worden ist, daß der Interrupt
für eine Ausführung war, dann werden beim Schritt 224
die Transaktionen im Abbruchsatz der ausgewählten globalen
Transaktionen abgebrochen und die Ergebnisse der ausgewählten
Transaktion werden in den Zustandsspeicher übertragen.
Dann wird beim Schritt 223 eine Anerkennung bzw. Bestätigung
der Ausführung bzw. Übertragung zu dem Koordinator
zurückgeschickt und die Ausführung der Prozedur kehrt vom
Interrupt zurück.
Fig. 17 zeigt eine Ausführungsform der vorliegenden Erfindung,
in der ein Ausführungsreihenfolgenkoordinator (COCO
=committment order coordinator) 151 in ein herkömmliches
Transaktionsverarbeitungssystem eingefügt wird, das einen
Transaktionsmanager (TM) 252 und einen Systemelement-Manager
(RM=resource manager) 253 aufweist. Wie gezeigt, besteht
der Ausführungsreihenfolgenkoordinator 251 aus einem
Untersatz der Schnittstelle 254 zwischen dem Transaktionsmanager
252 und dem Systemelement-Manager 253. Der Ausführungsreihenfolgenkoordinator
überschneidet sich mit einem
herkömmlichen Abschnitt 255 der Schnittstelle 254 und ist
mit dem Systemelementmanager 253 via einer erweiterten
Schnittstelle 256 verbunden, die einige zusätzliche Signale
aufweist die individuell den Betrieb des Ausführungsreihenfolgenkoordinators
zugeordnet sind. In einem System mit
verteilter Verarbeitung kann die Konfiguration nach Fig. 17
in jedem Knoten des Systems verwendet werden.
Es wird angenommen, daß der Systemelementmanager 253 die
folgenden herkömmlichen Dienste zur Verfügung stellt:
R_VORBEREITE(T) (=R_PREPARE): der TM zeigt dem RM an, die Transaktion T zu beenden. D. h., daß der RM keine weiteren Nachfragen oder externe Daten für die Transaktion T empfangen wird;
R_AUSFÜHREN(T) (=R_COMMIT): Der TM zeigt dem RM an, die Transaktion T auszuführen. Eine Voraussetzung für das Aufrufen dieses Dienstes besteht darin, daß der RM vorhergehend die Vorbereitung der Transaktion anerkannt bzw. bestätigt hat (d. h., JA gewählt hat); und
R_ABBRUCH(T) (=R_ABORT): Der TM zeigt dem RM an (und möglicherweise auch allen anderen RM's die mit T zu tun haben), die Transaktion T abzubrechen.
R_VORBEREITE(T) (=R_PREPARE): der TM zeigt dem RM an, die Transaktion T zu beenden. D. h., daß der RM keine weiteren Nachfragen oder externe Daten für die Transaktion T empfangen wird;
R_AUSFÜHREN(T) (=R_COMMIT): Der TM zeigt dem RM an, die Transaktion T auszuführen. Eine Voraussetzung für das Aufrufen dieses Dienstes besteht darin, daß der RM vorhergehend die Vorbereitung der Transaktion anerkannt bzw. bestätigt hat (d. h., JA gewählt hat); und
R_ABBRUCH(T) (=R_ABORT): Der TM zeigt dem RM an (und möglicherweise auch allen anderen RM's die mit T zu tun haben), die Transaktion T abzubrechen.
Es wird auch angenommen, daß der Transaktionsmanager 252
die folgenden herkömmlichen Dienste zur Verfügung stellt:
T_FERTIG(T) (=T_READY): Der RM zeigt dem TM an, daß er die Verarbeitung der Transaktion T abgeschlossen hat und er wählt JA aus (d. h. er ist fertig, T zu übertragen oder abzubrechen gemäß der Notifikation von TM);
T_ABBRUCH(T) (=T_ABORT): Der RM zeigt dem TM an, daß er die Transaktion T abgebrochen hat (was in einem Abbruch von T durch alle beteiligten RMs resultiert).
T_FERTIG(T) (=T_READY): Der RM zeigt dem TM an, daß er die Verarbeitung der Transaktion T abgeschlossen hat und er wählt JA aus (d. h. er ist fertig, T zu übertragen oder abzubrechen gemäß der Notifikation von TM);
T_ABBRUCH(T) (=T_ABORT): Der RM zeigt dem TM an, daß er die Transaktion T abgebrochen hat (was in einem Abbruch von T durch alle beteiligten RMs resultiert).
Wenn die TM-RM Schnittstelle 254 eingefügt ist, ruft der
Ausführungsreihenfolgenkoordinator 251, und nicht der Systemelementmanager
253, direkt die T_FERTIG(T) und T_ABBRUCH(T)
Dienste des Transaktionsmanagers 252 auf. Des weiteren
empfängt der Ausführungsreihenfolgenkoordinator 251
anstatt des Systemelementmanagers direkt die Signale von
dem Transaktionsmanager zum Verursachen der R_AUSFÜHRUNG(T)
und R_ABBRUCH(T)-Dienste. Zur Erleichterung der Identifizierung
der Dienste in der nachfolgenden Beschreibung, werden
die Dienste des Ausführungsreihenfolgenkoordinators bezüglich
dieser Signale als C_T_AUSFÜHRUNG(T) bzw. C_T_ABBRUCH(T)
bezeichnet.
Das RM-COCO-Interface ist ein Untersatz der TM-COCO-Schnittstelle.
Insbesondere werden zusätzliche Dienste zum Aufrechterhalten
des USG, der Datenstruktur des COCO, definiert.
Die Signale des RM, die vorher die herkömmlichen T_FERTIG(T)
und T_ABBRUCH(T) Dienste des Transaktionsmanagers
aufgerufen haben, rufen jetzt die Dienste C_R_FERTIG(T)
und C_R_ABBRUCH(T) des Ausführungsreihenfolgenkoordinators
251 auf. Der Ausführungsreihenfolgenkoordinator 251
wird auch durch den Systemelementmanager 253 aufgerufen,
um die nachfolgenden zusätzlichen Dienste des Ausführungsreihenfolgenkoordinators
durchzuführen:
C_R_ANFANG(T) (=C_R_BEGINN): Der RM zeigt dem COCO an, einen Knoten für T in dem USG einzurichten; und C_R_KONFLIKT(T₁; T₂): Vor der Ausführung einer Operation von T₂, die einen Konflikt mit T₁ erzeugt, ruft der RM diesen Dienst auf, um dies dem COCO anzuzeigen. Wenn eine zugeordnete Kante von T₁ nach T₂ noch nicht im USG existiert, wird sie erzeugt. Der tatsächliche Betrieb von T₂ wird durch den RM nur nach dem Empfangen eines Anerkennungssignals von dem COCO ausgeführt, um sicherzustellen, daß der USG zu diesem Zeitpunkt aktualisiert ist. Der Systemelementmanager 253 wird von dem Ausführungsreihenfolgenkoordinator 251 aufgerufen, um die ursprünglichen R_AUSFÜHRUNG(T) und R_ABBRUCH(T) Dienste durchzuführen. Der Systemelementmanager 253 wird ebenfalls von dem Ausführungsreihenfolgenkoordinator 251 aufgerufen, um den nachfolgenden zusätzlichen Dienst zur Verfügu 50136 00070 552 001000280000000200012000285915002500040 0002004216871 00004 50017ng zu stellen: R_KONFLIKT_ACK(T₁, T₂). Nach diesem Aufruf kann der RM die Operation von T₂ ausführen, die den entsprechenden Konflikt mit T₁ verursacht.
C_R_ANFANG(T) (=C_R_BEGINN): Der RM zeigt dem COCO an, einen Knoten für T in dem USG einzurichten; und C_R_KONFLIKT(T₁; T₂): Vor der Ausführung einer Operation von T₂, die einen Konflikt mit T₁ erzeugt, ruft der RM diesen Dienst auf, um dies dem COCO anzuzeigen. Wenn eine zugeordnete Kante von T₁ nach T₂ noch nicht im USG existiert, wird sie erzeugt. Der tatsächliche Betrieb von T₂ wird durch den RM nur nach dem Empfangen eines Anerkennungssignals von dem COCO ausgeführt, um sicherzustellen, daß der USG zu diesem Zeitpunkt aktualisiert ist. Der Systemelementmanager 253 wird von dem Ausführungsreihenfolgenkoordinator 251 aufgerufen, um die ursprünglichen R_AUSFÜHRUNG(T) und R_ABBRUCH(T) Dienste durchzuführen. Der Systemelementmanager 253 wird ebenfalls von dem Ausführungsreihenfolgenkoordinator 251 aufgerufen, um den nachfolgenden zusätzlichen Dienst zur Verfügu 50136 00070 552 001000280000000200012000285915002500040 0002004216871 00004 50017ng zu stellen: R_KONFLIKT_ACK(T₁, T₂). Nach diesem Aufruf kann der RM die Operation von T₂ ausführen, die den entsprechenden Konflikt mit T₁ verursacht.
Unter Berücksichtigung der oben stehenden Definitionen der Aufrufe
in dem System der Fig. 17 ist es offensichtlich, daß die Zustände des
Systems auf die Aufrufe nach Fig. 18 reagieren. Die Aufrufe werden
weiterhin durch den im Anhang III angegebenen PASCAL/SQL-basierenden
Pseudocode, der auf dem Diagramm nach Fig. 18 beruht, erläutert.
In dem Pseudocode (Anhang III) werden gleichzeitige Aufrufe erlaubt,
aber auch mehrere gleichzeitige Aufrufe des gleichen Dienstes. T_ERROR(T)
und R_ERROR(T) sind Fehlernachricht-Aufrufe von TM bzw. RM, die
eine fehlerhafte Aufrufsequenz anzeigen. Der Kernzustand (atomic state)
der Transaktion wird als Fehlertyp zurückgegeben.
Der Anhang III ist im Deutschen Patentamt zur freien Einsicht hinterlegt
und umfaßt 5 Seiten eines Programms für eine Datenverarbeitungsanlage,
dessen Kommentare in deutscher Sprache abgefaßt sind. Es wird
darauf hingewiesen, daß das Programm nach Anhang III zur Offenbarung
der Erfindung gehört.
Der Ausführungsreihenfolgenkoordinator 251, der durch den Pseudocode
nach Anhang III definiert wird, kann modifiziert werden, um eine Wiederherstellbarkeit
des Ausgabeplans sicherzustellen. Der modifizierte
Ausführungskoordinator wird als CORCO bezeichnet. der CORCO wird eingesetzt,
wenn der schnittstellenbildende RM (253 in Fig. 17) die Wiederherstellbarkeit
nicht sicherstellt und er noch dem Zustandsdiagramm
nach Fig. 18 folgt. Der CORCO unterscheidet sich von dem o.a. Beispiel
im Pseudocode durch Verwendung kaskadierender Abbrüche und durch die
nachfolgenden zusätzlichen Modifikationen. Schreib/Lese-Konflikte werden
durch die Kanten des USG wiedergegeben, wie es in Fig. 12 dargestellt
ist. Wenn die Kante (T₁, T2) einen wr-Konflikt (und möglicherweise
einige weitere Konflikte) repräsentiert, hat das Boolean wr (T₁,
T) den Wert wahr (=true), und keine JA-Wahl (YES vote) wird ausgegeben
bei T₂, wenn wr (T₁, T₂) den Wert wahr (true) hat (um eine Verletzung
der Wiederherstellbarkeit zu vermeiden). Des weiteren hat der Dienst
C_R_KONFLIKT einen zusätzlichen Boolean Parameter, wr, um einen wr-
Konflikt (C_R_KONFLIKT(T₁, T₂, wr) anzugeben. Weiterhin sind die Aufrufe
des CORCO und seine VOTE-Prozedur Modifikationen des COCOs, die
die oben aufgelisteten Unterschiede wiedergeben.
Die im Anhang IV angegebene rekursive Prozedur CASCADE(T) ruft T-Abort
(T) und erzeugt zusätzliche T_ABORT-Aufrufe, wenn es erforderlich ist
für die Aufrechterhaltung der Wiederherstellbarkeit.
Der Anhang IV ist im Deutschen Patentamt zur freien Einsicht hinterlegt;
er umfaßt 5 Seiten eines Programms für eine Datenverarbeitungsanlage,
dessen Kommentare in deutscher Sprache abgefaßt sind. Es wird
ausdrücklich darauf hingewiesen, daß das Programm nach Anhang IV zur
Offenbarung der vorliegenden Erfindung gehört.
Die Programme der Anhänge III und IV liegen auch in kompletter Originalversion
im Anhang II vor, der ebenfalls zur freien Einsicht hinterlegt
ist und 10 Seiten umfaßt.
Gemäß den oben stehenden Erläuterungen können die Komponentenoperationen
einer Anzahl von Transaktionen für die Ausführung
in einer Art und Weise verteilt und eingeplant werden,
die für den Einsatz erhältlicher Rechnerverarbeitungskapazitäten
am effizientesten ist. Außerdem kann die Konsistenz
durch Erzwingen einer Ausführungsreihenfolge aufrechterhalten
werden, in der Transaktionen in der gleichen
Reihenfolge ausgeführt werden, mit der auch in Konflikt
stehende Operationen durchgeführt werden. In einem verteilten
Transaktionsverarbeitungssystem stellt die Übereinstimmung
mit einer Ausführungsreihenfolge die serielle Abarbeitung
eines kombinierten (globalen) Planes sicher. Des weiteren
wird die serielle Abarbeitung des kombinierten (globalen)
Planes aufrechterhalten, während die Unabhängigkeit
bzw. Autonomie jedes verteilten Prozessors aufrechterhalten
wird und während herkömmliche Kernausführungsprotokolle
(atomic commitment protocols) für die Koordination globaler
Transaktionen verwendet werden.
Die Serienherstellbarkeit unter verteilten Transaktionen
wird durch selektives Ausführen und Abbrechen oder Verzögern
von Transaktionen sichergestellt, um eine Reihenfolge
der Ausführung zu erzwingen, die die gleiche ist wie eine
Reihenfolge der Durchführung von in Konflikt stehenden Komponentenoperationen
der Transaktionen. Eine erste Speicherzugriffsoperation
einer ersten Transaktion steht z. B. in
Konflikt mit einer zweiten Speicherzugriffsoperation, wenn
sich die beiden Speicherzugriffsoperationen auf die gleiche
Speicherstelle beziehen und zumindest eine der Operationen
eine Schreiboperation ist. Das Transaktionsverarbeitungssystem
kann einer zweiten Transaktion gestatten, Daten zu
lesen, die von einer Schreiboperation einer ersten Transaktion
geschrieben wurden, bevor die erste Transaktion ausgeführt
wird. In diesem Fall wird, in Abhängigkeit von der
jeweiligen Reihenfolge, in der die zwei in Konflikt stehenden
Operationen auftreten, die Ausführungsreihenfolge erzwungen,
möglicherweise durch Abbrechen einer der zwei
Transaktionen, um sicherzustellen, daß die Ausführungsreihenfolge
die gleiche ist wie die Reihenfolge der Operationen.
Die Konflikte werden z. B. detektiert, wenn die Adressen
während einer Vorbereitungsphase der Transaktion bestimmt
werden. Die Komponentenoperationen können z. B. gemäß
des am meisten effizienten Einsatzes der Computersystemkapazitäten
geplant werden. In einem Multiprozessorsystem, in
dem ein globaler Koordinator mit einer Vielzahl von Transaktionsprozessen
mittels "Vorbereitungs"- und "Ausführungs"-
Kommandos kommuniziert, wird in der Ausführungsreihenfolge
auf Verzögerungsbestätigungen Bezug genommen, daß
eine Transaktion "vorbereitet" worden ist, bis der "Abbruchssatz"
der Transaktion minimiert worden ist.
Nachfolgend wird gezeigt, daß eine zeitliche Eigenschaft
(history property), die als "Ausführungsreihenfolge" bezeichnet
wird, das globale Problem der seriellen Abarbeitung
löst. Insbesondere wird eine globale serielle Abarbeitung
garantiert, wenn jeder Systemelementmanager in einem
verteilten Transaktionsverarbeitungssystem der "Ausführungsreihenfolge"
(commitment ordering) folgt und wenn sie
Systemelementmanager "autonom" sind (d. h., sie koordinieren
über Kernausführungsprotokolle (atomic commitment protocols)
und tauschen keine zusätzliche gleichzeitige Steuerinformation
aus).
1. Eine Transaktion Ti ist eine teilweise Reihenfolge
von Ereignissen. Die binäre, asymmetrische, transitive und
irreflexive Beziehung, die die teilweise Reihenfolge bzw.
Ordnung aufweist, wird mit "<i" bezeichnet. Der Index i
kann weggelassen werden, wenn der Identifizierer der Transaktion
aus dem Kontext bekannt ist. Die Ereignisse umfassen
Lese- und Schreiboperationen; ri[x] bezeichnet, daß die
Transaktion Ti das Datenfeld x gelesen hat, und wi[x] bedeutet,
daß die Transaktion Ti das Datenfeld x geschrieben
hat. Eine Transaktion weist auch das Ende-Ereignis einer
Transaktion auf; ei bedeutet, daß Ti abgeschlossen ist.
2. Eine Transaktion Ti hat genau ein einziges Ereignis
ei. Ein Wert wird ei wie folgt zugewiesen: ei=c wenn und
nur wenn die Transaktion ausgeführt wird; ei=a wenn und
nur wenn die Transaktion abgebrochen wird. ei kann mit ci
bzw. ai bezeichnet werden, wenn ei=c oder ei=a.
3. Für jede Operation pi[x], die entweder ri[x] oder
wi[x] ist, ist pi[x]<i ei.
4. Zwei Operationen bezüglich eines Datenfelds x, pi[x],
qi[x] stehen in Konflikt miteinander, wenn entweder pi[x]
gleich wi[x] oder qj[x] gleich wj[x] ist.
5. Eine komplette History (complete history) H über einem
Satz T von Transaktionen ist eine partielle Reihenfolge mit
einer Beziehung <H, die gemäß den nachfolgenden Axiomen 6, 7
und 8 definiert wird.
6. Wenn Ti in T ist und Ereignisa<iEreignisb, dann ist
Ereignisa<HEreignisb.
7. Wenn Ti und Tj in T sind, dann gilt für irgendwelche
zwei in Konflikt stehenden Operationen pi[x], qj[x], daß
entweder pi[x]<H qj[x] oder qj[x]<Hpi[x].
8. Man nehme an, Ti und Tj sind Transaktionen in T und qj[x]
irgendeine Operation. Wenn wi[x]<H qj[x], dann ist
entweder ei<H qj[x] oder qj[x]<H ei. (Dieses Axiom liefert
eine einzigartige Definition der Semantik der History,
da, wenn ei=a, der Effekt von wi[x] aufgehoben wird;
d. h., daß das Lesen von x nach ei im Lesen eines Wertes
von x resultiert, der gerade vor wi[x] existiert hat). (Bemerke:
Der Index H in <H kann weggelassen werden, wenn
H aus dem Kontext bekannt ist.)
9. Eine History (Ablauf, Reihenfolge) ist jedes Präfix
einer kompletten History. Ein Präfix einer partiellen Ordnung
P über einem Satz S ist eine partielle Reihe P′ über
einem Satz S′⊆S mit den folgenden Eigenschaften:
Wenn b∈S′ und a<pb, dann auch a∈S′
Wenn a,b∈S′, dann a<pb, wenn und nur wenn a<p′ b
Wenn a,b∈S′, dann a<pb, wenn und nur wenn a<p′ b
10. Eine Transaktion T₂ ist in Konflikt mit einer Transaktion
T₁, wenn und nur wenn für die zugehörigen in Konflikt
stehenden Operationen q₂[x], p₁[x] gilt, daß p₁[x]<q₂[x]
(Merke, daß diese Definition asymmetrisch ist).
11. Wenn p₁[x] gleich w₁[x] und q₂[x] gleich w₂[x] ist,
dann ist T₂ in einem ww-Konflikt (Schreib/Schreib-Konflikt)
mit der Transaktion T₁.
12. Wenn p₁[x] gleich w₁[x] und q₂[x] gleich r₂[x], dann
ist T₂ in einem wr-Konflikt (Schreib/Lesekonflikt) mit der
Transaktion T₁.
13. Wenn p₁ ist r₁[x] und q₂[x] ist w₂[x], dann ist T₂ in
einem rw-Konflikt (Lese/Schreib-Konflikt) mit der Transaktion
T₁.
14. Es gibt eine Konfliktäquivalenz zwischen zwei Historien
H und H′ (die zwei sind konfliktäquivalent), wenn und
nur wenn beide im gleichen Satz von Transaktionen T definiert
sind und aus den gleichen Transaktionsereignissen
(für teilweise ausgeführte Transaktionen) bestehen und pi[x]<h qj[x]
ist, wenn und nur wenn pi[x]H′ qj[x] für jede
in Konflikt stehende Operation pi[x], qj[x] jeder ausgeführten
Transaktion Ti bzw. Tj in T gilt (d. h., H und H′
haben die gleichen Konflikte zwischen Operationen der ausgeführten
Transaktionen.
15. Eine History H bezüglich eines Transaktionssatzes T
ist seriell, wenn und nur wenn für jeweils zwei Transaktionen
Ti und Tj in T das folgende gilt:
Wenn pi[x]<H qj[y], dann gilt für irgendwelche weiteren Operationen si[u], tj[v] in H si[u]<H tj[v] (d. h., alle Operationen von Ti gehen allen Operationen von Tj voran).
Wenn pi[x]<H qj[y], dann gilt für irgendwelche weiteren Operationen si[u], tj[v] in H si[u]<H tj[v] (d. h., alle Operationen von Ti gehen allen Operationen von Tj voran).
16. Eine History ist einreihbar, seriell anordenbar (SER;
ist in SER), wenn und nur wenn sie konfliktäquivalent zu
einer irgendwie seriellen History ist.
17. Seriengraph einer History H, SG(H) ist der gerichtete
Graph SG(H)=(T,C), wobei T der Satz aller nicht abgebrochenen
(d. h. ausgeführten und unvollständigen) Transaktionen
in H ist und C (ein Untersatz von TxT) ein Satz aus
Kanten ist, die die Transaktionskonflikte wiedergeben, so
daß es für irgendwelche zwei Transaktionen T₁, T₂ in T
eine Kante von T₁ nach T₂ gibt, wenn und nur wenn T₂ in
einem Konflikt mit T₁ ist. Der Seriengraph für ausgeführte
Transaktionen (Commited Transaction Serializability Graph)
einer History H, CSG(H), ist der Untergraph von SG(H) mit
allen ausgeführten Transaktionen als Knoten und mit allen
zugehörigen Kanten. Der Seriengraph für nicht entschiedene
Transaktionen (Undecided Transactions Serializability
Graph) einer History H, USG(H) ist der Untergraph von SG(H)
mit all den nicht ausgeführten (d. h. unvollständigen) Transaktionen
als Knoten und mit all den zugehörigen Kanten.
18. Eine History H ist in Reihe (SER) anordenbar, wenn
und nur wenn CSG(H) zyklusfrei ist.
19. Eine History H ist behebbar (recoverable) (REC; ist
REC), wenn und nur wenn für irgendwelche zwei Transaktionen
T₁, T₂ ist H immer gilt, wenn T₂ ist in einem wr-Konflikt
mit T₁, daß T₂ nur ausgeführt wird, nachdem T₁ ausgeführt
worden ist. Formal geschrieben heißt das: (w₁[x]<r₂[x]
und e₂=c) bedeutet ((e₁<e₂ und e₁=c) oder (e₁<r₂[x] und e₁=a)).
20. Die History H vermeidet kaskadierende Abbrüche (cascading
aborts) (ACA; ist in ACA), wenn und nur wenn irgendeine
Transaktion in H Daten liest, die von nur ausgeführten
Transaktionen geschrieben worden sind: Man nehme an T₁,
T₂ sind irgendwelche zwei Transaktionen in H. Der folgende
Ausdruck ist eine formelmäßige Darstellung dieses Konzepts:
w₁[x] r₂[x] bedeutet e₁<r₂[x].
21. Man nehme an T₁, T₂ sind irgendwelche zwei Transaktionen
in H. H ist strikt (strict) (ST; ist in ST; hat die
Striktheitseigenschaft), wenn und nur wenn w₁[x] p₂[x]
bedeutet e₁<p₂[x], wobei p₂[x] entweder r₂[x] oder w₂[x]
ist.
22. REC⊃ACA⊃ST wobei ⊃ eine strikt einzuhaltende Bedingung
(containment) bezeichnet (Dieses Theorem folgt unmittelbar
aus den Definitionen).
23. Zwei Phasen Sperren (Two Phase Locking (2PL) ist ein
Serieneinordnungsmechanismus, der zwei Typen von Sperren
aufweist: Schreibsperren (write locks) und Lesesperren
read locks). Es besteht darin, die Dauer der Transaktion
in zwei Phasen einzuteilen: in der ersten Phase werden die
Sperren aufgenommen (acquire), in der zweiten Phase werden
die Sperren freigegeben bzw. gelöst (release).
24. Eine History ist in einem streng-strikten Zwei-Phasen-Sperren
(Strong-Strict Two-phase Locking (S-S2PL)), wenn
und nur wenn für irgendeine in Konflikt stehende Operation
p₁[x], q₂[x] der Transaktionen T₁ und T₂ in H gilt, p₁[x]<q₂[x],
was bedeutet e₁<q₂[x]. (Bemerkung: eine History
ist eine Zwei-Phasen-Sperrung, wenn sie durch den Zwei-Phasen-Sperrmechanismus
erzeugt werden kann. Eine strikte
Zwei-Phasen-Sperrung erfordert, daß Schreibsperren, die im
Namen einer Transaktion ausgegeben wurden, bis zu ihrem
Ende nicht gelöst werden; Lesesperren können jedoch früher
gelöst werden, und zwar am Ende der Phase 1 des Zwei-Phasen-Sperrmechanismus.
Die streng-strikte Zwei-Phasen-Sperrung
erfordert, daß alle Sperren nicht gelöst werden, bevor
die Transaktion abgeschlossen ist (wenn sie entweder ausgeführt
oder abgebrochen ist.) Eine streng-strikte Zwei-Phasen-Sperrung
blockiert irgendwelche in Konflikt stehende
Operation bezüglich eines Datenfelds, auf das von einer
Transaktion zugegriffen wird, bis zum Ende der Transaktion.)
25. Ein Mechanismus blockiert, wenn er in einigen Situationen
Ereignisse in einer Transaktion verzögert, bis gewisse
Ereignisse in anderen Transaktionen auftreten.
26. Eine History-Eigenschaft ist inhärent blockierend,
wenn sie nur durch einen Blockiermechanismus erzwungen werden
kann.
27. Eine History-Eigenschaft ist nicht inhärent blockierend
(non inherently blocking), wenn sie durch irgendeinen
nicht blockierenden Mechanismus erzwungen werden kann. (Bemerkung:
Sowohl die Serienherstellbarkeit als auch die Wiederherstellbarkeit
sind nicht inhärent blockierend, da sie
immer sichergestellt werden können, indem eine verletzende
Transaktion zu irgendeinem Zeitpunkt vor ihrem Ende abgebrochen
wird. Diese Beobachtung ist die Basis für eine
optimistische Gleichzeitigkeitssteuerung (optimistic concurrency
control), bei der Transaktionen ohne ein gegenseitiges
Blockieren der jeweils anderen Ereignisse laufen und
nur abgebrochen werden, wenn sie beendet sind, wenn eine
Serienherstellbarkeit oder irgendeine andere gewünschte
Eigenschaft durch sie verletzt wird. Zwei-Phasen-Sperren
und ACA sind andererseits inhärent blockierend.)
28. Eine Transaktion wird entschieden (decided), wenn und
nur wenn sie entweder abgebrochen oder ausgeführt wird;
ansonsten ist sie nicht entschieden (undecided).
29. Eine nicht entschiedene Transaktion ist fertig (ready),
wenn und nur wenn sie ihre Verarbeitung abgeschlossen
hat und vorbereitet ist, entweder ausgeführt bzw. übertragen
oder abgebrochen zu werden; ansonsten ist sie aktiv.
30. Eine Transaktion ist nicht entschieden, wenn und nur
wenn sie entweder fertig oder aktiv ist.
31. Eine History hat die Ausführungsreihenfolgeneigenschaft
(Comitment Ordering (CO) property) (d. h., sie ist in
CO), wenn und nur wenn für irgendwelche in Konflikt stehende
Operationen p₁[x], q₂[x] von ausgeführten Transaktionen
T₁ bzw. T₂ p₁[x]<q₂[x] bedeutet e₁<e₂. Formelmäßig ausgedrückt
(e₁=c und e₂=c und p₁[x]<q₂[x]) bedeutet e₁<e₂.
32. SER⊃CO (d. h., die Ausführungsreihenfolge bedeutet
Serienherstellbarkeit).
Nachweis: Man nehme an, daß die History H eine CO ist und daß . . .→Ti→. . .→Tj→. . . ein (gerichteter) Weg im CSG (H) ist.
Nachweis: Man nehme an, daß die History H eine CO ist und daß . . .→Ti→. . .→Tj→. . . ein (gerichteter) Weg im CSG (H) ist.
Unter Verwendung der CO-Definition und der Induktion R auf
die Reihenfolge auf dem Pfad, läßt sich unmittelbar
schließen, daß Ci<cj ist. Man nehme nun an, daß H nicht
in SER ist. Durch das Serienherstellbarkeits-Theorem (1.18)
(ohne Verlust an Allgemeingültigkeit) gibt es einen Zyklus
T₁→T₂→. . .→Tn→T₁ im CSG(H). Man nehme an, daß Ti
bzw. Tj T₁ bzw. T₂ sind (man betrachte ein geeignetes Präfix
des oben angegebenen Pfades). Das bedeutet durch die
oben angegebene Beobachtung, daß c₁<c₂ ist. Man nehme
nun an, daß Ti bzw. Tj T₂ bzw. T₁ sind (man betrachte ein
geeignetes Suffix bzw. eine geeignete Nachsilbe des oben
angegebenen Pfades). Das bedeutet, daß c₂<c₁ ist. Die
zwei Implikationen widersprechen sich jedoch, da die Beziehung
"<" asymmetrisch ist. Deshalb ist CSG (H) azyklisch
und H ist in SER bdurch das Serienherstellbarkeits-Theorem.
Nun überprüfe man die folgende serienherstellbare nicht-CO-History,
um zu folgern, ob die Bedingung strict ist: w₁[x]
w₂[x] c₂ c₁.
33. Ein Gleichzeitigkeitssteuermechanismus für Zeitmarkierungsordnen
(TO) (Timestamp Ordering (TO) concurrency
control mechanism) erzeugt die Serienherstellbarkeit und
basiert auf einer Zeitmarkierung ts(Ti) (eine reelle
Zahl), die mit jeder Transaktion Ti verbunden ist; Zeitmarkierungen
sind unterschiedlich.
34. Für beliebige zwei in Konflikt stehende Operationen
p₁[x], q₂[x] jeder ausgeführten Transaktion T₁ bzw.
T₂ bedeutet t₂(T₁)<t₂(T₂), daß p₁[x]<q₂[x] ist.
(Bemerkung: Zeitmarkierungsordnen ist nicht blockierend,
da es durch Abbrechen von entweder T₁ oder T₂, nachdem alle
ihre Operationen ausgegeben worden sind, erzwungen werden
kann, und stellt die Basis für eine optimistische Gleichzeitigkeitssteuerung
auf Basis des Zeitmarkierungsordnens
(optimistic timestamp ordering based concurrency control)
dar, aber auch die Basis für blockierende zeitmarkierungsordnende
Mechanismen.
35. Für beliebige zwei in Konflikt stehende Operationen
p₁[x], q₂[x] irgendeiner Transaktion T₁ bzw. T₂ bedeutet
t₂(T₁)<t₂(T₂), daß p₁[x]<q₂[x]. (Merke: Diese
Regel für blockierendes Zeitmarkierungsordnen erfordert,
daß in Konflikt stehende Operationen entsprechend der Reihenfolge
der Zeitmarkierungen unabhängig davon, ob die
Transaktion ausgeführt wird oder nicht, verplant werden.)
36. Für beliebige zwei ausgeführte Transaktionen T₁ bzw.
T₂ mit zugehörigen in Konflikt stehenden Operationen bedeutet
ts(T₁)<ts(T₂), daß e₁<e₂ ist. Formell: (e₁=c
und e₂=c und (p₁[x], q₂[x] stehen in Konflikt) und
ts(T₁)<ts(T₂) bedeutet e₁<e₂.
37. Eine History hat die Ausführungsreihenfolge-Eigenschaft,
wenn und nur wenn sie durch einen Mechanismus erzeugt
wird, der sowohl der Regel für Zeitmarkierungsordnen
(34) als auch der Regel für Zeitmarkierungsausführungsordnen
(36) gehorcht. (Bemerkung: Dieses Theorem bedeutet,
daß, wenn die Regel für Zeitmarkierungsausführungsordnen
(TCO) durch irgendeinen Zeitmarkierungsordnungsmechanismus
erzwungen wird, nur Historien mit der Ausführungsordnungseigenschaft
erzeugt werden. Die TCO-Regel kann einfach
durch Verzögern von Ausführungsereignissen erzwungen werden,
wenn es notwendig ist, der Zeitmarkierungsordnung nachzukommen.)
38. Transaktionsende-Planer (TTS) (=transaction termination
scheduler) ist ein Systemelement, das den Satz fertiger
Transaktionen überwacht und entscheidet, wann und welche
Transaktion ausgeführt bzw. abgebrochen wird. In einer
Managerumgebung für viele Systemelemente nimmt dieses Systemelement
an Kernausführungsprozeduren (atomic commitment
procedures) im Namen seines Systemelementmanagers teil und
steuert (innerhalb des jeweiligen Systemelementmanagers)
die Ausführung der Entscheidung, die über die Kernausführung
für jede relevante Transaktion erhalten wurde.
39. Ein Transaktionsende-Planer für Ausführungsordnen
(COTTS) (=Commitment Ordering Transaction Terminating
Scheduler) führt die folgende Prozedur oder eine hierzu
äquivalente Prozedur aus:
- (a) Der COTTS hält einen Serienherstellbarkeitsgraphen bzw. Seriengraphen USC aller nicht entschiedenen Transaktionen aufrecht. Jede neue Transaktion, die von dem RM verarbeitet wird, wird als neuer Knoten im USG wiedergegeben; jeder Konflikt zwischen Transaktionen im USG wird durch eine gerichtete Kante wiedergegeben (eine Kante zwischen zwei Transaktionen kann somit mehrere Konflikte wiedergeben). USG (H)=(UT,C), wobei UT der Satz aller unentschiedenen Transaktionen in einer History H ist; und C (ein Untersatz von UT×UT) ist der Satz aus gerichteten Kanten zwischen Transaktionen in UT. Es gibt eine Kante von T₁ nach T₂, wenn und nur wenn T₂ in Konflikt mit T₁ ist. Der USG gibt alle Konflikte der Operationen bis zur Ausführung bzw. Übertragung wieder. Der Satz von Transaktionen, der als Ergebnis der Ausführung von T abgebrochen wurde (um eine zukünftige Verletzung der Ausführungsreihenfolge zu verhindern), wird wie nachfolgend definiert: ABORTco(T)={T′/T′→T ist in C}
Der COTTS führt die folgenden Schritte iterativ bzw.
schrittweise aus:
- (a) er selektiert jede fertige Transaktion (d. h. die ihre Verarbeitung abgeschlossen hat) T im USG (unter Verwendung irgendeines Kriteriums, möglicherweise der Prioritäten, die jeder Transaktion zugeordnet werden; eine Priorität kann dynamisch solange geändert werden, solange die Transaktion im USG ist) und führt sie aus;
- (b) er bricht alle Transaktionen in dem Satz ABORTco(T) ab, d. h alle Transaktionen (alle fertigen und aktiven) im USG, die eine Kante haben, die nach T geht; und (c) er entfernt jede entschiedene (decided) Transaktion (T) und die abgebrochenen Transaktionen) aus dem Graphen (sie gehören nicht zu USG gemäß der Definition).
40. Der COTTS erzeugt Historyn mit der Ausführungsreihenfolgeneigenschaft
(CO).
Nachweis: Der Nachweis wird durch Induktion bezüglich der Anzahl der Iterationen durch den COTTS erbracht, ausgehend von einer leeren Historie H₀ und einem leeren Graphen USG₀=USG(H₀). H₀ ist eine CO. Man nehme an, daß die History Hn die nach der Iteration nb erzeugt wurde, eine CO ist. Der USGn (in seiner UT-Komponente) enthält alle unentschiedenen Transaktionen in Hn. Jetzt wird eine zusätzliche Iteration durchgeführt, Zahl n+1, und die Transaktion T₁ wird in USGn durchgeführt (ohne Verlust an Allgemeingültigkeit). Hn+1 enthält alle Transaktionen in Hn und die neuen (nicht entschiedenen) Transaktionen, die nach dem abschließenden Schritt n (und in USGn+1 sind) erzeugt worden sind. Man teste die folgenden Fälle nach dem Abschließen der Iteration n+1:
Nachweis: Der Nachweis wird durch Induktion bezüglich der Anzahl der Iterationen durch den COTTS erbracht, ausgehend von einer leeren Historie H₀ und einem leeren Graphen USG₀=USG(H₀). H₀ ist eine CO. Man nehme an, daß die History Hn die nach der Iteration nb erzeugt wurde, eine CO ist. Der USGn (in seiner UT-Komponente) enthält alle unentschiedenen Transaktionen in Hn. Jetzt wird eine zusätzliche Iteration durchgeführt, Zahl n+1, und die Transaktion T₁ wird in USGn durchgeführt (ohne Verlust an Allgemeingültigkeit). Hn+1 enthält alle Transaktionen in Hn und die neuen (nicht entschiedenen) Transaktionen, die nach dem abschließenden Schritt n (und in USGn+1 sind) erzeugt worden sind. Man teste die folgenden Fälle nach dem Abschließen der Iteration n+1:
- (a) Man lasse T₂, T₃ (ohne Verlust an Allgemeingültigkeit) zwei ausgeführte Transaktionen in Hn sein. Wenn T₃ in Konflikt mit T₂ ist, dann c₂<c₃, da Hn=CO ist, und zwar durch die Induktionshypothese.
- (b) c₂<c₁ für jede (zuvor) ausgeführte Transaktion T₂ in Hn, mit der T₁ in Konflikt ist.
Der oben stehende Fall schöpft alle möglichen Paare von
in Konflikt stehenden ausgeführten Transaktionen in Hn1
aus. Deshalb ist Hn+1 eine CO.
Bemerkung: Wenn die Transaktion existiert, die nicht in einem Zyklus des USG vorkommt, dann existiert eine Transaktion T mit keinen Kanten von irgendeiner anderen Transaktion. T kann ohne Abbrechen irgendeiner anderen Transaktion ausgeführt werden, da ABORTco(T) leer ist. Wenn alle Transaktionen in USG auf Zyklen sind, muß zumindest eine Transaktion abgebrochen werden. Diese Situation scheint ungewöhnlich zu sein. In einer Umgebung mit vielen RMs, wenn der RM (TTS) nicht selbst die auszuführende Transaktion auswählt, sondern eine Nachfrage (über ein Kernausführungsprotokoll (=atomic commitment protocol)) empfängt, um eine Transaktion T im USG auszuführen, müssen alle Transaktionen in ABORTco(T), d. h. mit Kanten nach T, abgebrochen werden, wenn T ausgeführt wird (durch den COTTS). Der TTS kann wählen, daß T unmittelbar ausgeführt wird (die sogenannte nicht-blockierende Annäherung ohne Verzögerungen (=non-blocking without delays approach). Eine andere Annäherung bzw. Lösung (nicht-blockierend mit Verzögerungen) besteht darin, die Ausführung für eine gegebene Zeitdauer zu verzögern. Während der Verzögerung kann der Satz ABORTco(T) kleiner oder leer werden. Wenn T im Fertigzustand ist, kann der Satz nicht größer werden bzw. zunehmen. Anstatt einer unmittelbaren Ausführung oder Verzögerung der Ausführung für eine gegebene Zeitdauer (die in einem Abbruch resultieren kann) kann der TTS die Ausführung von T blockieren, bis alle Transaktionen im ABORTco(T) entschieden sind. Wenn jedoch ein anderer RM in der Umgebung ebenfalls blockiert, kann das in einem globalen Stillstand resultieren.
Bemerkung: Wenn die Transaktion existiert, die nicht in einem Zyklus des USG vorkommt, dann existiert eine Transaktion T mit keinen Kanten von irgendeiner anderen Transaktion. T kann ohne Abbrechen irgendeiner anderen Transaktion ausgeführt werden, da ABORTco(T) leer ist. Wenn alle Transaktionen in USG auf Zyklen sind, muß zumindest eine Transaktion abgebrochen werden. Diese Situation scheint ungewöhnlich zu sein. In einer Umgebung mit vielen RMs, wenn der RM (TTS) nicht selbst die auszuführende Transaktion auswählt, sondern eine Nachfrage (über ein Kernausführungsprotokoll (=atomic commitment protocol)) empfängt, um eine Transaktion T im USG auszuführen, müssen alle Transaktionen in ABORTco(T), d. h. mit Kanten nach T, abgebrochen werden, wenn T ausgeführt wird (durch den COTTS). Der TTS kann wählen, daß T unmittelbar ausgeführt wird (die sogenannte nicht-blockierende Annäherung ohne Verzögerungen (=non-blocking without delays approach). Eine andere Annäherung bzw. Lösung (nicht-blockierend mit Verzögerungen) besteht darin, die Ausführung für eine gegebene Zeitdauer zu verzögern. Während der Verzögerung kann der Satz ABORTco(T) kleiner oder leer werden. Wenn T im Fertigzustand ist, kann der Satz nicht größer werden bzw. zunehmen. Anstatt einer unmittelbaren Ausführung oder Verzögerung der Ausführung für eine gegebene Zeitdauer (die in einem Abbruch resultieren kann) kann der TTS die Ausführung von T blockieren, bis alle Transaktionen im ABORTco(T) entschieden sind. Wenn jedoch ein anderer RM in der Umgebung ebenfalls blockiert, kann das in einem globalen Stillstand resultieren.
41. Ein CORTTS ist ein COTTS, der Historien erzeugt, die
sowohl CO als auch behebbar sind. Der CORTTS hält einen
vergrößerten Serienherstellbarkeitsgraphen, wr-USG aufrecht:
wr-USG(H) = (UT,C,Cwr),
wobei
UT der Satz aller unentschiedenen Transaktionen in der
Historie H ist; und C ist der Satz der Kanten zwischen
Transaktionen im UT. Es gibt eine C-Kante von T₁ nach T₂,
wenn und nur wenn T nur in Nicht-wr-Konflikten mit T₁ ist.
Cwr ist der Satz von Kanten zwischen Transaktionen in UT,
der auch wr-Konflikte aufweisen kann. Es gibt eine Cwr-Kante
von T₁ nach T₂, wenn und nur wenn T₂ in wr-Konflikt
mit T₁ ist (und möglicherweise ebenfalls in Konflikt
mit anderen Typen). C und Cwr sind getrennt. Der Satz aus
Transaktionen, die als Ergebnis der Ausführung von T abgebrochen
wurden (um zukünftige Verletzungen der Ausführungsordnung
zu verhindern), wie wie folgt definiert:
ABORTco(T) = {T′/T′→T ist in C oder Cwr}
Die Definition von ABORTco(T) hat hier die gleiche Semantik
wie in dem jeweiligen Satz für COTTS. Der Satz der abgebrochenen
Transaktionen auf Grund der Wiederherstellbarkeit
als Ergebnis einer abgebrochenen Transaktion T′ wird wie
folgt definiert:
ABORTBEC(T′) = {T′′/T′→T′′ ist in Cwr oder T′′′→t′′
ist in Cwr, wobei T′′′ in ABORTREC(T)}.
Zu bemerken
ist, daß die Definition rekursiv ist. Dies gibt die Natur
kaskadierender Abbrüche gut wieder. Der CORTTS iteriert
die folgenden Schritte:
- (a) er wählt irgendeine fertige Transaktion T im wr-USG aus, die keine hineinkommende Cwr-Kante hat (d. h. so, daß T nicht in ABORTREC(T′) für irgendeine Transaktion T′ in ABORTco(T) ist; damit die Notwendigkeit eines späteren Abbruchs von T selbst vermieden wird, und führe sie aus;
- (b) unterbreche alle Transaktionen T′ (sowohl die fertigen als auch die aktiven) in ABORTco(T);
- (c) unterbreche alle Transaktionen T′′ (sowohl die fertigen als auch die aktiven) in ABORTREC(T′) für jedes T′, das im vorhergehenden Schritt abgebrochen wurde (kaskadierende Abbrüche); und
- (d) entferne alle entschiedenen Transaktionen (T und alle abgebrochenen Transaktionen) aus dem Graphen. (Bemerkung: Während jeder Iteration soll wr-USG alle Operationskonflikte bis zur Ausführung wiedergeben.)
42. Der CORTTS erzeugt CO, behebbare Historien.
Nachweis: die erzeugten Historien sind eine CO durch das Theorem 40, da sich der CORTTS von dem COTTS nur bezüglich des Abbrechens zusätzlicher Transaktionen während jeder Iteration unterscheidet (und zwar wegen des Wiederherstellbarkeitserfordernisses). Da alle Transaktionen, die die Wiederherstellbarkeit verletzen (Transaktionen in ABORTREC(T′)), für jede abgebrochene Transaktion T′ in ABORTco(T) während jeder Iteration abgebrochen werden (d. h. Transaktionen, die Daten lesen, welche durch eine abgebrochene Transaktion vor dem Abbruch geschrieben worden sind), sind die erzeugten Historien behebbar. (Bemerkung: Der CORTTS kann als nicht blockierend ohne Verzögerung, mit Verzögerung und als blockierender TTS mit vergleichbaren bzw. ähnlichen Ergebnissen implementiert werden, wie jene oben diskutierten in den Bemerkungen zu dem COTTS.)
Nachweis: die erzeugten Historien sind eine CO durch das Theorem 40, da sich der CORTTS von dem COTTS nur bezüglich des Abbrechens zusätzlicher Transaktionen während jeder Iteration unterscheidet (und zwar wegen des Wiederherstellbarkeitserfordernisses). Da alle Transaktionen, die die Wiederherstellbarkeit verletzen (Transaktionen in ABORTREC(T′)), für jede abgebrochene Transaktion T′ in ABORTco(T) während jeder Iteration abgebrochen werden (d. h. Transaktionen, die Daten lesen, welche durch eine abgebrochene Transaktion vor dem Abbruch geschrieben worden sind), sind die erzeugten Historien behebbar. (Bemerkung: Der CORTTS kann als nicht blockierend ohne Verzögerung, mit Verzögerung und als blockierender TTS mit vergleichbaren bzw. ähnlichen Ergebnissen implementiert werden, wie jene oben diskutierten in den Bemerkungen zu dem COTTS.)
43. Ein COTTS erzeugt Historien, die serienherstellbar
sind.
44. Ein CORTTS erzeugt Historien, die sowohl serienherstellbar
als auch behebbar sind.
45. Nicht-blockierende Planer auf der Basis von COTTS
und CORTTS erzeugen stillstandsfreie Ausführungen. (Bemerke:
Die TTS können mit irgendwelchen Systemelementzugriffsplanern
(RAS) (=resource access schedules) zum Planen von
Systemelementzugriffsoperationen kombiniert werden. Wenn
sowohl der TTS als auch der RAS nicht blockierend sind,
dann ist auch der kombinierte Mechanismus nicht blockierend
und deshalb stellt er Stillstandsfreiheit sicher. Eine Kombination
aus einem RAS und einem TTS kann den obenstehenden
RAS ersetzen, wenn eine gewisse Filterung (durch einen TTS)
erforderlich ist, um weitere History-Eigenschaften aufzuerlegen.
In diesem Fall kann der filternde TTS nur dann
eine Transaktion abbrechen. Aber es spielt keine Rolle,
ob der RAS seriell ausgebildete Abläufe erzeugen kann oder
nicht, da die obenstehenden COTTS Serienherstellbarkeit
garantieren. Der kombinierte Mechanismus kann wie folgt
ausgeführt werden: zuerst werden die Transaktionen durch
den RAS (oder durch einen RAS mit einem TTS) kontrolliert.
Die nicht abgebrochenen, fertigen Transaktionen werden von
dem COTTS als auszuführende Kandidaten betrachtet und Transaktionen
werden abgebrochen, wenn sie die Bedingungen des
COTTS verletzen. Man bemerke, daß, wenn der obenstehende
Planer auf S-S2PL beruht, dann der USG des zugehörigen
COTTS keinerlei Kanten aufweist. Das bedeutet, daß keine
Abbrüche durch den COTTS benötigt werden, wie man erwarten
kann, und ein COTTS unnötig ist. Das ist ein extremer
Fall. Andere Planertypen können andere Eigenschaften der
zugehörigen USGs mit sich bringen, um gewünschte Planungsmuster
und Systemeigenschaften bzw. Verhalten zu ermöglichen,
und zwar gemäß der Natur der auftretenden Transaktionen.
Es ist auch darauf hinzuweisen, daß, wenn der kombinierte
CC-Mechanismus die Wiederherstellbarkeitseigenschaft
garantiert, der COTTS ausreichend ist (es besteht keine
Notwendigkeit für den CORTTS, da die Wiederherstellbarkeit
gegeben ist). Wenn der Planer auf Zeitmarkierungsordnen
(TO) basiert und CO erwünscht ist, kann ein Vorteil aus den
existierenden Datenstrukturen gezogen werden, und weniger
aus dem unabhängigen Implementieren der USGs. In diesem
Fall kann CO erhalten werden, indem die Regel für Ausführungsordnen
mit Zeitmarkierung erzwungen wird.
46. Eine Umgebung (environment) weist ein System mit verteilten
Diensten auf, das eine Vielzahl von Systemelementmanagern
(RMs) aufweist, wobei eine Transaktion irgendeinen
Untersatz von teilnehmenden RMs überspannen kann. Jeder
RM in einer Umgebung hat einen Identifizierer (z. B. RM 2).
Ereignisse werden durch den Identifizierer der Transaktion
und durch den Identifizierer des RMs eingestuft (z. B. w3,2[x]
bedeutet eine Schreiboperation eines Datenfelds x durch
einen RM 2 im Namen der Transaktion T₃).
47. Wenn Pi,j[x], qk,1[y], j≠1 Operationen sind (jeweils
durch RMs j, 1), dann ist x≠y; d. h. diese Operation
können nicht in Konflikt stehen.
48. Eine globale Transaktion Tj besteht aus einem oder
mehreren lokalen Untertransaktionen (subtransactions). Eine
lokale Untertransaktion Ti,j greift auf alle Daten unter
der Steuerung eines RM j zu, die Ti zum Zugreifen benötigt,
und nur auf diese Datenfehler (d. h. alle ihre Ereignisse
werden mit j bezeichnet bzw. klassifiziert). Eine lokale
Untertransaktion gehorcht der Definition einer Transaktion.
Eine lokale Untertransaktion hat die Zustände einer Transaktion.
49. Eine lokale History wird durch einen einzelnen RM
erzeugt und über den Satz ihrer lokalen Untertransaktionen
definiert. Eine lokale History gehorcht der Definition einer
History in Abschnitt 2. Hi ist eine History, die von
einem RM i mit einer Beziehung <Hi erzeugt wurde. (Bemerke:
Es wird angenommen, daß ein Kernausführungsprotokoll (AC)
(atomic commitment protocol) angewendet wird, um die Kerneigenschaft
(atomicity) in der verteilten Umgebung sicherzustellen.)
50. Ein AC-Protokoll implementiert das folgende generelle
Schema immer, wenn über eine Transaktion entschieden
wird: jeder teilnehmende RM wählt entweder "ja" oder "nein",
(aber nicht beide) nachdem die zugehörige lokale Untertransaktion
den Fertig-Zustand erreicht hat, oder wählt "nein",
wenn sie nicht in der Lage ist, den "Fertig-Zustand" zu
erreichen. Die Transaktion wird von allen RMs ausgeführt,
wenn und nur wenn alle "ja" gewählt haben. Ansonsten wird
sie von allen RMs abgebrochen. (Bemerkungen: 2PC ist ein
spezieller Fall der AC. Ausfall- und Wiederherstellungsausgaben
werden hier nicht behandelt.) Die Tatsache, daß AC
verwendet wird, legt die Vermutung nahe, daß eine verteilte
Transaktion ein einziges Ausführungsereignis hat (obwohl
dies in der Wirklichkeit nicht immer sichergestellt ist).
Dies ist jedoch für Abbrüche nicht gegeben.
Beispiel: die folgenden zwei Transaktionen greifen beide auf Datenfelder bzw. Datensätze x und y zu. x, y sind unter der Kontrolle des RMs 1 bzw. des RMs 2. T₁ und T₂ und ihre lokalen Transaktionen sind die folgenden:
Beispiel: die folgenden zwei Transaktionen greifen beide auf Datenfelder bzw. Datensätze x und y zu. x, y sind unter der Kontrolle des RMs 1 bzw. des RMs 2. T₁ und T₂ und ihre lokalen Transaktionen sind die folgenden:
Die RMs erzeugen die nachfolgenden (lokalen) Historien H₁
und H₂:
RM 1: H₁ r1,1[x]w2,1[x]c₂c₁
RM 2: H₂ w2,2[y]c₂r1,2[y]c₁
RM 2: H₂ w2,2[y]c₂r1,2[y]c₁
Man bemerke, daß die History H₁ die Ausführungsreihenfolge
verletzt, was in einer (globalen) Serienherstellbarkeitsverletzung
resultiert. Die jeweilige globale History H wird
durch die folgenden Beziehungen der Reihenfolge beschrieben:
r1,1[x]<w2,1[x]<c₂<r1,2[y]<c₁
w2,2[y]<c₂
w2,2[y]<c₂
51. Für jede History-Eigenschaft X ist eine (globale)
History H in Lokal-X (ist lokales X), wenn und nur wenn
für jedes RM i in der Umgebung Hi (die History von RM i)
in X ist (ist X).
52. Eine History ist in X (globales X), wenn und nur wenn
sie in Lokal-X ist (d. h. Lokal-X=X), wobei X irgendeine
der nachfolgenden Eigenschaften ist: REC, ACA, ST, CO,
S-S2PL.
Nachweis: folgt aus der Definition von Lokal-X, Axiom 47, und den Definitionen von REC, ACA, ST, CO und S-S2PL.
Nachweis: folgt aus der Definition von Lokal-X, Axiom 47, und den Definitionen von REC, ACA, ST, CO und S-S2PL.
53. In Lokal-X zu sein, bedeutet nicht, daß eine History
in X ist (d. h. Lokal-x⊃X), wobei X eine der nachfolgenden
Eigenschaften ist: SER, 2PL, S2PL.
Nachweis: Man lasse H die History sein, wie im obenstehenden Beispiel. Die History H ist Lokal-SER, Lokal-2PL und ein Lokal-S2PL, da sowohl H₁ und H₂ in SER, 2PL und S2PL sind. H ist jedoch nicht in SER, 2PL oder S2PL. CSC (H) hat einen Zyklus, so daß H nicht in SER ist. Wenn S in 2PL ist, ist es auch in SER und es liegt ein Widerspruch vor.
Nachweis: Man lasse H die History sein, wie im obenstehenden Beispiel. Die History H ist Lokal-SER, Lokal-2PL und ein Lokal-S2PL, da sowohl H₁ und H₂ in SER, 2PL und S2PL sind. H ist jedoch nicht in SER, 2PL oder S2PL. CSC (H) hat einen Zyklus, so daß H nicht in SER ist. Wenn S in 2PL ist, ist es auch in SER und es liegt ein Widerspruch vor.
54. SER⊃Lokal-CO. Anders ausgedrückt, wenn eine History
in Lokal-CO ist, dann ist sie global seriell angeordnet.
Dieses Theorem folgt aus dem Ausführungsreihenfolge-Theorem
und dem Theorem 52. (Bemerke: Lokal-CO kann durch
RMs aufrechterhalten werden, indem irgendwelche Typen von
CO-Mechanismen verwendet werden.)
55. Eine dauerhafte Risikotransaktion (permanent risk
transaction (PR)) ist eine Transaktion, die eine potentielle
Verletzung der Serieneigenschaft verursacht, wenn sie
ausgeführt wird, und in dieser Situation für immer bleibt.
Die Eigenschaft bezieht sich auf den Systemelementmanager.
Das obenstehende Erfordernis bedeutet, daß jeder
RM in der Umgebung die folgende Ausführungsstrategie (CS)
(=commitment strategy): ausgehend von einer History mit
keinen entschiedenen Transaktionen, wird jede fertige Transaktion
ausgeführt (für gewöhnlich wird der RM über ein AC-Protokoll
nachgefragt, um eine Transaktion auszuführen).
Jede andere Transaktion, die ein PR ist, wird abgebrochen.
(Das Geheimaxiom (hidden axiom) wird hier angenommen, daß
Systemelemente nicht unnötigerweise gehalten werden. Ansonsten
können PR-Transaktionen markiert werden und für
immer nicht entschieden bleiben.) Dann wird eine andere
(irgendeine) fertige Transaktion, die keine Verletzung der
Serieneigenschaft verursacht, ausgeführt. Wieder werden
alle PR-Transaktionen abgebrochen, usw.
56. Wenn nur eine Information über lokale Serieneigenschaft
erhältlich für jeden RM in der Umgebung ist und wenn
Kernausführung (atomic commitment) angewendet wird, dann
ist CS eine notwendige Strategie für jeden RM, um eine globale
Serieneigenschaft sicherzustellen. CS erzeugt Lokal-CO-Historien
(globale Historien in Lokal-CO).
Nachweis: Das Serieneigenschafts-Theorem bedeutet, daß der Serieneigenschaftsgraph all die notwendigen Informationen über die Serieneigenschaft bzw. Serienherstellbarkeit zur Verfügung stellt. Unter der Annahme, daß jeder RM, oder besser RM i, seinen lokalen Serieneigenschaftsgraphen SGi "weiß" (er enthält alle ausgeführten und nicht entschiedenen Transaktionen) und seine Untergraphen CSGi (die nur ausgeführte Transaktionen enthalten) und USGi (der alle nicht entscheidenen Transaktionen enthält). Es wird auch angenommen (beruhend auf AC), daß jeder RM eine Transaktion ausgeführt hat, wenn und nur wenn er "Ja" gewählt (voted) hat und "weiß", daß alle anderen RMs, die an einer Transaktion teilnehmen, "Ja" gewählt haben, und sie schließlich ausgeführt hat. Das Ziel für jeden RM ist es, einen zyklusfreien (globalen) CSG sicherzustellen (einen Seriengraphen mit ausgeführten Transaktionen), in dem jede Aktion vermieden wird, die einen globalen Zyklus (lokale Zyklen im CSGi werden durch den RM i beseitigt) erzeugt. Zuerst ist CS trivialerweise notwendig aus den folgenden Gründen: da eine PR-Transaktion für immer PR bleibt (wegen Definition), kann sie nicht ausgeführt werden und muß abgebrochen werden, um Systemelemente freizugeben. Auf der anderen Seite kann jede fertige Transaktion, die keine Verletzung der Serieneigenschaft verursachen kann, ausgeführt werden. Es ist nun notwendig, permanente Risikotransaktionen (PR) zu identifizieren, während CS implementiert wird. Man kann zeigen, daß dies bedeutet, daß jeder RM als COTTS arbeitet. Jeder RM implementiert CS wie folgt:
Nachweis: Das Serieneigenschafts-Theorem bedeutet, daß der Serieneigenschaftsgraph all die notwendigen Informationen über die Serieneigenschaft bzw. Serienherstellbarkeit zur Verfügung stellt. Unter der Annahme, daß jeder RM, oder besser RM i, seinen lokalen Serieneigenschaftsgraphen SGi "weiß" (er enthält alle ausgeführten und nicht entschiedenen Transaktionen) und seine Untergraphen CSGi (die nur ausgeführte Transaktionen enthalten) und USGi (der alle nicht entscheidenen Transaktionen enthält). Es wird auch angenommen (beruhend auf AC), daß jeder RM eine Transaktion ausgeführt hat, wenn und nur wenn er "Ja" gewählt (voted) hat und "weiß", daß alle anderen RMs, die an einer Transaktion teilnehmen, "Ja" gewählt haben, und sie schließlich ausgeführt hat. Das Ziel für jeden RM ist es, einen zyklusfreien (globalen) CSG sicherzustellen (einen Seriengraphen mit ausgeführten Transaktionen), in dem jede Aktion vermieden wird, die einen globalen Zyklus (lokale Zyklen im CSGi werden durch den RM i beseitigt) erzeugt. Zuerst ist CS trivialerweise notwendig aus den folgenden Gründen: da eine PR-Transaktion für immer PR bleibt (wegen Definition), kann sie nicht ausgeführt werden und muß abgebrochen werden, um Systemelemente freizugeben. Auf der anderen Seite kann jede fertige Transaktion, die keine Verletzung der Serieneigenschaft verursachen kann, ausgeführt werden. Es ist nun notwendig, permanente Risikotransaktionen (PR) zu identifizieren, während CS implementiert wird. Man kann zeigen, daß dies bedeutet, daß jeder RM als COTTS arbeitet. Jeder RM implementiert CS wie folgt:
- (a) Basisstufe: Man nehme an, daß CSGi keine Transaktion enthält. Führe jede fertige Transaktion T aus. Nehme an, daß vor dem Ausführen von T eine Kante T′→T in USGi vorhanden ist. Es ist möglich, daß es eine Kante T→T′ in einigen USGj von einigen RM j gibt, wobei j≠i ist, aber RM i kann dies nicht überprüfen. Das bedeutet, daß das spätere Ausführen von T′ einen Zyklus in CSG verursachen kann. Da das Ausführen von T nicht rückgängig gemacht werden kann (siehe Transaktionszustandseinschwingen bzw. Übergänge in Abschnitt 3), kann kein Ereignis diese Situation ändern. Deshalb ist T′ eine PR und RM i muß sie abbrechen.
- (b) Induktive Stufe: Angenommen, daß CSGi zumindest eine Transaktion enthält. Es kann gezeigt werden, daß keine fertige Transaktion eine Verletzung der Serieneigenschaft verursachen kann, wenn sie ausgeführt wird, und deshalb kann sie ausgeführt werden (vorausgesetzt, daß eine Übereinstimmung für die Ausführung durch alle teilnehmenden RMs über den AC erreicht wird): führe jede fertige Transaktion T aus. Überprüfe jede vorher ausgeführte Transaktion T′′. Es ist unmöglich, einen Pfad T→. . .→T′′ in CSGi oder in CSGj für jeden RM j, wobei j≠i ist, zu haben, da, wenn dieser Pfad in der Stufe existieren würde, wenn T′′ ausgeführt wird, er während dieser Stufe abgetrennt werden würde, wenn alle Transaktionen mit Kanten nach T′′ abgeblockt werden (unter Einsatz der Argumente, die für die Basisstufe oben gegeben wurden), und da keine hinzukommenden Kanten nach T′′ erzeugt werden hätten können, nachdem T′′ ausgeführt worden ist. Deshalb kann nur ein Pfad T′′→. . .→T in CSGi oder in CSGj für jeden RM j existieren, wobei j≠i ist. Das heißt, daß kein Zyklus in CSG durch T und T′′ erzeugt werden kann und daß kein T′′ abgebrochen zu werden braucht (was die Strategie verletzen würde). Nachfolgend wird irgendeine nicht entschiedene Transaktion T′ (USGi) überprüft. Man nehme an, daß vor dem Ausführen von T eine Kante T′→T in USGi vorhanden ist. Wenn wiederum die Argumente für die Basisstufe verwendet werden, ist T′ eine PR und der RM i muß sie abbrechen (indem er "Nein" über AC wählt). Wenn es keine Kante von T′ nach T gibt, dann wird auch keine Entscheidung betreffend T′ in dieser Stufe ausgeführt.
Die obenstehenden Argumente stellen sicher, daß keine fertige
Transaktion eine Verletzung der Serieneigenschaft verursachen
kann, wenn sie zu Anfang der induktiven Stufe ausgeführt
wird, wie angenommen wurde, und deshalb konnte (irgendeine
fertige Transaktion) T ausgeführt werden.
In der CS-Implementation oben werden alle PR-Transaktionen
identifiziert und in jeder Stufe abgebrochen. Durch Überprüfen
dieser Implementation konnte festgestellt werden,
daß sie als ein COTTS funktioniert. Deshalb erzeugt jeder
RM wegen des Theorems 40 eine CO-History und die erzeugte
(globale) History ist eine Lokal-CO (in Lokal-CO). Die einzig
mögliche Abweichung von dieser obenstehenden Implementation
ist durch Abbrechen zusätzlicher Transaktionen in jeder
Stufe gegeben. Eine solche Abweichung hält noch die
erzeugte History in Lokal-CO.
57. Wenn die RMs eine Gleichzeitigkeitskontrolle nur mittels
Kernausführung (atomic commitment) koordinieren, dann
ist ein lokales Ausführungsordnen (local commitment ordering)
eine notwendige und ausreichende Bedingung für eine
(globale) Serienherstellung. Diese Schlußfolgerung folgt
aus den Theoremen 52, 55 und 56.
58. Wenn die RMs eine gleichzeitige Kontrolle nur über
eine Kernausführung steuern, dann sind lokales Ausführungsordnen
und lokales Wiederherstellen eine notwendige und
ausreichende Bedingung für eine (globale) Serienherstellbarkeit
und Wiederherstellbarkeit. Diese Schlußfolgerung folgt
aus dem Theorem 52.
59. Ein globaler Stillstand ist ein Stillstand, der durch
ein gegenseitiges Blockieren von zwei oder mehreren lokalen
Untertransaktionen in zumindest zwei unterschiedlichen
Transaktionen von zumindest zwei unterschiedlichen RMs verursacht
wird. (Bemerkungen: Da ein Ausführungsordnen nicht
inhärent blockierend ist, kann es in einer nicht blockierenden
Art und Weise z. B. durch Abbrüche oder durch Abbrüche
nach Verzögerungen implementiert bzw. bewerkstelligt werden.
Wenn die Planer aller RMs in der Umgebung nicht blockierend
sind (mit der Ausnahme eines einzigen, der blockierend
sein kann), sind die Ausführungen stillstandsfrei.
Einen anderen Weg für die Implementierung von Ausführungsordnen
besteht in der Verwendung von blockierenden CO-Bestätigern
(blocking CO certifiers) (CO-Planern mit nicht
blockierenden RAS und blockierenden TTS). Wenn die Planer
für alle RMs Bestätiger sind und zumindest zwei davon blockierend
sind, können globale Stillstände auftreten (sogar
dann, wenn jeder RM seinen eigenen Stillstand löst bzw.
auflöst). In diesem Fall sind alle Transaktionen, die mit
dem Stillstand beteiligt sind, in einem Fertig-Zustand.
Diese Tatsache erlaubt es, Stillstände (deadlocks) während
einer Kernausführung (atomic commitment) aufzulösen.
Wenn Planer von zwei oder mehreren RMS blockieren, wobei
einer zumindest einen blockierenden RAS hat (z. B. S-S2PL.
oder CO, BTO basierend), dann können auch aktive Transaktionen
an einem globalen Stillstand beteiligt sein. In diesem
Fall sind Nachrichten über Kernausführungen nicht ausreichend
für eine Stillstandsauflösung und zusätzliche Nachrichten,
die das Vorhandensein von Blöcken bzw. Blockierungen
signalisieren, sind erforderlich (möglicherweise aufgesetzt
(piggy-backed) auf AC-Nachrichten anderer Transaktionen).
Ausführungsordnen stellt einen Weg zum Erreichen einer globalen
Serienherstellbarkeit zur Verfügung, und das auch
durch stillstandsfreie Mechanismen. Das erlaubt einen Kompromiß
zwischen blockierenden Techniken, die Stillständen
unterworfen sind, und nicht blockierenden Implementationen,
die stillstandsfrei sind aber kaskadierenden Abbrüchen unterzogen
sind. Um eine Serienherstellbarkeit sicherzustellen,
sind keine Dienste, aber eine Kernausführung für die
Koordination des Transaktionsmagements durch RMs notwendig,
wenn jeder RM ein Ausführungsordnen (commitment ordering)
unterstützt. Ein Ausführungsordnen ist für eine globale
Serienherstellbarkeit jedoch notwendig, wenn nur eine
Kernausführung für die RM-Koordination verwendet wird.
Claims (21)
1. Verfahren zum Betreiben eines digitalen Prozessors
in einem Vielprozessorverarbeitungssystem, in dem ein globaler
Koordinator mit einer Vielzahl von Transaktionsprozessoren
mittels "Vorbereitung"- und "Ausführungs"-Befehlen kommuniziert,
um Transaktionen zu verarbeiten, die in Konflikt
stehende Komponentenoperationen aufweisen können, wobei
das Verfahren die folgenden Schritte aufweist:
- a) Beginnen der Erzeugung von Ergebnissen der Transaktionen;
- b) Bestimmen einer Ausführungsreihenfolge für die Transaktionen, wenn eine der Transaktionen eine erste Operation hat, die mit einer zweiten Operation in einer anderen der Transaktionen in Konflikt steht, wobei die in Konflikt stehenden Operationen eine Durchführungsreihenfolge haben und wobei die Ausführungsreihenfolge die gleiche ist wie die Durchführungsreihenfolge;
- c) Eingeben in den Zustandsspeicher des verarbeitenden Systems erzeugte Ergebnisse einer ausgewählten dieser Transaktionen;
- d) Abbrechen eines Abbruchsatzes aus Transaktionen, für die die Ausführung der Ausführungsreihenfolge und das Ausführen der einen ausgewählten Transaktionen aus den Transaktionen entgegensteht.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß der Schritt des Eingebens in den Zustandspeicher das
Aktualisieren einer Datenbankdatei umfaßt.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
der Schritt des Eingebens in den Zustandsspeicher das Ändern
des Speicherzustands einen Datenobjekts enthält.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß die ausgewählte Transaktion aus den Transaktionen durch
Vergleichen vorgegebener Prioritäten ausgewählt wird, die
den Transaktionen zugewiesen sind.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß die ausgewählte Transaktion aus den Transaktionen auf
der Basis einer Reihenfolge der Transaktionen in einer Liste
ausgewählt wird.
6. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß die ausgewählte Transaktion aus den Transaktionen in
Antwort auf ein Ausführungskommando von einem Koordinator
ausgewählt wird.
7. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß die ausgewählte Transaktion aus den Transaktionen ausgewählt
wird, um die Anzahl der Transaktionen zu minimieren,
die im Schritt b) abgebrochen werden.
8. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß das Verfahren weiterhin umfaßt den Schritt des Empfangens
einer Nachfrage von einem Koordinator, um eine spezifische
Transaktion aus den Transaktionen vorzubereiten; den
Schritt des Verzögerns einer Bestätigung der Beendigung
der Vorbereitung der spezifizierten Transaktion aus den
Transaktionen, bis keine der Transaktionen, die noch nicht
beim Schritt c) ausgeführt worden sind oder beim Schritt d)
abgebrochen worden sind, im Widerspruch zu der vordefinierten
Ausführungsreihenfolge sind; den Schritt des Ausführens
der spezifizierten Transaktion der Transaktionen.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet,
daß das Verzögern beendet wird, wenn das Verzögern für eine
vorgegebene Zeitdauer fortgesetzt wird.
10. Verfahren nach Anspruch 8, dadurch gekennzeichnet,
daß das Verzögern beendet wird, wenn ein Ende-Signal von
dem Koordinator empfangen wird.
11. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß eine Leseoperation einer zweiten Transaktion der Transaktionen
Schreibdaten liest, die von einer Schreiboperation
einer ersten Transaktion der Transaktionen geschrieben
wurden, bevor die erste Transaktion der Transaktionen ausgeführt
wird, und daß das Verfahren weiterhin aufweist die
Schritte des Abbrechens aller dieser Transaktionen, die von
abgebrochenen Transaktionen geschriebene Daten gelesen haben.
12. Verfahren zum Betreiben eines digitalen Computers,
um Transaktionen in einem Rechnersystem zu verarbeiten,
wobei das Verfahren die folgenden Schritte aufweist:
- a) Empfangen von Nachfragen zum Verarbeiten der Transaktionen;
- b) Beginnen der Vorbereitung von Ergebnissen der Transaktionen;
- c) Bestimmen einer Ausführungsordnung für die Transaktionen, wenn eine Transaktion der Transaktionen eine erste Operation hat, die in Konflikt mit einer zweiten Operation in einer anderen Transaktion der Transaktionen steht, wobei die in Konflikt stehenden Operationen eine Durchführungsreihenfolge haben, und die Ausführungsordnung die gleiche ist wie die Durchführungsreihenfolge, und wobei die Ausführungsordnung durch die Vorbereitung bzw. Erzeugung von Ergebnissen für Transaktionen mit in Konflikt stehenden Operationen bestimmt wird;
- d) Speichern von Daten im Speicher, die die Ausführungsordnung bestimmen;
- e) Eingeben in den Zustandsspeicher des Rechnersystems von erzeugten Ergebnissen einer ausgewählten Transaktion der Transaktionen;
- f) Überprüfen der in dem Speicher gespeicherten Daten, um zu bestimmen, ob eine Ausführung für andere Transaktionen der Transaktionen widersprüchlich zu der Ausführung der ausgewählten Transaktion aus den Transaktionen und zu der Ausführungsordnung der Transaktionen ist, und, wenn die Ausführung für andere Transaktionen aus den Transaktionen widersprüchlich zu der Ausführung der ausgewählten Transaktion aus den Transaktionen und der Ausführungsordnung für die Transaktionen ist, Abbrechen der anderen Transaktionen aus den Transaktionen, für die die Ausführung entgegen der Ausführungsordnung und der Ausführung der ausgewählten Transaktion aus den Transaktionen ist.
13. Verfahren nach Anspruch 15, dadurch gekennzeichnet,
daß die Daten in dem Speicher in der Form eines gerichteten
Graphen abgespeichert werden und daß das Verfahren weiterhin
den Schritt des Entfernens von Daten bezüglich ausgeführter
und abgebrochener Transaktionen von dem Graphen
umfaßt.
14. Verfahren nach Anspruch 12, dadurch gekennzeichnet,
daß von einem Koordinator eine Nachfrage empfangen wird,
eine spezifizierte Transaktion der Transaktion vorzubereiten,
und daß die Anerkennung der Beendigung der Vorbereitung
der spezifizierten Transaktion aus den Transaktionen
verzögert wird, bis keine der Transaktionen, die bis jetzt
weder im Schritt d) ausgeführt noch im Schritt e) abgebrochen
wurden, widersprüchlich zu der vordefinierten Ausführungsordnung
sind, und daß die spezifizierte Transaktion
aus den Transaktionen ausgeführt wird.
15. Verfahren zum Betreiben eines digitalen Computers,
um Transaktionen in einem Computersystem zu verarbeiten,
wobei das Verfahren die folgenden Schritte aufweist:
- a) Empfangen von Nachfragen, um Transaktionen durchzuführen;
- b) Durchführungsplanen von Operationen der Transaktionen auf einer Echtzeitbasis, so daß Operationen einiger Transaktionen in Übereinstimmung mit der Verfügbarkeit von Systemelementen des digitalen Computers vor der Ausführung anderer Transaktionen durchgeführt werden;
- c) Bestimmen einer Ausführungsreihenfolge für die Transaktionen, wenn eine der Transaktionen aus den Transaktionen eine erste Operation aufweist, die mit einer zweiten Operation in einer anderen Transaktion aus den Transaktionen in Konflikt steht, wobei die in Konflikt stehenden Operationen eine Durchführungsreihenfolge haben, und wobei die Ausführungsreihenfolge die gleiche ist wie die Durchführungsreihenfolge; und
- d) Erzwingen der Ausführung von ausgewählten Transaktionen aus den Transaktionen in Übereinstimmung mit der Ausführungsreihenfolge.
16. Digitales Computersystem zum Verarbeiten von Transaktionen,
die in Konflikt stehende Komponentenoperationen
aufweisen können, in einem Multiprozessorverarbeitungssystem,
in dem ein Koordinator mit einer Vielzahl von Transaktionsprozessoren
mittel "Vorbereitungs-" und "Ausführungs"-Kommandos
kommuniziert, wobei das digitale Computersystem
in Kombination aufweist:
- a) eine Einrichtung zum Planen der Durchführung von Operationen der Transaktionen auf einer Echtzeitbasis, so daß Operationen von einigen Transaktionen in Übereinstimmung mit der Erhältlichkeit von Systemelementen des digitalen Computersystems durchgeführt werden, bevor andere Transaktionen ausgeführt werden;
- b) eine Einrichtung zum Bestimmen einer Ausführungsreihenfolge der Transaktionen, wenn eine Transaktion aus den Transaktionen eine erste Operation hat, die in Konflikt mit einer zweiten Operation einer anderen Transaktion aus den Transaktionen steht, wobei die in Konflikt stehenden Operationen eine Reihenfolge der Durchführung haben, und wobei die Ausführungsreihenfolge die gleiche ist wie die Reihenfolge der Durchführung; und
- c) eine Einrichtung zum Erzwingen der Ausführung von ausgewählten Transaktionen aus den Transaktionen in Übereinstimmung mit der Ausführungsreihenfolge, wobei die Einrichtung zum Erzwingen eine Einrichtung zum Verzögern der Ausführung von ausgewählten Transaktionen und eine Einrichtung zum Abbrechen eines Abbruchsatzes der Transaktionen aufweist, für die Ausführung im Gegensatz zu der Ausführungsreihenfolge und der Ausführung der ausgewählten Transaktionen steht.
17. Digitales Computersystem nach Anspruch 16, dadurch
gekennzeichnet, daß die Einrichtung zum Verzögern eine Einrichtung
zum Abbrechen der ausgewählten Transaktionen nach
einer Verzögerung einer vorgegebenen Zeitdauer enthält.
18. Digitales Computersystem nach Anspruch 16 oder Anspruch
17, dadurch gekennzeichnet, daß die Einrichtung zum
Verzögern eine Einrichtung zum Verzögern der Bestätigung
der Beendigung der Vorbereitung der ausgewählten Transaktionen
aufweist, bis keine der Transaktionen, die noch nicht
ausgeführt worden sind oder abgebrochen sind, im Gegensatz
zu der vorgegebenen Ausführungsreihenfolge und der Ausführung
der nachgefragten Transaktion aus den Transaktionen
sind.
19. Digitales Computersystem nach Anspruch 16, dadurch
gekennzeichnet,
daß die Einrichtung zum Bestimmen der Ausführungsreihenfolge
eine Einrichtung zum Detektieren der
Durchführung einer Operation enthält, die mit einer vorher
durchgeführten Operation in Konflikt steht.
20. Digitales Computersystem nach Anspruch 19, dadurch
gekennzeichnet, daß die Einrichtung zum Detektieren eine
Einrichtung zum Vergleichen einer Adresse einer Speicherzugriffsoperation
für eine Transaktion mit den Adressen
von Speicherzugriffsoperationen, die vorher für andere
Transaktionen durchgeführt worden sind, enthält.
21. Digitales Computersystem nach Anspruch 16, dadurch
gekennzeichnet, daß die Einrichtung zum Abbrechen eine Einrichtung
zum Abbrechen aller Transaktionen enthält, die
Daten gelesen haben, die von abgebrochenen Transaktionen
geschrieben worden sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US70339491A | 1991-05-21 | 1991-05-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4216871A1 true DE4216871A1 (de) | 1993-01-21 |
DE4216871C2 DE4216871C2 (de) | 2001-09-06 |
Family
ID=24825204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4216871A Expired - Fee Related DE4216871C2 (de) | 1991-05-21 | 1992-05-21 | Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen |
Country Status (4)
Country | Link |
---|---|
US (1) | US5504900A (de) |
JP (1) | JPH05197604A (de) |
DE (1) | DE4216871C2 (de) |
GB (1) | GB2256514B (de) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4420451A1 (de) * | 1993-07-08 | 1995-01-19 | Fujitsu Ltd | Sperrmechanismus für ein CHECK-IN/CHECK-OUT-Modell |
DE19681704B4 (de) * | 1995-12-26 | 2009-12-31 | Intel Corporation, Santa Clara | Verfahren zum Ausführen eines Programms aus einem nichtflüchtigen Speicher heraus |
Families Citing this family (143)
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 |
US6920467B1 (en) * | 1993-11-26 | 2005-07-19 | Canon Kabushiki Kaisha | Avoiding unwanted side-effects in the updating of transient data |
JP3167259B2 (ja) | 1994-05-06 | 2001-05-21 | 三菱電機株式会社 | 音響再生装置 |
JP3085085B2 (ja) * | 1994-05-09 | 2000-09-04 | 三菱電機株式会社 | データアクセス装置及び分散データベースシステム |
JP3392236B2 (ja) * | 1994-11-04 | 2003-03-31 | 富士通株式会社 | 分散トランザクション処理システム |
US6275843B1 (en) * | 1994-12-22 | 2001-08-14 | Unisys Corporation | Method and apparatus for processing multiple service requests within a global transaction by a single server application program instance |
GB2301909A (en) * | 1995-06-07 | 1996-12-18 | Ibm | Reduction of logging in distributed transaction processing systems |
US5893113A (en) * | 1996-04-25 | 1999-04-06 | Navigation Technologies Corporation | Update transactions and method and programming for use thereof for incrementally updating a geographic database |
US5734896A (en) * | 1996-04-30 | 1998-03-31 | Oracle Corporation | Recovery of a remotely initiated distributed prepared transaction by status report from a second database to an external coordinator |
US5903749A (en) * | 1996-07-02 | 1999-05-11 | Institute For The Development Of Emerging Architecture, L.L.C. | Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs |
FR2751106B1 (fr) | 1996-07-11 | 1999-01-08 | Alsthom Cge Alcatel | Methode de planification de transactions distribuees |
US5970229A (en) * | 1996-09-12 | 1999-10-19 | Cabletron Systems, Inc. | Apparatus and method for performing look-ahead scheduling of DMA transfers of data from a host memory to a transmit buffer memory |
US5941952A (en) * | 1996-09-12 | 1999-08-24 | Cabletron Systems, Inc. | Apparatus and method for transferring data from a transmit buffer memory at a particular rate |
US5966546A (en) | 1996-09-12 | 1999-10-12 | Cabletron Systems, Inc. | Method and apparatus for performing TX raw cell status report frequency and interrupt frequency mitigation in a network node |
US5999980A (en) * | 1996-09-12 | 1999-12-07 | Cabletron Systems, Inc. | Apparatus and method for setting a congestion indicate bit in an backwards RM cell on an ATM network |
US5995995A (en) * | 1996-09-12 | 1999-11-30 | Cabletron Systems, Inc. | Apparatus and method for scheduling virtual circuit data for DMA from a host memory to a transmit buffer memory |
US5922046A (en) * | 1996-09-12 | 1999-07-13 | Cabletron Systems, Inc. | Method and apparatus for avoiding control reads in a network node |
US5920863A (en) * | 1997-05-31 | 1999-07-06 | International Business Machines Corporation | System and method for supporting transactions for a thin client lacking a persistent store in a distributed object-oriented environment |
US5999931A (en) * | 1997-10-17 | 1999-12-07 | Lucent Technologies Inc. | Concurrency control protocols for management of replicated data items in a distributed database system |
US6085263A (en) * | 1997-10-24 | 2000-07-04 | Compaq Computer Corp. | Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor |
US6088771A (en) * | 1997-10-24 | 2000-07-11 | Digital Equipment Corporation | Mechanism for reducing latency of memory barrier operations on a multiprocessor system |
US6055605A (en) * | 1997-10-24 | 2000-04-25 | Compaq Computer Corporation | Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches |
US6209065B1 (en) | 1997-10-24 | 2001-03-27 | Compaq Computer Corporation | Mechanism for optimizing generation of commit-signals in a distributed shared-memory system |
US6108737A (en) * | 1997-10-24 | 2000-08-22 | Compaq Computer Corporation | Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system |
US6286090B1 (en) | 1998-05-26 | 2001-09-04 | Compaq Computer Corporation | Mechanism for selectively imposing interference order between page-table fetches and corresponding data fetches |
US6243702B1 (en) * | 1998-06-22 | 2001-06-05 | Oracle Corporation | Method and apparatus for propagating commit times between a plurality of database servers |
US6418538B1 (en) * | 1998-07-06 | 2002-07-09 | Intel Corporation | Method and system for scheduling transactions over a half duplex link |
US6138118A (en) * | 1998-07-30 | 2000-10-24 | Telcordia Technologies, Inc. | Method and system for reconciling concurrent streams of transactions in a database |
US6286110B1 (en) * | 1998-07-30 | 2001-09-04 | Compaq Computer Corporation | Fault-tolerant transaction processing in a distributed system using explicit resource information for fault determination |
US6671704B1 (en) | 1999-03-11 | 2003-12-30 | Hewlett-Packard Development Company, L.P. | Method and apparatus for handling failures of resource managers in a clustered environment |
US6411981B1 (en) | 1999-03-12 | 2002-06-25 | Compaq Computer Corporation | Method and apparatus for conducting a transaction between homogeneous and/or heterogeneous transaction processing systems using asynchronous pull of a transaction transfer |
US6295548B1 (en) * | 1999-03-12 | 2001-09-25 | Compaq Computer Corporation | Detection of an imported transaction for finding the global transaction identifier |
US6470342B1 (en) | 1999-03-12 | 2002-10-22 | Compaq Computer Corporation | Process of maintaining a distributed map of transaction identifiers and using hashing to access these maps |
US6874104B1 (en) | 1999-06-11 | 2005-03-29 | International Business Machines Corporation | Assigning recoverable unique sequence numbers in a transaction processing system |
US6938256B2 (en) | 2000-01-18 | 2005-08-30 | Galactic Computing Corporation | System for balance distribution of requests across multiple servers using dynamic metrics |
US6823356B1 (en) | 2000-05-31 | 2004-11-23 | International Business Machines Corporation | Method, system and program products for serializing replicated transactions of a distributed computing environment |
US6816905B1 (en) * | 2000-11-10 | 2004-11-09 | Galactic Computing Corporation Bvi/Bc | Method and system for providing dynamic hosted service management across disparate accounts/sites |
US8538843B2 (en) * | 2000-07-17 | 2013-09-17 | Galactic Computing Corporation Bvi/Bc | Method and system for operating an E-commerce service provider |
US6701387B1 (en) | 2000-08-31 | 2004-03-02 | Hewlett-Packard Development Company, L.P. | Adaptive data fetch prediction algorithm |
US20020124083A1 (en) | 2000-09-06 | 2002-09-05 | Sun Microsystems, Inc. | Method and apparatus for increasing the efficiency of transactions and connection sharing in an enterprise environment |
US7689560B2 (en) * | 2000-10-13 | 2010-03-30 | Miosoft Corporation | Persistent data storage techniques |
US7587428B2 (en) | 2000-10-13 | 2009-09-08 | Microsoft Corporation | Maintaining a relationship between two different items of data |
US7028297B2 (en) * | 2000-11-17 | 2006-04-11 | Aristos Logic Corporation | System and method of scalable transaction processing |
US7406523B1 (en) * | 2000-11-21 | 2008-07-29 | Microsoft Corporation | Client-server communications system and method using a semi-connectionless protocol |
US6795878B2 (en) * | 2000-12-11 | 2004-09-21 | International Business Machines Corporation | Verifying cumulative ordering of memory instructions |
US6874071B2 (en) * | 2001-12-13 | 2005-03-29 | International Business Machines Corporation | Database commit control mechanism that provides more efficient memory utilization through consideration of task priority |
KR100477641B1 (ko) * | 2002-01-15 | 2005-03-23 | 삼성전자주식회사 | 버스 시스템 및 그 데이터 전송경로 결정방법 |
US7756813B2 (en) * | 2002-09-09 | 2010-07-13 | Sap Ag | Electronic data structure for controlling access to data objects using locks |
AU2003273824A1 (en) * | 2002-09-09 | 2004-04-30 | Sap Aktiengesellschaft | Methods and systems for data moving using locks |
US7457933B2 (en) * | 2002-09-09 | 2008-11-25 | Sap Ag | Methods and systems for archiving data |
US7653667B2 (en) * | 2002-09-09 | 2010-01-26 | Sap Ag | Methods and systems for data moving using locks |
US20060149696A1 (en) * | 2002-09-09 | 2006-07-06 | Thorsten Pferdekaemper | Method and systems for controlling access to a data object by means of locks |
US7693881B2 (en) * | 2002-09-09 | 2010-04-06 | Sap Ag | Methods and systems for moving data using locks |
US7089253B2 (en) * | 2002-09-13 | 2006-08-08 | Netezza Corporation | Computer method and system for concurrency control using dynamic serialization ordering |
US8145759B2 (en) * | 2002-11-04 | 2012-03-27 | Oracle America, Inc. | Dynamically configurable resource pool |
US7165061B2 (en) | 2003-01-31 | 2007-01-16 | Sun Microsystems, Inc. | Transaction optimization of read-only data sources |
US7769722B1 (en) | 2006-12-08 | 2010-08-03 | Emc Corporation | Replication and restoration of multiple data storage object types in a data network |
US7082432B2 (en) | 2003-04-24 | 2006-07-25 | Sun Microsystems, Inc. | Specifying transaction manager type at various application levels |
US7610305B2 (en) * | 2003-04-24 | 2009-10-27 | Sun Microsystems, Inc. | Simultaneous global transaction and local transaction management in an application server |
US7743083B2 (en) | 2003-04-24 | 2010-06-22 | Oracle America, Inc. | Common transaction manager interface for local and global transactions |
US7152077B2 (en) * | 2003-05-16 | 2006-12-19 | Hewlett-Packard Development Company, L.P. | System for redundant storage of data |
US7761421B2 (en) * | 2003-05-16 | 2010-07-20 | Hewlett-Packard Development Company, L.P. | Read, write, and recovery operations for replicated data |
US20040230862A1 (en) * | 2003-05-16 | 2004-11-18 | Arif Merchant | Redundant data assigment in a data storage system |
US7657534B2 (en) * | 2003-06-13 | 2010-02-02 | Jon Kirkegaard | Order commitment method and system |
US7739252B2 (en) * | 2003-07-14 | 2010-06-15 | Oracle America, Inc. | Read/write lock transaction manager freezing |
US7640545B2 (en) | 2003-07-14 | 2009-12-29 | Sun Microsytems, Inc. | Transaction manager freezing |
US7134008B2 (en) * | 2003-09-04 | 2006-11-07 | Sun Microsystems, Inc. | Utility for configuring and verifying data sources |
US8521875B2 (en) * | 2003-09-04 | 2013-08-27 | Oracle America, Inc. | Identity for data sources |
US7146386B2 (en) * | 2004-03-29 | 2006-12-05 | Microsoft Corporation | System and method for a snapshot query during database recovery |
US7266571B2 (en) * | 2004-07-27 | 2007-09-04 | International Business Machines Corporation | Method and system for scheduling a partial ordered transactions for event correlation |
US7627578B2 (en) | 2004-09-01 | 2009-12-01 | International Business Machines Corporation | Apparatus, system, and method for file system serialization reinitialization |
US7711721B2 (en) * | 2004-09-01 | 2010-05-04 | International Business Machines Corporation | Apparatus, system, and method for suspending a request during file server serialization reinitialization |
US7716305B2 (en) * | 2004-09-01 | 2010-05-11 | International Business Machines Corporation | Apparatus, system, and method for preserving cluster level serialization during file server serialization reinitialization |
US7490088B2 (en) * | 2004-09-01 | 2009-02-10 | International Business Machines Corporation | Apparatus, system, and method for preserving connection/position data integrity during file server serialization reinitialization |
US20060195845A1 (en) * | 2005-02-28 | 2006-08-31 | Rhine Scott A | System and method for scheduling executables |
US9047306B1 (en) | 2005-10-17 | 2015-06-02 | Hewlett-Packard Development Company, L.P. | Method of writing data |
US7827144B1 (en) | 2005-11-17 | 2010-11-02 | Hewlett-Packard Development Company, L.P. | Methods of reading and writing data |
US7765187B2 (en) * | 2005-11-29 | 2010-07-27 | Emc Corporation | Replication of a consistency group of data storage objects from servers in a data network |
US7848261B2 (en) | 2006-02-17 | 2010-12-07 | Isilon Systems, Inc. | Systems and methods for providing a quiescing protocol |
US7899800B2 (en) * | 2006-08-18 | 2011-03-01 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US7653664B2 (en) * | 2006-11-03 | 2010-01-26 | Microsoft Corporation | Anchor for database synchronization excluding uncommitted transaction modifications |
US8010550B2 (en) | 2006-11-17 | 2011-08-30 | Microsoft Corporation | Parallelizing sequential frameworks using transactions |
US7711678B2 (en) * | 2006-11-17 | 2010-05-04 | Microsoft Corporation | Software transaction commit order and conflict management |
US8024714B2 (en) | 2006-11-17 | 2011-09-20 | Microsoft Corporation | Parallelizing sequential frameworks using transactions |
US8706833B1 (en) | 2006-12-08 | 2014-04-22 | Emc Corporation | Data storage server having common replication architecture for multiple storage object types |
US20080243684A1 (en) * | 2007-03-19 | 2008-10-02 | Steven Ng | Method and apparatus for funding a transaction |
US8966080B2 (en) * | 2007-04-13 | 2015-02-24 | Emc Corporation | Systems and methods of managing resource utilization on a threaded computer system |
US8775475B2 (en) * | 2007-11-09 | 2014-07-08 | Ebay Inc. | Transaction data representations using an adjacency matrix |
US8046324B2 (en) | 2007-11-30 | 2011-10-25 | Ebay Inc. | Graph pattern recognition interface |
US8145805B2 (en) * | 2008-06-09 | 2012-03-27 | Emulex Design & Manufacturing Corporation | Method for re-sequencing commands and data between a master and target devices utilizing parallel processing |
US20100017581A1 (en) * | 2008-07-18 | 2010-01-21 | Microsoft Corporation | Low overhead atomic memory operations |
US8166481B2 (en) * | 2008-10-20 | 2012-04-24 | Microsoft Corporation | Transaction processing in transactional memory |
US8001548B2 (en) * | 2008-10-20 | 2011-08-16 | Microsoft Corporation | Transaction processing for side-effecting actions in transactional memory |
CN102317911B (zh) | 2009-02-13 | 2016-04-06 | 起元技术有限责任公司 | 管理任务执行 |
US8667329B2 (en) * | 2009-09-25 | 2014-03-04 | Ab Initio Technology Llc | Processing transactions in graph-based applications |
WO2011159759A1 (en) | 2010-06-15 | 2011-12-22 | Ab Initio Technology Llc | Dynamically loading graph-based computations |
JP5652047B2 (ja) * | 2010-08-13 | 2015-01-14 | 富士ゼロックス株式会社 | 情報処理装置及び情報処理プログラム |
US9274862B2 (en) * | 2010-12-09 | 2016-03-01 | Mimecast North America Inc. | Reducing latency in performing a task among distributed systems |
US9529355B2 (en) * | 2011-11-11 | 2016-12-27 | Rockwell Automation Technologies, Inc. | Control environment change communication |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US10108521B2 (en) | 2012-11-16 | 2018-10-23 | Ab Initio Technology Llc | Dynamic component performance monitoring |
US9507682B2 (en) | 2012-11-16 | 2016-11-29 | Ab Initio Technology Llc | Dynamic graph performance monitoring |
US9524195B2 (en) | 2014-02-27 | 2016-12-20 | International Business Machines Corporation | Adaptive process for data sharing with selection of lock elision and locking |
CN104572506B (zh) * | 2013-10-18 | 2019-03-26 | 阿里巴巴集团控股有限公司 | 一种并发访问内存的方法及装置 |
EP3092557B1 (de) | 2013-12-05 | 2024-03-27 | AB Initio Technology LLC | Verwaltungsschnittstelle für datenfluss graphen bestehend aus teilgraphen |
US20150242216A1 (en) | 2014-02-27 | 2015-08-27 | International Business Machines Corporation | Committing hardware transactions that are about to run out of resource |
US9645879B2 (en) | 2014-02-27 | 2017-05-09 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
US9471371B2 (en) | 2014-02-27 | 2016-10-18 | International Business Machines Corporation | Dynamic prediction of concurrent hardware transactions resource requirements and allocation |
US9442853B2 (en) | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging lock elision transactions with instructions to change execution type |
US9575890B2 (en) | 2014-02-27 | 2017-02-21 | International Business Machines Corporation | Supporting atomic accumulation with an addressable accumulator |
US9329946B2 (en) | 2014-02-27 | 2016-05-03 | International Business Machines Corporation | Salvaging hardware transactions |
US9465673B2 (en) | 2014-02-27 | 2016-10-11 | International Business Machines Corporation | Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling |
US9361041B2 (en) | 2014-02-27 | 2016-06-07 | International Business Machines Corporation | Hint instruction for managing transactional aborts in transactional memory computing environments |
US9262206B2 (en) | 2014-02-27 | 2016-02-16 | International Business Machines Corporation | Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments |
US9411729B2 (en) | 2014-02-27 | 2016-08-09 | International Business Machines Corporation | Salvaging lock elision transactions |
US9336097B2 (en) | 2014-02-27 | 2016-05-10 | International Business Machines Corporation | Salvaging hardware transactions |
US9424072B2 (en) | 2014-02-27 | 2016-08-23 | International Business Machines Corporation | Alerting hardware transactions that are about to run out of space |
US9442775B2 (en) | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging hardware transactions with instructions to transfer transaction execution control |
US9311178B2 (en) | 2014-02-27 | 2016-04-12 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
US9430273B2 (en) | 2014-02-27 | 2016-08-30 | International Business Machines Corporation | Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration |
US9524187B2 (en) | 2014-03-02 | 2016-12-20 | International Business Machines Corporation | Executing instruction with threshold indicating nearing of completion of transaction |
GB2529246A (en) * | 2014-08-15 | 2016-02-17 | Ibm | Method for securing integrity and consistency of a cloud storage service with efficient client operations |
JP2016081169A (ja) * | 2014-10-14 | 2016-05-16 | 富士通株式会社 | 情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法 |
US11314544B2 (en) * | 2015-02-09 | 2022-04-26 | Red Hat, Inc. | Transaction log for audit purposes |
US10657134B2 (en) | 2015-08-05 | 2020-05-19 | Ab Initio Technology Llc | Selecting queries for execution on a stream of real-time data |
US10671669B2 (en) | 2015-12-21 | 2020-06-02 | Ab Initio Technology Llc | Sub-graph interface generation |
US11741084B2 (en) * | 2019-09-27 | 2023-08-29 | Autodesk, Inc. | High frequency data management (HFDM) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4249241A (en) * | 1978-10-23 | 1981-02-03 | International Business Machines Corporation | Object access serialization apparatus for a data processing system |
US4881166A (en) * | 1987-07-24 | 1989-11-14 | Amoco Corporation | Method for consistent multidatabase transaction processing |
DE3927703A1 (de) * | 1988-08-23 | 1990-03-01 | Hitachi Ltd | Computersystem vom gemeinschaftsdaten-typ |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4224664A (en) * | 1976-05-07 | 1980-09-23 | Honeywell Information Systems Inc. | Apparatus for detecting when the activity of one process in relation to a common piece of information interferes with any other process in a multiprogramming/multiprocessing computer system |
US4627019A (en) * | 1982-07-08 | 1986-12-02 | At&T Bell Laboratories | Database management system for controlling concurrent access to a database |
US5193188A (en) * | 1989-01-05 | 1993-03-09 | International Business Machines Corporation | Centralized and distributed wait depth limited concurrency control methods and apparatus |
US5319773A (en) * | 1990-05-16 | 1994-06-07 | International Business Machines Corporation | Asynchronous resynchronization of a commit procedure |
US5212788A (en) * | 1990-05-22 | 1993-05-18 | Digital Equipment Corporation | System and method for consistent timestamping in distributed computer databases |
US5263156A (en) * | 1990-12-20 | 1993-11-16 | Bell Communications Research, Inc. | Parallel, distributed optimistic concurrency control certification using hardware filtering |
-
1992
- 1992-05-21 JP JP4128892A patent/JPH05197604A/ja active Pending
- 1992-05-21 GB GB9210876A patent/GB2256514B/en not_active Expired - Fee Related
- 1992-05-21 DE DE4216871A patent/DE4216871C2/de not_active Expired - Fee Related
-
1994
- 1994-12-05 US US08/349,474 patent/US5504900A/en not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4249241A (en) * | 1978-10-23 | 1981-02-03 | International Business Machines Corporation | Object access serialization apparatus for a data processing system |
US4881166A (en) * | 1987-07-24 | 1989-11-14 | Amoco Corporation | Method for consistent multidatabase transaction processing |
DE3927703A1 (de) * | 1988-08-23 | 1990-03-01 | Hitachi Ltd | Computersystem vom gemeinschaftsdaten-typ |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4420451A1 (de) * | 1993-07-08 | 1995-01-19 | Fujitsu Ltd | Sperrmechanismus für ein CHECK-IN/CHECK-OUT-Modell |
DE4420451C2 (de) * | 1993-07-08 | 1998-05-28 | Fujitsu Ltd | Sperrmechanismus für ein CHECK-IN/CHECK-OUT-Modell |
US5809503A (en) * | 1993-07-08 | 1998-09-15 | Fujitsu Limited | Locking mechanism for check in/check out model which maintains data consistency amongst transactions |
DE19681704B4 (de) * | 1995-12-26 | 2009-12-31 | Intel Corporation, Santa Clara | Verfahren zum Ausführen eines Programms aus einem nichtflüchtigen Speicher heraus |
Also Published As
Publication number | Publication date |
---|---|
GB2256514A (en) | 1992-12-09 |
JPH05197604A (ja) | 1993-08-06 |
DE4216871C2 (de) | 2001-09-06 |
GB9210876D0 (en) | 1992-07-08 |
US5504900A (en) | 1996-04-02 |
GB2256514B (en) | 1994-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4216871C2 (de) | Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen | |
EP0929864B1 (de) | Koordinations-system | |
DE69839145T2 (de) | Kompensierender Betriebsmittelverwalter | |
DE4303062C2 (de) | Verfahren zur Behebung von Systemausfällen in einem verteilten Computersystem und Vorrichtung zur Durchführung des Verfahrens | |
DE60130420T2 (de) | Vorrichtung und Verfahren zur Aufrechterhaltung einer verknüpften Liste | |
DE4497149B4 (de) | Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung | |
DE602005004166T2 (de) | Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen | |
DE19926115B4 (de) | Transaktionshandhabung in einer Konfigurationsdatenbank | |
CN104793988B (zh) | 跨数据库分布式事务的实现方法和装置 | |
DE60312746T2 (de) | Wiederherstellung nach fehlern in datenverarbeitungsanlagen | |
DE3611223C2 (de) | ||
DE69636688T2 (de) | Verfahren und Gerät zur automatischen Verwaltung von gleichzeitigem Zugriff auf gemeinsame Betriebsmittel in einer Multifaden-Programmierbetriebsumgebung | |
US4498145A (en) | Method for assuring atomicity of multi-row update operations in a database system | |
DE102005053727B4 (de) | Verteilte Verriegelung | |
DE69816686T2 (de) | Hochfrequenzabtastung von Leistungszählern | |
DE69929095T2 (de) | Verwaltung eines durch eine Mehrzahl von Knoten benutzten Betriebsmittels | |
US6961865B1 (en) | Techniques for resuming a transaction after an error | |
DE69815946T2 (de) | Informationsverarbeitungsvorrichtung | |
EP0772136A2 (de) | Bindungsverfahren in einer Transaktion in einer verteilten Datenbank | |
DE4420451C2 (de) | Sperrmechanismus für ein CHECK-IN/CHECK-OUT-Modell | |
DE112005002402T5 (de) | Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs | |
DE4033336A1 (de) | Verfahren zum erzeugen einer ausfallmeldung und mechanismus fuer ausfallmeldung | |
DE112010004947T5 (de) | Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten | |
DE2243956A1 (de) | Speicherprogrammierte datenverarbeitungsanlage | |
DE2517171A1 (de) | Datenverarbeitungssystem mit erweitertem semaphor-aufbau |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G06F 13/42 |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |