10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb


13.3.7 xaトランザクション

XAトランザクションのサポトは,InnoDBストレジエンジンに対して使用できます。MySQL XA実装は,X/Open CAEドキュメント分散トランザクション処理:xa仕様に基づいています。このドキュメントは开放集团によって発行されており,http://www.opengroup.org/public/pubs/catalog/c193.htmで入手できます。現在のxa実装の制限に実装の制限にいては,セクションd。6“xaトランザクションの制約”で説明されています。

クラアント側には,特殊な要件は何もありません。MySQLサバへのXAンタフェスは,XAキワドで始まるSQLステトメントで構成されています。MySQLクライアントプログラムは,SQLステートメントを送信したり,XAステートメントインタフェースのセマンティクスを理解したりできる必要があります。これらが,最新のクラ电子书阅读器アントラ电子书阅读器ブラリに対してリンクされている必要はありません。古いクラ邮箱アントラ邮箱ブラリも機能します。

現在MySQL连接器の中でMySQL连接器/ J 5.0.0以降は,XA SQLステートメントインタフェースを自動的に処理するクラスインタフェースを使用してXAを直接サポートします。

XAは分散トランザクション,つまり,複数の個別のトランザクションリソースがグローバルトランザクションに参加することを許可する機能をサポートしています。トランザクションリソースは多くの場合RDBMSですが,ほかの種類のリソースであってもかまいません。

グローバルトランザクションには,それ自体でトランザクションである複数のアクションが含まれますが,そのすべてがグループとして正常に完了するか,またはすべてがグループとしてロールバックされるかのどちらかである必要があります。基本的に,これは酸プロパティを1レベル上に拡張することにより,複数の酸トランザクションを,同じく酸プロパティーを持つグローバル操作のコンポーネントとして連携して実行できるようにします。(ただし,分散トランザクションに対しては,可序列化的分離レベルを使用してacidプロパティを実現する必要があります。非分散トランザクションに対しては可重复读取を使用すれば十分ですが,分散トランザクションに対しては不十分です。)

分散トランザクションのいくかの例:

  • あるアプリケーションが,メッセージングサービスをRDBMSと組み合わせる統合ツールとして機能する場合があります。このアプリケーションは,同じくトランザクションデータベースを含む,メッセージの送信,取得,および処理を行うトランザクションがすべて,確実にグローバルトランザクション内で実行されるようにします。これは,トランザクション電子メルと考えることができます。

  • アプリケーションが,MySQLサーバーや甲骨文サーバー(または複数のMySQLサーバー)などの異なるデータベースサーバーに関連するアクションを実行します。ここで,複数のサーバーに関連するアクションは,各サーバーに対してローカルな個別のトランザクションとしてではなく,グローバルトランザクションの一部として実行する必要があります。

  • 銀行が口座情報をRDBMS内に保持し,現金自動預け払い機(ATM)を通して現金を出し入れしています。ATMのアクションが口座に正しく反映されるように保証することが必要ですが,これはRDBMSだけでは実行できません。グローバルなトランザクションマネージャーがATMとデータベースリソースを統合して,財務トランザクションの全体的な一貫性を確保します。

グローバルトランザクションを使用するアプリケーションには,1つまたは複数のリソースマネージャーと1つのトランザクションマネージャーが含まれています。

  • リソスマネジャ(rm)は,トランザクションリソスへのアクセスを提供します。デ,1。これは,RM によって管理されているトランザクションをコミットまたはロールバックできる必要があります。

  • トランザクションマネージャー(TM)はグローバルトランザクションの一部であるトランザクションを調整します。これは,これらの各トランザクションを処理するrmと通信します。グロバルトランザクション内の個々のトランザクションは,グロバルトランザクションのブランチです。グローバルトランザクションとそのブランチは,あとで説明されている名付けスキームによって識別されます。

XA MySQLのMySQL実装ではMySQLサーバーは,グローバルトランザクション内のXAトランザクションを処理するリソースマネージャーとして機能できます。MySQLサーバーに接続するクライアントプログラムは,トランザクションマネージャーとして機能します。

グローバルトランザクションを実行するには,どのコンポーネントが関連しているかを知り,各コンポーネントをそのコミットまたはロールバックが可能なポイントに持っていくことが必要です。各コンポーネントが自身の成功する能力に関してレポートする内容に応じて,それらのすべてが,アトミックグループとしてコミットまたはロールバックする必要があります。つまり,すべてのコンポーネントがコミットするか,またはすべてのコンポーネントがロールバックする必要があります。グローバルトランザクションを管理するには,いずれかのコンポーネントまたは接続しているネットワークが失敗する可能性があることを考慮に入れる必要があります。

グローバルトランザクションを実行するためのプロセスでは,2フェーズコミット(2 pc)が使用されます。これは,グローバルトランザクションのブランチによって実行されるアクションが実行されたあとに行われます。

  1. 最初のフェズでは,すべてのブランチが準備されます。まり,これらはtmからコミットの準備を行うよう指示されます。これは通常,ブランチを管理する各RMが,そのブランチのアクションを安定したストレージ内に記録することを示します。これらのブランチはこれを実行できるかどうかを示し,これらの結果が2番目のフェーズに使用されます。

  2. 2番目のフェズでは,tmがrmにコミットまたはロらを行うかを指示します。すべてのブランチが,準備できたときにコミットできることを示した場合は,すべてのブランチがコミットするよう指示されます。いずれかのブランチが,準備できたときにコミットできないことを示した場合は,すべてのブランチがロールバックするよう指示されます。

場合によっては,グローバルトランザクションで1フェーズコミット(1 pc)が使用されることがあります。たとえば,グローバルトランザクションが1つのトランザクションリソース(つまり,1つのブランチ)だけで構成されていることがトランザクションマネージャーによって検出された場合は,そのリソースに準備とコミットを一度に行うよう指示できます。


本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb