JP2558052B2 - 仮定コミット2フェーズコミットプロトコルを用いるトランザクション処理システム及びその動作方法 - Google Patents

仮定コミット2フェーズコミットプロトコルを用いるトランザクション処理システム及びその動作方法

Info

Publication number
JP2558052B2
JP2558052B2 JP5157165A JP15716593A JP2558052B2 JP 2558052 B2 JP2558052 B2 JP 2558052B2 JP 5157165 A JP5157165 A JP 5157165A JP 15716593 A JP15716593 A JP 15716593A JP 2558052 B2 JP2558052 B2 JP 2558052B2
Authority
JP
Japan
Prior art keywords
commit
transaction
tid
tids
coordinator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP5157165A
Other languages
English (en)
Other versions
JPH06168169A (ja
Inventor
バトラー ランプソン
デイビッド ビー ロメット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JPH06168169A publication Critical patent/JPH06168169A/ja
Application granted granted Critical
Publication of JP2558052B2 publication Critical patent/JP2558052B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2322Optimistic concurrency control using timestamps
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は分散計算システムの
動作に関し、特に分散トランザクション処理システムの
ためのコミットプロトコルに関する。
【0002】
【従来の技術】トランザクション処理を用いるコンピュ
ータシステムは、特定の「コミット」が実行されるま
で、データの状態が永久的な変化をしないこと或いはそ
のシステムの他のノードから見える変化をしないことを
保証するためのコミットプロトコルを使う。トランザク
ション処理において通常用いられるこれらのプロトコル
の1つは、その詳細は文献「分散トランザクションの処
理モデルのツリーのための有効なコミットプロトコル」
(Mohan & Lindsay;"Efficient Commit Protocolsfor t
he Tree of Processes Model of Distributed Transact
ions",Proc.2nd ACM SIGACT/SIGOPS Symposium on Prin
ciples of Distributed Computing,17 August 1983 )
に詳細に記述されている、所謂「2フェーズコミット」
即ち「2PC」である。2フェーズコミットプロトコル
は、「仮定アボート」型又は「仮定コミット」型のコミ
ットプロトコルとすることができる。現在のトランザク
ション処理システムにおいては、分散トランザクション
のコミットメントを調整するために、通常、仮定コミッ
ト2フェーズコミットプロトコルではなく、仮定アボー
ト2フェーズコミットプロトコルが用いられる。しかし
ながら、コミットされたトランザクションの各サブオー
ディネイトが、アボートのアクノリッジは必要ではある
が、コミットメッセージの回答として最終のアクノリッ
ジをコーディネイタに送付する必要がないので、多くの
状態において仮定コミットプロトコルが明確な利点を有
する。仮定アボートを用いると、この最終のアクノリッ
ジは、コーディネイタからのアボートメッセージに対し
て必要ではなく、コミットメッセージに対して必要であ
る。トランザクションは、アボートするより遥かに頻繁
にコミットする。従って、仮定コミットプロトコルは、
仮定アボート変形版より遥かに頻繁にこの最終のアクノ
リッジを節約する。このため、仮定コミットプロトコル
の性能改善を実現するためには、後述のように、この現
在の仮定コミットの障害を除去することが望ましい。
【0003】従来のワークでは、コミットコーディネイ
タに必要な機能であるという理由で、仮定コミットに代
わって仮定アボートプロトコルが選択されていた。仮定
アボートプロトコルを用いると、サブオーディネイト
(これはコホートとも呼ばれる)がコーディネイタ処理
にトランザクションの状態を問い合わせた時はいつで
も、コーディネイタがそれのレコードを持っておれば、
トランザクションがコミットされる。他方情報がない場
合は、コーディネイタ処理はトランザクションがアボー
トされることを表示する。これは、以前のクラッシュは
全てアボートしたものと仮定されるので、トランザクシ
ョンがコミットするまではコーディネイタ処理が情報を
安定化する(ディスク記憶装置に書込む)必要はなく、
これは生起したことと一致することを意味する。コーデ
ィネイタは、結局、全てのコホートが最終メッセージを
アクノリッジした時に(非強制的な)エンドトランザク
ションレコードを書込む。これにより、コーディネイタ
は、記憶していた状態のガーベジコレクションを行い、
そのガーベジコレクション情報をシステムクラッシュの
間中持続することができる。
【0004】仮定コミットプロトコルについては、コー
ディネイタ処理が、どのトランザクションがアボートし
たかを明確に知る必要がある。伝統的にこれは、2フェ
ーズコミットプロトコルが開始される時点で、コーディ
ネイタがログに対して、そのトランザクションが成功裏
にコミットしてはいない事実を強制的に与え、それが、
プロトコル開始のためのものであるが完結は表示しない
ログレコードを持つということを意味する。これらの不
完全なプロトコルトランザクションは、アボートされた
トランザクションのリストに加えられる。更に、プロト
コル開始ログレコードは、揮発性のメモリーに保持され
るアボートリスト情報のガーベジコレクションを可能に
する。全ての期待されたアクノリッジが受信された時点
で、コーディネイタは、それ以上の質問は受信されない
ことを知る。この時、トランザクションについてのアボ
ート情報がディスカード可能になる。エンドトランザク
ションレコードはこの安定状態を示す。
【0005】
【発明が解決しようとする課題】2フェーズコミットプ
ロトコルの開始時点における、コーディネイタによるロ
グレコードの強制は追加の消費である。この余分の書込
みの強制は、2フェーズコミットプロトコルを経て完結
する各トランザクションに対して行われる。従って、本
発明の目的は、2フェーズコミットプロトコルの仮定コ
ミット形式の利点を残しながら、この余分のログ強制を
排除することにある。
【0006】
【課題を解決するための手段】本発明は、特許請求の範
囲に記載されたような2フェーズコミットプロトコルに
存在する。本発明の1つの実施例によれば、分散トラン
ザクション処理システムのための2フェーズコミットプ
ロトコルは、「プリペア」メッセージがサブオーディネ
イト処理に送られる前にコミット手順の最初に通常書込
まれる最初の「コミット」レコードが、強制的なログ書
込みではなく、非強制的な型であることを除いて、仮定
コミット構成を用いる。即ち、「コミット」レコードは
ログバッファ即ち揮発性メモリーに書込まれるが、ログ
バッファは直ちにディスクに直接書込まれる必要はな
く、従って、ディスクへの書込みに固有の性能の低下を
避けることができる。通信のクラッシュ又は損失に続い
て、サブオーディネイト処理から行われる質問にコーデ
ィネイタが回答するために必要な情報を提供できるよう
にするため、不確定トランザクションの組を制限する技
術が用いられる。トランザクションには、トランザクシ
ョンID(T_ID)として識別される昇順の番号が付
与される。コミットするトランザクションのトランザク
ションIDが、安定的に記録されたトランザクションI
Dの最高番号から予め選択された番号までの範囲内にな
ければ、コミット動作は開始できない。即ち、トランザ
クション番号がディスク記憶装置に書込まれている(従
ってクラッシュに耐える)最近の開始「コミット」レコ
ードから極端に離れていると、この開始コミットレコー
ド(及び安定的に記録されていない他のレコード)は、
揮発性メモリーに保持されずにディスクに書込まれる。
大部分のコミットトランザクションは、このようにディ
スク書込み(強制的なログ)のための待時間なしに処理
され、従って性能が改善される。不確定トランザクショ
ン(コミットしたか、アボートしたか、又は開始するこ
とはないかが未知)の組を限定し、これによりこの組が
コーディネイタによってキャッシュ又は揮発性メモリー
に記憶され、質問に答えることが可能になり、且つシス
テムクラッシュの後で再構成することが可能になるよう
な技術が開示されている。
【0007】
【発明の実施の形態】添付図面を用いて行われる次の例
示としての好ましい実施例の説明から、本発明の更に詳
細な理解が得られる。
【0008】図1には、通信リンク10及び多数のノード
11、12、13、14、15等を有する分散コンピュータシステ
ムが示されている。リンク上の通信方法は、イーサネッ
ト、トークンリング、FDDI又は他の同様のローカル
エリアネットワーク構成であり、更に遠隔リンクに対し
てはマイクロ波又は衛星リンクを含むことができる。接
続リンク自体は、例えば光ファイバ、撚線対電線又は同
軸ケーブルのような多くの商業的に利用できる技術のい
ずれかであってもよい。リンク10の構成及びその動作の
特定の型は本発明の一部ではない。必要なことは、コン
ピュータノード間の通信リンクを確立し、分散トランザ
クション処理システムを実現するための手段である。図
2によれば、各ノード11、12等は、通常、システムバス
19によって結合されたCPU16、主メモリー17及びディ
スク記憶装置18を含む。ネットワークアダプタ20が、通
信リンク10とのインタフェースになる。このノードは、
例えば、机上型ワークステーション、又はサーバーとし
て作用するミニコンピュータ、又はディスク記憶装置の
ような共有型システムリソース、又は他のネットワーク
或いは長距離リソースへのブリッジである。ノード(サ
イト)11−15は、何十、何百又は何千とあってもよい。
【0009】図2のノードの適当な構成の例としては、
CPUが例えば文献「コンピュータプログラム及びアー
キテクチャ:VAX」("Computer Programming and Ar
chitecture:The VAX", 2nd Ed., Levy and Eckhouse, D
igital Press,1989)に記載されたVAX(商標)アーキ
テクチャである。VAXアーキテクチャの1チップCP
Uは米国特許第5,006,980 号(Sander, Uhler, Brownに
よって発明され、本発明の譲受人であるディジタルイク
ィップメントコーポレーションに譲渡された)に開示さ
れている。CPU16はまた、欧州特許出願91401782・7
(これもディジタルイクィップメントコーポレーション
に譲渡された)に開示されている改良された64ビット
RISCアーキテクチャであってもよい。これに代え
て、勿論、CPUは、例えばインテル386又は486
アーキテクチャ、又はMIPSR3000 又はR4000 RIS
Cアーキテクチャ等の多くの他の型であってもよい。
【0010】図1及び2の分散システムの実行例は、数
種の型が市販されているデータベース管理システムのよ
うな分散された用途である。分散データベースシステム
においては、トランザクション(コンシステンシ及びリ
カバリのアトミックユニット)のアクションが複数のノ
ード又はサイト11、12、13等で起きる。トランザクショ
ンは、多重データ操作及び1つのトランザクションを構
成する定義ステートメントを含むことができる。分散ト
ランザクションコミットプロトコルは、(1)トランザ
クションの全ての影響が持続するために、又は(2)リ
ンク10又はノード11、12等のうちの1つが故障してメッ
セージの損失がある場合であっても全く影響が続かない
ようにするために、必要である。コミットプロトコル
は、分散トランザクション実行の一様なコミットメント
を保証する。
【0011】開始する全てのトランザクションが最終的
にコミットするわけではない。コミットしないトランザ
クションは所謂アボートである。多くの理由の中で、ト
ランザクションがアボートするのは、電源が断になった
場合、システムがクラッシュした場合、他のトランザク
ションとの同時実行競合が起きた場合、又はユーザー
(又はユーザーのアプリケーションプログラム)が他の
エラーを検出して明示的にアボートする場合である。
【0012】図1及び2のシステムで実行される分散デ
ータベースシステムは、異なるノードで実行される多数
の処理を含み、各々が、トランザクションがアボートさ
れることが必要ならばそのアクションは実行されなかっ
たことにすることとして、トランザクションのアクショ
ンを暫定的に実行することができる。データは、種々の
ノード11、12等の図3のデータ記憶21のような種々の不
揮発性の位置に記憶され、このようなそれぞれのデータ
記憶装置は、コミットプロトコルの実行中のトランザク
ションに対する全ての状態の変化及びトランザクション
の変化を、データ記憶21に記録するために用いられるロ
グ22を持つ。これらのログレコードは、通常、ノードの
ディスク18のような安定な不揮発性記憶装置の一部であ
るログファイル22に連続的に書込まれる。
【0013】ログファイル22が書込まれる時は、この書
込みは主メモリー17中のログ「バッファ」に一時的に行
われ、次に、不揮発性ディスク記憶装置18に移す。この
ように、ログは揮発性主メモリー17に対して行われ、後
にディスク記憶装置18に書込まれる。コミットプロトコ
ルが「強制ログ書込み」を用いると、そのログレコード
(及び全ての以前のレコード)が主メモリー17のログバ
ッファからディスク18の安定記憶装置の永久ログに書込
まれる。ログレコードを書込む処理は、この強制的なロ
グ書込みが完了するまでその順序で連続的に行われる訳
ではない。サイト(ノード11、12等)がクラッシュする
場合は揮発性メモリー17の内容が失われると仮定される
が、強制的なログ書込みが完了すると強制されたレコー
ドはディスク記憶装置18のログ22に存在し、クラッシュ
を切り抜ける。従って、サイトが再スタートする時に
は、ディスク18から読取ることによってこのレコードを
含むログを再生することができる。
【0014】強制的ログ書込みがコミットプロトコルに
含まれない場合は、このレコードは非同期的に、即ち主
メモリー17のメモリーバッファにのみ書込まれ、次に若
干後の時刻、例えば、強制的ログ書込みが偶然行われる
時又はそのレコードを含むバッファが満杯の時にディス
ク18に移される。ログレコードを送る処理は、安定な記
憶装置18への書込みの完了を待たずに実行が続けられ
る。従って、メモリー17へのログ書込みの後で且つディ
スク18への書込みの前にサイトがクラッシュした場合
は、このレコードはクラッシュを切り抜けられない。こ
のように、強制的なログ書込みはかなり強力(残存が確
実である)であるが、ログを強制する処理の効率が阻害
されること、即ち、応答時間が増加することが問題であ
る。CPU16によってメモリー17に書込むために用いら
れる時間は、多分、数CPUサイクル(例えば、数百ナ
ノ秒)であるが、ディスク18への書込み完了の確認を受
信するために必要な時間は多分、数ミリ秒であり、即ち
10,000倍大きい。従って、効率の観点から、可能な限り
強制書込みを避けることが必須である。
【0015】本発明の新しい特徴を説明する前に、前記
の参考文献において(Mohan 及びLindsay によって)与
えられた説明を用いて、標準的な2フェーズコミットプ
ロトコル、並びに仮定アボート及び仮定コミットと呼ば
れる変形を、背景として説明する。
【0016】コミットプロトコルはいくつかの要件を持
っている。第1に、それはトランザクションのアトム性
を保証しなければならない。トランザクションがコミッ
トされると、そのコミットは全面的に完結した状態に達
するか又は全面的に完結しない状態かいずれかである。
部分的な完結はあり得ず、従って、コミット動作の間に
サイト又は分散システムのいずれかの部分がクラッシュ
すると、システムは部分的に完結した部分の全てを削除
した状態に復旧しなければならない。第2に、システム
が、或る時間の後にコミット処理の結果を「忘れる」こ
とができなければならない。即ち、クラッシュが起きな
い場合はそのデータを必要とする可能性が時間と共に急
速に減少するので、古いデータの保持を継続しない。第
3に、効率の面から、ログ書込みとメッセージ送信のオ
ーバーヘッドを最小にすることが好ましい。第4に、シ
ステムクラッシュは稀にしか起きず、大部分の時間はコ
ミットプロトコルが故障なしに動作し、ログレコードを
再生する必要はないので、従って、効率は無故障状態に
対して最適にされるべきである。第5に、読出し専用ト
ランザクションは必要性が低いので、システムの効率を
最適にすることが可能な時はいつでもこれを利用すべき
である。
【0017】2フェーズコミットプロトコルは、図1の
システムにおけるように、ユーザーアプリケーションに
結合されたコーディネイタと呼ばれる1つ(1つだけ)
の処理及びサブオーディネイトと呼ばれる1組の他の処
理があるような、分散トランザクション実行のモデルを
使用する。図4を参照すると、データベース管理システ
ムのようなアプリケーションプログラム24は、トランザ
クションのコミット段に到達すると、コミットコーディ
ネイタと呼ばれる処理25を呼出し、次にコーディネイタ
25が制御を行う。サブオーディネイト処理26は、図1の
ノード11−15の分離されたそれぞれで実行する処理であ
り、コーディネイタ25は、1つのノードで実行する処理
である。
【0018】トランザクションは、トランザクションI
D即ちTIDと呼ばれる全体において独自の名前を持
ち、更に、処理も、処理IDと呼ばれる全体において独
自の名前を持つと仮定される。処理名は更に処理の位置
(ノード)を表す。通常、処理はサイトからサイトへ移
ることはない。処理は、共同して分散トランザクション
の機能を遂行する。
【0019】図5及び6を参照すると、2フェーズコミ
ットプロトコルが、先ず、無故障条件で記載されてい
る。アプリケーション24(ユーザー)がトランザクショ
ンのコミットを必要とする点に到達すると、メッセージ
又はコマンド(「コミットトランザクション」コマン
ド)がコーディネイタ25に送られる。これは図5の番号
27で示される。コーディネイタ25は、コミットプロトコ
ルのフェーズ1を開始し、各サブオーディネイト26に並
列に「プリペア」メッセージを送信し、それぞれに対し
て、トランザクションがコミットされるように準備され
ているか否かを問い合わせる。これは番号28で示され
る。図6には、サブオーディネイト処理26の動作が示さ
れている。各サブオーディネイト26が、番号29で、プリ
ペアメッセージを受信し、各サブオーディネイトは先
ず、番号30で、トランザクションがコミットされるよう
にする意志があるか否かを決め、その意志がある場合
は、第1に番号31で「プリペア」ログレコードの強制書
込みを行い、第2に番号32で「イエス投票」メッセージ
をコーディネイタ処理25に送信する。次に番号33で各サ
ブオーディネイト26はコーディネイタ25からの「コミッ
ト」又は「アボート」のメッセージを待つ。「イエス投
票」送出処理は準備完了状態といわれる。この処理は図
7及び8に示されるような状態図によっても表される。
この図においては、コーディネイタ及びサブオーディネ
イト処理はそれぞれアイドル状態27a 又は29a を持つ。
この状態では、サブオーディネイト処理は番号31で準備
完了レコードの強制書込みを行うと準備完了状態31a に
行く。トランザクションがアボートされることを望んで
いる各サブオーディネイト26は、図6の番号34で、第1
にそのログにアボートレコードの強制書込みを行い、次
に番号35で「ノー投票」をコーディネイタ25に送信す
る。「ノー投票」は拒否権であり、このような「ノー投
票」を送信するサブオーディネイト26は、コーディネイ
タ25によってこのトランザクションがアボートされるで
あろうと理解し、従って、サブオーディネイト26は、番
号36で、このトランザクションをアボートし、そのロッ
クを解除し、その揮発性記憶装置の中のこのトランザク
ションについての情報を保持しない(このトランザクシ
ョンを「忘れる」)。図7の状態図において、番号34
で、サブオーディネイト処理はアボートレコードの強制
書込みを行ってアイドル状態を続ける。
【0020】図5において、コーディネイタ25がサブオ
ーディネイト26から投票を受信した後、2フェーズプロ
トコルの第2フェーズが開始される。番号37で全ての
「イエス投票」を受信した場合はコーディネイタ25はコ
ミット状態に移り、番号38で、「コミット」レコードの
ログ強制を行い、全てのそのサブオーディネイト26に対
して「コミット」メッセージを送信する。番号38で、永
久記憶装置18に強制ログ書込みが完了すると、このトラ
ンザクションはコミット点を通過し、番号39で、アプリ
ケーション処理24に「完了」メッセージを送信すること
ができる。図8において、番号38で、コミットレコード
の強制ログがこの処理をコミット状態38aに移す。コミ
ット点を通過すると、図5の番号40で、そのトランザク
ションがコミットされる旨のメッセージがユーザーに送
られる。図6において、番号33で、コミットメッセージ
を受信した各サブオーディネイト26はコミット状態に移
り、番号41で、コミットレコードの強制書込みを行い、
番号42で、コーディネイタ25に「アクノリッジ」メッセ
ージを送信し、次いでそのトランザクションをコミット
(ロック解除等)し、そのトランザクションを「忘れ
る」。図7において、番号41での強制書込みにより、こ
の処理はアイドル状態29a に戻る。しかしながら1つで
も「ノー投票」があると、コーディネイタ25(図5)が
アボート状態に移る原因になり、この状態では、番号43
で、アボートレコードの強制書込みが行われ、番号44
で、準備状態にあるサブオーディネイトにのみ「アボー
ト」メッセージが送信される。図8において、番号43で
の強制書込みにより、コーディネイタ処理はアイドル状
態27a に移る。図6において、番号33で、サブオーディ
ネイト処理が「アボート」メッセージを受信すると、そ
れはアボート状態に移り、番号45で、アボートレコード
の強制書込みを行い、次いでコーディネイタ25にアクノ
リッジメッセージを送信し(番号46)、そのトランザク
ションをアボートし、それを「忘れる」(番号47)。こ
れは図7の状態図に示され、番号45でのアボートレコー
ドの強制ログにより、この処理は準備状態31a からアイ
ドル状態29a に移る。図5において、コーディネイタ処
理25は、番号48で、フェーズ2でメッセージを送信され
ていた(番号40)全てのサブオーディネイト26からアク
ノリッジメッセージを受信した後、番号49で、エンドレ
コードを書込み、そのトランザクションを「忘れ」、図
8の状態図でアイドル状態27a に戻る。
【0021】番号42及び46において、サブオーディネイ
ト26がアクノリッジメッセージを送信するとの要件によ
り、番号48で、コーディネイタ25は、全てのサブオーデ
ィネイトが結果(コミット又はアボート)を知っている
ことを確認できる。アクノリッジメッセージが送信され
る前における、番号41又は45での各サブオーディネイト
がコミットレコード又はアボートレコードの強制書込み
を行う要件は、サブオーディネイト処理26がコーディネ
イタ25に対して、「コミット」又は「アボート」メッセ
ージをアクノリッジした後は、故障の場合でも最終結果
について質問してはならないことを意味する。一般的な
原理は、番号42及び46において、サブオーディネイト26
がアクノリッジメッセージを送ると、それにより、番号
41又は45での強制ログレコードにより、アクノリッジの
前に、このサブオーディネイトは決してコーディネイタ
25に対して、そのアクノリッジメッセージの内容につい
て質問をしないことである。この原理はトランザクショ
ンのアトム性を保証するために必要である。
【0022】図9によれば、いずれかのサイト11−15に
おける処理によって行われたログ動作によって生成され
たログ22におけるレコード54は、例えば「プリペア」
「エンド」等のレコードの型を与えるタイプフィールド
55、レコードを書込む処理(処理ID)の識別子のため
のフィールド56、コーディネイタ処理25の識別子のため
のフィールド57、及び、サブオーディネイトによって書
込まれたプリペアレコードについて、フィールド58への
書込み者によって保持されているロックの名前、又は、
コーディネイタによって書込まれたコミット又はアボー
トレコードについて、フィールド59に書込まれたサブオ
ーディネイトの名前及びフィールド60に書込まれたトラ
ンザクションID(TID)を含む。別の他のログレコ
ードは同様のフィールドに他の必要な情報を有する。こ
れらのログレコードは、故障の際に実行している処理の
状態を再現するための復旧処理を可能にする。
【0023】図5−8の古典的な2フェーズプロトコル
の実行の間、アボート又は故障がない場合は、各サブオ
ーディネイト26は2つ、即ち、番号31及び41のコミット
するトランザクションについてのプリペアレコード及び
コミットレコードの強制書込みを行い、2つのメッセー
ジ、即ち、番号32のイエス投票及び番号42のコミットア
クノリッジを送信する。この状態で、コーディネイタ処
理25は、各サブオーディネイト26に2つのメッセージ、
即ち、番号28及び40のプリペア及びコミットを送信し、
1つ、即ち、番号38での「コミット」の強制書込みを行
い、1つ、即ち、番号49での「エンド」の非強制書込み
を行う。この動作は、標準2フェーズコミットプロトコ
ルタイプについての図10のテーブルの第1行を2つの
欄に分けて要約されている。
【0024】次に、サイト11−15又は通信リンク10の故
障の状態における標準2フェーズコミットプロトコルを
検討する。各サイト11−15は、どのサイトが故障した時
でもいつでもエンターして故障のために起動する復旧処
理62(図4)を持つと仮定する。復旧処理62の一例が図
11に示されている。復旧処理62は、他のサイト11−15
における他の復旧処理62からの全てのメッセージを処理
し、そのサイトの最近の故障の時にコミットプロトコル
25を実行していた全てのトランザクションを処理する。
再スタートから起動されたクラッシュからの復旧の部分
として、復旧サイトにおける復旧処理62は、番号64で、
安定な記憶装置18上のログ22を読み取り、番号65で、ク
ラッシュの時にそのコミットプロトコルを実行していた
トランザクションに関する情報を揮発性記憶装置17に蓄
積する。この揮発性記憶装置中の復旧情報リストは、そ
のサイトでそれらのコーディネイタ25を持っていたトラ
ンザクションについての、他のサイト11−15からの質問
(番号66)に回答するために使用され、且つ、そのサイ
トにコーディネイタを持っていたトランザクションにつ
いてのサブオーディネイト26を持っていた他のサイトに
対して、未請求の情報を送信するために使用される。揮
発性記憶装置17中に情報リストを持つことにより、ディ
スク記憶装置18中のログ22を参照する必要がないので、
遠隔サイトの質問(番号66)に迅速に回答することがで
きる。
【0025】復旧処理62は番号65で集めた情報リストを
通して続けられ、そのログ22中のレコード54から、この
サイトが特定のトランザクションIDに対する準備状態
のサブオーディネイトであったことが見出される場合
(番号67)は、復旧処理はそのトランザクションが解決
されるべき方法を発見するため、周期的にコーディネイ
タ処理25への接触を試みる(番号67a )。このコーディ
ネイタ処理がトランザクションを解決し、質問サイトに
最終的な結果を伝えるためにコミット又はアボートメッ
セージを送る場合(番号67b )は、復旧処理は上記の図
6の番号33に示された、サブオーディネイトが「コミッ
ト」又は「アボート」メッセージを受信するときのシー
ケンスに入る。復旧処理が、クラッシュ時にトランザク
ションが実行されていたこと、及びコミットプロトコル
(番号27)が未だ書込まれていない(番号68)ことを見
出した場合は、復旧処理は、それがこのトランザクショ
ンIDのサブオーディネイト又はコーディネイタのいず
れを処理していたかを知らず又は関心を持たない。それ
は、アクションがあってもそれを「行わなず」、「行わ
ない」ログレコードを用い、番号68a で、ログに「アボ
ート」レコードを書込むことにより、そのトランザクシ
ョンをアボートし、そのトランザクションを「忘れ
る」。番号69で、復旧処理がコミット状態(ログされた
コミット、番号38)のトランザクションを発見した場合
は、それは、番号69a で、周期的に「コミット」(図5
の番号40)を、準備状態(番号41)としてリストされて
いる全てのサブオーディネイトに送ることを試み、番号
69b で、それらのアクノリッジメッセージを待つ。又
は、復旧処理が、番号70で、アボート状態(図5の番号
43)のトランザクションを発見した場合は、それは、番
号70a で、周期的に「アボート」メッセージを、準備状
態(番号44)としてリストされている全てのサブオーデ
ィネイトに送ることを試み、番号70b で、それらのアク
ノリッジメッセージを待つ。両者の場合において、全て
のアクノリッジメッセージを受信してしまうと、復旧処
理62は「エンド」レコードを書込み(番号49)、このト
ランザクションを「忘れる」。
【0026】コーディネイタ処理25が、サブオーディネ
イトから投票(番号37)が送られるのを待つ間に、その
サブオーディネイト処理26の故障を知った場合は、この
コーディネイタは、上記の番号43、44等で定められたス
テップで、このトランザクションをアボートする。又
は、この故障が、番号48で、コーディネイタがアクノリ
ッジメッセージの受信を待っている時に知らされた場合
は、このコーディネイタは復旧処理62に制御を引き渡
す。サブオーディネイト処理26が、イエス投票を送り
(番号32)準備状態31a に入る前にコーディネイタ処理
25の故障を知った場合は、このサブオーディネイトはト
ランザクションをアボートする(ノー投票を送る一方的
なアボート、番号34)が、他方、サブオーディネイトが
準備状態31a に入った後にこの故障が起きた場合は、サ
ブオーディネイトはトランザクションの制御を復旧処理
62に引き渡す。
【0027】復旧処理62がトランザクションIDについ
て準備状態のサブオーディネイトサイトから質問メッセ
ージを受信した場合は、揮発性記憶装置中の情報で調べ
る。それが、トランザクションがアボート状態又はコミ
ット状態にあるとの情報を持っている場合は、それは適
当な回答を送る。そのトランザクションについての情報
が揮発性記憶装置中に見つからない場合には、どのよう
なアクションをとるべきかとの自然な疑問が起きる。こ
のような状態が起こり得る場合を確認するための検査に
よれば、「コミット」及び「アボート」共にアクノリッ
ジされるので、この質問は、被質問者がそのトランザク
ションを「忘れる」前に、質問者が「コミット」又は
「アボート」を受信せず処理していないことを意味する
ということが分かる。このような状態は、(1) 被質問者
が「プリペア」メッセージを送出し、(2) それが全ての
投票を受信しコミット又はアボートを決める前にクラッ
シュし、且つ(3) 再スタートする際に、それがトランザ
クションをアボートし、いずれのサブオーディネイトに
ついても何も知らせない場合に起きる。再スタートする
際に、そのトランザクションについてのコミットプロト
コルログレコードは何も存在していないので、それがコ
ーディネイタなのか又はサブオーディネイトなのかを、
被質問者が知ることはできない。この事実により、情報
がない場合の質問に対する正しい回答は「アボート」メ
ッセージであり、従って「仮定アボート」と名付けられ
る。
【0028】2フェーズコミットプロトコルの所謂「仮
定アボート」バージョンは、トランザクションについて
の情報が全くない状態で、復旧処理62が、質問するサブ
オーディネイトにアボートすることを指示するという概
念に基づいている。検査によれば、アボートする(例え
ばノー投票を受信することによって)ことを決定し、番
号43で、アボートレコードを書込んだ後、直ちにトラン
ザクションを忘れることがコーディネイタ処理25にとっ
て安全であることを示している。これは、アボートレコ
ードが(番号43でコーディネイタにより、番号34及び45
で各サブオーディネイトにより)強制される必要がない
こと、及びアボートに対してアクノリッジ(番号46)が
(サブオーディネイトによって)送られる必要がないこ
とを意味する。更に、コーディネイタ処理は、アボート
レコード54(番号43)中にサブオーディネイトの名前を
記録する必要がなく、アボートレコードの後にエンドレ
コードを書込む必要がない。更に、コーディネイタ処理
25が、サブオーディネイトに対してアボートメッセージ
(番号44)を送ろうとしている間にサブオーディネイト
の故障を知った場合は、コーディネイタは、トランザク
ションを復旧処理62に引き渡す必要はない。サブオーデ
ィネイトのサイトの復旧処理62が質問メッセージを送る
場合は、サブオーディネイトがアボートの理由を見出す
ようになっている。これらの、仮定アボートプロトコル
を生成するための、標準2フェーズコミットプロトコル
からの変更は、トランザクションのコミットに関するロ
グ書込み及びメッセージ送信についてのプロトコルの性
能を変えてはいない。図10のテーブルの第2行目に、
仮定アボートプロトコルについての必要な動作が要約さ
れている。
【0029】リードオンリー(部分的に又は完全に)の
トランザクションはコミットするトランザクションのダ
イナミックスを変え、プロトコルはこの事実を利用する
ために変えられる場合がある。トランザクションの或る
処理がデータベースへの書込み(更新)を全く実行せ
ず、一方他の処理が書込みを行う場合は、このトランザ
クションは部分的にリードオンリーである。データベー
スに書込む処理を全く実行しない場合は、トランザクシ
ョンは完全にリードオンリーである。
【0030】図12を参照すると、2フェーズコミット
プロトコルの「リードオンリー」トランザクションを考
慮するため、サブオーディネイトがプリペアメッセージ
(番号29)を受信すると、それは、先ず番号80でそのロ
グを検査して、データベースに対して更新を行ったか否
か(即ち、「未」か「再」かいずれのログレコードが書
込まれているか)を決定する。これが否の場合は番号81
でコーディネイタに「読取り」投票を送り、そのロック
を解除し、番号82で、そのトランザクションを忘れる。
この場合、このサブオーディネイトはログレコードを書
込まない。それはアイドル状態に戻るだけである。この
サブオーディネイト処理26に関する限り、そのトランザ
クションが最終的にアボートされたかコミットされたか
は無関係である。従って、コーディネイタにここで「リ
ードオンリー」として知られるこのサブオーディネイト
は、コーディネイタによって「コミット」又は「アボー
ト」メッセージを送られることは必要としない。図10
のテーブルには、列に「リードオンリー」及び「更新」
トランザクションについて記載されている。
【0031】図13を参照すると、コーディネイタ処理
がリードオンリーであり、「読取り」投票のみを受取る
場合は、2フェーズプロトコルの第2フェーズは存在し
ない。番号83でコーディネイタ処理が、自身がリードオ
ンリーであることを決定し、次に番号84で、全てのサブ
オーディネイトが読取り投票を送ったことを知る。この
場合、コーディネイタは、サブオーディネイトと同様
に、トランザクションについてのログレコードを全く書
込まない。他方、コーディネイタ又はサブオーディネイ
トの1つがイエス投票を行い、ノー投票を行うものがな
い場合は、そのコーディネイタは標準2フェーズコミッ
トプロトコルにあるように振る舞う。しかし、コーディ
ネイタとしては、コミットレコード54に、(存在すれ
ば)イエス投票(これらの処理のみが準備状態にあり、
従ってコミットメッセージが送られる)を行ったサブオ
ーディネイトの識別子のみを含むだけで充分であること
に注意すべきである。コーディネイタ又はサブオーディ
ネイトの1つがノー投票を行う場合、このコーディネイ
タは図5で既に説明したように振る舞う。
【0032】完全にリードオンリーのトランザクション
については、コーディネイタもいずれのサブオーディネ
イトもログレコードを全く書込まず、各サブオーディネ
イトに対して、それぞれのサブオーディネイトが1つの
メッセージ(読取り投票)を送り、コーディネイタが1
つのメッセージ(プリペア)を送る。この動作は図10
のテーブルの2行目のリードオンリーの列に記載されて
いる。
【0033】部分的にリードオンリーのトランザクショ
ンについては、コミットの場合、コーディネイタが更新
サブオーディネイトに、番号28でプリペアと番号40でコ
ミットとの2つのメッセージを送り、他のサブオーディ
ネイトには、図13に示すように、1つのメッセージ、
プリペアを送る。少なくとも1つの更新サブオーディネ
イト処理が存在する場合は、コーディネイタは2つのレ
コードを(図5から分かるように、番号38で強制的なコ
ミットを、番号49で非強制的なエンドレコードを)書込
むが、他の場合は1レコード(番号85で強制的なコミッ
ト)のみを書込む。リードオンリーのサブオーディネイ
トは、完全にリードオンリーのトランザクションの中の
1つのように振る舞い、更新サブオーディネイトは、図
6の標準2フェーズコミットプロトコルの中のコミット
トランザクションのサブオーディネイトのように振る舞
う。この動作は図10のテーブルの2行目に記載されて
いる。
【0034】2フェーズコミットプロトコルに対してこ
れらの変更を行うことにより、所謂仮定アボートプロト
コルが作られる。仮定アボートの名は、情報のない場合
に、トランザクションがアボートされたと仮定され、質
問に対する復旧処理の応答がアボートメッセージである
ことに基づいている。
【0035】仮定コミットプロトコルは仮定アボートプ
ロトコルの代替である。大部分のトランザクションはコ
ミットすることが期待されており、問題は次のようなも
のである。即ち、アボートメッセージ(標準では図6の
番号46)に対するアクノリッジメッセージを要求するこ
とによって、コミットメッセージに対するアクノリッジ
メッセージ即ちACK(図6の番号42)を省略すること
により簡単にコミットを行うことができるか、という問
題である。簡単化の概念は、アボートがアクノリッジさ
れることが必要とされ、一方、コミットはそれを必要と
せず、更に、アボートレコードが強制され、他方、サブ
オーディネイトによるコミットレコードは強制される必
要はない、ということである。その結果は、情報がない
場合には、サブオーディネイトが質問する時に、復旧処
理はコミットメッセージで回答することである。しかし
ながら、このアプローチについては、他の状態について
も考慮する必要がある。
【0036】コーディネイタ処理が番号28のプリペアメ
ッセージを送り、1つのサブオーディネイトが既に準備
状態に移り、そして、コーディネイタが全ての投票を集
めて番号37の決定を行うことができる前に、コーディネ
イタがクラッシュする場合を考える。このような状態で
は、コーディネイタはコミットプロトコルログレコード
(番号38)を何も書込んでいない。クラッシュしたコー
ディネイタのサイトが復旧すると、その復旧処理はこの
トランザクションをアボートし、サブオーディネイトに
ついて利用できる情報は何もないので、何の情報も出さ
ずにそれを「忘れる」。続いて、準備済のサブオーディ
ネイトのサイトの復旧処理62がコーディネイタサイトに
質問する時は、その復旧処理はコミットメッセージで応
答することになり、許容できない矛盾を引き起こすこと
になる。
【0037】この状態から抜け出す方法は、コーディネ
イタ処理としては、サブオーディネイトの内のいずれか
が準備済の状態に入る前に、安定記憶装置にレコード54
によってサブオーディネイトの名前を安全に記録するこ
とである。このようにすれば、番号28のプリペアメッセ
ージの送出後に起きたクラッシュからの復旧の際に、コ
ーディネイタサイトがアボートする時に、再スタート処
理は、そのアボートを誰に知らせ(且つ誰からアクノリ
ッジを得)るべきかを知ることになる。これらの修正は
仮定コミットプロトコルを与える。この名称は、情報が
ない場合にはトランザクションがコミットしたものと仮
定し、従って質問に対する応答はコミットメッセージで
あるということから起こる。
【0038】図14を参照すると、仮定コミットプロト
コルにおいては、コーディネイタ処理は、以下の例外を
除いて仮定アボートにおけるように振る舞う。例外は、
(1)第1フェーズの開始時(即ち、プリペアメッセージ
の送出前)に、番号86で、全てのサブオーディネイトの
名前を含む収集レコード54を強制的に書込み、収集状態
に移ること、(2) 番号38及び43でコミットレコード及び
アボートレコードの両者を強制的に書込むこと、(3) 番
号46で、アボートに対してのみサブオーディネイトから
のアクノリッジを要求し、コミットに対してはこれを要
求しないこと、(4) アボートレコードの後(収集レコー
ドが書込まれた後にアボートがなされた場合)にのみ番
号49でエンドレコードを書込み、コミットレコードの後
ではこれを行わないこと、(5) アボート状態にある時に
のみ、(サブオーディネイトの故障の通知と共に)トラ
ンザクションを復旧処理62に引き渡すこと、及び(6) 完
全にリードオンリーのトランザクションの場合には、仮
定アボートにおける第1フェーズの終わりに何のレコー
ドも書込まない(図13)が、仮定コミットにおいては
番号87でコミットレコードを書込み、次にそのトランザ
クションを「忘れる」ことである。
【0039】図15を参照すると、仮定コミットに対し
て、サブオーディネイトは、番号45で、ここではアボー
トレコードのみを強制的に書込み、コミットレコードは
書込まず、番号46で、アボートのみをアクノリッジし、
コミットはアクノリッジしないことを除いて、仮定アボ
ートにおけると同様に振る舞う。再スタートの際には、
復旧処理62が、番号86で特定のトランザクションについ
ての収集レコード54が書込まれ且つその後には他のレコ
ードがないことを見出した場合は、それはアボートレコ
ードを強制的に書込み、全てのサブオーディネイトに通
知し、それらからアクノリッジを受取り、エンドレコー
ドを書込み、そのトランザクションを「忘れる」。情報
がない場合は、復旧処理は質問に対してコミットメッセ
ージで答する。
【0040】仮定コミットにおいては、完全にリードオ
ンリーのトランザクションについては、コーディネイタ
が2つのレコード(番号86での強制的な収集、及び番号
87での非強制的なコミット)を書込み、番号28で、各サ
ブオーディネイトに対して1つのメッセージ、即ちプリ
ペアを送出する。サブオーディネイトはログレコードの
書込みは行わず、それぞれ1つのサブオーディネイト
が、番号81で、1つのメッセージ、即ち読取り投票を送
信する。
【0041】コミットする部分的にリードオンリーのト
ランザクションについては、コーディネイタは、更新サ
ブオーディネイトに2つのメッセージ(番号28でのプリ
ペア、及び番号40でのコミット)を送信し、他のサブオ
ーディネイトには1つのメッセージ(番号28でのプリペ
ア)を送信し、2つのレコード(番号86での強制的な収
集、及び番号38での強制的なコミット)を書込む。リー
ドオンリーのサブオーディネイトは完全にリードオンリ
ーのトランザクションにおけるサブオーディネイトと全
く同様に振る舞い、更新サブオーディネイトは1つのメ
ッセージ(番号32でのイエス投票)を送信し、2つのレ
コード(番号31での強制的なプリペア、及び番号88での
非強制的なコミット)を書込む。
【0042】図16及び17には、仮定アボートプロト
コルについての状態図が示されている。このコーディネ
イタ処理は、アイドル状態27a から番号83及び84の経路
を通して全リードオンリー状態が検出されると、同一の
アイドル状態に戻る。ノー投票が受信されてコミットプ
ロトコルがアボートする場合は、それは番号44を含む経
路によってアイドル状態に戻る。コミットレコードの強
制的な書込みの場合は、それはコミット状態38a に移
り、次いで番号49でエンドレコードの強制的な書込みが
行われるとアイドル状態に戻る。図17のサブオーディ
ネイト処理は、このサブオーディネイトが番号80及び81
を含む経路を経てリードオンリーであることが決定され
ると、同様に、アイドル状態29a から同一のアイドル状
態に戻る。又は、この処理が、番号35を含む経路を経て
アボートされると、それはアイドル状態に戻る。強制書
込みのプリペアレコードが番号31で書込まれると、この
処理はプリペア状態31a に移る。それは、番号41での強
制書込みコミットレコードによるか、又はアボート(非
強制的)によるか、いずれかによってアイドル状態に戻
ることができる。
【0043】図18及び19には、仮定コミットプロト
コルについての状態図が示されている。コーディネイタ
処理は、先ずアイドル状態27a から、番号86での収集レ
コードの強制書込みに基づいて収集状態86a に移る。こ
れは、番号87でのコミットレコードの書込みによって全
リードオンリー状態が検出されるとアイドル状態に戻
る。ノー投票が受信された場合は、番号43で、アボート
レコードを強制的に書込んでアボート状態43a に移る。
続いてこれは、番号49で、エンドレコードを書込んでア
イドル状態に戻る。図19の仮定コミットについてのサ
ブオーディネイト処理は、コミットレコード41に代わっ
てアボートレコードが強制的に書込まれることを除い
て、図17の処理と同じである。
【0044】上述の3つのコミットプロトコルの性能が
図10のテーブルに要約されている。この3つの従来の
プロトコルは、(1) 標準2フェーズコミット、(2) 仮定
アボートを持つ2フェーズコミット、及び(3) 仮定コミ
ットを持つ2フェーズコミットである。標準2フェーズ
コミットにおいては、全てのトランザクションが完全に
更新トランザクション(非リードオンリー)であるよう
に見える。従って、期待されているように、リードオン
リーのトランザクションについて、強制書込みの或る部
分及びメッセージのオーバーヘッドが減少するので、仮
定アボートプロトコルは標準2フェーズより良い性能を
示す。更に、仮定アボートプロトコルは、完全にリード
オンリーのトランザクションの場合に、コーディネイタ
による2つのログ書込み(1つは強制的)を節約できる
ので、仮定コミットより良い性能を示す。コーディネイ
タのみが更新できる部分的にリードオンリーの場合は、
強制書込みがコーディネイタによって節約されるので、
仮定アボートプロトコルは更に良い性能を示す。両方の
状態において、仮定アボート又は仮定コミットで同一数
のメッセージが送られる必要がある。ただ1つの更新サ
ブオーディネイトを持つトランザクションの場合、仮定
アボート及び仮定コミットは、ログ書込みに関しては同
等であるが、仮定アボートは、余分のメッセージ、即ち
更新サブオーディネイトによって送られるアクノリッジ
を必要とする。1を超える更新サブオーディネイトを持
つトランザクションの場合、仮定アボート及び仮定コミ
ットの両者が、同数のレコードの書込みを必要とする
が、仮定アボートは、更新サブオーディネイトの数から
1を減じた数に等しい多数の強制書込みを持つことにな
り、一方、仮定コミットはこれらの強制書込みを持たな
いことになる。これらの強制書込みは、サブオーディネ
イトによるコミットレコードの強制に対応する。これに
加えて、仮定アボートは、更新サブオーディネイトの数
に等しい多数の余分のメッセージ、即ちアクノリッジを
送ることになる。
【0045】特定の分散データベースに対して走ること
が期待されているトランザクションの混合に依れば、仮
定アボートと仮定コミットとの間の選択を行うことがで
きる。この選択は、システム全体を基にするのではな
く、コーディネイタによって2フェーズコミットの第1
フェーズの開始時に、トランザクションとトランザクシ
ョンとを繋ぐことを基本として行われる。この方法が採
用されると、コーディネイタは、選択されたプロトコル
(仮定コミットか仮定アボートか)の名前をプリペアメ
ッセージに含め、全ての処理が、それぞれが書込む第1
コミットプロトコルログレコードにこの名前を含む。こ
の名前は、更に再スタート処理によって送られる質問メ
ッセージに含まれ、この情報は、復旧処理において、情
報がない場合における質問に応答する時に利用される。
【0046】本発明によれば、仮定コミットプロトコル
の修正バージョンは強制書込みを省略することによって
改善された性能を具える。この修正バージョンも、図1
0のテーブルの最下行に「仮定コミット、ログ強制な
し」として記載されている。この修正バージョンを用い
ることにより、混合トランザクション(一部リードオン
リー及び一部更新)において、強制ログのオーバーヘッ
ドを劣化せずに、仮定コミットの利点が達成される。
【0047】非強制的仮定コミットプロトコルを用いる
場合のコーディネイタの動作を最初に説明する。この説
明は次の3つの部分:(A)更新サブオーディネイトを
持つ更新トランザクション、(B)更新サブオーディネ
イトを持たない更新トランザクション、及び(C)リー
ドオンリートランザクションに分かれている。
【0048】状態(A)、即ち更新サブオーディネイト
を持つ更新トランザクションの場合は、図20の番号27
で、コーディネイタが最初に「コミット」コマンドを受
信する。コーディネイタは続いて、図20の番号28で、
コホートに対して、そのトランザクションをコミットで
きるか否かを質問する「プリペア」メッセージを送出す
る。この時、ログレコードは書込まれず、ログレコード
が強制されないことに注意すべきである。次に、コーデ
ィネイタは、番号90で、全てのコホートから回答を受信
するのを待つ。
【0049】回答が適時に到着しない場合又はいずれか
のコホートが「アボート」投票をする場合には、コーデ
ィネイタは、番号91で、アボートレコード(非強制的)
を書込み、番号92で、(イエス投票をした)全てのコホ
ートに「アボート」メッセージを送る。アボートログレ
コードは(ログ上の) トランザクションを終了させるこ
とができるので、復旧処理がアクティブトランザクショ
ンのテーブルにトランザクションを保持することを必要
としない。アボートレコードは、トランザクションコホ
ートの名前を含む。全てのコホートがアボートメッセー
ジをアクノリッジすると(番号93)、コーディネイタ
は、番号94で、これを「エンド」ログレコードと共に記
録し、このトランザクションを忘れる(揮発性状態から
抜け出す)。エンドメッセージは、それ以上コホートか
らの質問が到着することはないものとして揮発性状態の
アボート情報が安全に忘れられることを記録する。
【0050】エンドメッセージ(番号94)がログに安全
に記録される前にシステムが故障すると、復旧処理がア
ボートメッセージを再送し、アクノリッジを待たなけれ
ばならない。番号94のエンドメッセージがまだ書込まれ
ていない場合は、復旧処理は、アボートされたトランザ
クションが何時「忘れられ」てよいか、即ち何時揮発性
状態から解放されるかを知らない。これらの番号91又は
94のメッセージはいずれもログを強制されない。
【0051】上述の方法には多数の変形が存在する。そ
の1つは、番号91の「アボート」メッセージにサブオー
ディネイトを記録しないという選択である。すると、シ
ステムが故障した場合、アボートされたトランザクショ
ンは、永久的なクラッシュに関する情報中に保持された
ものの中の1つになる。他の変形は、図20bに示され
ているように、全てのサブオーディネイトからのアクノ
リッジが受信されるまでアボートメッセージを書込まな
いという選択である。このトランザクションは、(少な
くとも多くのシステムで)コミットレコードがないとア
ボートされ、これはログ書込みの節約になる。即ち、全
てのアクノリッジの後のエンドレコードの書込み(番号
94)に代えて、アボートレコードが図20bの番号95で
書込まれる。これはアボートされたトランザクションに
ついての唯一のログレコードである。繰り返すと、トラ
ンザクションがアボートされた状態を記述する情報は永
久的なクラッシュに関する情報の一部になる。
【0052】図20の番号90で、全てのコホートが適時
に(コミットするための)「イエス」投票で回答する場
合は、番号96で、コーディネイタがコミットログレコー
ドを書込む。このログレコードは強制的であり、トラン
ザクションの耐久性を確実にする。アクノリッジメッセ
ージが期待されないので、コホートの名前は含まれな
い。更に、コホートからのアクノリッジメッセージが期
待されないので、エンドログレコードは必要ない。
【0053】先行特許出願においては、グローバルトラ
ンザクションの順序性を保証する助けにするため、タイ
ムスタンプが用いられた。この技術を用いると、コミッ
トレコードは、そのトランザクションについてのタイム
スタンプを含むことが必要である。
【0054】図20a又は20bの方法を用いる場合、
最も古いTID(以下ではO_TIDと記す)は、以前
のクラッシュ以来最も古いアクティブなトランザクショ
ンIDのトランザクションIDに関する限界である。こ
の最も古いトランザクションがコミット又はアボートす
る場合には、(非連続TIDの場合)いつでも、そのコ
ミットレコード及びアボートレコードを、最も古い現在
アクティブなトランザクションに対するレコードとして
マークすることができる。このようにして最近にマーク
したレコードが、クラッシュに関する持続情報について
のO_TIDになる。
【0055】図10を参照すると、図20a又は20b
の方法においてコミットの場合、このコーディネイタの
アクティビティのメッセージ/ログコストは、 書込まれたレコード1(強制1) 各R−Oサブオーディネイトに対するメッセージ1 各更新サブオーディネイトに対するメッセージ2 である。
【0056】状態(B)、即ち更新サブオーディネイト
を持たない更新トランザクションの場合は、コーディネ
イタの動作は、更新サブオーディネイトがないことを除
いて状態(A)と同じである。
【0057】状態(C)、即ちリードオンリートランザ
クションの場合について、コーディネイタの動作を説明
する。番号90で、全てのサブオーディネイトについての
投票が受信されるまで、上述のプロトコルにおいては、
ログレコードは何も書込まれない。全てのコホートが
「リードオンリー」を投票すると、そのトランザクショ
ンはリードオンリートランザクションである。この場
合、流れは、図20aの番号90から経路98を経て「トラ
ンザクションを忘れる」ステップ50に向かう。ここで
は、全てのコホートがそれらのログへの書込みなしに終
了し、このトランザクションを「忘れる」。従って、コ
ーディネイタにとってどのようなログレコードも書込む
必要はない。システムが故障(クラッシュ)した場合
は、仮定コミット要求を記録するために導出される情報
は、リードオンリートランザクションがどの程度クラッ
シュに近くで終了したかによって異なる結果を示唆す
る。このトランザクションについてのTIDがO_TI
Dより大きい場合は、トランザクションはアボートされ
るべきであるように見える。O_TIDより小さい場合
は、コミットされるべきであるように見える。しかしな
がら、質問するサブオーディネイトは存在しないので、
これは重要な問題ではない。よって記録は存在せず、こ
のトランザクションがコミットされるか又はアボートさ
れるか、いずれに見えるかは重要な問題ではない。従っ
て、この場合(図10参照)のメッセージ/ログコスト
は、 書込まれたレコード0(非強制的) 各R−Oサブオーディネイトに対するメッセージ1 である。
【0058】問題は、アクティブプロトコルフェーズに
あり得るがそれについて安定なレコードが存在しないト
ランザクションを、このシステムが厳密に如何に扱うか
である。このトランザクションの組を限定することがで
きると、この問題は復旧処理62で扱うことができる。本
発明の実施例によれば、アクティブプロトコルフェーズ
にあるがそれについて安定なレコードが存在しないトラ
ンザクションの組を限定することができる。
【0059】2フェーズコミットトランザクションの組
を限定するため、トランザクションの識別子(TID)
が単調に増加する順序で与えられると仮定する。基本的
な概念は、そのトランザクション識別子が安定に記録さ
れたトランザクション識別子(S_TIDと記す)から
或るΔ(デルタ)の範囲内になければ、トランザクショ
ンが2フェーズコミットプロトコルを開始することを許
可しないという点にある。このようにすれば、システム
の故障の場合、S_TID+Δまでの識別子を持つトラ
ンザクションのみがアクティブであったことになる。有
効にコミットしたトランザクション(C_TIDと記
す)は全てログに安定に記録される。アボートした可能
性のあるトランザクション(MA_TIDと記す)は、 MA_TID={TID|TID<S_TID+Δ}−C_TID によって表される。即ち、有効にコミットされるべきも
のと判明しているトランザクションID(C_TID)
が、S_TID+Δより小さいTIDの組から差し引か
れ、その残りがMA_TIDである。このMA_TID
のうち幾つかのトランザクションは明確にアボートされ
た筈である(ここではA_TIDと記す)。従って、不
確定なトランザクションの組(走っていたかも知れない
が全く情報がない。ここではI_TIDと記す)は、 I_TID=MA_TID−A_TID である。これらのTIDを持つトランザクションはコミ
ットしていない。しかし、それらがアボートしたのか、
又は走らなかったのかは不明である。アボートした場合
でも、それらが2フェーズコミットプロトコルを開始し
たかどうかは不明である。従って、この組についての質
問が受信されるか否かは不明である。幾つの質問が受信
されるか、又はどのコホート(サブオーディネイト)に
よって受信されるかも不明である。しかしながら、全て
のこのような質問者は、そのトランザクションがアボー
トした旨の回答を受信するであろうことが分かる。
【0060】I_TIDの組のみが永久的に記録される
べきである。コホートは誰かについて、また、コホート
が幾つあるかについての情報がないと、これのガーベジ
コレクションはできない。I_TIDの基数は通常は小
さい(例えば50-100TID 以下)。安定に記録されること
が必要な情報の量はシステムクラッシュの数に比例する
が、それ程大きくはない。安定に記録されたトランザク
ションについては、仮定コミットプロトコルに対して通
常行われるのと同様のガーベジコレクションが可能であ
る。勿論、トランザクションがコミットされた場合、
「情報なし」はコミットと仮定するので、その性質を全
て保持する必要はない。
【0061】このように、不確定トランザクションにつ
いてのTIDの組を表すこと及びその情報を安定に記録
することが必要である。I_TIDについて選択された
表現が小さいサイズになるように選択されることが重要
である。この理由から、(i)S_TIDの後の不確定ト
ランザクション、及び(ii)S_TIDの前の不確定トラ
ンザクションの2部分表現が選択される。
【0062】第1の部分、即ちS_TIDの後の不確定
トランザクションは、S_TIDとS_TID+Δとの
間のTIDを持ち、多分実行されたであろうトランザク
ションの組であり、最良の表現は、 <S_TID,S_TID+Δ> の範囲の指定による表現である。これは、この組のこの
部分の極めて単純且つコンパクトな表現である。
【0063】第2の部分、即ちS_TIDの前の不確定
トランザクションは、コミットせず、アボートしたかも
知れず、しかしそれらのコホートについて知る情報がな
い、S_TIDより小さいTIDのトランザクションで
ある。更に、これはTIDの連続した範囲ではない。S
_TIDより小さいTIDのトランザクションの或る組
はコミットし、他の組はアボートしている。
【0064】しかしながら、下記で説明されるように決
定されるO_TIDの識別子を持つ最も古いアクティブ
トランザクションが存在する。O_TIDより古い全て
のトランザクションは、最近のクラッシュ後には既に完
了しており、それらの状態(コミット又はアボート)が
ログ中に安定に記録されている。I_TIDのメンバー
には、このクラッシュについてO_TIDより古いメン
バーはいない。従って、O_TIDがI_TIDの表現
で記録される。O_TIDより小さいこれらのTIDは
完全に知られており、正規にガーベジコレクションが可
能であるため、これらを永久的に記録することは不要で
ある。
【0065】O_TIDとS_TIDとの間でアボート
したトランザクションは、コミットしなかったトランザ
クションである。O_TIDの決定方法、及び、コミッ
トしなかった組を最良に表現する方法は、TIDが連続
的に与えられたか、又は非連続的に与えられたかに依存
する。
【0066】連続的なTIDの場合、コミットしなかっ
たトランザクションは確実にアボートしている。これら
のトランザクションは、最も古いアクティブトランザク
ションO_TIDの名前を付けて表すのが最良であり、
どのトランザクションがそれ以後アボートしたかを厳密
に示すビットベクトル、即ち、 <O_TID,アボートビットベクトル> を記憶する。ログを検査し、コミットもせずアボートも
していない最小数を付されたTIDを探し出すことによ
って、O_TIDを見出すことができる。探し出したT
IDがO_TIDである。このことは、TIDが与えら
れている各トランザクションについてログレコードが書
込まれている(コミット又はアボート)ことが前提にな
る。
【0067】非連続的なTIDの場合、例えばタイムス
タンプの場合、そのTIDには連続的な番号は付与され
ないが、やはり単調に増加している。従って、S_TI
Dより小さいTIDを持つ不確定のトランザクションを
表す方法は異なっている。上記と同様に、最も古いアク
ティブTIDの表記としてO_TIDを用いる。しかし
ながら、TIDの隙間が大きいので、ビットベクトルを
用いずに、この組はコミットされたトランザクションの
組の全数として表示され、ここではリストの形で表示さ
れる。従って、これらは、 <O_TID,O_TID・S_TID間のコミットされたTIDのリスト> で表される。この範囲のアボートされたトランザクショ
ンの組は、まだコミットされていないと考えられるTI
Dの組に含まれる。
【0068】システムクラッシュを生き延びるためには
O_TIDを識別する必要がある。このTIDは、(以
前のシステムクラッシュに遡って)O_TIDより小さ
いTIDを持つ不確定のトランザクションは存在しない
ことを示す。最も古いアクティブトランザクションがコ
ミットする時は、いつでも、実際にO_TIDをコミッ
トすることをコミットレコードに表示することができ
る。システムが正規に実行される間、どのトランザクシ
ョンが最も古いアクティブトランザクションであるかを
知ることができる。この情報をログに入れると、それを
システムクラッシュに対して安定にすることができる。
このように、ログは、単調に増加する一連のO_TID
を記録することになる。クラッシュ前にログに書込まれ
た最近のO_TIDは、I_TIDを表すために用いら
れるO_TIDである。この方法によれば、余分のログ
書込み/強制なしに、「コミットされたTID」のリス
トのサイズを最小にすることができる。
【0069】I_TID情報はコミット処理及び復旧処
理によってアクセスされなければならず、この情報が永
久記憶装置18にあることが必要である。概念的には、全
てのクラッシュについてのI_TIDが永久的に且つ安
定的に保持されることが必要である。I_TIDに上記
のような表現を与えると、永久に保持されるべき情報は
比較的多くなくすることができる。クラッシュ当たりの
情報は数百バイト以下で足り、この大きさは完全に管理
できる量である。システムクラッシュが1日に1回起き
ると仮定し(これは良好に管理されているシステムとし
ては極めて高い値である)、このシステムが1週間に7
日稼働するとしても、クラッシュ関連のI_TIDを1
メガバイト蓄積するのに2000日(5年以上)かかること
になる。
【0070】最近の情報をキャッシュすることが望まし
い。I_TID情報が多くなり過ぎて利用できる形で主
記憶装置17に保持することができない場合は、最近数回
のクラッシュについての情報をキャッシュしてもよい。
殆ど全てのトランザクション質問は、最近のクラッシュ
以後に完了したトランザクション又は最近のクラッシュ
の結果として中断したトランザクションに対するもので
ある。最近のものより前のクラッシュによって中断した
トランザクションに対する要求の数は極めて小さい。最
近3回(又はそれに近い数)のクラッシュを主メモリー
17に保持すれば、効率的なシステム動作にとって充分で
ある。
【0071】最も効果的な特徴はI_TIDファイルを
切り詰めることである。全く古いTIDについての質問
を切り捨てることにより、I_TIDファイルのサイズ
を制御し、小さく保つことができる。要求が切り捨てら
れるトランザクションは、「ヒューリスティックに」解
決されなければならない。即ち、それらは人間の介在を
必要とする。(多分それらを記録中で探し出すことがで
きる。)
【0072】トランザクションコホート当たりのメッセ
ージコストの削減に関する仮定コミットプロトコルの利
点は、コミットプロトコルのスタート時に、トランザク
ションコーディネイタがログレコードの強制を行うため
のコストを不要にすることによって実現される。ユーザ
ーにとっての利益は、トランザクション処理システム
が、従来のシステムの効率を上回る効率で2フェーズコ
ミットを実行することができる点にある。
【0073】本発明は特定の実施例について説明された
が、これらの記載は、制限的な意味に解釈されてはなら
ない。当業者にとっては、開示された実施例及び他の実
施例について多くの変形が存在することが明らかであ
る。従って、特許請求の範囲は、このような変形又は本
発明の範囲に含まれる実施例を含むものである。
【図面の簡単な説明】
【図1】本発明の実施例の方法が用いられる分散コンピ
ュータシステムを説明する図である。
【図2】図1のノードの1つの構成例を示すブロック図
である。
【図3】1つのノードで本発明のシステムが走る際のデ
ータ記憶装置のマップの一部を示す図である。
【図4】コミットプロトコルを用いるトランザクション
処理システムの実施例における種々の処理を示す図であ
る。
【図5】図4の標準2フェーズコミットプロトコルにお
けるコミットコーディネイタによって実行される処理の
論理フローチャートである。
【図6】標準2フェーズコミットプロトコルにおける図
5のコミットコーディネイタのサブオーディネイトによ
って実行される処理の論理フローチャートである。
【図7】図6のサブオーディネイト処理の状態図であ
る。
【図8】図5のコーディネイタ処理の状態図である。
【図9】メモリー又はディスク上におけるログレコード
のデータ構造の例を示す図である。
【図10】種々の2フェーズコミットプロトコルのアク
ティビティを要約したテーブルである。
【図11】標準2フェーズコミットプロトコルを用いる
トランザクション処理システムの1つのサイトで実行さ
れる復旧処理の論理フローチャートである。
【図12】リードオンリートランザクションを考慮して
サブオーディネイトによって実行される処理の論理フロ
ーチャートである。
【図13】図12に対応しリードオンリートランザクシ
ョンを考慮してコミットコーディネイタによって実行さ
れる処理の論理フローチャートである。
【図14】図5のコーディネイタによって実行される仮
定コミットプロトコルの論理フローチャートである。
【図15】図6のサブオーディネイトによって実行され
る仮定コミットプロトコルの論理フローチャートであ
る。
【図16】仮定アボートプロトコルについてのコーディ
ネイタ処理の状態図である。
【図17】仮定アボートプロトコルについてのサブオー
ディネイト処理の状態図である。
【図18】仮定コミットプロトコルについてのコーディ
ネイタ処理の状態図である。
【図19】仮定コミットプロトコルについてのサブオー
ディネイト処理の状態図である。
【図20】本発明の実施例によるコーディネイタによっ
て実行されるログ強制なしの仮定コミットプロトコルの
論理フローチャートである。
【符号の説明】
10 通信リンク 11、12、13、14、15 ノード(サイト) 16 CPU 17 主メモリー 18 ディスク記憶装置 19 システムバス 20 ネットワークアダプタ 21 データ記憶 22 ログ 24 アプリケーションプログラム 25 コミットコーディネイタ 26 サブオーディネイト 27a コーディネイタのアイドル状態 29a サブオーディネイトのアイドル状態 31a サブオーディネイトの準備完了状態 38a コーディネイタのコミット状態 43a コーディネイタのアボート状態 54 ログレコード 55 タイプフィールド 56 レコード書込み処理識別子フィールド 57 コーディネイタ処理識別子フィールド 58 準備済サブオーディネイト名保持フィールド 59 コミット又はアボートサブオーディネイト名保持
フィールド 60 トランザクション識別子フィールド 62 復旧処理 86a コーディネイタの収集状態

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】 仮定コミット2フェーズコミットプロト
    コルを用いるトランザクション処理システムの動作方法
    であって トランザクションにトランザクション識別子(TID)
    を昇順に割当てるステップ、 トランザクションが、コミットする準備を済ませた時
    に、コーディネイタ処理にコミットコマンドを送信し、
    該コーディネイタ処理が、永久記憶装置及び揮発性メモ
    リーを持つサイトで実行するステップ、 TIDの1つの範囲を選択し、コミットする準備を済ま
    せた前記トランザクションのTIDが、TIDの前記選
    択された範囲の中にあるか否かを決定するステップ、 コミットする準備を済ませた前記トランザクションの前
    記TIDがTIDの前記選択された範囲の中にある場合
    は、サブオーディネイト処理にプリペアメッセージを送
    信するステップ、 コミットする準備を済ませた前記トランザクションの前
    記TIDがTIDの前記選択された範囲の中にない場合
    は、前記サブオーディネイト処理に前記プリペアメッセ
    ージを送信する前に、コミットする準備を済ませた該ト
    ランザクションについてのログレコードを含む揮発性の
    ログレコードを前記永久記憶装置に書込み、これによ
    り、該TIDをTIDの選択された範囲の中に入れるス
    テップを含むことを特徴とする仮定コミット2フェーズ
    コミットプロトコルを用いるトランザクション処理シス
    テム動作方法。
  2. 【請求項2】 前記範囲が、前記永久記憶装置に既に書
    込まれている以前のログレコードの最高のTIDから、
    選択されたTIDの数だけ該最高のTIDを超えたTI
    Dまでの範囲であることを特徴とする請求項1に記載の
    方法。
  3. 【請求項3】 結果が不確定の全てのTIDのリストを
    保持し、該リストが前記範囲の最高数より小さい大きさ
    のTID数を持ち、該リストが既にコミットされたか又
    はアボートされた全てのTIDを除外するステップを含
    むことを特徴とする請求項1に記載の方法。
  4. 【請求項4】 前記コーディネイタ及び各前記サブオー
    ディネイトが、通信ネットワークによって相互接続され
    た個々のサイトで実行するステップを含み、コミット又
    はアボートされていないがそれより小さいTIDは既に
    コミット又はアボートされている、最小TID数を持つ
    トランザクションのTIDである最も古いTID(O_
    TID)の安定なレコードを保持するステップを含み、
    システムクラッシュの時刻の近くでアクティブなTID
    のレコードに、どれがアクティブであったか及びどれが
    コミットされたかを記録し、このレコードを前記永久記
    憶装置に保持するステップを含むことを特徴とする請求
    項1に記載の方法。
  5. 【請求項5】 コミットコーディネイタ及び複数のサブ
    オーディネイトを含み、仮定コミット2フェーズコミッ
    トプロトコルを用いるトランザクション処理システムに
    おいて、 前記システムで実行するトランザクションにトランザク
    ション識別子(TID)を昇順に割当てる手段、 前記システムで実行するトランザクションがコミットす
    る準備を済ませた時に、永久記憶装置及び揮発性メモリ
    ーを持つサイトで実行する前記コーディネイタにコミッ
    トコマンドを送信する手段、 TIDの1つの範囲を選択する手段、 コミットする準備を済ませた前記トランザクションのT
    IDがTIDの前記選択された範囲の中にあるか否かを
    決定する手段、 コミットする準備を済ませた前記トランザクションの前
    記TIDがTIDの前記選択された範囲の中にある場合
    に、前記サブオーディネイトにプリペアメッセージを送
    信する手段、 コミットする準備を済ませた前記トランザクションの前
    記TIDがTIDの選択された前記範囲の中にない場合
    に、前記サブオーディネイトに前記プリペアメッセージ
    を送信する前に、全ての揮発性のログレコードを前記永
    久記憶装置に書込み、これにより、該TIDをTIDの
    選択された範囲の中に入れる手段を具えることを特徴と
    する仮定コミット2フェーズコミットプロトコルを用い
    るトランザクション処理システム。
  6. 【請求項6】 前記範囲が、前記永久記憶装置に既に書
    込まれている以前のコミットレコードの最高のTIDか
    ら、選択されたTIDの数だけ該最高のTIDを超えた
    TIDまでの範囲であり、結果が不確定の全てのTID
    のリストを保持し、該リストが前記範囲の最高数より小
    さい大きさのTID数を持ち、該リストがコミットされ
    たか又はアボートされた全てのTIDを除外することを
    特徴とする請求項5に記載のシステム。
  7. 【請求項7】 前記コーディネイタ及び各前記サブオー
    ディネイトが、通信ネットワークによって相互接続され
    た個々のサイトで実行し、コミット又はアボートされて
    いないがそれより小さいTIDは既にコミット又はアボ
    ートされている、最小TID数を持つトランザクション
    のTIDである最も古いTID(O_TID)の安定な
    レコードを保持する手段を具えることを特徴とする請求
    項5に記載のシステム。
JP5157165A 1992-07-06 1993-06-28 仮定コミット2フェーズコミットプロトコルを用いるトランザクション処理システム及びその動作方法 Expired - Lifetime JP2558052B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/909,556 US5335343A (en) 1992-07-06 1992-07-06 Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
US07/909556 1992-07-06

Publications (2)

Publication Number Publication Date
JPH06168169A JPH06168169A (ja) 1994-06-14
JP2558052B2 true JP2558052B2 (ja) 1996-11-27

Family

ID=25427449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5157165A Expired - Lifetime JP2558052B2 (ja) 1992-07-06 1993-06-28 仮定コミット2フェーズコミットプロトコルを用いるトランザクション処理システム及びその動作方法

Country Status (4)

Country Link
US (1) US5335343A (ja)
EP (1) EP0578406B1 (ja)
JP (1) JP2558052B2 (ja)
DE (1) DE69322549T2 (ja)

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05173988A (ja) * 1991-12-26 1993-07-13 Toshiba Corp 分散処理方式および該分散処理に適用されるトランザクション処理方式
US5469562A (en) * 1992-06-26 1995-11-21 Digital Equipment Corporation Durable atomic storage update manager
JP2675968B2 (ja) * 1992-08-20 1997-11-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 加入者分散2相コミット・プロトコルの拡張機能
US5485607A (en) * 1993-02-05 1996-01-16 Digital Equipment Corporation Concurrency-control method and apparatus in a database management system utilizing key-valued locking
US5581750A (en) * 1993-03-15 1996-12-03 International Business Machines Corporation System and method for improving data recovery performance
JP2557192B2 (ja) * 1993-03-15 1996-11-27 インターナショナル・ビジネス・マシーンズ・コーポレイション トランザクション処理の同期方法、トランザクション処理のモニタ方法及びトランザクションのコミット処理方法
US6205464B1 (en) * 1994-09-16 2001-03-20 International Businesss Machines Corporation System for building optimal commit trees in a distributed transaction processing system
US5680610A (en) * 1995-01-19 1997-10-21 Unisys Corporation Method and apparatus for testing recovery scenarios in global transaction processing systems
US5794242A (en) * 1995-02-07 1998-08-11 Digital Equipment Corporation Temporally and spatially organized database
WO1996027157A1 (en) * 1995-02-28 1996-09-06 Ntt Data Communications Systems Corporation Cooperative distributed system, and journal and recovery processings therein
FR2735934B1 (fr) * 1995-06-23 1997-08-01 Cit Alcatel Procede pour allouer des identificateurs de transaction, et systeme pour la mise en oeuvre de ce procede
US5799305A (en) * 1995-11-02 1998-08-25 Informix Software, Inc. Method of commitment in a distributed database transaction
US5712971A (en) * 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
US5850507A (en) * 1996-03-19 1998-12-15 Oracle Corporation Method and apparatus for improved transaction recovery
US7415466B2 (en) * 1996-03-19 2008-08-19 Oracle International Corporation Parallel transaction recovery
US6647510B1 (en) * 1996-03-19 2003-11-11 Oracle International Corporation Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction
JPH103416A (ja) * 1996-06-14 1998-01-06 Canon Inc 情報処理装置およびその方法
US6031978A (en) * 1996-06-28 2000-02-29 International Business Machines Corporation System, method and program for enabling a client to reconnect to a same server in a network of computer systems after the server has moved to a different network address
US6263376B1 (en) * 1997-02-24 2001-07-17 Novell, Inc. Generic run-time binding interpreter
US6144731A (en) * 1997-03-12 2000-11-07 Harris Corporation Distributed telephony management
US6446125B1 (en) * 1997-03-28 2002-09-03 Honeywell International Inc. Ripple scheduling for end-to-end global resource management
US5940839A (en) * 1997-04-04 1999-08-17 Hewlett-Packard Company Fault-tolerant system and method of managing transaction failures in hierarchies
US6014669A (en) * 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database
US6199055B1 (en) * 1997-11-05 2001-03-06 E-Stamp Corporation System and method for providing fault tolerant transcriptions over an unsecured communication channel
US6732123B1 (en) 1998-02-23 2004-05-04 International Business Machines Corporation Database recovery to any point in time in an online environment utilizing disaster recovery technology
GB2335517A (en) 1998-03-19 1999-09-22 Ibm Client/server computing system with programmable action by transaction coordinator during prepared state
US6247023B1 (en) * 1998-07-21 2001-06-12 Internationl Business Machines Corp. Method for providing database recovery across multiple nodes
US6295610B1 (en) 1998-09-17 2001-09-25 Oracle Corporation Recovering resources in parallel
US6275832B1 (en) * 1998-09-21 2001-08-14 International Business Machines Corporation Providing transaction undo without logging
US6360231B1 (en) * 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
US6502088B1 (en) 1999-07-08 2002-12-31 International Business Machines Corporation Method and system for improved access to non-relational databases
US6938256B2 (en) 2000-01-18 2005-08-30 Galactic Computing Corporation System for balance distribution of requests across multiple servers using dynamic metrics
US6490595B1 (en) 2000-03-30 2002-12-03 International Business Machines Corporation Method, system and program products for providing efficient syncpoint processing of distributed transactions
US6701345B1 (en) 2000-04-13 2004-03-02 Accenture Llp Providing a notification when a plurality of users are altering similar data in a health care solution environment
CA2406421C (en) * 2000-04-13 2012-02-21 Accenture Llp Method for a health care solution framework
US7403901B1 (en) 2000-04-13 2008-07-22 Accenture Llp Error and load summary reporting in a health care solution environment
US6816905B1 (en) * 2000-11-10 2004-11-09 Galactic Computing Corporation Bvi/Bc Method and system for providing dynamic hosted service management across disparate accounts/sites
US8538843B2 (en) 2000-07-17 2013-09-17 Galactic Computing Corporation Bvi/Bc Method and system for operating an E-commerce service provider
US7401084B1 (en) * 2001-06-14 2008-07-15 Oracle International Corporation Two-phase commit with queryable caches
US8145759B2 (en) 2002-11-04 2012-03-27 Oracle America, Inc. Dynamically configurable resource pool
US7640535B2 (en) * 2003-01-24 2009-12-29 Bea Systems, Inc. Method for transaction processing with parallel execution
US7165061B2 (en) * 2003-01-31 2007-01-16 Sun Microsystems, Inc. Transaction optimization of read-only data sources
US7624112B2 (en) * 2003-04-03 2009-11-24 Oracle International Corporation Asynchronously storing transaction information from memory to a persistent storage
US7610305B2 (en) 2003-04-24 2009-10-27 Sun Microsystems, Inc. Simultaneous global transaction and local transaction management in an application server
US7743083B2 (en) 2003-04-24 2010-06-22 Oracle America, Inc. Common transaction manager interface for local and global transactions
US7640545B2 (en) * 2003-07-14 2009-12-29 Sun Microsytems, Inc. Transaction manager freezing
US7739252B2 (en) * 2003-07-14 2010-06-15 Oracle America, Inc. Read/write lock transaction manager freezing
US8521875B2 (en) * 2003-09-04 2013-08-27 Oracle America, Inc. Identity for data sources
US7418462B2 (en) * 2003-11-24 2008-08-26 Microsoft Corporation Optimized recovery logging
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US8271448B2 (en) * 2005-01-28 2012-09-18 Oracle International Corporation Method for strategizing protocol presumptions in two phase commit coordinator
US8145686B2 (en) * 2005-05-06 2012-03-27 Microsoft Corporation Maintenance of link level consistency between database and file system
US7725446B2 (en) * 2005-12-19 2010-05-25 International Business Machines Corporation Commitment of transactions in a distributed system
US8024714B2 (en) * 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions
US7711678B2 (en) * 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
US8010550B2 (en) * 2006-11-17 2011-08-30 Microsoft Corporation Parallelizing sequential frameworks using transactions
US7860847B2 (en) * 2006-11-17 2010-12-28 Microsoft Corporation Exception ordering in contention management to support speculative sequential semantics
US20080250074A1 (en) * 2007-04-04 2008-10-09 Oracle International Corporation Recoverable last resource commit
US7861072B2 (en) * 2007-06-25 2010-12-28 Microsoft Corporation Throwing one selected representative exception among aggregated multiple exceptions of same root cause received from concurrent tasks and discarding the rest
US8146085B2 (en) 2007-06-25 2012-03-27 Microsoft Corporation Concurrent exception handling using an aggregated exception structure
US7899999B2 (en) * 2007-06-27 2011-03-01 Microsoft Corporation Handling falsely doomed parents of nested transactions
US7890707B2 (en) 2007-06-27 2011-02-15 Microsoft Corporation Efficient retry for transactional memory
US7991967B2 (en) * 2007-06-29 2011-08-02 Microsoft Corporation Using type stability to facilitate contention management
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US9027030B2 (en) 2007-11-29 2015-05-05 Red Hat, Inc. Commit-one-phase distributed transactions with multiple starting participants
US10007547B2 (en) * 2008-01-17 2018-06-26 International Business Machines Corporation Specifying an invocation order of a plurality of resources in a transaction according to resource distance
US8606947B2 (en) * 2008-05-27 2013-12-10 International Business Machines Corporation Heuristics processing
US8352421B2 (en) * 2008-05-28 2013-01-08 Red Hat, Inc. Recording distributed transactions using probabalistic data structures
JP5463780B2 (ja) * 2009-07-31 2014-04-09 ブラザー工業株式会社 情報処理装置
US20110178984A1 (en) * 2010-01-18 2011-07-21 Microsoft Corporation Replication protocol for database systems
US8825601B2 (en) * 2010-02-01 2014-09-02 Microsoft Corporation Logical data backup and rollback using incremental capture in a distributed database
JP2012018449A (ja) * 2010-07-06 2012-01-26 Fujitsu Ltd スナップショット取得処理プログラム、スナップショット取得処理方法、スナップショット・パティシパント・コンピュータ、スナップショット・コーディネータ・コンピュータ
US8442962B2 (en) * 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization
US8726082B2 (en) * 2011-09-02 2014-05-13 Verizon Patent And Licensing Inc. Method and system for providing incomplete action monitoring and service for data transactions
US9055065B2 (en) * 2011-11-21 2015-06-09 Red Hat, lnc. Managing participant order in distributed transactions
US9003162B2 (en) 2012-06-20 2015-04-07 Microsoft Technology Licensing, Llc Structuring storage based on latch-free B-trees
US20140214886A1 (en) 2013-01-29 2014-07-31 ParElastic Corporation Adaptive multi-client saas database
US9519591B2 (en) 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US9317379B2 (en) * 2014-01-24 2016-04-19 International Business Machines Corporation Using transactional execution for reliability and recovery of transient failures
US10048983B2 (en) * 2014-04-02 2018-08-14 Red Hat, Inc. Systems and methods for enlisting single phase commit resources in a two phase commit transaction
US9779128B2 (en) * 2014-04-10 2017-10-03 Futurewei Technologies, Inc. System and method for massively parallel processing database
US9514211B2 (en) 2014-07-20 2016-12-06 Microsoft Technology Licensing, Llc High throughput data modifications using blind update operations
US20160147813A1 (en) * 2014-11-25 2016-05-26 Juchang Lee Distributed transaction commit protocol
US11314544B2 (en) * 2015-02-09 2022-04-26 Red Hat, Inc. Transaction log for audit purposes
US9904722B1 (en) 2015-03-13 2018-02-27 Amazon Technologies, Inc. Log-based distributed transaction management
US10031935B1 (en) 2015-08-21 2018-07-24 Amazon Technologies, Inc. Customer-requested partitioning of journal-based storage systems
US10346434B1 (en) 2015-08-21 2019-07-09 Amazon Technologies, Inc. Partitioned data materialization in journal-based storage systems
US10235407B1 (en) 2015-08-21 2019-03-19 Amazon Technologies, Inc. Distributed storage system journal forking
US9990391B1 (en) 2015-08-21 2018-06-05 Amazon Technologies, Inc. Transactional messages in journal-based storage systems
US10324905B1 (en) 2015-08-21 2019-06-18 Amazon Technologies, Inc. Proactive state change acceptability verification in journal-based storage systems
US10108658B1 (en) 2015-08-21 2018-10-23 Amazon Technologies, Inc. Deferred assignments in journal-based storage systems
US10198346B1 (en) 2015-09-28 2019-02-05 Amazon Technologies, Inc. Test framework for applications using journal-based databases
US10331657B1 (en) 2015-09-28 2019-06-25 Amazon Technologies, Inc. Contention analysis for journal-based databases
US10133767B1 (en) 2015-09-28 2018-11-20 Amazon Technologies, Inc. Materialization strategies in journal-based databases
CN112822091B (zh) * 2019-11-18 2023-05-30 北京京东尚科信息技术有限公司 一种消息处理方法和装置
US11468032B2 (en) 2020-09-22 2022-10-11 Snowflake Inc. Concurrent transaction processing in a database system
US11436212B2 (en) 2020-09-22 2022-09-06 Snowflake Inc. Concurrent transaction processing in a database system
US11630867B2 (en) 2021-08-30 2023-04-18 Kyndryl, Inc. Data exhaust logging
CN114722062B (zh) * 2022-05-05 2024-07-02 北京理工大学 一种自适应分布式事务提交方法
US11514080B1 (en) 2022-05-31 2022-11-29 Snowflake Inc. Cross domain transactions

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5201044A (en) * 1990-04-16 1993-04-06 International Business Machines Corporation Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory
US5261089A (en) * 1990-05-16 1993-11-09 International Business Machines Corporation Optimization of commit procedures by utilizing a two-phase commit procedure only when necessary
US5276876A (en) * 1990-05-16 1994-01-04 International Business Machines Corporation Registration of resources for commit procedures

Also Published As

Publication number Publication date
EP0578406B1 (en) 1998-12-16
US5335343A (en) 1994-08-02
DE69322549D1 (de) 1999-01-28
EP0578406A1 (en) 1994-01-12
JPH06168169A (ja) 1994-06-14
DE69322549T2 (de) 1999-06-24

Similar Documents

Publication Publication Date Title
JP2558052B2 (ja) 仮定コミット2フェーズコミットプロトコルを用いるトランザクション処理システム及びその動作方法
US5923833A (en) Restart and recovery of OMG-compliant transaction systems
KR100625595B1 (ko) 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템
US5546582A (en) Extension of two phase commit protocol to distributed participants
US5140689A (en) Data recovery system and method of distributed transaction processing system
US4949251A (en) Exactly-once semantics in a TP queuing system
EP0772136B1 (en) Method of commitment in a distributed database transaction
JPH02228744A (ja) データ処理システム
EP0226734B1 (en) Method and apparatus for managing obsolescence of data objects
US5729733A (en) Method of operating a distributed databse based on object ownership and transaction classification utilizing an aggressive reverse one phase commit protocol
JPH0827755B2 (ja) データの単位を高速度でアクセスする方法
JPH1069418A (ja) 階層化トランザクション処理方法
CN111930788B (zh) 操作请求的处理方法、装置、设备、可读存储介质及系统
US5745674A (en) Management of units of work on a computer system log
EP0834122B1 (en) Synchronisation procedure in a routing node
US5390302A (en) Transaction control
US7072912B1 (en) Identifying a common point in time across multiple logs
US6842763B2 (en) Method and apparatus for improving message availability in a subsystem which supports shared message queues
US6330686B1 (en) Handling protected conversation messages across IMS restart in shared queues environment
US6092084A (en) One system of a multisystem environment taking over log entries owned by another system
US6076095A (en) Method of one system of a multisystem environment taking over log entries owned by another system
JP3330006B2 (ja) 情報記憶システムを備えるネットワークシステム、該システムの入力システムならびに
KR950011056B1 (ko) 트랜잭션 처리시스템의 로그/회복관리방법
EP0443824B1 (en) Transaction management protocol for a multi-processors computer
CN114116732B (zh) 处理事务的方法、装置、存储装置以及服务器