Per eseguire il commit a due fasi di un'applicazione, considerare quanto segue:
- É più opportuno disporre di più aree MPP possibili in esecuzione per garantire che il commit a due fasi dell'applicazione non contenda un'area; perché una transazione che è nel commit a due fasi dell'applicazione utilizza un'area MPP per la durata dell'intero commit a due fasi della transazione.
- Se si esegue un numero di transazioni IMS in un commit a due fasi della transazione, quelle aree MPP devono essere disponibili per evitare la sospensione del commit a due fasi dell'applicazione.
- Per salvaguardare una transazione che potrebbe essere in attesa di risorse da molto tempo, si consiglia di impostare un valore di timeout appropriato per ciascuna interazione nella transazione globale.
- Evitare di disporre di un numero eccessivo di interazioni del database eseguite in un commit a due fasi della transazione. Se si utilizzano più transazioni IMS in un commit a due fasi della transazione, potrebbero entrare in conflitto o bloccarsi nel tentativo di aggiornare o modificare gli stessi dati. Per evitare questo problema, è meglio scrivere un'applicazione che eviti ad un utente di accedere a voci duplicate nella stessa operazione di commit a due fasi.
- Considerare di configurare il gestore blocco IRLM o PI per utilizzare le dimensioni di un blocco piccole quanto la voce più piccola di quel database. Dimensioni del blocco maggiori potrebbero causare il conflitto di due transazioni per le voci che non possono essere le stesse e quindi risiedere l'una accanto all'altra sullo stesso disco rigido.
- Se si eseguono più interazioni mediante la stessa transazione IMS sullo stesso database IMS in una transazione globale (unità di lavoro), ciascuna interazione con quella transazione IMS deve essere eseguita su un'area MPP separata. La transazione IMS deve avere un valore SCHDTYP=PARALLEL
e PARLIM=0, per indicare che la transazione IMS può essere eseguita su più aree MPP e soddisfare sempre i requisiti di pianificazione (il numero di messaggi sarà maggiore di zero), in modo da elaborare ogni interazione di una nuova area MPP.
- Se un'area è in sospeso, in attesa di RRS-OTMA e non viene impostato alcun valore di timeout di esecuzione, è possibile terminare quel tentativo di eseguire la transazione che tiene in sospeso l'area MPP. Ciò viene eseguito inviando il comando di arresto dell'area IMS con il parametro di transazione
abend. Ad esempio, /STOP REGION reg#ABDUMP tranname.
In questo modo, si esegue il rollback della transazione per quella specifica interazione e si libera l'area MPP.
Per ulteriori informazioni sul commit in due fasi, incluse le applicazioni di esempio, vedere IMS Connector
per Java Guide
and Reference.