分散トランザクション処理機能 TP1/Connector for .NET Framework 使用の手引

[目次][用語][索引][前へ][次へ]

1.2.8 分散トランザクションの単一フェーズコミット最適化

MSDTC連携機能では,トランザクションの単一フェーズコミット最適化を行うことができます。単一フェーズコミット最適化とは,トランザクションに参加するリソースがOpenTP1のリソース一つだけである場合に,単一フェーズコミットを行う機能です。トランザクションに参加するリソースが複数ある場合は,自動的に2相コミットを行います。

単一フェーズコミット最適化を行う場合は,<distributedTransaction>要素のoptimize1PC属性にtrueを指定してください。falseを指定した場合,トランザクションに対して常に2相コミットが行われます。

<この項の構成>
(1) 単一フェーズコミット最適化を使用する場合
(2) 単一フェーズコミット最適化を使用しない場合

(1) 単一フェーズコミット最適化を使用する場合

単一フェーズコミット最適化を使用する場合で,トランザクションに参加するリソースがOpenTP1のリソース一つだけであるときは,単一フェーズコミットが発行されるため,処理が簡略化されます。

ただし,次に示す内容を考慮して単一フェーズコミット最適化を使用してください。

(2) 単一フェーズコミット最適化を使用しない場合

単一フェーズコミット最適化を使用しない場合は,MSDTCのDIDが常にOpenTP1に通知されます。このため,トランザクションの強制決着を行う場合などに,MSDTCとOpenTP1のトランザクションのステータスを照合できます。

ただし,常に2フェーズコミットが行われるため,トランザクションに参加するOpenTP1のリソースが一つであっても,単一フェーズコミット最適化を行う場合に比べて通信回数が増加します。