トランザクション

トランザクションは、作業の論理単位を定義するオブジェクトです。 トランザクションを参照するハンドルが存在し、トランザクションがまだコミットまたはロールバックされていない場合はアクティブと見なされる限り、トランザクションは有効です。 コミットまたはロールバックが発生する前にトランザクションが作成され、そのトランザクションに対するすべてのハンドルが閉じられた場合、トランザクションはロールバックされます。

操作のスコープを設定するトランザクションを作成し、1 つ以上のリソース マネージャーに対して更新を実行するユーザー モード トランザクション クライアントの場合を考えてみましょう。 次のようになります。

  1. クライアントは CreateTransaction 関数を呼び出してトランザクションを作成し、そのトランザクションへのハンドルを戻り値として受け取ります。

    トランザクションは、任意の数のプロセスで開いたり継承したりできます。したがって、各プロセスはトランザクションに関係します。 これらのプロセスのいずれかが失敗すると、トランザクションが中止されます。

    このトランザクションはまだ永続的ではない可能性があります。 トランザクションで推定中止ログを使用する場合は、システム障害全体で準備済み状態に達したトランザクションのみを復旧する必要があります。

  2. クライアントは、リソース マネージャーにトランザクションを明示的に渡す必要があります。

  3. クライアントは、トランザクション ファイル システムなどの 1 つ以上の VM を使用して、すべてのトランザクション操作を実行します。

  4. クライアントは CommitTransaction 関数を呼び出します。

  5. リソース マネージャーは、KTM からデータを準備してコミットするための通知を受け取ります。

トランザクションとスレッド

トランザクションはスレッドと同じではありません。 複数のスレッドまたはプロセスを 1 つのトランザクションの一部にすることができます。 逆に、スレッドは、異なる時間に複数の異なるトランザクションの一部になる場合があります。

トランザクション関数

トランザクションでは、次の関数が使用されます。

機能 Description
CommitTransaction 指定したトランザクションをコミットすることを要求します。
CommitTransactionAsync 指定したトランザクションをコミットすることを要求します。
CreateTransaction 新しいトランザクション オブジェクトを作成します。
GetTransactionInformation 指定したトランザクションに関する要求された情報を返します。
OpenTransaction 既存のトランザクションを開きます。
RollbackTransaction 指定したトランザクションをロールバックすることを要求します。
RollbackTransactionAsync 指定したトランザクションをロールバックすることを要求します。 この関数は非同期的にを返します。
SetTransactionInformation 指定したトランザクションのトランザクション情報を設定します。