Überlegungen zur Leistung von Zweiphasencommits
Wenn eine Transaction Integrator (TI)-Komponente innerhalb einer Transaktion ausgeführt wird, sendet die TI-Laufzeitumgebung eine Nachricht an Den Microsoft Distributed Transaction Coordinator (DTC) in der COM+-Umgebung, wobei sie sich als spezieller Typ von LU 6.2-Ressourcen-Manager in die Transaktion eintragen lässt. Nachdem TI seinen Datenpuffer an den Host gesendet und die Antwort empfangen hat, ruft es die -Methode auf und gibt die SetComplete
Steuerung an COM+ zurück. An diesem Punkt kann die Clientanwendung oder eine andere Komponente, die TI antreibt, andere Aufgaben ausführen, die ebenfalls in derselben Transaktion enthalten sind. Wenn alle Ressourcen-Manager ihre Aktualisierungen vorgenommen und ausgestellt SetComplete
haben, sendet der Ersteller der Transaktion (die für eine automatische Transaktion COM+ sein kann) die Commit
-Methode an DTC. DTC sendet die Nachricht der ersten Phase (Prepare
) an alle Ressourcen-Manager, einschließlich der TI-Laufzeitumgebung. TI generiert das Prepare PS Header
in den SNA-Formaten definierte und sendet es an den Host. Es empfängt eine RequestCommit
als Antwort, die angibt, dass die Hostupdates gültig sind und committet werden können, und übergibt diese Informationen an DTC zurück. DTC sammelt die Stimmen von allen Ressourcen-Managern, und wenn alles in Ordnung ist, schreibt es einen Commit-Datensatz in das Protokoll und sendet die Committed
Nachricht. Auch hier übersetzt TI dies in einen SNA PS Header
, empfängt die Antwort und übersetzt diese zurück in DTC. Wenn alles wie geplant funktioniert, führt DTC ein Rollback für die Transaktion aus, und die APPC/LU 6.2-Konversation wird die Zuordnung aufgehoben.
Hinweis
Weder TI noch ap müssen sich um ein APPC- oder CPI/C SYNCPT-Verb kümmern. Die Entscheidung für "SyncPoint" wird vom Ersteller der Transaktion getroffen, in der Semantik von OLE-Transaktionen ausgedrückt und umfasst alle Teilnehmer der Transaktion, nicht nur die TI LU 6.2-Branches. Die Rolle der TI liegt auf einer niedrigeren Ebene; TI fungiert als Ressourcen-Manager für DTC. Es wird zwischen den com-Schnittstellen, die von DTC verwendet werden, und den vom Host verstandenen SNA-Protokollen übersetzt, um die beiden Phasen des Protokolls auszuführen und DTC die Commitentscheidung zwischen Phase 1 und Phase 2 zu ermöglichen.
Aus Leistungssicht führt die Gewährleistung der Atomarität der Hostupdates zu einem erheblichen, unvermeidbaren Mehraufwand. Es gibt zwei zusätzliche Roundtrip-Nachrichtenflüsse zum Host für den zweistufigen Commit (2PC) sowie die Windows-Nachrichtenflows zur Registrierung und die Transaktionsprotokollierung (erzwungene Datenträgerschreibvorgänge) nach DTC und auf dem Host. Transaktionen, die keine große Menge an Geschäftslogikverarbeitung erfordern, können doppelt so lange oder mehr dauern, wenn Sie sie mit derselben Transaktion ohne 2PC vergleichen.
Sie sollten eine TI-Komponente zur Unterstützung von ACID-Transaktionen nur konfigurieren, wenn das zugeordnete Hosttransaktionsprogramm (TP) eine unternehmenskritische Ressource ändert, die mit den Ressourcen des Windows-Betriebssystems konsistent gehalten werden muss. Wenn der TP keine Ressource ändert, für die die Konsistenz garantiert werden muss, konfigurieren Sie die TI-Komponente als Keine Transaktionen unterstützt, sodass kein 2PC versucht wird. Dann können Sie auch das TCP/IP-Protokoll verwenden. Das TCP/IP-Protokoll unterstützt 2PC nicht.
TI-Komponenten sollten niemals als Erfordert eine neue Transaktion konfiguriert werden. Dies bedeutet, dass Sie die Transaktion remote für den Host verwalten, und es würde den Mehraufwand für das Erstellen einer neuen Transaktion, die Registrierung für diese und die Durchführung des 2PC-Austauschs mit dem Host verursachen, aber die TI-Methode wäre eine Transaktion für sich selbst. Es ist effizienter, CICS und IMS die Verwaltung ihrer eigenen Transaktionen zu ermöglichen. Updates auf dem Windows-Betriebssystem wären nicht Teil dieser Transaktion, sodass sie unabhängig committen oder rollbacken würden.
Hinweis
Die zusätzliche Verarbeitung von Geschäftslogik auf demselben Server senkt die Durchsatzgrenzwerte, wodurch ein Teil der CPU gestohlen wird. Die Kosten können jedoch im Rahmen des Gesamtbudgets für die Antwortzeit relativ gering sein.