7.2 Commit-Behandlung

7.2.2 Lineares Zwei-Phasen-Commit

Beim linearen 2PC-Protokoll erfolgt die Commit-Behandlung sequentiell an den N Transaktions-Managern der an der Ausführung einer globalen Transaktion beteiligten Knoten. Wie Abb. 7-5 verdeutlicht, besteht Phase 1 aus einer Vorwärtskommunikation ausgehend vom Koordinator (TM1) bis zum letzten Agenten TMN, Phase 2 aus einer Kommunikationssequenz in umgekehrter Reihenfolge von TMN bis TM1.

Abb. 7-5: Nachrichtenfluß beim linearen 2PC-Protokoll

Die Commit-Behandlung beginnt im Erfolgsfall damit, daß der Koordinator sich zunächst selbst in den Prepared-Zustand bringt und seine lokale Commit-Entscheidung (READY) an TM2 weitergibt. Ein Agent bringt sich nach Eintreffen einer READY-Nachricht ebenfalls in den Prepared-Zustand und gibt das READY an den nächsten Agenten weiter. Der globale Erfolg der Transaktion steht fest, wenn der letzte Agent TMN das READY empfangen und das Commit der gesamten Transaktion protokolliert hat. Das Commit-Ergebnis wird dann in umgekehrter Reihenfolge an die Agenten mitgeteilt, die dies daraufhin protokollieren und die Sperren freigeben. Nachdem TM1 das Ergebnis erhalten und protokolliert hat, schickt er noch eine ACK-Nachricht an TMN, der daraufhin einen Ende-Satz schreibt. Die Transaktion muß abgebrochen werden, sobald einer der Knoten in Phase 1 auf Abbruch entscheidet und entsprechend eine FAILED-Nachricht weitergibt.

Genaugenommen kommt bei dem linearen Commit-Protokoll dem letzten Agenten die Koordinatorrolle zu, da er das globale Commit-Ergebnis verbindlich protokolliert und weitergibt. Der Ansatz wird daher auch gelegentlich als Transfer der Commit-Koordinierung bzw. "Last Agent"-Optimierung bezeichnet [GR93, SBCM93]. Der Hauptvorteil liegt darin, daß die Nachrichtenanzahl gegenüber dem Basisverfahren mit zentralisierter Kommunikationsstruktur nahezu halbiert wurde. Denn durch den Wegfall separater PREPARE-Nachrichten und von N-2 ACK-Nachrichten verbleiben lediglich 2N-1 Nachrichten. Auf der anderen Seite führt die sequentielle Commit-Bearbeitung für größere N zu signifikanten Antwortzeiterhöhungen. Dieser Nachteil besteht jedoch nicht für den häufig auftretenden Fall N=2, der mit diesem Protokoll effizient bedient wird (3 Nachrichten).