無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: D 制限と規制 :: D.5 XA トランザクションの規制
« D.4 ビューの規制

D.6 MySQL の制限 »
Section Navigation      [Toggle]
  • D 制限と規制
  • D.1 ストアド ルーチンとトリガの規制
  • D.2 サーバサイドカーソルの規制
  • D.3 サブクエリの規制
  • D.4 ビューの規制
  • D.5 XA トランザクションの規制
  • D.6 MySQL の制限

D.5. XA トランザクションの規制

XA トランザクションのサポートは、InnoDB 保存エンジンに限られています。

MySQL XA の実装は、MySQL サーバが Resource manager の役割をしたり、クライアント プログラムが Transaction Manager の役割をする 「外部 XA,」 のものです。「内部 XA」 は実装されていません。これによって、MySQL サーバ内の個々の保存エンジンが RM の役割をしたり、サーバそのものが TM の役割をしたりすることができます。内部 XA は、ひとつ以上の保存エンジンが関与する XA トランザクションを処理するために必要になります。テーブル ハンドラのレベルで 2 相コミットをサポートする保存エンジンを必要とするため、内部 XA の実装は不完全なもので、現時点では InnoDB だけです。

XA START では、JOIN および RESUME 句はサポートされていません。

XA END では、SUSPEND [FOR MIGRATE] 句はサポートされていません。

xid 値の bqual 部分が、大規模トランザクション内の各 XA トランザクションによって異なる必要があるという条件は、現在の MySQL XA の実装の制限です。これは XA の仕様によるものではありません。

XA トランザクションが PREPARED 状態に至ると、MySQL サーバが切断される ( 例えば、Unix の kill -9 で ) 、または不自然に停止する場合、サーバが再起動した後にトランザクションを続けることができるはずです。しかし、クライアントが再接続をし、トランザクションをコミットした場合、そのトランザクションは、たとえコミットされていても、バイナリ ログには記録されないでしょう。これは、データとバイナリ ログの同調が途切れたということです。XA を複製と一緒に安全に使用することはできないと思われます。

サーバが保留になっている XA トランザクションを、たとえ PREPARED 状態に至っていても、ロールバックするということはありえます。これは、クライアントの接続が切断されて、サーバは起動を続ける、またはクライアントが接続されているのに、サーバが自然に停止する場合に起こります 。( 後者のケースでは、サーバが切断される各接続をマークし、それに関連する PREPARED XA トランザクションをロールバックする ) 。PREPARED XA トランザクションをコミットする、またはロールバックすることは可能であるはずですが、これはバイナリのロギング メカニズムを変更なしには実行できません。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.