DE69118947T2 - Transaktionsverwaltungsprotokoll für einen Rechner mit mehreren Prozessoren - Google Patents

Transaktionsverwaltungsprotokoll für einen Rechner mit mehreren Prozessoren

Info

Publication number
DE69118947T2
DE69118947T2 DE69118947T DE69118947T DE69118947T2 DE 69118947 T2 DE69118947 T2 DE 69118947T2 DE 69118947 T DE69118947 T DE 69118947T DE 69118947 T DE69118947 T DE 69118947T DE 69118947 T2 DE69118947 T2 DE 69118947T2
Authority
DE
Germany
Prior art keywords
transaction
processor
messages
processors
records
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.)
Expired - Fee Related
Application number
DE69118947T
Other languages
English (en)
Other versions
DE69118947D1 (de
Inventor
Mark Andrew Howell
James Johnson
Christopher Whitaker
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Holding Ltd
Original Assignee
Digital Equipment International Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment International Ltd filed Critical Digital Equipment International Ltd
Application granted granted Critical
Publication of DE69118947D1 publication Critical patent/DE69118947D1/de
Publication of DE69118947T2 publication Critical patent/DE69118947T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf die Steuerung der Transaktionsverarbeitung in verteilten Computersystemen.
  • Allgemeiner Hintergrund
  • Viele Computersysteme sind verteilt; d. h. sie bestehen aus einer Anzahl verschiedener Prozessoren, die über ein Kommunikationsnetz miteinander verbunden sind. In solchen Systemen können verschiedene Prozessoren verschiedene Datenaufzeichnungen speichern, wobei bestimmte Transaktionen oftmals den Zugriff auf Informationen erfordern, die in mehr als einem Prozessor gespeichert sind.
  • Da die vorliegende Erfindung verteilte Systeme betrifft, wird die Diskussion des Hintergrunds um der Bequemlichkeit willen weitgehend anhand solcher Systeme geführt, obwohl deutlich ist, daß einige der Hintergrundprobleme und -techniken in weiterem Umfang anwendbar sind.
  • Fehlererholung
  • Solche Systeme neigen zu Fehlern, gewöhnlich als Ergebnis eines "Absturzes" eines oder mehrerer der Prozessoren oder eines Fehlers des Kommunikationssystems; solche Fehler sind normalerweise vorübergehend. Eine übliche Ursache solcher Abstürze ist der Fehler der Software einer der Prozessoren, der irgendein Rechner im Bereich zwischen einem großen Großrechner und einem Personalcomputer sein kann. Es ist höchst wünschenswert, daß das System in der Weise organisiert ist, daß es sich von solchen Fehlern in großem Ausmaß erholen kann.
  • Um zu verstehen, wie eine solche Erholung erreicht werden kann, ist es notwendig, die Operation des Systems und der das System bildenden Prozessoren genauer zu betrachten. Dies umfaßt zwei Aspekte des Systems: die Organisation der im System auftretenden Operationen sowie der im System gespeicherten Daten und die Art der Hardware der Prozessoren.
  • Die Operation des Systems kann allgemein als in eine große Anzahl von weitgehend unabhängigen grundlegenden Operationen unterteilt angesehen werden, wovon jede endliche Länge besitzt; außerdem können die im System gespeicherten Informationen weitgehend als in eine große Anzahl von weitgehend unabhängigen Datenaufzeichnungen unterteilt angesehen werden, wovon sich jede in einem einzelnen Prozessor befindet. So wird ein Systemfehler (entweder ein Kommunikationssystem-Fehler oder ein Prozessor-Absturz) nur eine geringe Anzahl von Operationen unterbrechen, außerdem ist nur eine geringe Anzahl von Datenaufzeichnungen aktiv (auf die durch die unterbrochenen Operationen zugegriffen wird).
  • Ein Fehler des Kommunikationssystems manifestiert sich im allgemeinen durch den Wegfall von Nachrichten zwischen bestimmten Prozessoren. Jeder der Prozessoren, der durch einen solchen Fehler beeinflußt wird, kann den Fehler durch verschiedene Mechanismen erfassen, welche einen Zeitüberwachungsmechanismus enthalten, der erfaßt, wenn eine Operation, die in diesen Prozessor läuft, länger als eine im voraus gesetzte maximale Zeit aktiv gewesen ist. Ein Fehler eines Prozessors wird im allgemeinen ein Softwarefehler sein, der ein Anhalten irgendeiner Operation im Prozessor zur Folge hat. Das Betriebssystem kann in der Lage sein, dies zu erfassen und einen automatischen Neustart des Prozessors vorzunehmen.
  • Die Prozessoren solcher Systeme besitzen in jedem Fall sowohl einen permanenten als auch einen flüchtigen Speicher; der permanente Speicher ist im allgemeinen ein Plattenspeicher irgendeiner Art, während der flüchtige Speicher im allgemeinen ein Halbleiterspeicher ist. Der Fehler eines solchen Prozessors hat normalerweise den Verlust der Informationen im flüchtigen Speicher zur Folge, er wird jedoch die Informationen im permanenten Speicher unbeeinflußt lassen (der Fehler des Kommunikationssystems läßt sämtliche Informationen unbeeinflußt.) Die aktiven Datenaufzeichnungen (d. h. diejenigen, auf die durch aktive Operationen zugegriffen wird) befinden sich im allgemeinen im flüchtigen Speicher und gehen damit bei einem Fehler verloren. Datenaufzeichnungen, die nicht von irgendwelchen momentan aktiven Operationen betroffen sind, befinden sich im allgemeinen im permanenten Speicher und werden nicht beeinflußt.
  • Die grundlegenden Operationen sind daher so beschaffen, daß sie angemessen klein sind, wobei sie und die Betriebssysteme so beschaffen sind, daß die relevanten Datenaufzeichnungen am Anfang und am Ende jeder Operation im permanenten Speicher gespeichert werden. (Ein Anwenderprogramm besteht offensichtlich aus einer Folge derartiger Operationen.) Ferner enthält das Betriebssystem einen Betriebsmittel-Verwalter, der so beschaffen ist, daß er ausreichende Referenzinformationen erzeugt und im permanenten Speicher speichert, um die Identifizierung der im permanenten Speicher gespeicherten Datenaufzeichnungen nach einem Fehler und einem Neustart zu identifizieren. Bei einem Fehler können daher die betroffenen Prozessoren aus bekannten Zuständen neu gestartet werden. Genauer kann ein Prozessor, der abgestürzt ist, aus einem bekannten Zustand neu gestartet werden, während irgendwelche anderen Prozessoren, in denen Operationen liefen, die mit dem abgestürzten Prozessor in Wechselwirkung waren, diese Operationen aus entsprechenden bekannten Zuständen neu starten können.
  • Der Aufbau von Erholungstechniken hat erhebliche zusätzliche Auswirkungen auf das System hinsichtlich zusätzlicher Operationen in einzelnen Prozessoren, zusätzlicher Nachrichten zwischen Prozessoren und der reduzierten Geschwindigkeit des Systems. Dies ist besonders bedeutsam, weil eine grundlegende "Anwenderoperation" typischerweise eine Folge von grundlegenden Basisoperationen (Systemoperationen) erfordert, wovon jede einzeln behebbar sein muß. Obwohl daher die allgemeinen Prinzipien der Erholung von Fehlern in solchen Systemen wohlbekannt sind, besteht ein großer Bedarf an der Optimierung der Erholungstechniken.
  • Verklemmung
  • Ein weiteres Problem, das in solchen Systemen entsteht, besteht in Verklemmungen. Eine Operation kann eine Datenaufzeichnung für ihren eigenen ausschließlichen Gebrauch "sperren". Falls beispielsweise in einem Buchungs system der Kontostand um einen gegebenen Betrag reduziert werden soll, wird der momentane Kontostand gelesen, wird der Wert um.den gegebenen Betrag reduziert und wird der neue Kontostand in die Aufzeichnung zurückgeschrieben. Die Aufzeichnung muß für diesen Prozeß gesperrt werden, um zu verhindern, daß ein zweiter, ähnlicher Prozeß den gleichen ursprünglichen Kontostand liest, ihn um den gegebenen Betrag in diesem Prozeß reduziert und mit dem Ergebnis den durch den ersten Prozeß zurückgeschriebenen Betrag überschreibt, so daß die Wirkung des ersten Prozesses gelöscht ist.
  • In solchen Systemen ist es möglich, daß eine Verklemmung auftritt. Ein einfaches Beispiel ist gegeben, wenn ein Prozeß A die Aufzeichnung I gesperrt hat und auf eine Aufzeichnung II zugreifen muß, während ein Prozeß B die Aufzeichnung II gesperrt hat und auf die Aufzeichnung I zugreifen muß.
  • Es sind Techniken für die Behandlung solcher Verklemmungen entwickelt worden. Diese umfassen irgendeine Form einer Erfassung der Verklemmung (die ein einfacher Zeitüberwachungsmechanismus sein kann, der annimmt, daß eine Verklemmung vorliegt, wenn ein Prozeß zu lang aktiv bleibt oder möglicherweise aktiv bleibt, jedoch für zu lange Zeit nichts geschieht). Der Erfassung der Verklemmung muß irgendeine Form einer Lösung der Verklemmung folgen, die normalerweise die Verwerfung wenigstens eines der verklemmten Prozesse umfaßt.
  • Obwohl dies normalerweise nicht als Systemfehler angesehen wird, sind seine praktischen Wirkungen weitgehend mit einem Systemfehler äquivalent. So ist die Tatsache, daß wenigstens ein Prozeß auf halber Strecke verworfen worden ist, mit einem Systemfehler nahezu äquivalent, der während eines Prozeßablaufs auftritt. Die Behebung einer Verklemmung wird daher normalerweise in der gleichen Weise und unter Verwendung der gleichen Techniken wie die Behebung eines Systemfehlers erzielt.
  • Spezifischer Hintergrund
  • Ein spezifischer Aspekt der allgemeinen Anforderung, daß sich das System von Fehlern erholen kann, betrifft Transaktionen. Eine Transaktion ist eine Operation, die mehr als eine grundlegende Operation des Systems umfaßt. Ein einfaches Beispiel tritt in einem Buchungssystem auf, in dem zwei Konten in zwei verschiedenen Prozessoren des Systems gehalten werden, wobei eine Transaktion die Übertragung einer gegebenen Summe von einem Konto zum anderen und somit Operationen in den zwei verschiedenen Prozessoren umfaßt.
  • Es ist wesentlich, daß eine Transaktion in der Weise organisiert sein sollte, daß keine Transaktion nur teilweise ausgeführt werden kann; eine Transaktion muß abgeschlossen werden, sobald sie begonnen hat. Mit anderen Worten, eine Transaktion muß sich so verhalten, als ob sie eine einzige grundlegende Operation wäre. Das heißt, Transaktionen müssen atomar sein; sie dürfen nicht in Bestandteile unterteilbar sein, die unabhängig auftreten können. Daher muß die Weise, in der Transaktionen organisiert sind, im obigen Beispiel die Möglichkeit ausschließen, daß nur eines der Konten geändert wird, selbst wenn einer der zwei Prozessoren während der Ausführung der Transaktion abstürzen sollte.
  • Bei genauerer Betrachtung sind bei Beginn einer Transaktion die verschiedenen betroffenen Datenaufzeichnungen anfangs in bekannten und wiederherstellbaren Zuständen (d. h., falls während der Ausführung der Transaktion ein Fehler auftritt, kann das System zurückgesetzt werden und aus dem Anfangszustand neu gestartet werden.) Wenn der Prozeß des Ausführens der Transaktion fortschreitet, wird diese Datenaufzeichnung geändert. Wenn die Transaktion beendet ist, liegen alle diese Datenaufzeichnungen sowohl in ihren neuen Zuständen als auch in ihren alten (anfänglichen) Zuständen vor. An diesem Punkt können die alten Zustände der Datenaufzeichnungen vergessen werden, wenn ihre neuen Zustände bekannt und wiederherstellbar sind, so daß, falls das System in einem zukünftigen Zeitpunkt ausfallen sollte, es aus diesem momentanen Zustand wiederhergestellt werden kann. (Der Ausdruck "aktualisieren" kann für diesen Prozeß des Vergessens einer alten Referenzversion einer Datenaufzeichnung und des Herstellens einer neuen Version aus der Referenzversion verwendet werden.)
  • Eine mögliche Schwierigkeit entsteht bei der Implementierung des oben Gesagten, weil sie erfordert, daß die Zustände einer Anzahl unterschiedlicher Datenaufzeichnungen in unterschiedlichen Maschinen gleichzeitig aktualisiert werden müssen. Das System muß daher so beschaffen sein, daß es unmöglich ist, daß einige Datenaufzeichnungen aktualisiert werden, während andere (wegen eines Systemfehlers während der Verarbeitung der Transaktion) nicht aktualisiert werden. Mit anderen Worten, das System muß so beschaffen sein, daß sichergestellt ist, daß die Aktualisierung der in einer Transaktion enthaltenen Datenaufzeichnungen ein Alles-oder-Nichts-Prozeß ist, selbst wenn während der Transaktion ein Fehler auftritt.
  • Falls irgendwo während der Verarbeitung der Transaktion ein Fehler aufgetreten ist - entweder ein Fehler der betroffenen Prozessoren oder ein Fehler der Kommunikationsglieder zwischen ihnen - wird die Transaktion selbstverständlich verworfen, wobei das System dann in seinen vorhergehenden Zustand wiederhergestellt wird. Falls die Transaktion durch eine Bedienungsperson gesteuert wird, wird die Tatsache, daß sie nicht ausgeführt worden ist, der Bedienungsperson im allgemeinen sofort deutlich, so daß sie die Transaktion erneut versuchen kann oder eine andere geeignete Prozedur übernehmen kann. Wenn es sich um die Verarbeitung beispielsweise einer Position einer auszuführenden Datei von Positionen handelt, ist ein Ereignis bei der Ausführung der Transaktion die Löschung dieser Position in der Datei; falls die Transaktion nicht ausgeführt wird, wird die Position nicht gelöscht, sondem verbleibt in der Datei, wobei später erneut versucht werden kann, sie zu löschen.
  • Es gibt eine wohlbekannte Technik zum Organisieren von Transaktionen, um eine konsistente Aktualisierung sicherzustellen, die als 2-Phasen-Übergabeprozedur oder -Übergabeprotokoll (2P-Protokoll) bekannt ist. Dieses grundlegende 2P-Protokoll ist Gegenstand einer Anzahl von Erweiterungen und Entwicklungen gewesen. Ein Artikel, der einige von ihnen zusammenfaßt, ist "Transaction Management in the R* Distributed Data Base Management System" von C. Mohan, B. Lindsay und R. Obermarck, ACM Transactions on Data Base Systems, Bd. 11, Nr. 4, Dezember 1986, Seiten 378-395.
  • Transaktionsverwaltungsprotokolle (Übergabeprotokolle) können geeignet mit Bezug auf Fig. 1 erläutert werden, die ein vereinfachtes Blockschaltbild eines Teils eines verteilten Verarbeitungssystems ist. Es sind fünf Prozessoren 10 bis 15 gezeigt, die sämtlich mit einem Kommunikationssystem 20 verbunden sind, mit dem irgendwelche weiteren Prozessoren (nicht gezeigt) des Systems verbunden sind. Das Kommunikationssystem 20 ist als einfacher Bus gezeigt, es kann jedoch jede beliebige Form besitzen. Die Prozessoren sind im wesentlichen alle äquivalent. Sie sind in einer hierarchischen Anordnung gezeigt, die durch ihre unterschiedlichen Ebenen und durch die Pfeile zwischen ihnen angezeigt ist, diese Hierarchie ist jedoch temporär und stellt nur die Beziehungen zwischen ihnen dar, die durch die besondere betrachtete Transaktion erzeugt werden.
  • Bezüglich der Terminologie wird festgestellt, daß der Ausdruck "Operation" bisher verwendet worden ist, ohne präzise definiert worden zu sein. Für die Diskussion von Transaktionsprotokollen ist es wünschenswert, den präziseren Ausdruck "Prozeß" für etwas zu verwenden, was auf einen einzelnen Prozessor eingeschränkt ist. Die Transaktion betrifft daher zwei oder mehr Prozessoren und besteht aus einem separaten Prozeß in jedem dieser Prozessoren. (Als triviale Verallgemeinerung kann eine Transaktion zwei oder mehr getrennte Prozesse in einem einzigen Prozessor besitzen.) Es sollte darauf hingewiesen werden, daß die oben diskutierten "Datenaufzeichnungen" von verschiedenen Typen von Transaktionsaufzeichnungen, die im Verlauf der Transaktion zur Steuerung des Transaktionsfortgangs erzeugt und protokolliert (d. h. in Protokollen in verschiedenen Weisen gespeichert werden), verschieden sind.
  • Das Basis-2P-Protokoll kann durch Betrachtung einer Transaktion erläutert werden, die eine Hierarchie von lediglich zwei Ebenen umfaßt, mit einem Hauptprozeß in einem Prozessor (Prozessor 10) und Unterprozessen in drei weiteren Prozessoren (Prozessoren 11 bis 13). Der Hauptprozeß der Transaktion beginnt mit der Transaktion, wenn er feststellt, daß sie in den Prozessoren 11 bis 13 auszuführende Operationen erfordert.
  • Das 2P-Übergabeprotokoll enthält zwei Verarbeitungsphasen, nachdem die Hauptoperation der Transaktion selbst stattgefunden hat. Die erste Phase ist im weiteren Sinn eine Abfragephase, während die zweite im weiteren Sinn ein Übergabephase (oder Abbruchphase) ist. Es ist günstig, wenn jeder Prozessor einen Transaktionsverwalter enthält, der das Transaktionsprotokoll beginnt, wenn ein Prozeß feststellt, daß er eine aufzuführende Transaktion benötigt.
  • Fig. 2 zeigt in vereinfachter Form die Organisation des Prozessors 10 (die Organisationen der anderen Prozessoren 11 bis 15 sind gleich). Er enthält eine Steuereinheit 30, die einen Transaktionsverwalterabschnitt 33 enthält, einen permanenten Speicher 31 (gewöhnlich als "Platte" bezeichnet) und einen flüchtigen Speicher 32 (gewöhnlich als "RAM" bezeichnet). Der Speicher 31 enthält einen Bereich 34, der für ein Protokoll zum Speichern von Protokollaufzeichnungen verwendet wird, während der Speicher 32 einen Pufferbereich 35 enthält, der ebenfalls für die Speicherung von Protokollaufzeichnungen verwendet wird.
  • Das 2P-Protokoll erzeugt verschiedene Protokollaufzeichnungen, die gespeichert werden müssen. Es ist erkennbar, daß im Speicherbereich 34 gespeicherte Datenaufzeichnungen permanent sind, in dem Sinn, daß sie bei einem Prozessorabsturz nicht verlorengehen und daß auf sie zugegriffen werden kann, nachdem der Prozessor neu gestartet worden ist. (Der Bereich 34 kann selbst nach einem Prozessorabsturz identifiziert werden; dieser Bereich 34 kann beispielsweise ein physikalisch fester Platz sein oder durch einen Identifizierer an einem physikalisch festen Platz identifiziert werden.) Die Inhalte des Puffers 35 gehen jedoch bei einem Prozessorabsturz verloren.
  • Der Verlust bestimmter der Protokollaufzeichnungen wäre verhängnisvoll; diese Protokollaufzeichnungen müssen im permanenten Speicherbereich 34 unmittelbar nach ihrer Erzeugung gespeichert werden. Der Ausdruck "Zwangsschreibvorgang" wird für das direkte Schreiben einer Protokollaufzeichnung in den permanenten Bereich 34 verwendet. In der einfachen Form des 2P-Protokolls sind sämtliche Schreibvorgänge Zwangsschreibvorgänge. (Die Alternative, das Schreiben auf die Platte über den Puffer 35, wird unten diskutiert.)
  • Für die erste Phase des 2P-Protokolls sendet der Transaktionsverwalter in Hauptprozessor 10 (der Koordinierer genannt wird) eine VORBEREITUNGS-Nachricht an jeden der Unterprozessoren 11 bis 13 aus. Jeder Unterprozessor stellt, wenn er eine VORBEREITUNGS-Nachricht empfängt, fest, ob er bereit ist, die Transaktion zu übernehmen. Wenn er bereit ist, schreibt er eine vorbereitete Protokollaufzeichnung und schickt an den Koordinierer eine JA- WAHL-Nachricht zurück, die angibt, daß er bereit ist, den Abschluß der Transaktion zu übernehmen; falls er nicht bereit ist, ihn zu übernehmen, schreibt er eine Abbruch- Protokollaufzeichnung und schickt eine NEIN-WAHL-Nachricht zurück, die angibt, daß er nicht in der Lage ist, den Abschluß der Transaktion zu übernehmen. (Es werden GROSSBUCHSTABEN für Nachrichten und Unterstreichungen für Protokollaufzeichnungen verwendet.)
  • Die zweite Phase beginnt, wenn der Koordinierer sämtliche WAHL-Nachrichten empfangen hat. Damit die Transaktion fortgeführt werden kann, ist eine Einstimmigkeit von JA- WAHL-Nachrichten erforderlich; eine einzige NEIN-WAHL- Nachricht reicht aus, um die Übergabe nicht auszuführen. Falls sämtliche WAHL-Nachrichten JA-WAHL-Nachrichten sind, schreibt der Koordinierer eine Übergabe-Aufzeichnung in sein Protokoll (wodurch die Transaktion an den Übergabepunkt befördert wird) und sendet an sämtliche Unterprozessoren ÜBERGABE-Nachrichten aus. Jeder Unterprozessor tritt, wenn er die ÜBERGABE-Nachricht empfängt, in den Übergabezustand ein (um seine Datenaufzeichnungen in Zustände zu aktualisieren, in denen die Transaktion ausgeführt worden ist), schreibt eine Übergabe- Aufzeichnung und schickt eine ACK-Nachricht (Rückmeldungsnachricht) an den Koordinierer. Der Koordinierer wartet, bis er sämtliche ACK-Nachrichten empfangen hat, schreibt dann eine Ende-Aufzeichnung (oder Vergessen Aufzeichnung) und "vergißt" die Transaktion.
  • Falls irgendeine der WAHL-Nachrichten eine NEIN-WAHL- Nachricht ist, schreibt der Koordinierer eine Abbruch Aufzeichnung (die die Transaktion abbricht) und sendet an irgendwelche Unterprozessoren, die im vorbereiteten Zustand sind oder noch nicht auf die VORBEREITUNGS- Nachricht geantwortet haben, eine ABBRUCH-Nachricht. Jeder Unterprozessor, der eine ABBRUCH-Nachricht empfängt, schreibt eine Abbruch-Aufzeichnung, bricht die Transaktion ab und "vergißt" sie. (Jene Unterprozessoren, die bereits die NEIN-WAHL-Nachrichten gesendet haben, empfangen daher keine ABBRUCH-Nachrichten.)
  • Dieser Prozeß ist in den Tabellen I bis III zusammengefaßt. Tabelle I zeigt den Prozeß, in dem die Transaktion übergeben und abgeschlossen wird, während die Tabellen II und III den Prozeß für einen Abbruch zeigen - Tabelle II für einen Unterprozessor, der mit einer NEIN-WAHL- Nachricht antwortet, und Tabelle III für einen Unterprozessor, der nicht antwortet oder mit einer JA-WAHL- Nachricht antwortet. Tabelle I Koordinierer Nachricht Unterprozessor Beginne Trans-aktionsübergabe schreibe Übergabe schreibe Ende VORBEREITEN WÄHLE JA ÜBERGABE ACK schreibe Vorbereiten TABELLE II Beginne Transaktionsübergabe Schreibe Abbruch und Ende VORBEREITEN WÄHLE NEIN TABELLE III Beginne Transaktionsübergabe schreibe Abbruch schreibe Ende VORBEREITEN WÄHLE JA ABBRUCH ACK schreibe vorbereiten
  • Genauer. arbeitet das 2P-Protokoll folgendermaßen. (Die vorliegende Beschreibung enthält bestimmte geringe Modifikationen, welche das Protokoll zu einem PA-Protokoll (angenommener Abbruch), das weiter unten diskutiert wird, machen.
  • Bisher ist lediglich allgemein auf Protokollaufzeichnungen Bezug genommen worden. Genauer wählt der Koordinierer dann, wenn die Transaktion begonnen wird, einen eindeutigen Identifizierer (TID) für die Transaktion; sämtliche mit dieser Transaktion in Beziehung stehenden Aufzeichnungen enthalten diesen Identifizierer. Wenn die Transaktion begonnen wird, beginnt der Koordinierer damit, eine Aufzeichnung zu konstruieren, die den TID sowie die Identifizierer der verschiedenen betroffenen Unterprozessoren enthält; diese Aufzeichnung wird im RAM gehalten. Während der Transaktion konstruiert außerdem jeder Unterprozessor eine Aufzeichnung in seinem RAM, die die Transaktion betrifft und den TID sowie den Identifizierer des Koordinierers enthält.
  • Falls der Koordinierer abstürzt, während die Transaktion ausgeführt wird, verschwindet seine RAM-Aufzeichnung. Er startet neu aus dem Zustand, der vor dem Beginn der Transaktion bestand. Daher besitzt er, soweit es ihn betrifft, keine Aufzeichnung der Transaktion, so daß die Transaktion nicht vorhanden ist.
  • Dies läßt die Unterprozessoren mit einer anhängigen, nicht beendeten Transaktion zurück. Diese Situation kann beispielsweise unter Verwendung von Zeitgebern in den Prozessoren gehandhabt werden, die erfassen, wenn eine abhängige Transaktion für lange Zeit untätig gewesen ist. Jeder dieser Unterprozessoren stellt daher rechtzeitig fest, daß er im RAM eine Aufzeichnung einer untätigen Transaktion besitzt, und sendet an einen Koordinierer eine Abfrage bezüglich dieser Transaktion. Der Koordinierer besitzt keine Aufzeichnung von der Transaktion und sendet daher eine ABBRUCH-Nachricht zurück. Der Unterprozessor bricht daraufhin die Transaktion ab und "vergißt" sie.
  • Wenn die in der Transaktion enthaltene Verarbeitung abgeschlossen ist, verwendet der Koordinierer seine Transaktionsaufzeichnung im RAM, um die Unterprozessoren für diese Transaktion zu ermitteln und schickt an sie VORBEREITUNGS-Nachrichten. Wenn ein Unterprozessor eine VORBEREITUNGS-Nachricht empfängt, stellt er fest, ob er die in der Transaktion enthaltene Verarbeitung erfolgreich abgeschlossen hat oder nicht. Wenn dies nicht der Fall ist, kann er die Transaktionsaufzeichnung in seinem RAM enthalten oder nicht. In jedem Fall schickt er an den Koordinierer eine NICHT-WAHL-Nachricht zurück, wobei er die Aufzeichnung dann, wenn sie in seinem RAM nicht bereits verlorengegangen ist, löscht, um die Transaktion zu vergessen
  • Der Koordinierer sendet bei Empfang einer NICHT-WAHL- Nachricht an irgendwelche anderen Unterprozessoren, die auf seine VORBEREITUNGS-Abfrage mit JA-WAHL-Nachrichten geantwortet haben, ABBRUCH-Nachrichten und löscht seine RAM-Aufzeichnung, um die Transaktion zu vergessen Falls er von einem Unterprozessor eine JA-WAHL-Nachricht empfängt, nachdem er seine RAM-Aufzeichnung für diese Transaktion bereits gelöscht hat, sendet er erneut eine ABBRUCH-Nachricht zurück. Falls der Koordinierer nach dem Aussenden der VORBEREITUNGS-Nachrichten abgestürzt ist, stellt er, wenn er die WAHL-Nachrichten von den Unterprozessoren empfängt, fest, daß er keine Aufzeichnung für diese Transaktion besitzt, so daß er unabhängig davon, ob die WAHL-Nachrichten JA-WAHL- oder NEIN-WAHL-Nachrichten waren, ABBRUCH-Nachrichten zurückschickt.
  • Falls jedoch der Koordinierer von sämtlichen Unterprozessoren JA-WAHL-Nachrichten empfängt und seine eigene Transaktionsaufzeichnung nicht verloren hat, schreibt er auf die Platte eine Übergabe-Aufzeichnung und sendet an sämtliche Unterprozessoren ÜBERGABE-Nachrichten zurück. Die Übergabe-Aufzeichnung enthält selbstverständlich den TID sowie die Identitäten sämtlicher Unterprozessoren.
  • Falls ein Unterprozessor seinen Anteil an einer Transaktion erfolgreich abgeschlossen hat, schreibt er, wenn er eine VORBEREITUNGS-Nachricht vom Koordinierer empfängt, eine Vorbereitungs-Aufzeichnung auf die Platte und schickt eine JA-WAHL-Nachricht zurück. Dann empfängt er vom Koordinierer eine weitere Nachricht, die entweder ein Abbruch oder eine Übergabe sein kann. Wenn er eine ABBRUCH-Nachricht empfängt, schreibt er eine Abbruch- Aufzeichnung auf die Platte und versetzt sich selbst in den Zustand vor dem Beginn der Transaktion. Falls die Nachricht eine ÜBERGABE-Nachricht ist, schreibt der Unterprozessor eine Übergabe-Aufzeichnung auf die Platte und aktualisiert seine Datenaufzeichnungen auf den Zustand, in dem die Transaktion ausgeführt worden ist (so daß Referenzkopien der Datenaufzeichnungen im Zustand vor Beginn der Transaktion verworfen werden).
  • Falls ein Unterprozessor nach dem Eintritt in den VORBE- REITUNGS-Zustand abstürzen sollte, besitzt er in seinem Plattenprotokoll die Vorbereitungs-Aufzeichnung und kann sich stets erholen, unabhängig davon, ob er vom Koordinierer eine ÜBERGABE- oder eine ABBRUCH-Nachricht empfängt.
  • Falls die Transaktion übergeben worden ist, sendet jeder Unterprozessor, wenn er auf die ÜBERGABE-Nachricht antwortet, an den Koordinierer eine ACK-Nachricht (Rückmeldungsnachricht) zurück. Wenn der Koordinierer sämtliche ACK-Nachrichten empfängt, schreibt er auf die Platte eine neue Übergabe-Aufzeichnung, wobei der Unterprozessor aus der Liste der Unterprozessoren gestrichen ist. Wenn die ACK-Nachricht vom letzten Unterprozessor empfangen wird, schreibt der Koordinierer auf die Platte eine Vergessen- Aufzeichnung.
  • Falls nach der Übergabe der Transaktion entweder der Koordinierer oder ein Unterprozessor abstürzen sollte oder falls durch einen Kommunikationssystem-Fehler eine ÜBERGABE- oder ACK-Nachricht verlorengehen sollte, erfaßt der Zeitgeber irgendeines Prozessors, dessen Protokoll zu lang unvollendet bleibt, diese Tatsache, woraufhin dieser Prozessor eine geeignete weitere Nachricht aussendet, die eine Wiederholung einer vorhergehenden Nachricht oder eine Abfragenachricht sein kann. Der empfangende Prozessor wird selbstverständlich die geeignete Maßnahme treffen, falls die Nachricht eine Wiederholung einer Nachricht ist, die bei der Übertragung verlorengegangen ist. Falls er eine Nachricht zum zweiten Mal empfängt, antwortet er durch Zurücksenden einer Wiederholung seiner ersten Antwort, trifft jedoch keine weitere Maßnahme. Falls er eine Abfragenachricht empfängt, sendet er erneut eine Wiederholung seiner letzten Antwort zurück, ergreift jedoch keine weitere Maßnahme.
  • Oben ist der Ausdruck "vergessen" verwendet worden. Vergessen umfaßt gewöhnlich eine Anzahl von Schritten, obwohl das Endergebnis stets das gleiche ist. Falls ein Prozessor eine Nachricht bezüglich einer Transaktion empfängt, die nach einer Antwort verlangt, sucht er nach irgendwelchen Aufzeichnungen, die er bezüglich dieser Transaktion im RAM besitzt. Wenn er eine Vergessen- Aufzeichnung findet, sendet er eine geeignete Antwort. Falls er im RAM nichts findet, durchsucht er sein Protokoll der Aufzeichnungen auf der Platte. Erneut sendet er eine geeignete Antwort zurück, falls er eine Vergessen- Aufzeichnung findet.
  • Falls jedoch auf der Platte eine solche Aufzeichnung vorhanden ist, könnte sie im Prinzip unendlich weit zurück liegen, oder aber es befindet sich überhaupt keine Aufzeichnung auf der Platte. Um zu verhindern, daß das Protokoll unendlich weit zurückverfolgt wird, führt jeder Prozessor (sowohl in anderen Situationen als auch in dieser Situation) eine periodische Protokollprüfungs- Aktualisierung aus. Diese umfaßt das Setzen eines Merkers im Protokoll, das Durchsuchen des Protokolls bis zu einem geeigneten Prüfpunkt (z. B. zum letzten Merker), Verwerfen irgendwelcher Protokolleinträge, die nicht mehr länger aktiv sind, und Schreiben jener Protokolleinträge, die noch immer aktiv sind, in das Protokoll (nach dem neuen Merker). Eine Vergessen-Aufzeichnung wird als nicht länger aktiv angesehen und wird daher am Prüfpunkt verworfen (selbstverständlich zusammen mit irgendwelchen früheren Aufzeichnungen im Protokoll, die sich auf dieselbe Transaktion beziehen)
  • Es ist bisher angenommen worden, daß sämtliche Protokollaufzeichnungen zwangsläufig geschrieben worden sind. Bei einigen Aufzeichnungen wäre jedoch ihr Verlust innerhalb kurzer Zeit nach ihrer Erzeugung nicht verhängnisvoll. Diese Protokollaufzeichnungen können daher anfangs im Pufferbereich 35 gespeichert und später zum permanenten Bereich 34 befördert werden. Der Ausdruck "Langsamschreibvorgang" wird für den Schreibvorgang einer Protokollaufzeichnung in den Puffer 35 und ein späteres Kopieren in den permanenten Bereich 34 verwendet.
  • Ein Zwangsschreibvorgang enthält wegen der physikalischen Verzögerungen aufgrund der Plattenrotation, des Spurfindens usw. eine wesentliche Zeitverzögerung, typischerweise im Bereich von 30 ms, wobei das 2P-Protokoll erst ausgeführt werden kann, nachdem ein Zwangsschreibvorgang ausgeführt worden ist. Folglich verlängert ein Zwangsschreibvorgang die vom Protokoll beanspruchte Zeit in hohem Maß. Dagegen enthält ein Langsamschreibvorgang im wesentlichen keine Zeitverzögerung, da das Protokoll unmittelbar nach dem Langsamschreibvorgang ausgeführt werden kann (obwohl einige Aktivitäten, typischerweise auf das Löschen bezogene Aktivitäten, darauf warten müssen, daß der Langsamschreibvorgang durch Schreiben auf die Platte abgeschlossen ist) . Das Kopieren der Protokollaufzeich nung vom Puffer 35 in den Bereich 34 kann bis zu einem günstigen späteren Zeitpunkt warten, gewöhnlich, wenn eine andere Aufzeichnung zwangsläufig geschrieben wird (oder möglicherweise dann, wenn der Puffer voll ist).
  • Falls ein Prozessor abstürzt, nachdem eine Aufzeichnung langsam geschrieben worden ist, jedoch bevor sie auf die Platte kopiert worden ist, kann die Erholungsprozedur das Senden einer Abfragenachricht an einen weiteren Prozessor enthalten. Dies erfordert offensichtlich erhebliche Zeit und Verarbeitungskapazität Prozessorabstürze sind jedoch selten genug, so daß die Zeitersparnis bei der Verwendung des Langsamschreibvorgangs wann immer möglich den Aufwand der Erholung im relativ seltenen Ereignis eines Absturzes aufwiegt.
  • Der Koordinierer kann seine Protokollaufzeichnungen als Antwort auf ACK-Nachrichten langsam schreiben. Falls der Koordinierer während dieser Folge von Aufzeichnungen abstürzt, verliert er einige der ACK-Nachrichten und sendet eventuell Abfragen an die Unterprozessoren, deren ACK- Nachrichten er verloren hat. Ein Unterprozessor, der eine Abfrage empfängt, wird die Transaktion "vergessen" haben und schickt hierzu eine Nachricht zurück. Der Koordinierer sieht dies als gleichbedeutend mit einer ACK an, da sie anzeigt, daß der Unterprozessor die frühere ÜBERGABE- Nachricht empfangen und die geeignete Maßnahme getroffen haben muß. Falls der Unterprozessor niemals die frühere ÜBERGABE-Nachricht empfangen hätte, würde er die Abfragenachricht selbstverständlich als ÜBERGABE-Nachricht interpretieren und eine ACK-Nachricht ordnungsgemäß übernehmen und zurückschicken.
  • In einer weiteren leichten Abwandlung kann auch das Schreiben der Übergabe-Aufzeichnung durch einen Unterprozessor durch einen Langsamschreibvorgang erfolgen. Dies kann nur dann ein Problem verursachen, falls der Koordinierer ein Problem hatte oder die ACK-Nachricht des Unterprozessors fehlerhaft nicht empfangen hat. In diesem Fall sendet der Koordinierer eine Abfrage an den Unterprozessor. Falls der Unterprozessor die Übergabe-Aufzeichnung langsam geschrieben hat und diese Aufzeichnung verloren hat, ist dies der Fall, weil er abgestürzt ist. Bei der Erholung wird er die Vorbereitungs-Aufzeichnung in seinem Protokoll finden und den vorbereiteten Zustand wiederherstellen. Daher wird er die Abfrage als Übergabe Aufzeichnung interpretieren und durch Aktualisieren seiner selbst (und erneutes Langsamschreiben seiner Übergabe-Aufzeichnung) antworten und eine ACK-Nachricht zurücksenden. Falls der Unterprozessor die Übergabe-Aufzeichnung auf die Platte kopiert hat, die Übergabeverarbeitung beendet hat, die Transaktion vergessen hat und dann zum Prüfpunkt zurückgekehrt ist, so sendet er dann, wenn er vom Koordinierer bezüglich der Transaktion eine Abfrage empfängt, eine Nachricht zurück, die anzeigt, daß er die Transaktion vergessen hat. Dies weist darauf hin; daß die Transaktion durch den Unterprozessor zufriedenstellend beendet worden ist, weil sich andernfalls die Vorbereitungs-Aufzeichnung noch immer in seinem Protokoll befände. Der Koordinierer, der die Abfrage sendet, behandelt die Antwort als ACK-Nachricht.
  • In der Praxis kann die Hierarchie eine mehrstufige Hierarchie sein, beispielsweise diejenige, die in Fig. 1 gezeigt ist. In dieser Anordnung ist der Prozessor 10 der Kopf oder Primärkoordinierer, während der Prozessor 13 ein Zwischenprozessor ist; er ist gegenüber dem Prozessor 10 ein Unterprozessor, jedoch für seine Unterprozessoren 14 und 15 auch ein Koordinierer.
  • Das Protokoll, wie es bisher beschrieben worden ist, ist auf eine zweistufige Hierarchie von Prozessoren eingeschränkt (Koordiniererstufe und Unterstufe). Es kann ohne weiteres auf mehrstufige Hierarchien erweitert werden, indem von jedem Zwischenprozessor gefordert wird, daß er sein eigenes 2-Stufen-2P-Protokoll nach unten in seinen unmittelbar Unterprozessoren initialisiert. Falls er in den vorbereiteten Zustand eintritt, empfängt er rechtzeitig von oben eine ABBRUCH- oder ÜBERNAHME-Nachricht und schickt diese nach unten weiter zu seinen Unterprozessoren. Offensichtlich muß die Transaktionsaufzeichnung einer solchen Koordinierer-Unterprozessor-Beziehung den TID (Transaktionsidentifizierer) den Identifizierer ihres Koordinators sowie die Identifizierer ihrer Unterprozessoren enthalten.
  • In dem obengenannten Artikel sind weitere Entwicklungen des 2P-Protokolls beschrieben; das Protokoll eines angenommenen Abbruchs (PA-Protokoll). Der Artikel beschreibt auch eine weitere Entwicklung, nämlich das Protokoll der angenommenen Übergabe (PC-Protokoll), dies ist jedoch hier nicht relevant.
  • In dem Protokoll des angenommenen Abbruchs ist das 2P- Protokoll für Nur-Lese-Prozesse modifiziert - Prozesse, die nur das Lesen von Informationen ohne Schreiben (Modifizieren) der Informationen umfassen. Falls ein Prozessor eine VORBEREITUNGS-Nachricht empfängt und feststellt, daß der betreffende Prozeß ein Nur-Lese-Prozeß ist, schickt er anstelle einer JA-WAHL-Nachricht eine LESE-WAHL-Nachricht zurück; die LESE-WAHL-Nachricht wird vom Koordinierer als JA-WAHL-Nachricht behandelt. (Falls der Prozessor ein Zwischenprozessor ist, kann er nur eine LESE-WAHL-Nachricht senden, falls sämtliche Nachrichten, die er von seinen Unterprozessoren empfängt, LESE-WAHL- Nachrichten sind.) Ein Unterprozessor, der eine LESE- WAHL-Nachricht sendet, muß in bezug auf das Protokoll keine weiteren Maßnahmen treffen; er schreibt keinerlei Protokoll-Aufzeichnung und gibt sämtliche Sperren frei. Wie der Name sagt, werden Abbrüche im Protokoll des angenommenen Abbruchs im allgemeinen nicht zurückgemeldet.
  • Die Zeitdauer, während der eine Transaktion aktiv ist, sollte offensichtlich nicht unrechtmäßig verlängert werden. So sollte unter gleichen übrigen Bedingungen jeder Prozessor die Transaktion so bald wie möglich vergessen dürfen. Soweit ein Koordinierer betroffen ist, ist dieser Punkt offensichtlich der Punkt, an dem sicher ist, daß er nie mehr auf eine Abfrage von einem Unterprozessor hinsichtlich des Ergebnisses der Transaktion antworten muß. Ein Koordinierer muß daher eine Aufzeichnung der Transaktion in bezug auf einen Unterprozessor halten, bis dieser Unterprozessor entweder den Ausgang der Transaktion protokolliert hat oder die Transaktion vergessen hat (das Löschen seiner Aufzeichnungen bezüglich dieser Transaktion abgeschlossen hat)
  • Es gibt zwei Zielrichtungen, die sich auf den Wert jeder besonderen Variante dieser Protokolle auswirken. Einerseits ist es wünschenswert, daß die Gesantzeit für eine Transaktion minimal ist; andererseits ist es wünschenswert, den Systemdurchsatz zu maximieren. Die erforderliche Zeit kann durch Reduzieren der Anzahl der Langsamschreibvorgänge (wovon jeder die Transaktion "am Leben erhält", bis sie auf die Platte kopiert ist) minimiert werden, wodurch auch die Menge der von der Transaktion benutzten Systembetriebsmittel reduziert wird. Die Maximierung des möglichen Durchsatzes umfaßt die Minimierung der Verarbeitungsmenge, was die Minimierung der Anzahl der Zwangsschreibvorgänge bedeutet (da jeder Zwangsschreibvorgang einen Plattenzugriff umfaßt, während Langsamschreibvorgänge in einer Warteschlange eingereiht werden und somit effektiv nur eine sehr kurze Zeit zum Schreiben auf die Platte erfordern). Somit muß zwischen diesen zwei Zielen in Abhängigkeit von ihrer relativen Wichtigkeit ein Kompromiß gefunden werden.
  • Kurzbeschreibung der Zeichnungen:
  • Fig. 1 veranschaulicht eine hierarchische Anordnung eines Teils eines verteilten Computersystems.
  • Fig. 2 veranschaulicht die Organisation eines Prozessors des verteilten Computersystems.
  • Die vorliegende Erfindung
  • Die vorliegende Erfindung schafft ein Mehrstufen- Hierarchie-Protokoll, wie es im Verfahren von Anspruch 1 ausgeführt ist, das eine Modifikation und Weiterentwicklung des PA-Protokolls ist und treffend "frühes Vergessen" genannt werden kann. Die vorliegende Erfindung schafft außerdem eine Vorrichtung nach Anspruch 6 für die Implementierung des Mehrstufen-Hierarchie-Protokolls. Hierbei wird einem Koordinierer erlaubt, die Teilnahme eines Unterprozessors zu vergessen, sobald das Protokoll den Punkt erreicht hat, an dem die Aktionen des Unterprozessors hinsichtlich der Erholung von einem Absturz vom Ergebnis (Übergabe oder Abbruch) des Protokolls unabhängig sind. Dies kann wesentlich früher als an dem Punkt auftreten, an dem der Unterprozessor einen Zustand erreicht hat, in dem er nie mehr das Ergebnis der Transaktion abfragt. Das vorliegende System ermöglicht somit die Verbesserung des Kompromisses zwischen den zwei obengenannten Zielrichtungen.
  • Die vorliegende Erfindung schafft ein Transaktionsverwaltungsverfahren für ein Computersystem, das mehrere Prozessoren enthält, die für die Transaktion in einer mehrstufigen Hierarchie organisiert sind, wobei das Verfahren die Schritte enthält:
  • Ausführen einer Vorbereitungsphase, in der VORBE- REITUNGS-Nachrichten durch die Hierarchie abwärts verteilt werden, WAHL-Nachrichten die Hierarchie aufwärts zurückgeschickt werden und Vorbereitungs Aufzeichnungen zwangsläufig geschrieben werden, wenn die WAHL-Nachrichten zurückgeschickt sind;
  • Ausführen einer Übergabe-Phase, in der, falls die Übergabe stattfinden soll, ÜBERGABE-Nachrichten durch die Hierarchie abwärts verteilt werden, eine Übergabe-Aktivität ausgeführt wird und Übergabe- Aufzeichnungen geschrieben werden, wenn die ÜBERGABE-Nachrichten empfangen werden, und ACK- Nachrichten die Hierarchie aufwärts zurückgeschickt werden;
  • und in dem Übergabe-Aufzeichnungen nur von Prozessoren geschrieben werden, in denen Datenaufzeichnungen geändert worden sind, die ACK-Nachrichten in strikter Reihenfolge die Hierarchie aufwärts zurückgeschickt werden und Ende-Aufzeichnungen langsam geschrieben werden, wenn die ACK-Nachrichten empfangen werden.
  • Das Protokoll ist das gleiche wie das PA-Protokoll für die erste Phase, die endet und in die zweite Phase eintritt, wenn der Koordinierer entscheidet, die Transaktion zu übergeben, seine Übergabe-Protokollaufzeichnung zwangsläufig schreibt und die ÜBERGABE-Nachrichten sendet. Wenn ein Zwischenprozessor eine ÜBERGABE-Nachricht empfängt, schickt er sie an seine Unterprozessoren und wartet auf ihre Antworten. Sobald sämtliche Unterprozessoren ACK-Nachrichten an einen Koordinierer geschickt haben, kann der Koordinierer seine Aufzeichnungen "löschen". In den zwei P- und PA-Protokollen kann dieses "Löschen" auf zwei möglichen Wegen erfolgen. Ein Weg umfaßt einen Langsamschreibvorgang, um die Vorbereitungs Aufzeichnung der Transaktion aus dem permanenten Speicher zu entfernen, oder einen Langsamschreibvorgang der Über gabe-Protokollaufzeichnung bei Empfang der ÜBERGABE- Nachricht, wobei die ACK verzögert wird, bis die Protokollaufzeichnungen zum permanenten Speicher übertragen worden sind. Dies kann wesentliche Verzögerungen und eine Akkumulation von Protokollaufzeichnungen beinhalten. Der andere Weg ist das zwangsläufige Löschen der Vorbereitungs-Protokollaufzeichnung und das zwangsläufige Schreiben der Übergabe-Protokollaufzeichnung, direkt gefolgt vom Senden der ACK-Nachricht. Dadurch werden Verzögerungen minimiert, die Zwangsschreibvorgänge stellen jedoch eine große Verarbeitungslast dar.
  • Die erste dieser zwei möglichen Versionen des Standardprotokolls kann durch Tabelle IV zusammengefaßt werden (wobei nur betrachtet wird&sub1; was geschieht, wenn keine Abstürze oder Nachrichtenverluste auftreten). Sie zeigt eine dreistufige Hierarchie, offensichtlich kann das System jedoch auf mehr Stufen erweitert werden. Zur Vereinfachung ist außerdem auf jeder Stufe nur ein Prozessor gezeigt; in der Praxis wird jeder Koordinierer wahrscheinlich mehrere Unterprozessoren besitzen und sendet offensichtlich an jeden von ihnen ähnliche Nachrichten und empfängt ähnliche Nachrichten von ihnen. Es wird hier außerdem angenommen, daß der Zwischenprozessor keine eigene Übergabeaktivität auszuführen hat (d. h., er muß keine eigenen Datenaufzeichnungen aktualisieren).
  • Es wird darauf hingewiesen, daß in der Übergabephase dann, wenn der Zwischenprozessor die ÜBERGABE-Nachricht empfängt, dieser eine Übergabe-Protokollaufzeichnung langsam schreibt und die ÜBERGABE-Nachricht an die letzten Unterprozessoren weiterleitet Die zwei Rückmeldungsfolgen, eine vom Zwischenprozessor an den Primärkoordinierer und die andere von den letzten Unterprozessoren zum Zwischenprozessor erfolgen dann unabhängig voneinander. Die Folge vom Zwischenprozessor zum Primärkoordinierer umfaßt das Warten, bis der Zwischenprozessor ein Löschen ausführt, das das Kopieren der Übergabe-Aufzeichnung auf die Platte umfaßt; sobald dies auftritt, wird die ACK-Nachricht zum Primärkoordinierer zurückgeschickt. Für die Folge von den letzten Unterprozessoren zum Zwischenprozessor wird die ACK-Nachricht von jedem letzten Unterprozessor geschickt, sobald er seine Übergabeaktivität ausgeführt hat. Tabelle IV Primärkoordinierer Nachrichten Zwischenprozessor nachrichten letzter Unterprozessor Beginne Transaktionsübergabe schreibe zwangsläufig Übergabe schreibe langsam Ende VORBEREITEN WÄHLE JA ÜBERGABE ACK schreibe zwangsläufig Vorbereiten schreibe langsam Übergabe kopiere Übergabe in Protokoll führe Übergabeaktionen aus, schreibe langsam Übergabe
  • Für die zweite Version des Standardprotokolls schreibt der Zwischenprozessor die Übergabe-Protokollaufzeichnungen zwangsläufig und schickt die ACK-Nachricht zurück zum primären Koordinierer, sobald die Protokollaufzeichnung auf die Platte aufgezeichnet worden ist. Diese Folgen unterliegen selbstverständlich geringen Veränderungen.
  • Der gemeinsame Hintergrund dieser Folgen besteht darin, daß genügend Zustände auf die Platte protokolliert worden sein müssen, um sicherzustellen, daß der Zwischenprozessor vor dem Zurückschicken einer ACK-Nachricht zum Primärkoordinierer weiß, daß er niemals erneut den Primärkoordinierer abfragen muß.
  • In dem vorliegenden System sendet ein Zwischenprozessor, sobald er ACK-Nachrichten von seinen Unterprozessoren empfangen hat, sofort eine Nachricht an seinen Koordinierer, daß er (der Zwischenprozessor) aus der Koordiniereraufzeichnung der Liste der Prozessoren, die von der Transaktion betroffen sind, entfernt werden kann; d. h. der Koordinierer kann diesen Prozessor (den Zwischenprozessor), was diese Transaktion betrifft, vergessen. Gleichzeitig schreibt der Zwischenprozessor langsam den Löschvorgang seiner Protokollaufzeichnungen für diese Transaktion. Der Koordinierer schreibt normalerweise außerdem langsam die Protokollaufzeichnung, die der Nachricht entspricht, die er vom Zwischenprozessor empfangen hat.
  • Tabelle V zeigt die entsprechende Nachricht und die Protokollaufzeichnungsfolge für das vorliegende System. Tabelle V Primärkoordinierer Nachrichten Zwischenprozessor nachrichten letzter Unterprozessor Beginne Transaktionsübergabe schreibe zwangsläufig Übergabe schreibe langsam Ende VORBEREITEN WÄHLE JA ÜBERGABE ACK schreibe zwangsläufig Vorbereiten führe Übergabeaktionen aus, schreibe langsam Übergabe
  • Es ist ersichtlich, daß die Abfragephase die gleiche wie im herkömmlichen System ist. Die Übergabephase unterscheidet sich jedoch dadurch, daß der Zwischenprozessor keinerlei Übergabe-Protokollaufzeichnung schreibt; ferner vergißt er die Transaktion durch ein Langsamschreiben einer Ende-Protokollaufzeichnung und leitet eine ACK- Nachricht die Stufenfolge nach oben bis zum Primärkoordinierer sobald er die ACK-Nachrichten von seinen Unterprozessoren empfangen hat. Dies geschieht vor dem Schreiben der Ende-Aufzeichnung auf die Platte und kann gleichzeitig mit oder vor dem Langsamschreiben der Ende-Aufzeichnung erfolgen. Mit anderen Worten, die Protokoll- Aktivität tritt parallel zu ACK-Nachrichten auf; das Protokoll-Schreiben muß vor dem Zurücksenden der ACK- Nachricht vom Zwischenprozessor zum Primärkoordinierer erfolgen.
  • Falls der Zwischenprozessor ausfällt, nachdem er seine ACK geschickt hat, jedoch bevor er die Transaktion vergessen hat, findet er bei der Wiederherstellung die Vor bereitungs-Aufzeichnung in seinem Protokoll. Er wird daher an den Primärkoordinierer eine Abfragenachricht senden. Falls dieser Primärkoordinierer bereits die Transaktion vergessen hat, wird er eine ABBRUCH-Nachricht zurückschicken. Der Zwischenprozessor wird die Transaktion (erneut) vergessen und keine weiteren Maßnahme treffen. Falls der primäre Koordinierer seine Übergabe-Aufzeichnung noch nicht vergessen hatte, jedoch die ACK-Nachricht nicht empfängt, wird er rechtzeitig erneut eine ÜBERGABE- Nachricht aussenden, so daß die Wiederherstellung und die Löschung wie im normalen Fall erfolgt.
  • Die Rechtfertigung der vorliegenden Prozedur ergibt sich folgendermaßen. Sobald ein Prozessor seine Verarbeitung für eine übergebene Transaktion abgeschlossen hat, muß er keinerlei Maßnahme treffen, falls diese Transaktion während einer Wiederherstellungsprozedur erneut angetroffen wird. Beispielsweise kann das System abstürzen, nachdem der Prozessor seine Verarbeitung abgeschlossen hat, jedoch bevor diese Tatsache zum Transaktionsverwalter des Koordinierers (durch eine ACK-Nachricht) gemeldet worden ist (was dem Transaktionsverwalter mitteilt, daß die Verarbeitung erfolgt ist und vergessen werden kann). In diesem Fall kann der Prozessor um die Wiederherstellung der Transaktion gebeten werden, wenn der Dienst nach dem Absturz wiederhergestellt ist; der Prozessor muß dann feststellen können, daß nichts mehr zu tun ist.
  • Das bedeutet, daß, sobald ein Prozessor tatsächlich beansprucht, daß er von seinem Koordinierer vergessen werden kann, die Wiederherstellungsmaßnahmen unabhängig vom tatsächlichen Ergebnis der Transaktion die gleichen sind: nichts tun. Falls der Prozessor eine Abbruchnachricht empfangen sollte, wird er versuchen, die Transaktion abzubrechen. Da jedoch der Prozessor bereits die Übergabeaktionen ausgeführt hat, befinden sich seine Datenaufzeichnungen irreversibel in Zuständen, in denen die Transaktion ausgeführt worden ist. Er wird sein Vermögen, seine Datenaufzeichnungen in die Zustände zurückzubringen, in denen sie vor Beginn der Transaktion waren, verlieren. Der versuchte Abbruch kann daher keine Wirkung haben - d. h. er muß die Datenaufzeichnungen unverändert lassen, was genau mit dem Ergebnis eines Versuchs, eine Übergabe zu wiederholen, übereinstimmt.
  • Wenn einem Koordinierer erlaubt wird, eine Transaktion gleichzeitig mit einem Unterprozessor zu vergessen, könnte dies zur Folge haben, daß während der Wiederherstellung ein nicht korrektes Transaktionsergebnis zurückgeschickt wird. Das vorliegende Protokoll stellt jedoch sicher, daß während der Wiederherstellung keine nicht korrekte Maßnahme getroffen wird.

Claims (7)

1. Transaktionsverwaltungsverfahren für ein Computersystem, das mehrere Prozessoren enthält, die für die Transaktion in einer mehrstufigen Hierarchie organisiert sind, wobei das Verfahren die Schritte enthält:
Ausführen einer Vorbereitungsphase, in der VORBEREITUNGS-Nachrichten durch die Hierarchie abwärts verteilt werden, WAHL-Nachrichten, die Hierarchie aufwärts zurückgeschickt werden und Vorbereitungs-Aufzeichnungen zwangsläufig geschrieben werden, wenn die WAHL-Nachrichten zurückgeschickt sind;
Ausführen einer Übergabe-Phase, in der, falls die Übergabe stattfinden soll, ÜBERGABE-Nachrichten durch die Hierarchie abwärts verteilt werden, eine Übergabe-Aktivität ausgeführt wird und Übergabe-Aufzeichnungen geschrieben werden, wenn die ÜBERGABE-Nachrichten empfangen werden, und ACK- Nachrichten die Hierarchie aufwärts zurückgeschickt werden;
und dadurch gekennzeichnet, daß Übergabe-Aufzeichnungen nur von Prozessoren geschrieben werden, in denen Datenaufzeichnungen geändert worden sind, die ACK-Nachrichten in strikter Reihenfolge die Hierarchie aufwärts zurückgeschickt werden und Ende-Aufzeichnungen langsam geschrieben werden, wenn die ACK-Nachrichten empfangen werden.
2. Transaktionsverwaltungsverfahren nach Anspruch 1, bei dem in der Hierarchie für jede Transaktion ein Zwischen-Koordinierungsprozessor, der an untergeordnete Prozessoren, die sich eine Ebene unterhalb des Zwischen-Koordinierungsprozessors befinden, angeschlossen ist, sowie ein weiterer Koordinierungsprozessor vorhanden sind, der sich eine Ebene über dem Zwischenprozessor befindet, und bei dem
bei Empfang der ACK-Nachrichten von sämtlichen untergeordneten Prozessoren der Zwischen-Koordinierungsprozessor die Löschung seiner Log-Aufzeichnungen für die Transaktion langsam schreibt und diesen Status dem eine Ebene darüber befindlichen Koordinierungsprozessor zurückmeldet.
3. Transaktionsverwaltungsverfahren nach Anspruch 1, bei dem in der mehrstufigen Hierarchie ein Koordinierungsprozessor an wenigstens einen untergeordneten Prozessor angeschlossen ist und bei dem infolge einer Systemwiederherstellung ein untergeordneter Prozessor, der eine Vorbereitungs-Aufzeichnung ohne entsprechende Übergabe-Aufzeichnung findet, an seinen entsprechenden Koordinierungsprozessor eine Abfrage-Nachricht sendet, wobei in dem Fall, in dem der Koordinierungsprozessor nicht mehr länger irgendeine Aufzeichnung der Transaktion besitzt und dadurch ein ABBRUCH-Signal an den untergeordneten Prozessor sendet, eine derartige Aktion den untergeordneten Prozessor veranlaßt, sämtliche Aufzeichnungen der Transaktion zu löschen.
4. Transaktionsverwaltungsverfahren nach Anspruch 1, bei dem die einzige Bedingung, unter der einem Prozessor erlaubt wird, Log-Aufzeichnungen einer Transaktion zu löschen, gegeben ist, wenn
(i) Übergabe-Aufzeichnungen für die Transaktion geschrieben worden sind, falls der Prozessor ein untergeordneter Prozessor ist, und wenn
(ii) ACK-Nachrichten von sämtlichen irgendwelcher Prozessoren empfangen worden sind, die dem Prozessor für die Transaktion untergeordnet sind.
5. Transaktionsverwaltungsverfahren nach Anspruch 1, bei dem ein Prozessor nach Abschluß seiner Verarbeitung für eine übernommene Transaktion unabhängig von den vom Koordinierungsprozessor empfangenen Befehlen keinerlei Wiederherstellungsaktion für die Transaktion ausführen kann.
6. Computersystem für Transaktionsverarbeitung, die ein Übergabe-Protokoll für die Sicherstellung der Transaktionsintegrität verwendet, mit:
mehreren Prozessoren (10 - 15), die in der Weise angeschlossen sind, daß sie eine Transaktion ausführen können, wobei die Transaktion mehrere Prozesse enthält, die von den mehreren Prozessoren im Computersystem ausgeführt werden, wobei die mehreren Prozessoren in einer mehrstufigen Hierarchie angeordnet sind, wobei die Hierarchie einen Koordinierungsprozessor (10) für das Einleiten der Transaktion, einen Zwischenprozessor (11, 12, 13) für die Kommunikation mit dem Koordinierungsprozessor und einen untergeordneten Prozessor (14, 15) für die Kommunikation mit dem Zwischenprozessor und für die Ausführung wenigstens eines der Prozesse der Transaktion enthält, wobei jeder der Prozessoren eine Transaktionssteuereinrichtung (30, 33) für die Erzeugung von Nachrichten bezüglich des Status der Transaktion und für die Identifizierung der teilnehmenden Prozessoren während und nach der Ausführung der Transaktion und weiterhin eine Speichereinrichtung (32, 34) zum Speichern von die Nachrichten enthaltenden Log-Aufzeichnungen enthält;
eine erste Kommunikationseinrichtung (20) zum Bereitstellen und Zurückschicken der Nachrichten zwischen dem Koordinierungsprozessor und dem Zwischenprozessor;
eine zweite Kommunikationseinrichtung (20) zum Bereitstellen und Zurückschicken der Nachrichten zwischen dem Zwischenprozessor und dem untergeordneten Prozessor;
eine Einrichtung zum Ausführen des wenigstens einen der Prozesse in dem untergeordneten Prozessor als Antwort auf die Nachrichten; wobei das Computersystem gekennzeichnet ist durch:
eine Einrichtung im Zwischenprozessor (13) für den Austausch von Nachrichten vorn untergeordneten Prozessor (14, 15) zum Koordinierungsprozessor (10) direkt nach der Ausführung des wenigstens einen Prozesses durch den untergeordneten Prozessor und ohne daß der Zwischenprozessor eine Log-Aufzeichnung speichert, die die Übergabe des Zwischenprozessors an die Transaktion anzeigt.
7. Computersystem nach Anspruch 6, ferner mit:
einer Einrichtung, um während einer Wiederherstellungsprozedur, die versucht, das Computersystem nach einem Ausfall wieder betriebsbereit zu machen, zu bestimmen, ob Informationen in der Transaktions-Log-Aufzeichnung in der Speichereinrichtung des untergeordneten Prozessors verwendet werden sollen oder nicht, sobald die Verarbeitung der Transaktion abgeschlossen ist.
DE69118947T 1990-02-23 1991-02-20 Transaktionsverwaltungsprotokoll für einen Rechner mit mehreren Prozessoren Expired - Fee Related DE69118947T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB909004116A GB9004116D0 (en) 1990-02-23 1990-02-23 Transaction control

Publications (2)

Publication Number Publication Date
DE69118947D1 DE69118947D1 (de) 1996-05-30
DE69118947T2 true DE69118947T2 (de) 1996-12-19

Family

ID=10671509

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69118947T Expired - Fee Related DE69118947T2 (de) 1990-02-23 1991-02-20 Transaktionsverwaltungsprotokoll für einen Rechner mit mehreren Prozessoren

Country Status (4)

Country Link
EP (1) EP0443824B1 (de)
JP (1) JPH0827749B2 (de)
DE (1) DE69118947T2 (de)
GB (1) GB9004116D0 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2301686A (en) * 1995-06-03 1996-12-11 Ibm Transaction synchronisation procedure in a routing node
GB2301909A (en) * 1995-06-07 1996-12-18 Ibm Reduction of logging in distributed transaction processing systems
WO2016169048A1 (en) * 2015-04-24 2016-10-27 Hewlett Packard Enterprise Development Lp Transaction management and committing

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59111564A (ja) * 1982-12-17 1984-06-27 Fujitsu Ltd 巡回式2フエ−ズコミツトメント制御方式
IT1223142B (it) * 1987-11-17 1990-09-12 Honeywell Bull Spa Sistema multiprocessore di elaborazione con multiplazione di dati globali
JP2545436B2 (ja) * 1988-03-28 1996-10-16 沖電気工業株式会社 分散デ―タベ―スコミットメント処理装置

Also Published As

Publication number Publication date
JPH0827749B2 (ja) 1996-03-21
JPH0581099A (ja) 1993-04-02
GB9004116D0 (en) 1990-04-18
EP0443824B1 (de) 1996-04-24
EP0443824A2 (de) 1991-08-28
DE69118947D1 (de) 1996-05-30
EP0443824A3 (en) 1993-08-04

Similar Documents

Publication Publication Date Title
DE69126067T2 (de) Verfahren und Gerät zur Verwaltung von Zustandsidentifizierern zur effizienten Wiederherstellung
DE69126066T2 (de) Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
DE60025043T2 (de) Vorrichtung und verfahren mit verwendung von anwendungabhängigkeitsinformation für eine sicherungskopieherstellung in einem computersystem
DE3788444T2 (de) Verfahren zum Wiederanlauf einer langlaufenden fehlertoleranten Operation in einem transaktionsorientierten Datenbasissystem.
DE3854667T2 (de) Datenbasissystem mit einer Baumstruktur.
DE68927705T2 (de) Verfahren zum Entfernen unbestätigter Änderungen an gespeicherten Daten durch ein Datenbankverwaltungssystem
DE3786956T2 (de) Verwaltung von registrierungsdaten in einem transaktionsorientierten System.
DE3689664T2 (de) Verfahren und Gerät zur Verwaltung von veralteten Datenobjekten.
DE69122713T2 (de) Fehlertolerantes rechnersystem
DE10112941B4 (de) System und Verfahren für das parallele Lesen von primären und sekundären Sicherungen zur Wiederherstellung mehrerer gemeinsam benutzter Datenbankdateien
DE10123067B4 (de) Synchrone Vervielfältigung von Transaktionen in einem verteilten System
DE60018872T2 (de) System und Methode für das Löschen von Datenbank-Aktualisierungsbilddateien nach Abschluss der dazugehörigen Transaktionen
DE602004006404T2 (de) Flashback-datenbank
DE60016371T2 (de) Vorrichtung und verfahren um die übereinstimmung der daten in einer gruppe von einspiegelungseinrichtungen gespeichert zu behalten
DE69917333T2 (de) Übertragung einer Ressource von einem ersten Zwischenspeicher an einen zweiten Zwischenspeicher
DE602005002532T2 (de) Cluster-datenbank mit ferndatenspiegelung
DE602004011181T2 (de) Speicherplattenanordnungsgerät
DE102008015662B4 (de) Beseitigung von Daten
DE4497149B4 (de) Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung
DE69629630T2 (de) Struktur zur Gruppenzugehörigkeitsverwaltung in einem Mehrfachrechnersystem
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE4303062C2 (de) Verfahren zur Behebung von Systemausfällen in einem verteilten Computersystem und Vorrichtung zur Durchführung des Verfahrens
DE4220198C2 (de) Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem
DE3908459C2 (de) Netzwerkserver

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee