Heim > häufiges Problem > Hauptteil

Was bedeutet verteilte Transaktion?

hzc
Freigeben: 2020-06-29 13:08:28
Original
3739 Leute haben es durchsucht

Verteilte Transaktionen bedeuten, dass sich Transaktionsteilnehmer, transaktionsunterstützende Server, Ressourcenserver und Transaktionsmanager auf verschiedenen Knoten in verschiedenen verteilten Systemen befinden.

Was bedeutet verteilte Transaktion?

Um verteilte Transaktionen zu implementieren, muss das unten vorgestellte zweiphasige Commit-Protokoll verwendet werden. * Phase 1: Beginnen Sie mit dem Senden von Pre-Commit-Informationen an alle an der Transaktion beteiligten Ressourcen. Zu diesem Zeitpunkt haben die an der Transaktion beteiligten Ressourcen eine letzte Chance, die Transaktion abnormal zu beenden. Wenn eine Ressource beschließt, die Transaktion abnormal zu beenden, wird die gesamte Transaktion abgebrochen und die Ressource wird nicht aktualisiert. Andernfalls wird die Transaktion normal ausgeführt, es sei denn, es kommt zu einem schwerwiegenden Fehler. Um einen katastrophalen Ausfall zu verhindern, werden alle Ressourcenaktualisierungen in das Protokoll geschrieben. Diese Protokolle sind persistent, sodass sie einen Ausfall überstehen und für alle Ressourcen erneut aktualisiert werden können. * Phase 2: Tritt nur auf, wenn Phase 1 nicht abnormal endet. An diesem Punkt beginnen alle Ressourcenmanager, die lokalisiert und individuell gesteuert werden können, mit der Durchführung tatsächlicher Datenaktualisierungen. Im zweiphasigen Festschreibungsprotokoll für verteilte Transaktionen gibt es einen Haupttransaktionsmanager, der als Koordinator für verteilte Transaktionen fungiert. Der Transaktionskoordinator ist für die gesamte Transaktion verantwortlich und sorgt dafür, dass sie mit anderen Transaktionsmanagern im Netzwerk zusammenarbeitet. Um verteilte Transaktionen zu implementieren, muss ein Protokoll verwendet werden, um Transaktionskontextinformationen zwischen verschiedenen Teilnehmern einer verteilten Transaktion zu übertragen. IIOP ist ein solches Protokoll. Dies erfordert, dass von verschiedenen Entwicklern entwickelte Transaktionsteilnehmer ein Standardprotokoll unterstützen müssen, um verteilte Transaktionen zu erreichen.

Die Struktur einer in Transact-SQL gestarteten verteilten Transaktion ist relativ einfach:

1. Ein Transact-SQL-Skript oder eine Anwendungsverbindung führt die Transact-SQL-Anweisung aus, die die verteilte Transaktion startet.

2. Der Microsoft® SQL Server™, der die Anweisung ausführt, wird zum Master-Server in der Transaktion.

3. Das Skript oder die Anwendung führt dann eine verteilte Abfrage für den Verbindungsserver oder eine Remote-gespeicherte Prozedur für den Remote-Server aus.

4. Wenn eine verteilte Abfrage oder ein Remoteprozeduraufruf ausgeführt wird, ruft der Masterserver automatisch MS DTC auf, um die Verbindungsserver und Remoteserver in der verteilten Transaktion zu registrieren.

5. Wenn ein Skript oder eine Anwendung eine COMMIT- oder ROLLBACK-Anweisung ausgibt, ruft der Master-SQL-Server MS DTC auf, um den zweiphasigen Commit-Prozess zu verwalten, oder benachrichtigt Verbindungsserver und Remoteserver, ihre Transaktionen zurückzusetzen.

Anweisungen

Es gibt nur sehr wenige Transact-SQL-Anweisungen, die verteilte Transaktionen steuern, da die meiste Arbeit intern von Microsoft® SQL Server™ und MS DTC erledigt wird. Die einzigen Transact-SQL-Anweisungen, die in einem Transact-SQL-Skript oder einer Transact-SQL-Anwendung erforderlich sind, sind:

● Starten Sie eine verteilte Transaktion.

●Führen Sie verteilte Abfragen für Verbindungsserver durch oder führen Sie Remoteprozeduraufrufe für Remoteserver durch.

● Rufen Sie die standardmäßige Transact-SQL-Anweisung COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION oder ROLLBACK WORK auf, um die Transaktion abzuschließen.

●Für jede verteilte Transact-SQL-Transaktion ruft der SQL Server, der das Transact-SQL-Skript oder die Transact-SQL-Verbindung verarbeitet, automatisch MS DTC auf, um das Commit oder Rollback der Transaktion zu koordinieren.

Die Option REMOTE_PROC_TRANSACTIONS ist eine Kompatibilitätsoption, die sich nur auf Remote-Stored-Procedure-Aufrufe auswirkt, die an Remote-Server erfolgen, die mit sp_addserver definiert wurden. Weitere Informationen zu remote gespeicherten Prozeduren finden Sie unter Architektur remote gespeicherter Prozeduren. Diese Option gilt nicht für verteilte Abfragen, die gespeicherte Prozeduren auf Verbindungsservern ausführen, die mit sp_addlinkedserver definiert wurden. Weitere Informationen zu verteilten Abfragen finden Sie unter Verteilte Abfragen.

Das obige ist der detaillierte Inhalt vonWas bedeutet verteilte Transaktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!