Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成の手引


2.3.3 トランザクション属性の指定

UAPの実行環境を設定するときには,UAPのプロセスをトランザクションとして稼働させるかどうかを指定しておきます。トランザクションとして稼働する指定をしたUAPプロセスを,トランザクション属性のUAPといいます。ファイルの更新など,トランザクション処理をするUAPには,トランザクション属性である指定をしておく必要があります。

〈この項の構成〉

(1) UAPをトランザクション属性とする方法

サーバUAPのプロセスをトランザクションブランチとしたい場合は,トランザクション属性のUAPであることを指定します。トランザクション属性を指定する方法を次に示します。

トランザクション属性を指定したUAPの処理がトランザクションとなるのは,次の場合です。

(2) UAPをトランザクション属性なしとする場合

演算だけのサーバUAPなど,処理をトランザクションとして保証しなくてもよいサーバUAPには,トランザクション属性なしatomic_updateオペランドにN,またはトランザクション機能を使わないと指定)にしておきます。トランザクション属性なしと指定したサーバUAPは,グローバルトランザクションの処理とは無関係に,いつでもほかのクライアントUAPにサービスを提供できます。そのため,複数のクライアントUAPからサービスを要求された場合でも,同期点を取得する処理が完了するのを待たないで並行して処理できて,サービス要求待ちのオーバヘッドを減らせます。

RPCとトランザクション属性の関係を次の図に示します。

図2‒31 RPCとトランザクション属性の関係

[図データ]

注※

グローバルトランザクションBでアクセスした資源の内容は,グローバルトランザクションBが開始する直前の状態に戻ります。グローバルトランザクションBがロールバックしたことは,同期点を取得する関数(この図の場合はdc_trn_unchained_commit関数)がエラーリターンすることで通知されます。

(a) トランザクションの処理から非トランザクショナルRPCの発行

トランザクションの処理からサービスを要求した場合に,サービスを要求されたUAPがトランザクション属性のときは,トランザクションの処理となります。このようなサービス要求を,トランザクション処理としないこともできます。トランザクション処理としたくない場合は,dc_rpc_call関数の引数にトランザクションでないRPCであることを指定します。