JP4923142B2 - 入れ子トランザクションの親の不正な失敗への対処 - Google Patents

入れ子トランザクションの親の不正な失敗への対処 Download PDF

Info

Publication number
JP4923142B2
JP4923142B2 JP2010514967A JP2010514967A JP4923142B2 JP 4923142 B2 JP4923142 B2 JP 4923142B2 JP 2010514967 A JP2010514967 A JP 2010514967A JP 2010514967 A JP2010514967 A JP 2010514967A JP 4923142 B2 JP4923142 B2 JP 4923142B2
Authority
JP
Japan
Prior art keywords
transaction
write
nested
compensation map
parent
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.)
Active
Application number
JP2010514967A
Other languages
English (en)
Other versions
JP2010532052A (ja
JP2010532052A5 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010532052A publication Critical patent/JP2010532052A/ja
Publication of JP2010532052A5 publication Critical patent/JP2010532052A5/ja
Application granted granted Critical
Publication of JP4923142B2 publication Critical patent/JP4923142B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、入れ子トランザクションの親を不正に失敗させることを対処することに関する。
ソフトウェアトランザクショナルメモリ(STM:Software transactional memory)は、並行処理コンピューティングにおいて共有メモリへのアクセスを制御するためのデータベーストランザクションに対する並行処理制御機構に類似している。トランザクショナルメモリのコンテキストにおいて、トランザクションとは、共有メモリに対する一連の読み取りおよび書き込みを実行するコードの一部である。STMは、トランザクショナルロック機構(transactional locking mechanism)の代替として使用される。STMは、並列プログラムをより簡単に書くことを可能にする。トランザクションは、あらかも分離して(isolation)実行していたかのように実行すべきコードのシーケンスを指定する。分離しているというこの錯覚は、オブジェクトを細粒度でロックすることによって、およびトランザクションが他の何らかのトランザクションと競合していることわかったときは該トランザクションをロールバックするという副作用を可能にするモードで実行することによって達成される。データアクセスのために生成されたコードが、これらのロック機構およびロールバック機構へのサポートを含むように変更された場合、該データアクセスが「トランザクト(transact)された」という。
多くのSTMシステムは、入れ子トランザクション(nested transaction)をサポートするため、トランザクションを使用して作成された異なるコンポーネントの効率的な構成を可能にする。入れ子トランザクションは、その結果(effect)が、該入れ子トランザクションが含まれているトランザクション、すなわち親トランザクションのような同じ分離境界(isolation boundary)の一部である場合、クローズであると見なされる。クローズされた入れ子トランザクションがコミットすると、その結果はシステムの他の部分に対して可視とはならない。代わりに、その結果は、まだ進行中の親トランザクションの一部となり、親トランザクションが最終的にコミットしたときにのみシステムの他の部分に対して可視となる。入れ子トランザクションがロールバックすると、その一時的な結果は取り消され、親トランザクションの状態が、該入れ子トランザクションが開始したポイントにリストアされる。
インプレース(in-place)書き込みおよび楽観的(optimistic)読み取りを使用するSTMシステムは、メモリのロック可能領域の各々に関連付けられたバージョン番号を使用して、共有データに対していつ変更が行われたかを示す。読み取りトランザクションは楽観的に、メモリのバージョン番号(オブジェクト、キャッシュラインなど)を記録するが、他方、データはロックしない。このトランザクションは、該トランザクションの期間(life)にわたってバージョン番号が変化していないときにコミットすることができる。書き込みトランザクションは、コミットまたはロールバックのいずれかのために、その書き込みロックを解放するときにバージョン番号をインクリメントする。書き込みトランザクションがデータをインプレースで一時的に更新したので、バージョン番号は、ロールバック中にクリメントされなければならない。これらの更新は、読み取りトランザクションに対して可視であり、該読み取りトランザクションに、不整合データを読み取る可能性があるためコミットすることができないことを通知しなければならない。
親によってまだ書き込まれていないデータを書き込む入れ子トランザクションは、ロールバックの際に、非入れ子(トップレベル)のトランザクションと同じようにバーション番号をインクリメントしなければならない。しかしながら、初めて、親トランザクションが楽観的に変数Xを読み取り、入れ子の子トランザクションが変数Xに対して書き込む場合を検討されたい。親は、そのログにXのバーション番号、例えば、バージョンV1を記録するであろう。子トランザクションは、Xに対する書き込みロックを開始して該書き込みロックを獲得するであろう。次いで、子トランザクションがコミットする場合は問題ない。すなわち、書き込みロックが解放されて親に渡され、そして該親は、矛盾を生じさせないままコミットすることができる。しかしながら、上記入れ子トランザクションが何らかの理由でロールバックする場合、該入れ子トランザクションは、書き込みロックを解放して、Xのバージョン番号をV2にインクリメントしなければならない。親は、コミット時に矛盾を生じるように見えるであろう。XのバージョンはV2であるが、実際には、親は、V1のXを読み取り、どれがバージョン番号をV2に変更したかについての記録を有さない。親が別のトランザクションと競合しているように見えるが、実際は、バージョン番号の増加を引き起こした入れ子の子トランザクションあるので、これは実際には競合ではない。親は、その子のロールバック操作によって失敗させられたのである。この問題は、STMシステムにおける親トランザクションの疑似再実行(spurious re-executions)を引き起こす。
トランザクショナルメモリシステムにおいて、入れ子の子トランザクションによって不正に失敗させられる親トランザクションを検出するための様々な技術および技法を開示する。入れ子トランザクションをロールバックすると、所与の入れ子トランザクションに対する書き込みロックが解放される毎にリリースカウントが追跡される。例えば、書き込み補償停止マップを使用して、ロールバックする各入れ子トランザクションに対して解放される各ロックについて、リリースカウントを追跡する。入れ子トランザクションが書き込みロックを解放する回数を、その各々の書き込み停止補償マップに記録する。該リリースカウントを親トランザクションの検証(validation)中に使用して、一見して無効な(invalid)楽観的読み取りが実際に有効(valid)であるかどうかを判断することができる。
一実装では、親トランザクションの処理中に、入れ子の子トランザクションについて見つかった全ての書き込み停止補償マップを、親の集約書き込み停止補償マップに集約する。バージョン番号の不一致のために楽観的読み取りが有効とされない場合、次いで、集約書き込み停止補償マップを参照して、入れ子の子トランザクションに対する特定の変数(variable)の書き込みロックリリースカウントを取り出す。バージョン番号の差が、上記入れ子の子トランザクションの書き込みロックリリースカウントと正確に一致する場合、上記楽観的読み取りは有効である。
この課題を解決するための手段は、下記の発明を実施するための形態でさらに説明される概念の選択を簡略化した形で紹介するために提供されたものである。この課題を解決するための手段は、特許請求される主題の重要な機能または主要な機能を特定するようには意図されておらず、特許請求される主題の範囲を決定する際の助けとして使用されるようにも意図されていない。
一実装にかかるコンピュータシステムの概略図である。 図1のコンピュータシステムにおいて動作する、一実装にかかるトランザクショナルメモリアプリケーションの概略図である。 図1のシステムの一実装にかかる高レベルの処理フローを示す図である。 図1のシステムの一実装にかかる、書き込み停止補償マップを作成し、維持することに関する段階を示す処理フロー図である。 図1のシステムの一実装にかかる、トランザクションのロールバック中に書き込み停止補償マップを集約することに関する段階を示す処理フロー図である。 図1のシステムの一実装にかかる、トランザクションの検証中に、書き込み停止補償マップを使用して、入れ子トランザクションの親を不正に失敗させることを回避することに関する段階を示す処理フロー図である。
本明細書の技術および技法を、一般的なコンテキストでトランザクショナルメモリシステムとして説明するが、本システムは、これらに加えて他の目的も果たす。一実装では、本明細書で説明される技法の1つまたは複数を、MICROSOFT(登録商標).NET Frameworkなどのフレームワークプログラム内の機能として、あるいは開発者にソフトウェアアプリケーションを開発するためのプラットフォームを提供する任意の他のタイプのプログラムまたはサービスからの機能として実装することができる。別の実装では、本明細書で説明される技法の1つまたは複数を、並列処理環境において実行するアプリケーションの開発を扱う他のアプリケーションを有する機能として実装することができる。
一実装では、入れ子の子トランザクションの親トランザクションを不正に失敗させることを検出し、回避することを可能にするトランザクショナルメモリシステムを提供する。本明細書で使用されるとき、「失敗させられる(doomed)」という用語は、他のトランザクションによって後から書き込まれた1つまたは複数の変数に対して、1または複数の楽観的読み取りを実行したために、後にロールバックされることとなるトランザクションを含むことが意図されている。このようなトランザクションがコミットしようとすると、失敗した楽観的読み取り(failed optimistic read)によって、当該トランザクションはロールバックして再実行することとなる。本明細書で使用されるとき「不正に失敗させられる(falsely doomed)」という用語は、失敗した楽観的読み取りが原因で失敗させられるように見えるが、当該楽観的読み取りが入れ子トランザクションによって実行された動作によるものであって実際には有効であったために、実際には失敗させられていない任意のトランザクションを含むように意図されている。本明細書で使用されるとき「入れ子トランザクション(nested transaction)」という用語は、そのトランザクションの結果が別のトランザクションの分離境界内に含まれるトランザクションを含むように意図されている。入れ子トランザクションを含んでいるトランザクションを、当該入れ子トランザクションの「親(parent)」と呼び、当該入れ子トランザクションを、典型的には「子(child)」と呼ぶ。各入れ子の子が書き込みロックを解放する回数は、ロック毎のリリースカウント(per-lock release count)で追跡される。一実装では、これらのカウントは、書き込み停止補償マップで追跡される。本明細書で使用されるとき「書き込み停止補償マップ(write abort compensation map)」という用語は、入れ子の子がロックを解放するたびに、ロック毎のリリースカウントを記憶するデータ構造を含むように意図されている。複数の書き込み停止補償マップを、トランザクションの検証中またはロールバック中に、集約マップに集約することができる。
親トランザクションを検証するとき、楽観的読み取りが検証に失敗(fail)した場合、次いで、現在の集約書き込み停止補償マップを参照して、トランザクショナルメモリワードにおけるバージョン番号の差が、そのオブジェクトまたはメモリ領域に対する入れ子の子トランザクションの集約リリースカウントに正確に一致しているかどうか確認する。正確に一致している場合、楽観的読み取りは有効であり、上記親は、不正に失敗させられるべきではない。本明細書で使用されるとき、トランザクショナルメモリワード(transactional memory word)という用語は、ロック状態およびバージョン番号など所与のトランザクションに関する様々な情報を追跡する、各トランザクションに対して提供されるデータ構造を含むように意図されている。例えば、TMWは、バージョン番号、およびリーダのリスト/カウントおよび/またはインジケータを含むことができる。別の実装では、リーダのリスト/カウントおよび/またはインジケータは、所与の時点で特定の値にアクセスしている(例えば、悲観的な)特定のリーダのリストを含むことができる。さらに別の実装では、リーダのリスト/カウントおよび/またはインジケータは、単に、所与の時点で特定の値にアクセスしている1つまたは複数のリーダが存在していることを示す、フラグまたは他のインジケータである。これらは例示にすぎず、本明細書におけるTMWという用語の使用は、トランザクションの状態を追跡するための様々な機構を網羅するように意図されている。
図1に示されるように、本システムの1つまたは複数の部分を実装するために使用する例示的なコンピュータシステムには、コンピューティングデバイス100などのコンピューティングデバイスが含まれる。最も基本的な構成では、コンピューティングデバイス100は、典型的に、少なくとも1つの処理ユニット102およびメモリ104を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはこれら2つの何らかの組み合わせとすることができる。この最も基本的な構成は、図1では破線106によって図示されている。
さらに、デバイス100は、追加の機能/機能性を有することもできる。例えば、デバイス100は、これらには限られないが磁気または光ディスクまたはテープを含め、追加のストレージ(取り外し可能および/または取り外し不可能)を含むこともできる。このような追加のストレージは、図1では、取り外し可能ストレージ108および取り外し不可能ストレージ110によって図示されている。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装される、揮発性および不揮発性、取り外し可能および取り外し不可能な媒体が含まれる。メモリ104、取り外し可能ストレージ108、および取り外し不可能ストレージ110は、全てコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、RAM、ROM,EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を記憶するのに使用可能であってデバイス100によってアクセス可能な任意の他の媒体が含まれるが、これらには限定されない。このようなコンピュータ記憶媒体は全て、デバイス100の一部とすることができる。
コンピューティングデバイス100は、該コンピューティングデバイス100が他のコンピュータ/アプリケーション115と通信することを可能にする、1つまたは複数の通信接続114を含む。デバイス100は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置112も有する。ディスプレイ、スピーカ、プリンタなどの出力装置112も含まれる。これらの装置は当技術分野で周知であるので、ここでは詳細に議論する必要はない。一実装では、コンピューティングデバイス100は、トランザクショナルメモリアプリケーション(transactional memory application)200を含む。トランザクショナルメモリアプリケーション200については、図2でより詳細に説明する。
引き続き図1を参照しつつ図2に移ると、コンピューティングデバイス100において動作するトランザクショナルメモリアプリケーション200が図示されている。トランザクショナルメモリアプリケーション200は、コンピューティングデバイス100に存在するアプリケーションプログラムの1つである。しかしながら、代替または追加としてトランザクショナルメモリアプリケーション200を、1つまたは複数のコンピュータにおけるコンピュータ実行可能命令として、および/または図1に示されているものと異なる変形形態のコンピュータ実行可能命令として具現化することもできる。代替または追加として、トランザクショナルメモリアプリケーション200の1つまたは複数の部分を、システムメモリ104の一部分とすること、他のコンピュータおよび/またはアプリケーション115上のものにすること、あるいはコンピュータソフトウェアの分野で起こり得るような上記他の変形形態とすることができる。
トランザクショナルメモリアプリケーション200には、本明細書で説明される技法の一部または全てを実行することに関与するプログラムロジック204が含まれる。プログラムロジック204は、(以下で図4に関連して説明されるように)入れ子トランザクションが最初にロールバックして書き込みロックを解放するときに、書き込み停止補償マップ(WACM:write abort compensation map)を作成するためのロジック206、(以下で図4に関連して説明されるように)所与のトランザクショナルメモリワードにおいて入れ子トランザクションが書き込みロックを解放した回数を、WACM内の各エントリに記録するためのロジック208、(以下で図4に関連して説明されるように)親のトランザクションログ内にWACMを保持するためのロジック210、(以下で図4に関連して説明されるように)特定の入れ子トランザクションが再実行して再びロールバックする場合に、同じWACMを使用して更新するためのロジック212、(以下で図5に関連して説明されるように)適切であるとしてWACMを集約するためのロジック214、(以下で図6に関連して説明されるように)トランザクションの検証中に、失敗した楽観的読み取りが実際には有効であるか、または無効であるかを判断するためにWACMを使用するためのロジック216、およびアプリケーションを動作させるための他のロジック220
を含む。
引き続き図1〜2を参照しながら図3〜6に移ると、トランザクショナルメモリアプリケーション200の1つまたは複数の実装形態を実装するための諸段階が、より詳細に説明されている。一部の実装において図3〜6の処理は、少なくとも部分的にコンピューティングデバイス100のオペレーティングロジックで実装される。図3は、トランザクショナルメモリアプリケーション200に関する高レベルの処理フロー図である。処理は開始ポイント240で始まる。入れ子トランザクションのロールバック中に解放された任意の書き込みロックが、親トランザクションを失敗させる可能性を有する(段階242)。トランザクションがロールバックすると、バージョン番号が増加される毎に該バージョン番号が記憶される(段階244)。本システムは、ロールバックする各入れ子トランザクションについて、この情報をトラックする(段階246)。トランザクションの検証の間に、本システムはこの情報を使用して、検証を失敗した特定の楽観的読み取りが、差が入れ子の子の再実行するによるものであったために実際には有効であるかどうかを判断する(段階248)。これらの段階について、図4〜6でより詳細に説明する。処理は終了ポイント250で終了する。

図4は、書き込み停止補償マップを作成および維持することに関連する諸段階の一実装を図示している。処理は、開始ポイント270で始まり、入れ子トランザクションが初めてロールバックして書き込みロックを解放すると、一意のロック識別子(lock identifier)によってキー付けされた書き込み停止補償マップ(WACM)を作成する(段階272)。WACM内の各エントリは、入れ子トランザクションが、所与のトランザクショナルメモリワードにおいて書き込みロックを解放した回数を記録する(段階274)。
WACMは、親トランザクションのログ内に保持され、該親によって全ての楽観的読み取りが行われた後、入れ子トランザクションの開始時に順序付けされる(段階276)。特定の入れ子トランザクションが再実行して再びロールバックする場合、システムは、同じWACMを使用し、任意の新しい書き込みロックの解放を用いて該WACMを更新する(段階278)。入れ子トランザクションが、前の実行で獲得したロックを再び獲得する場合、トランザクショナルメモリワードのカウントは、WACMにおいてインクリメントされる(段階280)。処理は、終了ポイント282で終了する。
図5は、トランザクションのロールバック中にWACMを集約することに関連する諸段階の一実装を図示している。処理は、開始ポイント290で始まり、多くの入れ子の子の親でもあった入れ子トランザクションが、そのログ全体に分散された複数のWACMを有する可能性がある(段階292)。トランザクションのロールバック中に複数のWACMが発見される場合、次いで、入れ子の子に起因する全てのWACMが単一のWACMに集約され、親のログ内に配置される(段階294)。処理は終了ポイント296で終了する。
図6は、トランザクションの検証中にWACMを使用して入れ子の親を不正に失敗させることを回避することに関連する諸段階の一実装を図示している。処理は、開始ポイント310で始まり、親のログを逆に処理しつつ、検証プロセスの間に、楽観的読み取りエントリが処理されていると見なされる任意のWACMを、一時WACMに集約する(段階312)。楽観的読み取りが、バージョン番号の不一致が原因で検証に失敗した場合(決定ポイント314)、次いで、TMWアドレスをキーとして使用して、一時WACMを参照する(段階316)。そのTMWアドレスにおいて一致するエントリが存在する場合(決定ポイント318)、次いでシステムは、そのエントリに関連付けられたカウントが、バージョン番号の差と正確に一致しているかどうかを計算する(決定ポイント320)。カウントがバージョン番号の差と正確に一致している場合(決定ポイント320)、楽観的読み取りは有効であり、この差は単に、入れ子の子を再実行したことよるものであった(段階322)。そうでない場合は、楽観的読み取りは無効であり、これは、他のトランザクションのコミット/ロールバックによるものである(段階324)。これらの段階は、全ての親のログについて繰り返される。処理は、終了ポイント328で終了する。
本主題を、構造的機能および/または方法論的アクトに特有の言語で説明してきたが、添付の特許請求の範囲によって定義される本発明の対象は、必ずしも上述した特定の機能またはアクトに限定されないことを理解されたい。むしろ、上述の特定の機能およびアクトは、特許請求の範囲を実装するための例示の形式として開示されている。本明細書内および/または特許請求の範囲によって説明されるような実装に関する精神に含まれる全ての均等物、変形形態、および修正形態も保護されることが望まれる。
例えば、コンピュータソフトウェアの技術分野の当業者には、本明細書で議論された例示を、例示として描写されたものより少ないまたは追加のオプションまたは機能を含むように1つまたは複数のコンピュータにおいて異なるように編成することが可能であることが理解されよう。

Claims (18)

  1. トランザクショナルメモリシステムにおいて、複数の入れ子の子トランザクションの親トランザクションを不正に失敗させることを回避するための方法であって、
    複数の入れ子トランザクションがロールバックするとき、共有メモリに対する書き込みロックが解放される毎にリリースカウントを追跡するステップと、
    前記複数の入れ子トランザクションを含む親トランザクションの検証中に、前記リリースカウントを使用して、失敗した楽観的読み取りが実際には有効であるかどうかを判断するステップと
    を含むことを特徴とする方法。
  2. 前記共有メモリに対するバージョン番号の差が前記リリースカウントに正確に一致しているとき、前記失敗した楽観的読み取りは、実際には有効であると判断されることを特徴とする請求項1に記載の方法。
  3. 前記リリースカウントは、書き込み停止補償マップにおいて追跡されることを特徴とする請求項1に記載の方法。
  4. 前記書き込み停止補償マップは、前記複数の入れ子トランザクションの各々に対して作成されることを特徴とする請求項3に記載の方法。
  5. 前記書き込み停止補償マップは、前記複数の入れ子トランザクションの個々の1つの入れ子トランザクションに対して、該個々の1つの入れ子トランザクションが最初にロールバックして前記共有メモリに対する書き込みロックを解放するときに作成されることを特徴とする請求項4に記載の方法。
  6. 前記複数の入れ子トランザクションの各々に対する前記書き込み停止補償マップは、集約書き込み停止補償マップに集約されることを特徴とする請求項4に記載の方法。
  7. 前記集約書き込み停止補償マップは、前記親トランザクションのトランザクションログを処理する間に、前記失敗した楽観的読み取りが実際には有効であるかどうかを判断するのに使用されることを特徴とする請求項6に記載の方法。
  8. 前記書き込み停止補償マップは、前記親トランザクションによって全ての楽観的読み取りが行われた後、前記複数の入れ子トランザクションの各々の開始時に順序付けされて、前記親トランザクションの前記トランザクションログ内に保持され、
    前記親トランザクションの前記トランザクションログは、前記順序付けと逆の順序で処理されることを特徴とする請求項7に記載の方法。
  9. 入れ子トランザクションの書き込み停止補償マップを作成するステップと、
    前記入れ子トランザクションが共有メモリに対する書き込みロックを解放する回数を、前記書き込み停止補償マップに記録するステップと、
    前記入れ子トランザクションを含む親トランザクションの検証中に、前記書き込み停止補償マップを使用して、失敗した楽観的読み取りが実際には有効であるかどうかを判断するステップと
    をコンピュータに実行させるためのコンピュータ実行可能な命令を記憶したことを特徴とするコンピュータ記憶媒体。
  10. 前記書き込み停止補償マップは、前記入れ子トランザクションが最初にロールバックして書き込みロックを解放するときに作成されることを特徴とする請求項9に記載のコンピュータ記憶媒体。
  11. 前記失敗した楽観的読み取りは、前記共有メモリに対するバージョン番号の差が、前記入れ子トランザクションが前記書き込みロックを解放した回数に正確に一致している場合、実際には有効であると判断されることを特徴とする請求項9に記載のコンピュータ記憶媒体。
  12. 前記書き込み停止補償マップは、前記親トランザクションのトランザクションログに保持されることを特徴とする請求項9に記載のコンピュータ記憶媒体。
  13. 前記書き込み停止補償マップは、前記親トランザクションによって全ての楽観的読み取りが行われた後、前記入れ子トランザクションの開始時に、順序付けされることを特徴とする請求項12に記載のコンピュータ記憶媒体。
  14. 前記書き込み停止補償マップは、前記親トランザクションのロールバック中に、他の入れ子の子について作成された他の書き込み停止補償マップとともに集約されて、集約された書き込み停止補償マップを形成することを特徴とする請求項9に記載のコンピュータ記憶媒体。
  15. 前記集約された書き込み停止補償マップは、前記親トランザクションのトランザクションログ内に配置されることを特徴とする請求項14に記載のコンピュータ記憶媒体。
  16. 前記書き込み停止補償マップは、前記親トランザクションによって全ての楽観的読み取りが行われた後、前記入れ子トランザクションの開始時に順序付けされて、前記親トランザクションの前記トランザクションログに保持され、
    前記集約された書き込み停止補償マップは、前記親トランザクションの前記トランザクションログを前記順序付けと逆の順序で処理するとき、前記親トランザクションの前記トランザクションログに配置されることを特徴とする請求項15に記載のコンピュータ記憶媒体。
  17. トランザクションの検証中に書き込み停止補償マップを使用して入れ子の子トランザクションを含むトランザクションが不正に失敗するのを回避するための方法であって、
    トランザクションのログの処理中に、前記親トランザクションに含まれる複数の入れ子の子トランザクションにおいて見つかった全ての書き込み停止補償マップを、集約された書き込み停止補償マップに集約するステップと、
    共有メモリに対する前記親トランザクションによる楽観的読み取りが、前記共有メモリに対するバージョン番号の不一致のために失敗した場合、前記集約された書き込み停止補償マップを参照して、前記共有メモリに対する前記複数の入れ子の子トランザクションの書き込みロックリリースカウントを取り出すステップと、
    前記バージョン番号の差が前記複数の入れ子の子トランザクションの前記書き込みロックの前記リリースカウントに正確に一致するとき、前記楽観的読み取りは有効であるとするステップと
    を含むことを特徴とする方法。
  18. 前記バージョン番号の差が前記複数の入れ子の子トランザクションの前記書き込みロックの前記リリースカウントに正確に一致しないとき、前記楽観的読み取りは無効であるとすることを特徴とする請求項17に記載の方法。
JP2010514967A 2007-06-27 2008-06-16 入れ子トランザクションの親の不正な失敗への対処 Active JP4923142B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/823,162 2007-06-27
US11/823,162 US7899999B2 (en) 2007-06-27 2007-06-27 Handling falsely doomed parents of nested transactions
PCT/US2008/067145 WO2009002754A2 (en) 2007-06-27 2008-06-16 Handling falsely doomed parents of nested transactions

Publications (3)

Publication Number Publication Date
JP2010532052A JP2010532052A (ja) 2010-09-30
JP2010532052A5 JP2010532052A5 (ja) 2011-08-04
JP4923142B2 true JP4923142B2 (ja) 2012-04-25

Family

ID=40161865

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010514967A Active JP4923142B2 (ja) 2007-06-27 2008-06-16 入れ子トランザクションの親の不正な失敗への対処

Country Status (6)

Country Link
US (1) US7899999B2 (ja)
EP (1) EP2176762B1 (ja)
JP (1) JP4923142B2 (ja)
CN (1) CN101689138B (ja)
TW (1) TWI363299B (ja)
WO (1) WO2009002754A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890472B2 (en) * 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US8719515B2 (en) 2010-06-21 2014-05-06 Microsoft Corporation Composition of locks in software transactional memory
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
US10073844B1 (en) 2010-11-24 2018-09-11 Federal Home Loan Mortgage Corporation (Freddie Mac) Accelerated system and method for providing data correction
US20140281236A1 (en) * 2013-03-14 2014-09-18 William C. Rash Systems and methods for implementing transactional memory
WO2014192213A1 (ja) * 2013-05-31 2014-12-04 日本電気株式会社 分散処理システム
US20150370409A1 (en) * 2014-06-18 2015-12-24 International Business Machines Corporation Disambiguation of touch-based gestures
US10503698B2 (en) * 2014-07-31 2019-12-10 Splunk Inc. Configuration replication in a search head cluster
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10635613B2 (en) 2017-04-11 2020-04-28 Micron Technology, Inc. Transaction identification
CN110347533A (zh) * 2019-07-11 2019-10-18 中国工商银行股份有限公司 数据异常的处理方法、装置、计算设备及介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5241675A (en) 1992-04-09 1993-08-31 Bell Communications Research, Inc. Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers
US5335343A (en) 1992-07-06 1994-08-02 Digital Equipment Corporation Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
JP3672208B2 (ja) * 1996-07-02 2005-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層化トランザクション処理方法
EP0990214A2 (en) * 1998-01-26 2000-04-05 Telenor AS Database management system and method for conditional conflict serializaility of transactions and for combining meta-data of varying degrees of reliability
US6298478B1 (en) 1998-12-31 2001-10-02 International Business Machines Corporation Technique for managing enterprise JavaBeans (™) which are the target of multiple concurrent and/or nested transactions
CN1539110A (zh) * 2000-07-28 2004-10-20 辛孚尼系统股份有限公司 嵌套数据库的实现方法、系统和数据结构
US6671686B2 (en) 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US6850938B1 (en) * 2001-02-08 2005-02-01 Cisco Technology, Inc. Method and apparatus providing optimistic locking of shared computer resources
JP3732113B2 (ja) * 2001-05-14 2006-01-05 株式会社八十二銀行 トランザクション制御システム、方法及びプログラム
GB0130399D0 (en) 2001-12-19 2002-02-06 Ibm Message ordering in a messaging system
US6754737B2 (en) 2001-12-24 2004-06-22 Hewlett-Packard Development Company, L.P. Method and apparatus to allow dynamic variation of ordering enforcement between transactions in a strongly ordered computer interconnect
US6785779B2 (en) 2002-01-09 2004-08-31 International Business Machines Company Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture
US7395274B2 (en) 2002-07-16 2008-07-01 Sun Microsystems, Inc. Space- and time-adaptive nonblocking algorithms
US7076508B2 (en) 2002-08-12 2006-07-11 International Business Machines Corporation Method, system, and program for merging log entries from multiple recovery log files
US7089253B2 (en) 2002-09-13 2006-08-08 Netezza Corporation Computer method and system for concurrency control using dynamic serialization ordering
JP2004157776A (ja) * 2002-11-06 2004-06-03 Nec Corp アプリケーションの処理方法およびシステム
US6898685B2 (en) 2003-03-25 2005-05-24 Emc Corporation Ordering data writes from a local storage device to a remote storage device
US7376675B2 (en) 2005-02-18 2008-05-20 International Business Machines Corporation Simulating multi-user activity while maintaining original linear request order for asynchronous transactional events
US20070186056A1 (en) * 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US8099538B2 (en) * 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US7434010B2 (en) 2006-08-04 2008-10-07 Microsoft Corporation Combined pessimistic and optimisitic concurrency control

Also Published As

Publication number Publication date
CN101689138B (zh) 2012-07-18
EP2176762A4 (en) 2012-10-10
JP2010532052A (ja) 2010-09-30
EP2176762A2 (en) 2010-04-21
WO2009002754A3 (en) 2009-02-19
EP2176762B1 (en) 2020-03-18
US7899999B2 (en) 2011-03-01
WO2009002754A2 (en) 2008-12-31
US20090006404A1 (en) 2009-01-01
TWI363299B (en) 2012-05-01
CN101689138A (zh) 2010-03-31
TW200907816A (en) 2009-02-16

Similar Documents

Publication Publication Date Title
JP4923142B2 (ja) 入れ子トランザクションの親の不正な失敗への対処
US9411635B2 (en) Parallel nested transactions in transactional memory
US7676638B2 (en) Combined pessimistic and optimistic concurrency control
US7962456B2 (en) Parallel nested transactions in transactional memory
US7840530B2 (en) Parallel nested transactions in transactional memory
US20150227573A1 (en) Distributed, Transactional Key-Value Store
JP5270268B2 (ja) 共有データへの排他的アクセスを許すためのコンピュータ・システム、並びにその方法及びコンピュータ読み取り可能な記録媒体
Wu et al. Transaction healing: Scaling optimistic concurrency control on multicores
US20140344311A1 (en) Systems and methods for asynchronous schema changes
US20150370644A1 (en) Recovering pages of a database
US8108627B2 (en) Array comparison and swap operations
US20100058344A1 (en) Accelerating a quiescence process of transactional memory
US20100057740A1 (en) Accelerating a quiescence process of transactional memory
US20100228705A1 (en) Conditional commit for data in a database
US8504538B2 (en) Dependent commit queue for a database
US9411692B2 (en) Applying write elision
US20170344440A1 (en) Micro-journal based transaction logging
US20080127150A1 (en) Support for stack read and write operations
JPS63196958A (ja) 障害回復処理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110616

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110616

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20110616

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20110722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120106

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120206

R150 Certificate of patent or registration of utility model

Ref document number: 4923142

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250