分散トランザクションとはどういう意味ですか?

hzc
リリース: 2020-06-29 13:08:28
オリジナル
3769 人が閲覧しました

分散トランザクションとは、トランザクションの参加者、トランザクションをサポートするサーバー、リソース サーバー、およびトランザクション マネージャーが、異なる分散システムの異なるノードに配置されていることを意味します。

分散トランザクションとはどういう意味ですか?

#分散トランザクションを実装するには、以下で紹介する 2 フェーズ コミット プロトコルを使用する必要があります。 * フェーズ 1: トランザクションに関与するすべてのリソースへのプリコミット情報の送信を開始します。現時点では、トランザクションに関与するリソースには、トランザクションを異常終了させる最後のチャンスがあります。いずれかのリソースがトランザクションの異常終了を決定した場合、トランザクション全体がキャンセルされ、リソースは更新されません。それ以外の場合、致命的な障害が発生しない限り、トランザクションは通常どおり実行されます。致命的な障害を防ぐために、すべてのリソースの更新はログに書き込まれます。これらのログは永続的であるため、障害が発生しても存続し、すべてのリソースについて再度更新できます。 ※フェーズ2:フェーズ1が異常終了しなかった場合のみ発生します。この時点で、特定して個別に制御できるすべてのリソース マネージャーが実際のデータ更新の実行を開始します。分散トランザクション 2 フェーズ コミット プロトコルでは、分散トランザクション コーディネーターとしての役割を担うメイン トランザクション マネージャーが存在します。トランザクション コーディネーターはトランザクション全体を担当し、ネットワーク内の他のトランザクション マネージャーと連携させます。分散トランザクションを実装するには、分散トランザクションのさまざまな参加者間でトランザクション コンテキスト情報を転送するためのプロトコル (IIOP など) を使用する必要があります。これには、分散トランザクションを実現するために、さまざまな開発者によって開発されたトランザクション参加者が標準プロトコルをサポートする必要があります。

Transact-SQL で開始される分散トランザクションの構造は比較的単純です:

1. Transact-SQL スクリプトまたはアプリケーション接続は、分散トランザクションを開始する Transact-SQL ステートメントを実行します。

2. ステートメントを実行する Microsoft® SQL Server™ が、トランザクションのマスター サーバーになります。

3. 次に、スクリプトまたはアプリケーションは、リンク サーバーに対して分散クエリを実行するか、リモート サーバーに対してリモート ストアド プロシージャを実行します。

4. 分散クエリまたはリモート プロシージャ コールが実行されると、マスター サーバーは自動的に MS DTC を呼び出し、リンク サーバーとリモート サーバーを分散トランザクションに登録します。

5. スクリプトまたはアプリケーションが COMMIT または ROLLBACK ステートメントを発行すると、マスター SQL Server は MS DTC を呼び出して 2 フェーズ コミット プロセスを管理するか、リンク サーバーとリモート サーバーにトランザクションをロールバックするように通知します。

ステートメント

作業のほとんどが Microsoft® SQL Server™ および MS DTC によって内部的に行われるため、分散トランザクションを制御するための Transact-SQL ステートメントはほとんどありません。 Transact-SQL スクリプトまたはアプリケーションで必要な Transact-SQL ステートメントは、次のとおりです。

##●分散トランザクションを開始します。

#●リンク サーバーに対して分散クエリを実行するか、リモート サーバーに対してリモート プロシージャ コールを実行します。

#標準の Transact-SQL COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION、または ROLLBACK WORK ステートメントを呼び出して、トランザクションを完了します。

#●Transact-SQL 分散トランザクションの場合、Transact-SQL スクリプトまたは接続を処理する SQL Server は自動的に MS DTC を呼び出し、トランザクションのコミットまたはロールバックを調整します。

REMOTE_PROC_TRANSACTIONS オプションは、sp_addserver を使用して定義されたリモート サーバーに対して行われるリモート ストアド プロシージャ呼び出しにのみ影響する互換性オプションです。リモート ストアド プロシージャの詳細については、「リモート ストアド プロシージャのアーキテクチャ」を参照してください。このオプションは、sp_addlinkedserver を使用して定義されたリンク サーバー上でストアド プロシージャを実行する分散クエリには適用されません。分散クエリの詳細については、「分散クエリ」を参照してください。

以上が分散トランザクションとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート