1

https://en.wikipedia.org/wiki/Two-phase_commit_protocolの 2 フェーズ コミットの説明を参照しています。

コミット前フェーズで、両方のリソース マネージャーが賛成票を投じたとします。

トランザクション マネージャーが各リソース マネージャーに COMMIT メッセージを送信してコミットを開始し、そのうちの 1 つだけが ACK を返し、もう 1 つが ACK を返さない場合、トランザクション マネージャーは、コミットに成功した最初のリソース マネージャーから既にコミットされたトランザクションをどのようにロールバックしますか? ?

グローバル トランザクションが失敗したときに、トランザクションが一方のリソース マネージャーでコミットされ、もう一方のリソース マネージャーではコミットされない可能性はありませんか?

4

2 に答える 2

1

はい、そうです。

その場合、トランザクション コーディネーターは、トランザクションを正常にコミットしたすべての関係者に、トランザクションをロールバックする必要があることを通知します。

これは通常、ハードウェア障害やディスク容量不足などの問題によって引き起こされる比較的まれな状態です。多くのシステムでは、ロールバックには、ジャーナル ファイルから読み取った変更の取り消しが含まれます。

これはすべて、リンク先の記事でも説明されています。

于 2015-11-27T20:52:47.663 に答える