17.7. プロトコルの最適化

パフォーマンスや障害回復に影響を及ぼすことがあるため知っておくとためになる標準 2 相コミットプロトコルのバリアントが数点あります。それぞれのバリアントの詳細情報は 表17.1「2 相コミットプロトコルのバリアント」 を参照してください。

表17.1 2 相コミットプロトコルのバリアント

バリアント
詳細
Presumed Abort
トランザクションがロールバックする場合、コーディネータはこの情報をローカルに記録しすべての登録されたパーティシパントに伝えることができます。パーティシパントに連絡が取れなかった場合はトランザクションの結果に影響はありません。コーディネータは礼儀としてパーティシパントに通知しているだけです。すべてのパーティシパントと連絡が取れた時点で、トランザクションに関する情報は削除することが可能です。トランザクションのステータスに関する後続要求が発生すると、使用できる情報はなく、要求側はトランザクションが中断したと仮定できます。この最適化の利点は、トランザクションが prepare フェーズの終わりまで進みコミットすると決定するまで、パーティシパントに関する情報は永続的にする必要がない点です。この時点より前のすべての障害はトランザクションの中断と見なされるためです。
One-Phase
単一のパーティシパントのみがトランザクションに関わっている場合、コーディネータはトランザクションを prepare フェーズで通過させる必要はありません。従って、パーティシパントはコミットするよう指示され、コーディネータはその決定に関する情報を記録する必要はありません。トランザクションの結果はパーティシパントの責任であるためです。
Read-Only
パーティシパントが準備するよう指示されると、制御する情報やデータがトランザクションの間に修正されていないことをコーディネータに示します。そうしたパーティシパントはトランザクションの結果について通知される必要はありません。パーティシパントの結果はトランザクションに影響がないためです。そのため、read-only のパーティシパントはコミットプロトコルの第 2 フェーズから省くことができます。

注記

WS-Atomic Transaction プロトコルは 1 相コミットの最適化に対応していません。