[解決済み] 二相コミットはどのように最後の一秒の失敗を防ぐのか?
2023-05-08 09:51:46
質問
私は、分散トランザクション全体で2相コミットがどのように動作するかを研究しています。私の理解では、フェーズの最後の部分で、トランザクションコーディネーターは、それがコミットする準備ができているかどうか、各ノードに尋ねます。誰もが同意した場合、それは先に進み、コミットするようにそれらを伝える。
次の失敗を防ぐものは何ですか?
- すべてのノードが コミットする準備ができている
- トランザクション コーディネーターは彼らに "先にコミット" するように指示します。 とコミットするように指示しますが、ノードの 1 つが を受け取る前にクラッシュしてしまいます。 メッセージ
- 他のすべてのノードが正常にコミットしますが、分散トランザクションが破損しています。
- 私の理解では、クラッシュしたノードが戻ってきたとき、そのトランザクションはロールバックされています (コミットメッセージを受け取っていないため)。
私は、各ノードが分散トランザクションについて何も知らない通常のデータベースを実行していると仮定しています。私は何を見逃したのでしょうか?
どのように解決するのですか?
みんなの答えをまとめる。
-
通常のデータベースを分散トランザクションで使用することはできません。データベースはトランザクションコーディネータを明示的にサポートしなければなりません。
-
いくつかのノードがすでにコミットしているため、ノードはロールバックするように指示されません。何が起こるかというと、クラッシュしたノードが戻ってきたときに、トランザクションコーディネーターがコミットを終了するように指示します。
関連
-
[解決済み] なぜORMを使う必要があるのですか?[クローズド]
-
[解決済み] 変更履歴/監査データベーステーブルの最適なデザインは?[クローズド]
-
[解決済み] Mavenプラグインを1回だけ実行する?
-
[解決済み] 1対1の関係はどのようなときに使うべきですか?
-
[解決済み] なぜ、いつ、Liquibaseなのか?
-
[解決済み] MS Accessの代替となるフリーソフト [終了しました]。
-
[解決済み] データベースで月額課金システムを設計するためのグッドプラクティス【終了しました
-
[解決済み] ファセット検索とは何ですか?
-
[解決済み] データベースにおけるカーディナリティとは?
-
[解決済み] 営業時間のデータベースへの格納
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] データベースのインデックスはいくつあっても足りない?
-
[解決済み] SQLite UPSERT / UPDATE OR INSERT
-
[解決済み] リレーショナル・データベースにおけるカタログとスキーマの違いは何ですか?
-
[解決済み] DB2とOracleから見たCLOBとBLOBの違いとは?
-
[解決済み] Postgresql - データベースをバックアップし、異なる所有者にリストア?
-
[解決済み] データベースとファイルシステムストレージ
-
[解決済み] データベースに登録する電子メールアドレスの最適な長さは?
-
[解決済み] データベースからdjangoのモデルを生成することは可能か?
-
[解決済み] キーの取り外し方法を教えてください。
-
[解決済み] 73億行のマーケットデータ(読み出しに最適化)を格納する方法とは?