Considerazioni sulle prestazioni del commit in due fasi

Quando un componente di Transaction Integrator (TI) viene eseguito all'interno di una transazione, l'ambiente di run-time TI invia un messaggio a Microsoft Distributed Transaction Coordinator (DTC) nell'ambiente COM+, integrando se stesso nella transazione come tipo speciale di gestione risorse LU 6.2. Dopo che TI invia il buffer di dati all'host e riceve la risposta, chiama il SetComplete metodo e restituisce il controllo a COM+. A questo punto, l'applicazione client o un altro componente che guida TI può eseguire altre operazioni incluse anche nella stessa transazione. Quando tutti i gestori di SetCompleterisorse hanno eseguito gli aggiornamenti ed emesso , il creatore della transazione (che può essere COM+ per una transazione automatica) Commit invia il metodo a DTC. DTC invia il messaggio della prima fase (Prepare) a tutti i gestori di risorse, incluso l'ambiente di run-time ti. TI genera l'oggetto Prepare PS Header definito nei formati SNA e lo invia all'host. Riceve un oggetto RequestCommit in reply, che indica che gli aggiornamenti dell'host sono validi e di cui è possibile eseguire il commit e passa di nuovo queste informazioni a DTC. DTC raccoglie i voti da tutti i gestori di risorse e, se tutti sono preparati, forza la scrittura forzata di un record Commit nel log e invia il Committed messaggio. Anche in questo caso, TI lo converte in SNA PS Headerun oggetto , riceve la risposta e lo converte nuovamente in DTC. Se tutto funziona come previsto, DTC esegue il rollback della transazione e la conversazione APPC/LU 6.2 viene deallocata.

Nota

Né TI né l'AP devono preoccuparsi di un verbo APPC o CPI/C SYNCPT. La decisione di "prendere un SyncPoint" viene presa dall'autore della transazione, è espressa nella semantica delle transazioni OLE e coinvolge tutti i partecipanti alla transazione, non solo i rami TI LU 6.2. Il ruolo di TI è a un livello inferiore; TI funge da gestore di risorse per DTC. Esegue la conversione tra le interfacce COM usate da DTC e i protocolli SNA compresi dall'host per eseguire le due fasi del protocollo e consentire a DTC di prendere la decisione di commit tra la fase 1 e la fase 2.

Dal punto di vista delle prestazioni, la garanzia dell'atomicità degli aggiornamenti dell'host aggiunge un sovraccarico significativo e inevitabile. Sono disponibili due flussi di messaggi round trip aggiuntivi verso l'host per il commit a due fasi (2PC), oltre ai flussi di messaggi Windows da integrare e alla registrazione delle transazioni (scritture forzate su disco) da parte di DTC e nell'host. Il completamento delle transazioni che non richiedono una grande quantità di elaborazione della logica di business può richiedere il doppio o più del tempo quando viene confrontato con la stessa transazione senza 2PC.

L'unica volta che è necessario configurare un componente TI per supportare le transazioni ACID è quando il programma TP (Host Transaction Program) associato modifica una risorsa cruciale che deve essere mantenuta coerente con le risorse nel sistema operativo Windows. Se il punto di transazione non modificherà alcuna risorsa per cui deve essere garantita la coerenza, configurare il componente TI come Does Not Support Transactions (Non supporta transazioni), in modo che non si tuffi 2PC. È quindi possibile usare anche il protocollo TCP/IP. Il protocollo TCP/IP non supporta 2PC.

I componenti TI non devono mai essere configurati come Richiede una nuova transazione. Ciò significa che si sta gestendo la transazione in modalità remota per l'host e si incorrerebbe nel sovraccarico dovuto alla creazione di una nuova transazione, all'integrazione su di essa e all'esecuzione degli scambi 2PC con l'host, ma il metodo TI sarebbe una transazione a se stessa. È più efficiente consentire a CICS e IMS di gestire le proprie transazioni. Tutti gli aggiornamenti nel Windows sistema operativo non fanno parte di tale transazione, quindi eseguiranno il commit o il rollback in modo indipendente.

Nota

Un'ulteriore elaborazione della logica di business nello stesso server riduce i limiti di velocità effettiva, sottreendo parte della CPU. Tuttavia, il costo può essere relativamente ridotto nell'ambito del budget del tempo di risposta complessivo.

Vedere anche

Guida alle prestazioni di Transaction Integrator