トランザクション処理の基本
トランザクションとは、1 つの単位として成功または失敗する関連タスク セットです。トランザクション処理では、トランザクションはコミットされるかアボートされるかのいずれかです。トランザクションがコミットされるためには、すべての参加要素が、すべてのデータ変更が永久的な変更となることを保証する必要があります。システム クラッシュやその他の予測されない事態が発生しても、変更が持続されることが必要です。
1 つの参加要素がこの保証に失敗しただけでも、トランザクション全体が失敗します。その場合は、トランザクションのスコープ内のデータの変更すべてが、特定の設定点までロールバックされます。
トランザクションは複数のタスクを 1 つにまとめます。たとえば、ASP.NET ページが次の 2 つのタスクを実行するとします。まず、データベース内に新しいテーブルを作成します。次に、データを収集および書式化し、新しいテーブルに挿入するための特化されたオブジェクトを呼び出します。これらの 2 つのタスクは互いに関連および依存しているため、データを入力できない限りは、新しいテーブルを作成しないようにすると効率的です。1 つのトランザクションのスコープ内で両方のタスクを実行すると、2 つのタスク間のこの関係が強制されます。2 番目のタスクが失敗すると、最初のタスクは、新しいテーブルが作成される前のポイントまでロールバックされます。
この例が示すように、データベースやメッセージ キューなどの 1 つのデータ リソースに、トランザクションを限定できます。これらのデータ リソースは、通常、ローカル トランザクション機能を提供します。データ リソースによって制御すると、トランザクションは効率的になり、簡単に管理できます。
トランザクションは、複数のデータ リソースにまたがって処理することもできます。分散トランザクションでは、個別のシステムで発生する独立した複数の操作を、成功するか失敗するかの 1 つのアクションに結合できます。