2005年10月27日

分散トランザクション

複数のサーバーにわたるトランザクション処理
 
BEGIN DISTRIBUTED TRANSACTION ステートメントで明示的にステートメント開始
  終了は COMMIT|ROLLBACK TRANSACTION
 
トランザクションの発行者:開始ステートメントの実行者、分散トランザクションを管理
  SQL Server では MS DTC サービスがステートメントを管理
 
2 フェーズコミット (2PC)
  ネットワーク障害により一部のサーバーがトランザクションのコミットやロールバックを行う危険性を避ける
  準備フェーズ
   
 
コミット要求を受け取った MS DTC サービスがそのトランザクションに関連するすべての SQL Server に準備コマンドを送信
   
 
各 SQL Server はトランザクションを持続的なものにするために必要な処理をすべて実行、トランザクションのログイメージが入っているすべてのバッファをディスクにフラッシュ
    SQL Server の準備フェーズが完了すると MS DTC に準備の成否を通知
  コミットフェーズ
   
 
すべての SQL Server から準備の正常完了通知を受け取った MS DTC は SQL Server にコミットコマンドを送信し、コミットを完了
   
 
全 SQL Server がコミット正常完了を報告した場合、トランザクションマネージャはアプリケーションに成功通知を送信
   
 
準備できなかったことを報告する SQL Server があった場合、MS DTC は全 SQL Server にロールバックコマンドを送信、アプリケーションにコミットできなかったことを報告
      → 全 SQL Server でコミットが完了するまでコマンドを送り続ける
posted by w@ko at 19:20|  ・SQL Server ノート | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。