UAPの実行環境を設定するときには,UAPのプロセスをトランザクションとして稼働させるかどうかを指定しておきます。トランザクションとして稼働する指定をしたUAPプロセスを,トランザクション属性のUAPといいます。ファイルの更新など,トランザクション処理をするUAPには,トランザクション属性である指定をしておく必要があります。
サーバUAPのプロセスをトランザクションブランチとしたい場合は,トランザクション属性のUAPであることを指定します。トランザクション属性を指定する方法を次に示します。
トランザクション属性を指定したUAPの処理がトランザクションとなるのは,次の場合です。
演算だけのサーバUAPなど,処理をトランザクションとして保証しなくてもよいサーバUAPには,トランザクション属性なし(atomic_updateオペランドにN,またはトランザクション機能を使わないと指定)にしておきます。トランザクション属性なしと指定したサーバUAPは,グローバルトランザクションの処理とは無関係に,いつでもほかのクライアントUAPにサービスを提供できます。そのため,複数のクライアントUAPからサービスを要求された場合でも,同期点を取得する処理が完了するのを待たないで並行して処理できて,サービス要求待ちのオーバヘッドを減らせます。
RPCとトランザクション属性の関係を次の図に示します。
図2-31 RPCとトランザクション属性の関係
トランザクションの処理からサービスを要求した場合に,サービスを要求されたUAPがトランザクション属性のときは,トランザクションの処理となります。このようなサービス要求を,トランザクション処理としないこともできます。トランザクション処理としたくない場合は,dc_rpc_call関数の引数にトランザクションでないRPCであることを指定します。