2016-12-19 15 views
5

com.atomikos.icatch.enable_logging=falseを設定すると、分散トランザクション機能がアプリケーションで機能するかどうかを理解したいと思います。クラッシュしており、同じトランザクションを完全に再開したいと考えています。リカバリは同じ分散トランザクション内で動作しますか?Atomikosトランザクションログcom.atomikos.icatch.enable_logging = false

私のアプリケーションでは、新しいトランザクションで最初から障害を再開できるという点で、障害に対しては寛容です。私の場合、設定するのが大丈夫ですか?com.atomikos.icatch.enable_logging=false

com.atomikos.icatch.enable_logging=falseは、分散トランザクションの参加者全員がコミットされていないとデータベースが矛盾する可能性がありますか?

更新は、私は私がここで説明している分散トランザクションの内部について少し多くを学ぶために、この問題が発生した後にトリガされた: How would you tune Distributed (XA) transaction for performance?

答えて

0

よく分かりませんでした。 com.atomikos.icatch.enable_loggingを無効にすると、答えはNOです。トランザクションの一貫性を保証することはできません。また、あるデータベースでコミットされ、別のデータベースでコミットされていないものもあります。

XAトランザクションでは、主に2つの役割があります。トランザクションコーディネーターとトランザクション参加者。 2つのトランザクションログが関係しています。 Cooridnatorのトランザクションログと参加者のトランザクションログ。

XAトランザクションの最初の参加者はすべて、自分自身をコーディネーターに登録します。 XA_START は、すべてのSQL文が異なる参加者に向けて送出される記録段階に従います。 X_ENDは、このプロセスの終了を示し、アプリケーションの観点からのコミットが呼び出された瞬間を示します。

この時点で、トランザクションコーディネータはバックグラウンドで制御を行います。 PREPAREメッセージが各参加者に送信されます。 各参加者はREAD TO COMMITまたはABORTで応答し、メッセージは強制的にログに記録されます。 すべての参加者がCOMMITで応答した場合。コミット呼び出しが各参加者に送信されます。

これは、クラッシュが発生し、トランザクションロギングがAtomikosのコーディネーター側で無効になっている場合、ある参加者がCOMMITを管理し、別の参加者がコミットできないことを意味します。

一貫性のある状態を保証する場合は、基本的にcom.atomikos.icatch.enable_loggingは必須です。

0

あなたが分散トランザクションをしたいなら、あなたはおそらく、ロギングを有効にしますあまりにも。それを無効にすることは、実際には設定をテストすることのみを目的としています

+0

これは十分詳細ではないと思います。同じ私はatomikosのWebサイトで読むことができます。 –

+0

正確です。だからこそWebサイトは信頼できる情報源です:-) –

+1

なぜ、トランザクションの詳細を詳しく説明しないのですか?使用法とアルゴリズムは100ポイントはあなたのものです:) –

関連する問題