3.4.2 ローカルトランザクションとグローバルトランザクション
アプリケーションサーバが管理するトランザクションを使用する場合,アプリケーションサーバのトランザクションマネージャと,リソースを管理するリソースマネジャ(DBMSなど)が連携して,トランザクションを管理します。この場合,トランザクションの種類として,ローカルトランザクションとグローバルトランザクションのどちらかを選択します。
ローカルトランザクションと,グローバルトランザクションについて説明します。
(1) ローカルトランザクション
トランザクション管理を行うリソースが一つだけの場合に,ローカルトランザクションを使用します。ローカルトランザクションを使用する場合,トランザクションの決着はリソースマネジャが行います。
(2) グローバルトランザクション
トランザクション管理を行うリソースが複数ある場合に,グローバルトランザクションを使用します。グローバルトランザクションを使用する場合,トランザクションマネージャが複数のリソースのトランザクションを調整し,整合性が崩れないように決着します。トランザクションの決着には,2フェーズコミットプロトコルが使用されます。なお,グローバルトランザクション使用時には,インプロセストランザクションサービスを使用します。インプロセストランザクションサービスについては,「3.14.6 インプロセストランザクションサービス」を参照してください。
グローバルトランザクションには比較的高い処理コストが掛かりますので,トランザクション管理を行うリソースが一つだけの場合には,ローカルトランザクションを使用することをお勧めします。
なお,デフォルトではライトトランザクション機能※が有効になっているため,グローバルトランザクションを使用することはできません。グローバルトランザクションを使用するには,ライトトランザクション機能を無効にする必要があります。
- 注※
-
ライトトランザクションの詳細については,「3.14.5 ライトトランザクション」を参照してください。
(3) ライトトランザクション機能とトランザクションの管理方法の関係
ライトトランザクション機能とは,ローカルトランザクションに,最適化された環境を提供する機能です。
トランザクションの管理方法とライトトランザクションの対応を次の表に示します。
トランザクションの管理方法 |
ライトトランザクション有効 |
ライトトランザクション無効 |
|
---|---|---|---|
アプリケーションサーバが管理するトランザクション |
ローカルトランザクション |
○ |
○ |
グローバルトランザクション |
× |
○ |
|
アプリケーションサーバが管理しないトランザクション |
○ |
○ |
ライトトランザクション機能については,「3.14.5 ライトトランザクション」を参照してください。