トランザクション・マネージャ

アプリケーションは、データベースの1つの要素に接続することによって、TimesTen Scaleoutのデータベースに接続します。接続によって実行される各トランザクションで、トランザクション・マネージャが必要になります。クライアント/サーバー・アプリケーションの場合、トランザクション・マネージャは、アプリケーションのプロキシとして機能しているTimesTen Scaleoutサーバーのスレッドです。ダイレクト・モードのアプリケーションの場合、トランザクション・マネージャは、TimesTen Scaleoutに接続するアプリケーションのスレッドです。トランザクション・マネージャは、要素(参加者)での文の実行を調整します。具体的には次を行います。
  • アプリケーションがコミットまたはロールバックを発行すると、トランザクション・マネージャは、すべての参加者が2フェーズ・コミットのプロトコルからのコミットまたはロールバックの決定に基づく一貫性のあるデータを持っていることを確認します。

  • 制約違反などのエラーが参加者に返された場合、トランザクション・マネージャは、レスポンスを調整します。トランザクション・マネージャは、TimesTen Scaleoutがユーザーに適切なエラー・メッセージを返し、すべての参加者が割り当てられたリソースを解放することを確認します。

  • 参加者に障害が発生した場合、トランザクション・マネージャは、障害が発生した参加者が一貫性のある状態にリストアするためにリカバリ時に使用する状態を作成します。

  • トランザクション・マネージャが存在する参加者に障害が発生した場合、参加者は、準備フェーズを完了したが、コミットの決定を受信しておらず、トランザクション・マネージャにアクセスできなくなっている場合、トランザクションをインダウトとして分類します。

参加者のステータス

参加者は文の実行を完了すると、トランザクション・マネージャにメッセージを送信します。メッセージには、影響を受けた行数に関する情報が含まれます。メッセージの指定内容とその処理は、次のとおりです。

  • 参加者がINSERTUPDATEDELETEなどの操作を使用して影響を受ける行を変更した場合、トランザクション・マネージャは参加者に書込み参加者としてフラグを設定します。

  • 参加者が行を変更しなかった場合、トランザクション・マネージャは参加者に読取り参加者としてフラグを設定します。

参加者の読込みまたは書込みの状態は、トランザクション・マネージャがコミット操作を処理する方法に影響します。

  • すべての参加者が読取り参加者である場合、トランザクション・マネージャは、準備フェーズを経由せずにコミットを処理します。つまり、読取り参加者は他の参加者からの合意を必要とすることなくコミット操作を実行します。

  • 1つ以上の書込み参加者がある場合、トランザクション・マネージャはコミットを2フェーズの操作として処理します。