DB-EnginesEnglish
Deutsch
Informationen zu relationalen und NoSQL DatenbankmanagementsystemenEin Service von Redgate Software

Enzyklopädie > Artikel

Two-Phase-Commit
weitergeleitet von Zwei-Phasen-Commit

Das Two-Phase-Commit, auf Deutsch manchmal Zwei-Phasen-Commit genannt, ist ein Protokoll für den sicheren Abschluss einer Transaktion in einem verteilten Datenbanksystem.

Bei einer auf mehrere Knoten verteilten Transaktion stellt die Einhaltung der ACID Kriterien eine besondere Herausforderung dar, da die selbständig agierenden Knoten entsprechend koordiniert werden müssen. Das übernimmt beim Two-Phase-Commit ein Koordinator-Knoten auf folgende Art:

  • Nach Beendigung aller Bearbeitungsschritte der Transaktion sendet der Koordinator eine PREPARE Nachricht, an alle beteiligten Knoten, welche üblicherweise Agenten genannt werden. Diese PREPARE Nachricht leitet die erste Phase, die sog. Abstimmungsphase ein.
  • Alle Agenten versuchen die Wiederholbarkeit und die Rückgängigmachung der Transaktion sicherzustellen, indem sie entsprechende Undo- und Redo-Logs erstellen. Falls dies gelingt schicken sie eine READY Nachricht and den Koordinator, sonst eine FAILED Nachricht.
  • Der Koordinator sammelt alle Nachrichten. Falls alle Agenten READY signalisiert haben, sendet der Koordinator eine COMMIT Nachricht an jeden Agenten, sonst eine ABORT Nachricht. Mit dieser zweiten Nachricht an die Agenten beginnt die Commitphase.
  • Alle Agenten schließen die Transaktion entsprechend ab, entweder indem sie fertiggestellt oder rückgängig gemacht wird. Erst jetzt werden eventuelle Locks aufgehoben und abschließend eine Bestätigung (ACK Nachricht) an den Koordinator geschickt.
  • Der Koordinator beendet die Commit Phase und damit die gesamte Transaktion nach Erhalt aller ACK Nachrichten.

Die hier beschriebene Variante ist das sog. Basis-Protokoll des Two-Phase-Commits, es gibt verschiedene Verfeinerungen und Abwandlungen, aber das hier beschriebene Grundprinzip ist allen Varianten gemeinsam.



Featured Products

RaimaDB logo

RaimaDB, embedded database for mission-critical applications. When performance, footprint and reliability matters.
Try RaimaDB for free.

SingleStore logo

Build AI apps with Vectors on SQL and JSON with milliseconds response times.
Try it today.

Milvus logo

Vector database designed for GenAI, fully equipped for enterprise implementation.
Try Managed Milvus for Free

Neo4j logo

See for yourself how a graph database can make your life easier.
Use Neo4j online for free.

Datastax Astra logo

Bring all your data to Generative AI applications with vector search enabled by the most scalable
vector database available.
Try for Free

Präsentieren Sie hier Ihr Produkt