JPH08137707A - 分散トランザクション処理システム - Google Patents

分散トランザクション処理システム

Info

Publication number
JPH08137707A
JPH08137707A JP6271562A JP27156294A JPH08137707A JP H08137707 A JPH08137707 A JP H08137707A JP 6271562 A JP6271562 A JP 6271562A JP 27156294 A JP27156294 A JP 27156294A JP H08137707 A JPH08137707 A JP H08137707A
Authority
JP
Japan
Prior art keywords
transaction
global
resource
deadlock
manager
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.)
Granted
Application number
JP6271562A
Other languages
English (en)
Other versions
JP3392236B2 (ja
Inventor
Hiroyasu Iba
寛育 射場
Hiroaki Ito
博昭 伊藤
Yasuhiko Hashizume
保彦 橋詰
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP27156294A priority Critical patent/JP3392236B2/ja
Priority to US08/545,207 priority patent/US5835766A/en
Publication of JPH08137707A publication Critical patent/JPH08137707A/ja
Application granted granted Critical
Publication of JP3392236B2 publication Critical patent/JP3392236B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager
    • 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/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

Abstract

(57)【要約】 【目的】 分散トランザクション処理システムにおい
て、データベースアクセスなどを行う複数のリソースマ
ネージャにまたがって発生するグローバルトランザクシ
ョンの間でのデッドロックを検出可能とし、資源の有効
利用を図ることを目的とする。 【構成】 グローバルトランザクションを一括して管理
するトランザクションマネージャが、複数のグローバル
トランザクションの間で、複数のリソースマネージャに
またがって発生する、ハードウェア資源の占有に関する
待ち関係におけるデッドロックを検出するグローバルデ
ッドロック検出手段を備えるように構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、例えばユーザからの要
求に応じて、データベースに格納されている情報の更新
などを行うトランザクション処理を分散コンピューティ
ング環境で実行する、分散トランザクション処理システ
ムにおいて、データベースアクセスなどを行う複数のリ
ソースマネージャにまたがって発生するグローバルトラ
ンザクションの間のデッドロックを検出する、グローバ
ルトランザクション間デッドロック検出方式に関する。
【0002】
【従来の技術】例えば航空券の予約や、銀行からの預金
引き出しなどのように、多数のユーザの要求に応じて、
データベースに格納されている情報の更新などを行うコ
ンピュータ処理の形態をトランザクション処理と言う。
【0003】トランザクション処理は、初期の段階では
全体が1つのホストコンピュータによって制御される集
中型のものであったが、処理要求の多様化や、処理量の
増加に伴ってシステム拡張性の限界などの問題点を生
じ、分散処理環境における処理、すなわち分散トランザ
クション処理形態への移行が行われつつある。
【0004】この分散トランザクション処理に関して
は、すでにいくつかの分野で標準化が行われている。そ
の1つとして、ヨーロッパに本部があるオープンシステ
ム(UNIX)の国際的な標準化団体であるX/Ope
nによる標準化がある。以後の説明においては、このX
/OpenによるDTP(ディストリビューテッドトラ
ンザクションプロセシング)モデルとして知られる機能
モデルに基づいて、本発明の内容を説明する。
【0005】グローバルトランザクションの間でのデッ
ドロックについて説明する前に、まずオープンでない特
定社の独自のシステムにおけるトランザクションの間で
のデッドロックの検出について説明する。図24はその
ような独自システムの構成を示すブロック図である。同
図において、ファイルなどの資源の管理を行うリソース
マネージャ(RM)1の内部に、複数のトランザクショ
ンの管理を行うトランザクションマネージャ(TM)
2、共用メモリ3、ファイルなどの資源の排他制御、す
なわちあるトランザクションがあるファイルを占有して
処理を実行している間に他のトランザクションからその
ファイルにアクセスがあっても、アクセスを行ったトラ
ンザクションにはそのファイルを直ちに占有させず、占
有を待たせる制御を行うロックマネージャ(LM)4、
および複数のファイル5にそれぞれアクセスを行うため
のアクセスマネージャ(AM)6を備えている。
【0006】ロックマネージャ4の内部には、トランザ
クションの間の待ち関係がそのままでは永久に解消され
ない状態としてのデッドロックを検出するためのデッド
ロックディテクタ(DD)7が設けられ、デッドロック
ディテクタ7は共用メモリ3の内部に設けられるWFG
管理テーブル8の内容を用いてデッドロックを検出す
る。WFG管理テーブル8には、複数のトランザクショ
ンの間での、あるハードウェア資源の占有に関する待ち
関係を示すウェイトフォーグラフ(WFG)が格納され
ている。
【0007】図24のシステムでは、リソースマネージ
ャ1の内部で発生する複数のトランザクションの間での
デッドロックは検出可能である。すなわち1つのリソー
スマネージャが複数のアクセスマネージャ6を持ち、ト
ランザクションマネージャ2によって管理される全ての
トランザクションが複数のファイルにアクセスする場
合、アクセス時のハードウェア資源の占有の排他制御は
ロックマネージャ4によって一括して行われる。そこで
リソースマネージャ1の内部で実行される、複数のトラ
ンザクションの間でのハードウェア資源の占有に関する
待ち関係は、デッドロックディテクタ7によって容易に
検出することができる。
【0008】X/OpenDTPモデルでは、一般に1
つトランザクションマネージャの下部に複数のリソース
マネージャが配置され、複数のリソースマネージャにま
たがって1つのグローバルトランザクションを実行する
ことができる。またそれぞれのリソースマネージャは、
自己の内部で完結的に処理されるローカルトランザクシ
ョンを実行することができる。さらに個々のリソースマ
ネージャによって実行されるグローバルトランザクショ
ンの一部はトランザクションブランチと名付けられる。
【0009】図25はグローバルトランザクションとト
ランザクションブランチのイメージの説明図である。前
述のように、複数のリソースマネージャのそれぞれの内
部で管理されるトランザクションブランチの整合を保つ
ために、グローバルトランザクションによって複数のト
ランザクションブランチの一括管理が行われる。
【0010】図25において、グローバルトランザクシ
ョンG1の配下のトランザクションブランチとしてのG
1L1とG1L2とは図のように異なる期間に実行され
る。なお、例えばトランザクションブランチG1L1は
グローバルトランザクションG1の一部として、リソー
スマネージャLで管理されるトランザクションを表わ
す。
【0011】一般にトランザクション処理の終了は処理
の完了、または処理の取消しの形式で行われる。例えば
ユーザが出張のために飛行機のチケットとホテルの予約
を行いたい場合、その両方の予約ができて始めてこのト
ランザクション処理は完了する。飛行機かホテル、もし
くはその両方が予約できなかった場合には、一般にその
トランザクション処理は取消しとなる。トランザクショ
ン処理に対する完了をコミットと言い、また取消しのこ
とをロールバック、またはアボートと言う。
【0012】DTPモデルでは、トランザクションの終
了時に2相コミットと呼ばれるコミットメントプロトコ
ルが採用される。図25において、グローバルトランザ
クションG1のコミットを行うためには、その配下の全
てのトランザクションブランチ、すなわちG1L1とG
1L2との2つのトランザクションブランチのコミット
が行える状態でなければならない。これらのトランザク
ションブランチのうち1つでもコミットができない状態
の場合には、グローバルトランザクションの配下のトラ
ンザクションブランチがロールバックされ、またグロー
バルトランザクション自体もロールバックされる。
【0013】図25において2相コミットメントの手続
きとして、グローバルトランザクションがコミットを行
いたい場合、配下の全てのトランザクションブランチに
対してプリペアを発行し、このプリペアに対して各トラ
ンザクションブランチはコミット可能の状態であればO
Kを返し、コミットでない状態であればNGを返す。
【0014】グローバルトランザクションによって発行
されたプリペアに対して全てのトランザクションブラン
チがOKを返した場合、グローバルトランザクションは
配下のグローバルトランザクションブランチに対してコ
ミットを発行する。これに対してトランザクションブラ
ンチの1つでもNGを返した場合には、グローバルトラ
ンザクションは配下のトランザクションブランチに対し
てロールバックを発行する。
【0015】次にグローバルトランザクションを1つの
トランザクションマネージャで管理し、複数のリソース
マネージャによってグローバルトランザクションブラン
チを実行するオープンなシステムでの、従来のデッドロ
ック検出法について図26を用いて説明する。図26の
オープンなシステムは、1つのトランザクションマネー
ジャ(TM)10と、3つのリソースマネージャ11a
〜11c、およびそれぞれのリソースマネージャによっ
てアクセスされるファイル12a〜12cによって構成
されている。
【0016】TM10の内部には、TM用の共用メモリ
13があり、また例えばリソースマネージャRMa11
aは、そのリソースマネージャの内部において実行され
るトランザクションブランチを含むトランザクションを
ローカルに管理するローカルトランザクションマネージ
ャ(LTM)14a、ファイル12aに対するアクセス
を行うローカルアクセスマネージャ(LAM)15a、
共用メモリ16a、およびファイル12aの占有に関連
して排他制御を行うローカルロックマネージャ(LL
M)17aによって構成されており、LLMa17aの
内部にはローカルにデッドロックを検出するローカルデ
ッドロックディテクタ(LDD)18aがあり、また共
用メモリ16aの内部にはLDDa18aによってデッ
ドロック検出のために用いられるWFG管理テーブル1
9aが格納されている。
【0017】このようにDTPモデルに基づくオープン
なシステムでは、1つのトランザクションマネージャの
下に複数のリソースマネージャが存在する。X/Ope
nのDTPモデルでは、TMとそれぞれのRMはXAイ
ンタフェースにより接続され、1つのグローバルトラン
ザクションを複数のRMでトランザクションブランチと
して実行することが可能であるが、XAインタフェース
にはリソースマネージャ間にまたがるグローバルトラン
ザクションの間のデッドロックを検出するための機能が
存在しない。そのため、リソースマネージャ間にまたが
るグローバルトランザクションの間のデッドロックを検
出することは不可能であり、従来はデッドロックにより
処理が実質的に停止されたトランザクションの1つが、
実行時間の監視によってタイムアウト発生と認識される
まで、デッドロック状態を解消することができなかっ
た。
【0018】
【発明が解決しようとする課題】図26で説明したオー
プンなシステムでのデッドロック検出の問題点につい
て、図27および図28を用いて更に詳細に説明する。
図26においてリソースマネージャ間にまたがるグロー
バルトランザクションの間のデッドロックを検出できな
い理由は、ハードウェア資源の排他制御を行うリソース
マネージャが自己のマネージャ内にとじた管理を行うた
めに、最低2つのグローバルトランザクションの間に形
成されるデッドロックに関する待ち関係(WFG)が複
数のリソースマネージャの間で分かれて管理されてしま
うためであり、リソースマネージャの間にまたがるグロ
ーバルトランザクションの間のデッドロックが発生して
もデッドロックの検出は不可能である。
【0019】図27は従来のWFG管理方式の説明図で
ある。同図においては、図26と同様に応用プログラム
9からのグローバルトランザクションは1つのトランザ
クションマネージャ10によって管理され、そのグロー
バルトランザクションの一部としてのトランザクション
ブランチは複数のリソースマネージャ11a〜11cに
よってそれぞれ管理される。例えばリソースマネージャ
11aの内部にはローカルトランザクションマネージャ
(LTM)14a、ローカルロックマネージャ(LL
M)17aがあり、またLLM17aの内部にはローカ
ルデッドロックディテクタ(LDD)18aがあり、L
DD18aはそのリソースマネージャの内部での資源の
排他制御の結果としてのトランザクションの待ち関係が
設定されるWFG管理テーブル19aの内容を用いてデ
ッドロックの検出を行う。
【0020】図28は図27のようなシステムにおいて
グローバルトランザクションの間のデッドロックが検出
不可能な処理の説明図である。同図において、2つの応
用プログラムAとBがそれぞれ実行を要求するグローバ
ルトランザクションの間のデッドロックについて説明す
る。
【0021】図28において、まず応用プログラムA9
aがでTM10に対してグローバルトランザクション
T1の開始を要求する。これに対応してTM10は、2
つのRM11a,11b内のローカルトランザクション
マネージャ14aおよび14bに対して、それぞれトラ
ンザクションブランチT1a1,T1b1の開始を要求
する。それとほぼ同時刻において、で応用プログラム
B9bがTM10に対してグローバルトランザクション
T2の開始を要求し、同様にしてTM10からLTM1
4a,14bに対してそれぞれトランザクションブラン
チT2a2,T2b2の開始が要求される。
【0022】その後応用プログラムA9aがリソースマ
ネージャ11aに対して資源12aのアクセスをで要
求し、そのリソースマネージャの内部のローカルロック
マネージャ(LLM)17aが資源12aの占有、すな
わちロックを認めるOKを応答し、またで応用プログ
ラムB9bが同様にリソースマネージャ11bに対して
資源12bへのアクセスを要求し、LLM17bが資源
12bのロックを認めるOKを応答したものとする。
【0023】更にその後、応用プログラムA9aがで
リソースマネージャ11bに対して資源12bへのアク
セスを要求し、その要求に応じてLLM17bによるロ
ック判定の結果、トランザクションブランチT1b1が
T2b2を待つこと(T1 1 →T2 2 )を検出し、
LDD18bによってその待ち関係がWFG管理テーブ
ル19bに登録され、その後デッドロックの判定が行わ
れる。この判定では、グローバルトランザクションの間
ではグローバルトランザクションT1がT2を待ってい
ると言う関係だけが判定され、デッドロックは未発生と
判定される。
【0024】の要求とほぼ同じ時刻に、で応用プロ
グラムB9bがリソースマネージャ11aに対して資源
12aのアクセスを要求し、同様にしてT2a2がT1
a1を待つことが検出され、その待ち関係がWFG管理
テーブル19aに登録された後、デッドロック判定が行
われるが、前述と同様にデッドロックが未発生と判定さ
れる。
【0025】しかしながら、図28のシステム全体とし
てグローバルトランザクションの待ち関係を調べると、
リソースマネージャ11a側ではグローバルトランザク
ションT1がT2を待ち、またリソースマネージャ11
b側ではT2がT1を待っているために、全体としてル
ープが形成され、デッドロックが発生していることがわ
かる。トランザクションブランチの間の待ち関係が2つ
のリソースマネージャ11aと11bとに分かれて管理
されているために、グローバルトランザクションの間の
デッドロックは検出できない。
【0026】以上のように、従来のオープンなシステム
においては、グローバルトランザクションの間のデッド
ロックが複数のリソースマネージャにまたがって発生し
た場合、そのデッドロックを検出することができず、デ
ッドロックの待ち関係のループに含まれるトランザクシ
ョンのうちの1つがタイムアウトをむかえて、ロールバ
ック処理によってそのトランザクションがロックしてい
る資源を解放するまで、資源の有効活用が行われなくな
ってしまうと言う問題点があった。
【0027】本発明は、複数のリソースマネージャの間
にまたがって複数のグローバルトランザクションの間に
発生するデッドロックを検出可能とし、資源の有効活用
を図ることを目的とする。
【0028】
【課題を解決するための手段】図1は本発明の第1の実
施例に対する原理構成ブロック図である。同図はグロー
バルトランザクションを管理するトランザクションマネ
ージャ20と、1つのグローバルトランザクションの一
部をトランザクションブランチとして管理し、ハードウ
ェア資源へのアクセスを行う複数のリソースマネージャ
21a〜21nを備えた分散トランザクション処理シス
テムにおける、グローバルトランザクション間デッドロ
ック検出方式の原理ブロック図である。
【0029】図1において、トランザクションマネージ
ャ20は、複数のグローバルトランザクションの間で、
複数のリソースマネージャ21a〜21nの間で発生す
るデッドロックを検出するグローバルデッドロック検出
手段22を備えている。このグローバルデッドロック検
出手段22によって検出されるグローバルデッドロック
とは、ハードウェア資源の占有に関する待ち関係におけ
るデッドロック、すなわち前述のウェイトフォーグラフ
におけるループであり、このループを検出することによ
りグローバルデッドロックが検出される。
【0030】図2は本発明の第2の実施例に対する原理
構成ブロック図である。同図も図1と同様に、グローバ
ルトランザクションを管理するトランザクションマネー
ジャ20と、1つのグローバルトランザクションの一部
をトランザクションブランチとして管理し、ハードウェ
ア資源へのアクセスを行う複数のリソースマネージャ2
1a〜21nを備えた分散トランザクション処理システ
ムにおける、グローバルトランザクション間デッドロッ
ク検出方式の原理ブロック図である。図1と異なる点
は、複数の各リソースマネージャ21a〜21nが各リ
ソースマネージャの内部で実行されるトランザクション
ブランチ、および各リソースマネージャの内部のみで処
理されるローカルトランザクションの間でのデッドロッ
クを検出するローカルデッドロック検出手段26a〜2
6nを備えている点である。
【0031】
【作用】第1の実施例の原理を示す図1では、グローバ
ルデッドロック検出手段22の内部に、分散トランザク
ション処理システムにおける応用プログラムがリソース
マネージャの配下のハードウェア資源に対して出した資
源獲得要求に対応して、複数のグローバルトランザクシ
ョンの間でのハードウェア資源の占有に関する待ち関係
が登録されるウェイトフォーグラフ(WFG)23が備
えられ、このグラフにおいてグローバルトランザクショ
ンの間の待ち関係がループを構成しているか否かによっ
て、グローバルデッドロックの検出が行われる。
【0032】第2の実施例の原理を示す図2において
は、トランザクションマネージャ20の内部のグローバ
ルデッドロック検出手段22によって、複数のリソース
マネージャにまたがって発生するグローバルトランザク
ションの間のデッドロックの検出が行われると同時に、
それぞれのリソースマネージャの内部でローカルデッド
ロックの検出が行われる。このローカルデッドロックと
しては、グローバルトランザクションの一部としてのト
ランザクションブランチとリソースマネージャの内部で
のみ処理されるローカルトランザクションとの間のデッ
ドロック、ローカルトランザクション相互間でのデッド
ロックに加えて、グローバルトランザクションの間での
デッドロックの検出も行われる。
【0033】以上のように、本発明においては、複数の
リソースマネージャにまたがって処理されるグローバル
トランザクションの間での待ち関係がグローバルデッド
ロック検出手段22によって管理され、その待ち関係が
登録されるウェイトフォーグラフ23の内容によって、
グローバルトランザクション間デッドロックの検出が行
われる。
【0034】
【実施例】まず分散トランザクション処理システムの内
部において処理されるトランザクションの全てがグロー
バルトランザクションである場合を対象として、第1の
実施例を説明する。図3は第1の実施例における分散ト
ランザクション処理システムの基本構成ブロック図であ
る。同図を図27の従来例と比較すると、トランザクシ
ョンマネージャ(TM)30の内部に、グローバルトラ
ンザクションの間のデッドロックを検出するグローバル
デッドロックディテクタ(GDD)32と、グローバル
トランザクションの間の待ち関係をウェイトフォーグラ
フとして管理するためのWFG管理テーブル33が備え
られている点と、各リソースマネージャ31a〜31c
の内部には各リソースマネージャによって処理されるト
ランザクションを管理するローカルトランザクションマ
ネージャ(LTM)34aと、応用プログラムからのハ
ードウェア資源の獲得、解放要求を受け付け、資源のロ
ック、アンロックを制御するローカルロックマネージャ
(LLM)35aのみを備えている点が異なっている。
【0035】図3においては、トランザクションマネー
ジャ30がグローバルトランザクションの間のデッドロ
ックを検出するGDD32を備え、GDD32と各リソ
ースマネージャの内部のローカルロックマネージャLL
Mとの間にインタフェースを持たせることにより、グロ
ーバルトランザクションの間の待ち関係がWFG管理テ
ーブル33に一括して登録され、リソースマネージャの
間にまたがるグローバルトランザクション間のデッドロ
ックが検出可能となる。
【0036】ここで図3の各ブロックの動作について更
に詳細に説明する。まずトランザクションマネージャ
(TM)30は、応用プログラム9からのグローバルト
ランザクションの開始、終了(コミット)、および取消
し(ロールバック)の受け付けを行う。TM30は、グ
ローバルトランザクションにそれぞれ特有の識別子を割
り付けてグローバルトランザクションを管理し、そのグ
ローバルトランザクションの一部となるトランザクショ
ンブランチを管理するリソースマネージャ31a〜31
cの内部のローカルトランザクションマネージャ(LT
M)にトランザクションブランチの開始、終了、および
取消しを指示する。
【0037】リソースマネージャ31a〜31cは、そ
れぞれのリソースマネージャ内で処理が行われるトラン
ザクションの管理を行い、データベースやファイルのア
クセスにおけるデータの整合性を保証する。ここでデー
タの整合性とは、例えばコミットメントの前後でデータ
タイプが一致していることなどを表わす。
【0038】ローカルトランザクションマネージャ(L
TM)は、この第1の実施例ではトランザクションマネ
ージャからのトランザクションブランチの開始、終了、
および取消しの指示を受け付け、グローバルトランザク
ションの識別子とトランザクションブランチの識別子を
対応させて、トランザクションブランチの管理を行うも
のである。トランザクションマネージャからのトランザ
クションの終了、および取消しの指示に対しては、ロー
カルロックマネージャ(LLM)に終了、または取消し
の対象となるトランザクションの識別子の通知を行う。
【0039】ローカルロックマネージャ(LLM)は、
応用プログラムからハードウェア資源の獲得、および解
放の要求を受け付け、資源のロック、またはアンロック
を行う。資源のロック要求に対しては、その資源を応用
プログラムに占有させることが可能であれば、以後の処
理はトランザクションマネージャに復帰することにな
る。資源がロック不可能であれば、グローバルデッドロ
ックディテクタ(GDD)32に資源の占有、すなわち
ロックを待つトランザクションの識別子と、現在資源を
占有しているトランザクションの識別子を通知し、その
内容がWFG管理テーブル33に登録される。資源の解
放要求を受け付けた場合には、LLMは資源の解放、す
なわちアンロックを行う対象となるトランザクションの
識別子をGDD32に通知し、WFG管理テーブル33
からそのトランザクションの削除が行われる。
【0040】グローバルデッドロックディテクタ32
は、各リソースマネージャ内部のローカルロックマネー
ジャ(LLM)からのウェイトフォーグラフの内容の登
録、または削除を受け付け、WFGの内容の登録を受け
付けた場合にはその内容を登録した後にグローバルトラ
ンザクションの間でのデッドロックの判定を行う。
【0041】その判定の結果、デッドロックが発生して
いなければトランザクションの間での待ち状態が開始さ
れる。デッドロックが発生していた場合には、デッドロ
ックに対応してキャンセルを行うべきグローバルトラン
ザクションを選択し、キャンセルされるトランザクショ
ンに対してデッドロックを設定し、ウェイトフォーグラ
フにおけるデッドロック状態を解消した後に処理はロー
カルロックマネージャに復帰する。
【0042】WFGの内容の削除を受け付けた場合に
は、そのトランザクション識別子の削除を行い、キャン
セルされたトランザクションの次につながっているグロ
ーバルトランザクションに対してリトライを設定した後
に、処理がローカルロックマネージャに復帰する。
【0043】続いて本発明の第1の実施例において、リ
ソースマネージャの間にまたがるグローバルトランザク
ションの間のデッドロックを検出する例を、図28の従
来例と比較して、図4によって説明する。図4では、図
28の構成と比較して、トランザクションマネージャ3
0がグローバルデッドロックディテクタ32と、グロー
バルトランザクションの間の待ち関係を管理するための
WFG管理テーブル33を備えている点と、それぞれの
リソースマネージャ31a,31bがWFG管理テーブ
ルを備えていない点が図28と異なっている。
【0044】図4においてからの動作は図28にお
けると同様であり、その説明を省略する。そしてで応
用プログラムA9aがリソースマネージャ31bに対し
て資源12bのアクセスを要求し、この要求に対してリ
ソースマネージャ31bの内部のローカルロックマネー
ジャ35bが資源12bに対するロック判定を行い、ト
ランザクションブランチT1b1がT2b2を待つこと
を検出し、グローバルデッドロックディテクタ32に対
してその待ち関係としてグローバルトランザクションT
1がT2を待つと言う待ち関係の登録を要求し、GDD
32はWFG管理テーブル33にその待ち関係を登録し
た後にデッドロックを判定するが、デッドロックは発生
していないと判定される。
【0045】とほぼ同時刻にで、応用プログラムB
9bが資源12aのアクセスを要求し、この要求に対し
てリソースマネージャ31aが資源12aのロック判定
を行い、トランザクションブランチT2a2がT1a1
を待つことを検出し、GDD32に対してグローバルト
ランザクションT2がT1を待つと言う待ち関係の登録
を要求する。GDD32は待ち関係として T2 →T1 を登録した後にデッドロック判定を行うが、ここでWF
G管理テーブル33の内容は
【0046】
【数1】
【0047】となっており、グローバルトランザクショ
ンT1とT2の間のデッドロックが検出される。図5は
WFG管理テーブルの説明図である。同図(a) はWFG
を構成する複数のノードの内容を示し、その内容はチェ
ーン部分と識別子としてのXIDの部分とに分かれてお
り、チェーン部分は待ちを管理するためのツリー構造の
チェーンと、XIDの値からノードを検索するためのハ
ッシュ部分とに分かれている。
【0048】図5(b) はチェーン部分のツリー構造の説
明図である。同図において、ノードの間の待ち関係は上
下の配置によって表わされており、ここではグローバル
トランザクションT2、T3、およびT4がそれぞれT
1を待っていることと、T5、およびT6がT3を待っ
ていることが示されている。この状態で、グローバルト
ランザクションT1がT2〜T6のいずれかを待つ状態
になると、グローバルトランザクションの間の関係はデ
ッドロックとなる。
【0049】図5(c) はハッシュとノードの関係を示
す。これによってXIDからノードを検索することがで
きる。図6および図7は第1の実施例においてトランザ
クションマネージャの内部に備えられるグローバルデッ
ドロックディテクタ(GDD)による処理のフローチャ
ートである。同図において処理が開始されると、まずス
テップS1においてGDDに対する要求が何かが判定さ
れ、ウェイトフォーグラフに対する登録である時には、
ステップS2でWFGにグローバルトランザクションの
待ち関係を登録し、ステップS3でデッドロックの判定
を行うために、新たに待ち関係が登録されたトランザク
ション(ウェイトトランザクション)がデッドロック判
定のためのループをたどる出発点に位置付けられる。
【0050】そしてステップS4で、出発点に位置付け
られたノードからウェイトフォーグラフの先頭の方向に
その前のノードがたどられる。すなわち現在待ち関係が
新たに登録されたトランザクションによって待たれてい
るグローバルトランザクションが検出される。そしてS
5でたどった先のノードがウェイトフォーグラフの先頭
であるか否かが判定され、先頭でない時にはステップS
6でたどった先のノードがS3のウェイトトランザクシ
ョン、すなわち新たに待ち関係が登録されたノードであ
るか否かが判定される。言い換えれば新たに待ち関係が
登録されたノードとたどった先のノードとが一致してい
るか否かが判定される。一致している時にはループが検
出されたことになる。
【0051】S6で判定結果がNOである時には、ステ
ップS4からの処理が繰り返される。そしてステップS
6でたどった先のノードと新たに待ち関係が登録された
ノードとが一致した、すなわちループが検出された場合
には、ステップS7でキャンセルすべきトランザクショ
ンが選出され、S8でそのトランザクションにデッドロ
ックが通知され、S9でWFGのデッドロック状態が解
除され、ステップS10で解除後の新たな待ち関係が登
録されて待ち状態に入る。またステップS5でたどった
先がウェイトフォーグラフの先頭であると判定される
と、ループが検出されないうちにウェイトフォーグラフ
の先頭までグラフがたどられたことになり、デッドロッ
ク状態は発生していないことになるので、ステップS1
0の待ち状態に移行する。
【0052】ステップS10の待ち状態は、例えばハー
ドウェア資源の占有を待っていたトランザクションから
の動作指示が与えられた時点で解消され、ステップS1
1でその動作指示内容がデッドロックキャンセルである
か否かが判定され、デッドロックである時にはS12で
処理がリソースマネージャに復帰する。またデッドロッ
クキャンセルでない場合、すなわち待っていたトランザ
クションがハードウェア資源を占有するためにリトライ
を行った場合には、ステップS13でリトライで処理が
リソースマネージャに復帰する。
【0053】一方、ステップS1で要求がグラフの削除
である場合には、ステップS14で削除要求のあったノ
ードを待っているノードに対応するトランザクションに
対して動作が指示され、S15でWFGにおける待ち関
係が削除されて、S16で処理がリソースマネージャに
復帰する。
【0054】図8は、本発明におけるグローバルトラン
ザクション識別子内の優先度部の内容を示す。本発明に
おいてはグローバルトランザクションの間にデッドロッ
クが発生した場合、キャンセルするグローバルトランザ
クションの選択をこのトランザクション識別子の内容に
応じて行うものとする。図8(a) はグローバルトランザ
クション識別子の中の優先度部のトランザクション種別
部とトランザクションカウンタ部の説明図である。
【0055】本発明においては、グローバルトランザク
ションのキャンセル時の選択基準として、第1基準と第
2基準とを設けるものとする。第1基準はトランザクシ
ョンの種別によるものであり、例えば応用プログラムの
種別やトランザクションの種別に関係なく、ユーザが任
意に設定することができるものとする。また第2基準と
してトランザクションカウンタが用いられる。このトラ
ンザクションカウンタはグローバルトランザクションの
間でのユニークなカウンタであり、グローバルトランザ
クションが発生した順に昇順に割り付けられる。
【0056】グローバルトランザクションの間にデッド
ロックが発生した場合、まず第1基準において優先度の
小さいグローバルトランザクションがキャンセル対象と
して選択される。この第1基準としてのトランザクショ
ン種別は、前述のようにユーザから与えられる優先度を
示し、グローバルトランザクションの開始時にトランザ
クション識別子の内容として設定される。
【0057】これに対して、デッドロックに関与したグ
ローバルトランザクションの間にトランザクション種別
が同じものが複数ある場合には、第2基準を用いてキャ
ンセル対象のトランザクションの選択が行われる。第2
基準のカウンタの値が小さいほどトランザクションが発
生してからの時間が長いことになり、トランザクション
の仕事量も大きいものと考えて、カウンタの値が小さい
ほどトランザクションの優先度が大きくなる。
【0058】図8(b) は優先度部の格納内容の具体例で
ある。この4つのトランザクションT1〜T4の間でデ
ッドロックが発生した場合には、まず第1基準(数値の
大きい方が優先度が高いものとする)によりT1とT4
のいずれかがキャンセル対象となるが、第2基準によっ
てカウンタの値が大きいT4がキャンセル対象として選
択される。
【0059】図9は第1の実施例におけるトランザクシ
ョン終了時の動作の説明図である。同図において図4で
説明したの処理が行われ、グローバルトランザクショ
ンT1がT2を待つことがWFG管理テーブル33に登
録されている。すなわち、応用プログラムA9aが要求
したトランザクションT1によって資源12aが占有さ
れ、続いて応用プログラムA9aが資源12bをロック
するためにトランザクションT1がT2を待っている状
態であり、また応用プログラムB9bによって要求され
たグローバルトランザクションT2は資源12bを占有
していると言う状態で応用プログラムB9bがトランザ
クション終了、すなわちトランザクションエンドをトラ
ンザクションマネージャ30に対して発行した場合の動
作を説明する。
【0060】図9において、まずで応用プログラムB
9bがトランザクションマネージャ30に対してトラン
ザクションエンドを要求し、これに対応してTM30は
グローバルトランザクションT2の一部としてのトラン
ザクションブランチが動作している2つのリソースマネ
ージャ31a,31bに対してでトランザクションブ
ランチエンド要求を発行する。
【0061】このトランザクションブランチエンド要求
を受け取ったリソースマネージャ内のローカルトランザ
クションマネージャ(LTM)34a,34bは、ロー
カルロックマネージャ(LLM)35a,35bにそれ
ぞれトランザクションT2によるハードウェア資源の占
有を解除するためにで占有解除要求を発行し、この要
求を受け取ったLLM35aおよび35bはでそれぞ
れグローバルデッドロックディテクタ32に対して、W
FGからのグローバルトランザクションT2の削除要求
を発行する。
【0062】この削除要求を受け取ったGDD32は、
ウェイトフォーグラフ(WFG)の内容をで調べ、W
FGの内容に対応してトランザクションT2の後につな
がっている、すなわちT2を待っているトランザクショ
ンT1に対してリトライ要求を発行する。これによって
グローバルトランザクションT1から資源12bを獲得
するためのリトライ動作が行われることになり、これに
伴ってリソースマネージャ31bからGDD32に要求
されたグローバルトランザクションT1の待ち登録の内
容が解消されて、資源12bが応用プログラムA9aに
よるグローバルトランザクションT1に占有されること
になる。なおにおいて、GDD32へのグローバルト
ランザクションT2の削除要求は2つのリソースマネー
ジャ31aと31bとから与えられるが、そのうち最初
の要求が採用され、その後の同じ内容の要求に対しては
GDD32によって何らの処理も行われない。
【0063】このようにトランザクションエンド時に
は、トランザクションによりロックされていた資源の解
放(アンロック)は一般的に一括して行われるが、リソ
ースマネージャによっては、資源の動的占有解除とし
て、トランザクションエンド以前の資源のアンロックが
可能なものもある。但しこの場合には図9において、
のWFGからのグローバルトランザクションの削除要求
は1つのリソースマネージャのみから発行されることに
なる。
【0064】図10はリソースマネージャによる資源の
ロック範囲の変更の説明図である。このロック範囲の変
更は、リソースマネージャが応用プログラムに対して資
源のロック範囲の変更、すなわち拡張または縮退の機能
を提供している場合に可能となる。
【0065】図10においてロック範囲の拡張とは、例
えばの部分をロックしているトランザクションがその
部分に対するロック状態を保持したまま〜の部分を
ロックすることを意味し、ロック範囲の縮退とは〜
の部分をロックしているトランザクションがの部分を
除いてアンロックを行うことを意味する。
【0066】このようにロック範囲が変更された場合に
対する処理として縮退の場合には、図4のローカルロッ
クマネージャ(LLM)からグローバルデッドロックデ
ィテクタ(GDD)への占有解除要求が発行されるが、
拡張の場合には何らの処理も行われない。すなわち拡張
の場合には、ロックの範囲を拡張したトランザクション
を待っているトランザクションに対するロック範囲を変
更する必要がなく、従って何らの処理を行う必要はな
い。これに対してロック範囲を縮退したトランザクショ
ンを待っているトランザクションの中には、当然から
の範囲に対しても資源のロックを要求しているものが
存在する可能性があり、このためにLLMはGDDに対
して占有解除要求を発行する必要がある。
【0067】次にリソースマネージャが応用プログラム
に対してロック強度の変更機能を提供している場合に
は、トランザクションがロックしている資源の強度を変
更することができる。ここでロックの強度とは、参照が
行われる場合の強度と、更新が行われる場合の強度とに
区別される。一般的に参照を行うトランザクションの間
では資源のロックを共有することができ、トランザクシ
ョンの間に待ちは発生しない。
【0068】このようなロック強度の変更が行われた場
合に、ローカルロックマネージャ(LLM)からグロー
バルデッドロックディテクタ(GDD)に対して行われ
るべき動作としては、資源を共有できるトランザクショ
ンが新たに発生した場合にはGDDに対して占有解除要
求が発行される必要があるが、資源を共有できるトラン
ザクションが発生しなかった場合にはロック強度が変更
されても何らの動作も行われない。
【0069】次に本発明の第2の実施例について説明す
る。前述の第1の実施例では、システム内で処理される
トランザクションが全てグローバルトランザクションで
あり、複数の各リソースマネージャはグローバルトラン
ザクションの一部としてのトランザクションブランチの
処理を実行するのに対して、第2の実施例では各リソー
スマネージャは、グローバルトランザクションのトラン
ザクションブランチに加えて、そのリソースマネージャ
のみで処理が行われるローカルトランザクションの処理
を実行する。
【0070】図11は第2の実施例における分散トラン
ザクション処理システムの基本構成ブロック図である。
同図を図3の第1の実施例に対する基本構成ブロック図
と比較すると、各リソースマネージャ41a〜41cの
内部のローカルロックマネージャ、例えばLLMa43
aが、そのリソースマネージャの内部でのデッドロック
を検出するローカルデッドロックディテクタ(LDD
a)44aを備え、またそのリソースマネージャの中で
のトランザクション間の待ち関係を管理するためのWF
G管理テーブル45aがリソースマネージャ41aの中
に備えられている点が異なっている。
【0071】図11内の各ブロックの動作は図3におけ
るとほぼ同様であり、図3と異なる部分についてのみ説
明する。まずローカルトランザクションマネージャ(L
TM)は、トランザクションマネージャからのグローバ
ルトランザクションの一部としてのトランザクションブ
ランチの管理を行うと共に、応用プログラム9からその
リソースマネージャ独自のトランザクション、すなわち
ローカルトランザクションの開始、終了、取消しの指示
を受け付け、そのトランザクションの管理を行う。
【0072】ローカルロックマネージャLLMは、図3
におけると同様に応用プログラムからの資源の獲得、解
放要求を受け付け、資源のロック、またはアンロックを
行うものであるが、資源がロック不可能である場合には
GDDに加えてLDDに対しても待ち関係を構成するト
ランザクションの識別子を通知し、資源の解放要求を受
け付けた場合には同様に資源のアンロックを行うトラン
ザクションの識別子をLDDに通知する。
【0073】ローカルデッドロックディテクタ(LD
D)はローカルロックマネージャ(LLM)からのウェ
イトフォーグラフ(WFG)の登録、および削除を受け
付けるものであり、登録を受け付けた場合にはWFGに
新たなノードを登録した後に、デッドロックの判定を行
う。判定の結果デッドロックが発生していなければ、待
ち関係を新たに構成するトランザクションがローカルで
あるか否かを判定し、待ちとなるトランザクション、ま
たは待たせるトランザクションのどちらか一方、または
両方がローカルである場合には待ち状態に入る。両方が
グローバルトランザクションの配下のトランザクション
ブランチである場合には、トランザクションマネージャ
の内部のGDDに両方のトランザクションの識別子を通
知する。
【0074】デッドロック判定の結果デッドロックが発
生していれば、デッドロックキャンセルするトランザク
ションを選択し、WFGにおけるデッドロック状態を解
消した後に選択されたトランザクションがグローバルか
ローカルかを判定し、グローバルトランザクション配下
のトランザクションブランチであれば、GDDでデッド
ロックが検出され、適当な処理が行われるものとして、
LDD側では何らの処理も行わない。キャンセルされる
トランザクションがローカルトランザクションであれ
ば、デッドロックキャンセルをローカルロックマネージ
ャ(LLM)に通知する。
【0075】またGDDにおける待ち状態からLDDに
処理が復帰した場合、その復帰原因がリトライであれば
LLMにリトライを通知し、デッドロックであればデッ
ドロックを通知する。
【0076】グローバルデッドロックディテクタGDD
については、その動作は図3におけると実質的に同じで
あるが、図3においてはGDDはローカルロックマネー
ジャ(LLM)とインタフェースを持っていたのに対し
て、図11ではLDDが直接にGDDとインタフェース
を持つ点のみが異なる。
【0077】図12は第2の実施例における分散トラン
ザクション処理システムの詳細構成ブロック図である。
同図を図26の従来例と比較すると、トランザクション
マネージャ30の内部に、グローバルトランザクション
の間のデッドロックを検出するグローバルデッドロック
ディテクタ32と、共用メモリ29の中にグローバルト
ランザクションの間の待ち関係が登録されるWFG管理
テーブル33が備えられている点が異なっている。
【0078】図13は図11、または図12のシステム
におけるグローバルトランザクションとローカルトラン
ザクションの間の待ち関係の説明図である。同図(a) は
待ち関係の管理方式の説明図であり、例えばTixmは
グローバルトランザクションの配下のトランザクション
ブランチであることを示し、xmはローカルトランザク
ションであることを示す。トランザクションの間の待ち
関係としては、トランザクションブランチの間での待ち
関係はグローバルデッドロックディテクタで管理される
のに対して、グローバルトランザクション配下のトラン
ザクションブランチとローカルトランザクションの間の
待ち関係、およびローカルトランザクション相互間の待
ち関係はローカルデッドロックディテクタで管理され
る。
【0079】図13(b) はデッドロックの検出の説明図
である。同図において、グローバルトランザクション配
下のトランザクションブランチの間のデッドロックはグ
ローバルデッドロックディテクタで検出され、トランザ
クションブランチとローカルトランザクションの間で形
成されるデッドロック、またはローカルトランザクショ
ンの間のデッドロックはローカルデッドロックディテク
タで検出される。なおトランザクションブランチの間の
デッドロックでも、1つのリソースマネージャの内部で
発生した場合にはローカルデッドロックディテクタで検
出することができる。またトランザクションブランチと
ローカルトランザクションの間のデッドロックは、1つ
のリソースマネージャ内で発生した場合にローカルデッ
ドロックディテクタで検出できるが、複数のリソースマ
ネージャの間にまたがって発生した場合には検出するこ
とはできない。
【0080】前述のように1つのリソースマネージャの
内部でグローバルトランザクション配下のトランザクシ
ョンブランチの間でデッドロックが発生した場合には、
GDDのみでなく、ローカルデッドロックディテクタで
もデッドロックが検出されるが、図14はそのような検
出が行われる場合の具体例の説明図である。同図におい
て2つの応用プログラム9a、および9bによって要求
されたトランザクションT1、およびT2がトランザク
ションマネージャ30によって管理されており、リソー
スマネージャ41の内部のLTM42ではトランザクシ
ョンブランチT1L1、およびT2L2が管理されてい
るものとする。
【0081】そしてで応用プログラムA9aは資源1
2の中のaを占有し、またにおいて応用プログラムB
9bは資源bを占有したものとする。その後で応用プ
ログラムA9aは資源bを要求して、リソースマネージ
ャ41内のLDD44によってL1がL2を待つと言う
待ち関係がWFG管理テーブル45に登録される。ここ
でこれらの2つは全てグローバルトランザクションのト
ランザクションブランチであるため、この待ち関係はG
DD32にも通知され、WFG管理テーブル33にトラ
ンザクションT1がT2を待つことが登録される。
【0082】その後で応用プログラムB9bが資源a
の占有を要求して、LDD44により、トランザクショ
ンブランチL2がL1を待つことがWFG管理テーブル
45に登録される。その結果LDD44によりデッドロ
ックが検出される。また、これらのトランザクションが
グローバルトランザクションのトランザクションブラン
チであるため、この待ち関係はGDD32にも通知さ
れ、その内容はWFG管理テーブル33に登録されると
共に、GDD32によってもデッドロックが検出され
る。これによりLDDとGDDとの両方でデッドロック
が検出されることになる。
【0083】図14においてローカルデッドロックディ
テクタ(LDD)がデッドロックを検出した場合には、
まずデッドロックに関与したトランザクションの全てが
グローバルトランザクションのトランザクションブラン
チであるか否かの判定が行われる。この判定において必
ずしも全てがトランザクションブランチではないと判定
された場合には、キャンセルすべきトランザクションと
してローカルトランザクションが優先的にキャンセルさ
れる。その理由は、グローバルトランザクションとロー
カルトランザクションの仕事量を比較した場合、一般的
にグローバルトランザクションの仕事量の方が大きいた
めである。たとえ、そのリソースマネージャの内部でロ
ーカルトランザクションの方がトランザクションブラン
チより多くの仕事をしているとしても、トランザクショ
ンブランチは現在のリソースマネージャにおける処理よ
りも以前に他のリソースマネージャで多くの仕事をして
いた可能性がある。
【0084】デッドロックに関与したトランザクション
の全てがグローバルトランザクション配下のトランザク
ションブランチである場合には、LDDは例えばGDD
と同じプロトコルでキャンセルすべきトランザクション
を選択する。これはGDDでもデッドロックが検出され
るために、同じプロトコルを用いないとそれぞれ異なる
トランザクションをキャンセル対象に選ぶ可能性がある
ためである。続いてLDDはWFGのデッドロック状態
を解消する。最後にLDDは新しいグローバルトランザ
クションの間の待ち関係に応じた待ち登録をGDDに依
頼する。これはグローバルトランザクションの間の待ち
関係はGDDで管理されているためである。
【0085】図15および図16は図11、および図1
2におけるローカルデッドロックディテクタ(LDD)
による処理のフローチャートである。同図において、ス
テップS21でLDDへの要求がグラフの登録であるか
削除であるかが判定され、登録である場合にはS22で
トランザクションの間の待ち関係の登録処理が行われ、
S23でWFGにおいてループが形成されているか否か
が判定され、形成されている時にはローカルデッドロッ
クと判定され、ステップS24でキャンセルすべきトラ
ンザクションが選択され、S25でキャンセルするトラ
ンザクションがグローバルトランザクション配下のトラ
ンザクションブランチであるか否かが判定され、トラン
ザクションブランチでない時にはステップS26でキャ
ンセルすべきトランザクションにデッドロックが通知さ
れた後に、またグローバルトランザクションのトランザ
クションブランチである時にはS26の処理を行うこと
なく、S27でWFGのデッドロック状態が解除され、
ステップS28の処理に移行する。またステップS23
でループが形成されていないと判定されると、S24〜
S27の処理を行うことなく、S28の処理に移行す
る。
【0086】ステップS28においては資源の占有要
求、すなわち排他要求を行っているのはグローバルトラ
ンザクションの一部のトランザクションブランチである
か否かが判定され、トランザクションブランチである場
合にはS29で排他登録、すなわち資源の占有を現在行
っているトランザクションがトランザクションブランチ
であるか否かが判定され、トランザクションブランチで
ある場合にはステップS30で現在資源を占有している
トランザクションブランチ、および排他要求すなわち占
有を要求しているトランザクションブランチのグローバ
ルトランザクション識別子がトランザクションマネージ
ャに通知され、トランザクションマネージャから処理が
復帰後ステップS32の処理に移行する。またステップ
S28、またはS29でトランザクションブランチでは
ないと判定されると、ステップS31で待ち登録状態と
なり、図6におけるステップS10と同様に、例えば資
源の占有を待っていたトランザクションからの動作通知
を受けることによって待ち登録状態は終了し、ステップ
S32の処理に移行する。
【0087】ステップS32では図6のステップS11
と同様に、応答の内容がリトライであるか否かが判定さ
れ、リトライである場合にはS33でリトライを関数の
復帰値として処理がローカルロックマネージャ(LL
M)に復帰し、またリトライでない場合にはステップS
34でデッドロックを復帰値として処理がLLMに復帰
する。
【0088】その後の動作としては、LLMが資源占
有要求元に対してデッドロックを通知し、要求元の応用
プログラムによってトランザクションキャンセルがスケ
ジュールされ、デッドロック状態が解消されるか、また
はLLM自体がトランザクションキャンセルをスケジ
ュールして、デッドロック状態が解消されることにな
る。
【0089】ステップS21でLDDへの要求がグラフ
の削除である場合には、ステップS35で削除要求のあ
ったノードがグローバルトランザクションの一部として
のトランザクションブランチであるか否かが判定され、
トランザクションブランチである場合にはS36で削除
要求のあったノードのグローバルトランザクション識別
子がトランザクションマネージャに通知された後に、ま
たトランザクションブランチでない場合には直ちにステ
ップS37で削除要求のあったノードを待っているWF
G内のノードに対して動作指示が行われ、S38でWF
Gにおける待ち関係がその要求内容に応じて削除され、
S39で処理がLLMに復帰する。次に図17〜図21
を用いて、グローバルトランザクションの開始から終了
までの第2実施例としての分散トランザクション処理シ
ステムの動作を、システム内でのコマンドと対応させて
説明する。図17はトランザクション開始時の説明図で
ある。同図においてで応用プログラム(AP)9がト
ランザクションマネージャ30に対してグローバルトラ
ンザクションの開始を指示するコマンドとしてTX−ビ
ギンを発行し、でトランザクションマネージャ30が
このコマンドを受け取り、グローバルトランザクション
識別子を獲得してリソースマネージャ41に対してXA
−スタートのコマンドを発行する。これに応じてリソー
スマネージャ41はでトランザクションブランチを発
生させ、その管理を行う。
【0090】図18は応用プログラムによる資源アクセ
ス要求に対応する動作の説明図であり、資源の占有がO
Kとなる場合の動作である。まず応用プログラム9から
でリソースマネージャ41に対して資源アクセス要求
が発行され、この要求をリソースマネージャ内のローカ
ルロックマネージャ43が受け取って、でアクセス対
象の資源を他のトランザクションが占有しているか否
か、仮に占有していた場合でも共有が可能か否かを判定
し、占有可能であれば資源を占有してアクセス権を得る
と共に、処理は応用プログラム9に復帰する。
【0091】図19は応用プログラムによる資源アクセ
ス要求に対して占有が認められない場合の動作の説明図
である。また同図はローカルトランザクションの間、ま
たはローカルトランザクションとグローバルトランザク
ション配下のトランザクションブランチとの間の待ちと
なる場合の動作の説明図である。
【0092】図19において、で応用プログラム9か
らリソースマネージャ41に対して資源アクセス要求が
発行され、この要求はでリソースマネージャ41の中
のローカルロックマネージャ43によって受け取られ、
その資源の占有が可能であるか否かが判定され、占有不
可能と判定されるとローカルデッドロックディテクタ4
4に待ち関係を構成する2つのトランザクションの識別
子が通知される。
【0093】LDD44では、で通知されたトランザ
クションの識別子に対応してWFGに登録を行い、デッ
ドロック判定を行う。デッドロックが発生していればキ
ャンセルすべきトランザクションを選択し、そのトラン
ザクションがローカルトランザクションであればデッド
ロックキャンセルの動作指示を発行する。グローバルト
ランザクションであれば、それはトランザクションマネ
ージャ30側で管理されるために、LDD側では何もす
ることができない。デッドロックが発生していなけれ
ば、グローバルトランザクションの間の待ちであるか否
かの判定を行い、両方、またはどちらか一方がローカル
トランザクションであれば、待ち登録状態に入る。同じ
ツリー内にある他のトランザクションから動作指示を受
けた場合、その指示がリトライかデッドロックかを判定
し、リトライであればリトライでLLM43に処理が復
帰し、デッドロックであればデッドロックで処理が復帰
する。
【0094】LLM43では、でLDDからのリター
ンコードがリトライである時には再びの処理を実行
し、リターンコードがデッドロックである場合には応用
プログラムにデッドロックであることが通知され、処理
が応用プログラムに復帰する。またはトランザクション
をロールバックした後に応用プログラムに処理が復帰す
る。
【0095】図20は、図19と同様に資源アクセス要
求に対して占有が許可されない場合の動作説明図である
が、図19と異なりトランザクションブランチの間の待
ちとなる場合の動作説明図である。同図においてから
の動作は図19に対する説明と同様であるが、LDD
44によってデッドロックが発生していないと判定さ
れ、かつトランザクションブランチの間の待ちと判定さ
れた場合には、待ち関係を構成する2つのトランザクシ
ョンブランチの識別子がトランザクションマネージャの
内部のグローバルデッドロックディテクタ32に通知さ
れる点のみが異なる。
【0096】GDD32では、でこの通知に対応して
WFGへの登録を行い、デッドロック判定を行う。デッ
ドロックが発生していればキャンセルすべきトランザク
ションが選択され、そのトランザクションにデッドロッ
クキャンセルの動作指示が発行された後に、待ち状態に
入る。同じツリー内にある他のトランザクションからの
動作指示を受けた時には、その指示がリトライかデッド
ロックかを判定し、判定結果をリターンコードとしてL
DD44の処理に復帰する。
【0097】LDD44では、でGDD32からのリ
ターンコードがリトライかデッドロックかに従って、そ
の内容をリターンコードとし、LLM43の処理に復帰
する。
【0098】LLM43では、でリターンコードの内
容がリトライであれば再び前述のの処理を実行し、デ
ッドロックであれば応用プログラム9にデッドロックを
通知するか、またはトランザクションをロールバックし
た後に応用プログラム9の処理に復帰する。
【0099】図21はトランザクション終了時、すなわ
ちトランザクションエンド時の動作説明図である。前述
のようにトランザクション終了時には2相コミットメン
トが行われる。まず応用プログラム9からトランザクシ
ョンマネージャ30に対してでTX−コミットのコマ
ンドが発行され、TM30はでこのコマンドによって
グローバルトランザクションの識別子を獲得し、このグ
ローバルトランザクションのトランザクションブランチ
が存在する全てのリソースマネージャ41内のローカル
トランザクションマネージャ42に対してXA−プリペ
アを発行する。
【0100】LTM42はで指定されたトランザクシ
ョンブランチがコミットできる状態にあるか否かを判定
し、コミットできる状態であればOKを設定してTMの
処理に復帰する。
【0101】全てのリソースマネージャからの応答が全
てOKであれば、TM30はでLTM42に対してX
A−コミットを発行し、LTM42はでそのトランザ
クションブランチをコミットし、処理がTM30に復帰
し、で処理が応用プログラム9に復帰する。なおで
トランザクションブランチの存在する複数のリソースマ
ネージャからの応答の中に1つでもNGがあれば、TM
はで全てのリソースマネージャに対してXA−ロール
バックを発行し、グローバルトランザクションのロール
バックが実行される。
【0102】以上において、第2の実施例としてリソー
スマネージャの中にグローバルトランザクション配下の
トランザクションブランチとローカルトランザクション
が混在する場合のデッドロックの検出について説明した
が、これは1つのプロセッサ内に限定された動作であっ
た。しかしながら、この方式を複数のプロセッサから構
成されるシステムにおけるデッドロック検出に応用する
ことが可能である。
【0103】図22は本発明のデッドロック検出方式を
応用するマルチプロセッサシステムの構成例である。同
図においては2つのプロセッサ51と52の内部にトラ
ンザクションマネージャ31aと31bとがそれぞれ備
えられ、例えばトランザクションマネージャ31aの内
部にはグローバルデッドロックディテクタ32aとWF
G管理テーブル33aとが備えられた構成となってい
る。なおこのシステムにおいてリソースマネージャは異
なった種類でもよく、トランザクションマネージャとプ
ロセッサとは同種のものであるが、インタフェースが統
一されているものであればよい。
【0104】図22におけるデッドロックの検出につい
て説明する。まず、あるプロセッサでグローバルトラン
ザクションの間に待ち関係が発生すると、そのプロセッ
サ内のトランザクションマネージャにおいてデッドロッ
クの検出が行われる。デッドロックが検出できなかった
場合には、自プロセッサ内のWFGの内容においてグラ
フの先頭のノードが他のプロセッサで発生したグローバ
ルトランザクションであるか否かが判定され、他のプロ
セッサで発生したものであれば、新たに待ちとなったノ
ードから先頭のノードまでのWFGが先頭のノードが発
生したプロセッサに向けて送信される。
【0105】送信されたWFGを受け取ったプロセッサ
では、自プロセッサ内のWFGの先頭のノードを調べ、
そのノードが送信されたWFGの中にあるか否かを判定
する。その判定の結果、送信されたWFGの中になけれ
ばデッドロックが発生していないことになり、再び自ノ
ード内のWFGの先頭のグローバルトランザクションが
発生したプロセッサに対して、自プロセッサに送られて
きたWFGに自ノード内のWFGの先頭までをつない
で、つないだ結果のWFGを送信する。
【0106】以上のWFGの送信と受信、受信したプロ
セッサの内部でのデッドロックの判定が繰り返され、先
頭のグローバルトランザクションが発生したプロセッサ
が自プロセッサとなるまで、デッドロックの検出作業が
繰り返される。これによってマルチプロセッサシステム
においてもグローバルトランザクション間のデッドロッ
クが検出可能となる。一般にデッドロックの90%以上は
2つのグローバルトランザクションの間で発生してお
り、2つのトランザクションの間で形成されるデッドロ
ックであれば、必ず1回以内の通信によってデッドロッ
クが検出される。
【0107】図23はマルチプロセッサシステムにおけ
るデッドロック検出の具体例の説明図である。同図にお
いてグローバルトランザクションT1はプロセッサ1、
T2はプロセッサ2、T3はプロセッサ3において発生
したトランザクションであるものとして具体例を説明す
る。
【0108】図23(a) はプロセッサ3でトランザクシ
ョンT3がT1を待つことになった場合の動作の説明図
である。プロセッサ3ではT3がT1を待つと言う内容
のWFGをプロセッサ1に送るが、プロセッサ1ではト
ランザクションT1が何も待っていないのでデッドロッ
クが発生していないものと判定される。
【0109】図23(b) はその後プロセッサ2でトラン
ザクションT2がT3を待つことになった場合の動作で
ある。まずプロセッサ2からT2がT3を待つことを示
すWFG(T2→T3)がプロセッサ3に送られ、更に
プロセッサ3からT3がT1を待ち、T2がT3を待つ
と言うWFG(T2 →T3 →T1 )がプロセッサ1に送
られるが、プロセッサ1ではT1が何も待っていないた
めにデッドロックは発生していないものと判定される。
【0110】図23(c) はさらにその後プロセッサ1で
トランザクションT1がT2を待つことになった場合の
動作説明図である。まずプロセッサ1からT1がT2を
待つことがプロセッサ2に送られ、更にプロセッサ2か
らT2がT3を待ち、T1がT2を待つと言うWFG
(T1→T2→T3)がプロセッサ3に送られ、プロセ
ッサ3ではT3がT1を待つと言う自プロセッサ内のW
FGの先頭ノードT1が送られてきたWFGの中に存在
するためにデッドロック発生と判定される。
【0111】
【発明の効果】以上詳細に説明したように、本発明によ
れば複数のリソースマネージャにまたがって発生するグ
ローバルトランザクションの間のデッドロックの検出が
可能になり、その検出によってデッドロック状態を短時
間で解消することができ、デッドロックに関与したトラ
ンザクションによって占有されていたハードウェア資源
の占有解除が行えるために、資源の有効活用にとって寄
与するところが大きい。
【図面の簡単な説明】
【図1】本発明の第1の実施例に対する原理構成ブロッ
ク図である。
【図2】本発明の第2の実施例に対する原理構成ブロッ
ク図である。
【図3】本発明の第1の実施例における分散トランザク
ション処理システムの基本構成を示すブロック図であ
る。
【図4】第1の実施例におけるグローバルトランザクシ
ョンの間のデッドロック検出の説明図である。
【図5】ウェイトフォーグラフの内容の説明図である。
【図6】グローバルデッドロックディテクタの処理フロ
ーチャート(その1)である。
【図7】グローバルデッドロックディテクタの処理フロ
ーチャート(その2)である。
【図8】グローバルトランザクション識別子における優
先度部の内容を説明する図である。
【図9】第1の実施例におけるトランザクションエンド
時のシステムの動作を説明する図である。
【図10】リソースマネージャによる資源のロック範囲
の変更についての説明図である。
【図11】第2の実施例における分散トランザクション
処理システムの基本構成を示すブロック図である。
【図12】第2の実施例における分散トランザクション
処理システムの詳細構成を示すブロック図である。
【図13】第2の実施例におけるデッドロックの検出方
式の説明図である。
【図14】第2の実施例においてグローバルトランザク
ションの間のデッドロックのLDDによる検出の説明図
である。
【図15】第2の実施例におけるローカルデッドロック
ディテクタの処理フローチャート(その1)である。
【図16】第2の実施例におけるローカルデッドロック
ディテクタの処理フローチャート(その2)である。
【図17】第2の実施例におけるトランザクション開始
時のシステム動作の説明図である。
【図18】第2の実施例における資源アクセス要求に対
するシステムの動作説明図(占有OKの場合)である。
【図19】第2の実施例における資源アクセス要求に対
するシステムの動作説明図(占有不許可でローカルトラ
ンザクションの間またはローカルトランザクションとト
ランザクションブランチとの間の待ちとなる場合)であ
る。
【図20】第2の実施例における資源アクセス要求に対
するシステムの動作説明図(占有不許可でグローバルト
ランザクションの間の待ちとなる場合)である。
【図21】第2の実施例におけるトランザクション終了
時のシステム動作の説明図である。
【図22】マルチプロセッサシステムにおけるデッドロ
ック検出を説明する図である。
【図23】マルチプロセッサシステムにおけるデッドロ
ック検出の具体例の説明図である。
【図24】オープンでないシステムにおけるデッドロッ
ク検出の説明図である。
【図25】グローバルトランザクションとトランザクシ
ョンブランチのイメージの説明図である。
【図26】オープンなシステムにおける従来のデッドロ
ック検出の説明図である。
【図27】従来のウェイトフォーグラフ管理方式の説明
図である。
【図28】従来例におけるグローバルトランザクション
の間のデッドロックが検出できない処理の説明図であ
る。
【符号の説明】
20,30 トランザクションマネージャ(TM) 21a〜21n,25a〜25n,31a〜31c,4
1a〜41cリソースマネージャ(RM) 22 グローバルデッドロック検出手段 23,27a〜27n ウェイトフォーグラフ(WF
G) 26a〜26n ローカルデッドロック検出手段 32 グローバルデッドロックディテクタ(GDD) 33,45a〜45c WFG管理テーブル 34a〜34c,42a〜42c ローカルトランザ
クションマネージャ(LTM) 35a〜35c,43a〜43c ローカルロックマ
ネージャ(LLM) 44a〜44c ローカルデッドロックディテクタ
(LDD)

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 複数のグローバルトランザクションを一
    括して管理するトランザクションマネージャと、各グロ
    ーバルトランザクションの一部をトランザクションブラ
    ンチとして管理し、ハードウェア資源へのアクセスを行
    う複数のリソースマネージャを備えた分散トランザクシ
    ョン処理システムにおいて、 前記トランザクションマネージャが、複数のグローバル
    トランザクションの間で複数の前記リソースマネージャ
    にまたがって発生するデッドロックであって、前記ハー
    ドウェア資源の占有に関する待ち関係におけるデッドロ
    ックを検出するグローバルデッドロック検出手段を備え
    たことを特徴とする分散トランザクション処理システ
    ム。
  2. 【請求項2】 前記グローバルデッドロック検出手段
    が、前記分散トランザクション処理システムにおける応
    用プログラムが前記リソースマネージャの配下のハード
    ウェア資源に対して出した資源獲得要求に対応して、前
    記複数のグローバルトランザクションの間での資源の占
    有の待ち関係が登録されるウェイトフォーグラフ(WF
    G)を備え、 該ウェイトフォーグラフの内容を用いてグローバルデッ
    ドロックの検出を行うことを特徴とする請求項1記載の
    分散トランザクション処理システム。
  3. 【請求項3】 前記リソースマネージャが、前記分散ト
    ランザクション処理システムにおける応用プログラムか
    らの資源獲得要求に対応して資源をグローバルトランザ
    クションに占有させること(ロック)が可能か否かを判
    定し、すでに他のグローバルトランザクションに対して
    該資源がロックされている時には該他のグローバルトラ
    ンザクションと該資源獲得要求に対応するグローバルト
    ランザクションとの識別子を前記グローバルデッドロッ
    ク検出手段に通知するローカルロックマネージャを備え
    たことを特徴とする請求項1記載の分散トランザクショ
    ン処理システム。
  4. 【請求項4】 前記ローカルロックマネージャが、前記
    応用プログラムからの資源解放要求に対応して、該解放
    要求の対象となるトランザクションがグローバルトラン
    ザクションの一部であるか否かを判定し、グローバルト
    ランザクションの一部である時、該グローバルトランザ
    クションの識別子を前記グローバルデッドロック検出手
    段に通知することを特徴とする請求項3記載の分散トラ
    ンザクション処理システム。
  5. 【請求項5】 前記ローカルロックマネージャが、前記
    グローバルトランザクション終了以前の資源解放要求と
    しての動的占有解除要求を前記応用プログラムから受け
    たとき、該動的占有解除要求の対象となるトランザクシ
    ョンがグローバルトランザクションの一部であるか否か
    を判定し、グローバルトランザクションの一部である時
    該グローバルトランザクションの識別子を前記グローバ
    ルデッドロック検出手段に通知することを特徴とする請
    求項3記載の分散トランザクション処理システム。
  6. 【請求項6】 前記ローカルロックマネージャが、前記
    グローバルトランザクションが占有しているハードウェ
    ア資源の部分であるロック範囲の縮退の要求を前記応用
    プログラムから受けたとき、該縮退に伴うロック範囲の
    占有解除要求を前記グローバルデッドロック検出手段に
    発行することを特徴とする請求項3記載の分散トランザ
    クション処理システム。
  7. 【請求項7】 前記ローカルロックマネージャが、前記
    グローバルトランザクションが占有しているハードウェ
    ア資源を他のグローバルトランザクションに共同で占有
    させるか否かを示すロック強度の変更要求を前記応用プ
    ログラムから受けたとき、該ロック強度変更により資源
    を共有できるグローバルトランザクションが新たに発生
    するか否かを判定し、新たに発生する時前記応用プログ
    ラムからのグローバルトランザクションに対応して占有
    解除要求を前記グローバルデッドロック検出手段に発行
    することを特徴とする請求項3記載の分散トランザクシ
    ョン処理システム。
  8. 【請求項8】 前記グローバルデッドロック検出手段
    が、複数のグローバルトランザクションの間でのデッド
    ロックを検出した時、あらかじめユーザから与えられた
    基準に従ってデッドロックに関与した複数のグローバル
    トランザクションの中からキャンセルすべきグローバル
    トランザクションを選択することを特徴とする請求項1
    記載の分散トランザクション処理システム。
  9. 【請求項9】 複数のグローバルトランザクションを一
    括して管理するトランザクションマネージャと、各グロ
    ーバルトランザクションの一部をトランザクションブラ
    ンチとして管理し、ハードウェア資源へのアクセスを行
    う複数のリソースマネージャを備えた分散トランザクシ
    ョン処理システムにおいて、 前記トランザクションマネージャが、複数のグローバル
    トランザクションの間で複数の前記リソースマネージャ
    にまたがって発生するデッドロックであって、 前記ハードウェア資源の占有に関する待ち関係における
    デッドロックを検出するグローバルデッドロック検出手
    段を備え、 前記複数の各リソースマネージャが、該各リソースマネ
    ージャの内部で実行されるトランザクションブランチ、
    または該各リソースマネージャのみの内部で処理される
    ローカルトランザクションの間でのデッドロックを検出
    するローカルデッドロック検出手段を備えたことを特徴
    とする分散トランザクション処理システム。
  10. 【請求項10】 前記グローバルデッドロック検出手段
    が、前記分散トランザクション処理システムにおける応
    用プログラムが前記リソースマネージャの配下のハード
    ウェア資源に対して出した資源獲得要求に対応して、前
    記複数のグローバルトランザクションの間での資源の占
    有の待ち関係が登録されるウェイトフォーグラフ(WF
    G)を備え、 該ウェイトフォーグラフの内容を用いてグローバルデッ
    ドロックの検出を行うことを特徴とする請求項9記載の
    分散トランザクション処理システム。
  11. 【請求項11】 前記リソースマネージャが、前記分散
    トランザクション処理システムにおける応用プログラム
    からの資源獲得要求に対応して資源をトランザクション
    に占有させること(ロック)が可能か否かを判定し、す
    でに他のトランザクションに対して該資源がロックされ
    ている時には該他のトランザクションと該資源獲得要求
    に対応するトランザクションとの識別子を前記ローカル
    デッドロック検出手段に通知するローカルロックマネー
    ジャを備えたことを特徴とする請求項9記載の分散トラ
    ンザクション処理システム。
  12. 【請求項12】 前記ローカルロックマネージャから識
    別子が通知された前記他のトランザクションと資源獲得
    要求に対応するトランザクションとの2つがともにグロ
    ーバルトランザクションのトランザクションブランチで
    あるとき、前記ローカルデッドロック検出手段が該2つ
    のトランザクションの識別子を前記グローバルデッドロ
    ック検出手段に通知することを特徴とする請求項11記
    載の分散トランザクション処理システム。
  13. 【請求項13】 複数のグローバルトランザクションを
    一括して管理するトランザクションマネージャと、各グ
    ローバルトランザクションの一部をトランザクションブ
    ランチとして管理し、ハードウェア資源へのアクセスを
    行う複数のリソースマネージャとをそれぞれ備えた複数
    のプロセッサによって構成されるマルチプロセッサシス
    テム形式の分散トランザクション処理システムにおい
    て、 前記複数の各プロセッサ内のトランザクションマネージ
    ャが、複数のグローバルトランザクションの間で複数の
    前記リソースマネージャにまたがって発生するデッドロ
    ックであって、前記ハードウェア資源の占有に関する待
    ち関係におけるデッドロックを検出するグローバルデッ
    ドロック検出手段を備えたことを特徴とする分散トラン
    ザクション処理システム。
  14. 【請求項14】 前記グローバルデッドロック検出手段
    が、前記分散トランザクション処理システムにおける応
    用プログラムが前記リソースマネージャの配下のハード
    ウェア資源に対して出した資源獲得要求に対応して、前
    記複数のグローバルトランザクションの間での資源の待
    ち関係が登録されるウェイトフォーグラフ(WFG)を
    備え、 該ウェイトフォーグラフの内容を前記マルチプロセッサ
    システムを構成する各プロセッサの間で互いに通信する
    ことによりグローバルデッドロックの検出を行うことを
    特徴とする請求項13記載の分散トランザクション処理
    システム。
JP27156294A 1994-11-04 1994-11-04 分散トランザクション処理システム Expired - Fee Related JP3392236B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP27156294A JP3392236B2 (ja) 1994-11-04 1994-11-04 分散トランザクション処理システム
US08/545,207 US5835766A (en) 1994-11-04 1995-10-19 System for detecting global deadlocks using wait-for graphs and identifiers of transactions related to the deadlocks in a distributed transaction processing system and a method of use therefore

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27156294A JP3392236B2 (ja) 1994-11-04 1994-11-04 分散トランザクション処理システム

Publications (2)

Publication Number Publication Date
JPH08137707A true JPH08137707A (ja) 1996-05-31
JP3392236B2 JP3392236B2 (ja) 2003-03-31

Family

ID=17501816

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27156294A Expired - Fee Related JP3392236B2 (ja) 1994-11-04 1994-11-04 分散トランザクション処理システム

Country Status (2)

Country Link
US (1) US5835766A (ja)
JP (1) JP3392236B2 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100309787B1 (ko) * 1998-09-24 2001-11-17 이계철 다중데이터베이스시스템에서의분산교착상태식별방법
KR100399579B1 (ko) * 2000-12-04 2003-09-26 한국전자통신연구원 트랜잭션 처리 시스템에서 비동기적인 교착상태 검출 기법
JP2006525573A (ja) * 2003-05-01 2006-11-09 インターナショナル・ビジネス・マシーンズ・コーポレーション ロックおよびトランザクションの管理
JP2010146134A (ja) * 2008-12-17 2010-07-01 Nec Corp 分散トランザクション処理システム、サーバ装置及びそれらに用いる分散トランザクションの障害復旧方法
US7870111B2 (en) 2003-05-01 2011-01-11 International Business Machines Corporation Method, system, and program for lock and transaction management
US8495131B2 (en) 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
JP2015075871A (ja) * 2013-10-08 2015-04-20 株式会社リコー 排他制御プログラム、情報処理装置、排他制御方法
JP2015215722A (ja) * 2014-05-09 2015-12-03 日本電信電話株式会社 情報処理装置、情報処理方法、およびプログラム
US9590908B2 (en) 2014-03-31 2017-03-07 Fujitsu Limited Distributed data processing device and distributed data processing method
US20180137210A1 (en) * 2016-11-17 2018-05-17 Sap Se Management of Transactions Spanning Different Database Types

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574654B1 (en) * 1996-06-24 2003-06-03 Oracle Corporation Method and apparatus for lock caching
US6009269A (en) * 1997-03-10 1999-12-28 Digital Equipment Corporation Detecting concurrency errors in multi-threaded programs
KR100265934B1 (ko) * 1997-04-18 2000-09-15 윤종용 컴퓨터의 비디오 바이오스 체크 장치 및 체크방법
US5999976A (en) * 1997-07-11 1999-12-07 International Business Machines Corporation Parallel file system and method with byte range API locking
US5999931A (en) * 1997-10-17 1999-12-07 Lucent Technologies Inc. Concurrency control protocols for management of replicated data items in a distributed database system
US6236995B1 (en) * 1997-11-13 2001-05-22 Electronic Data Systems Corporation Distributed object system with deadlock prevention
US6233587B1 (en) * 1998-05-07 2001-05-15 Oracle Corporation Extensible framework of key resource manager and transaction manager events for providing native support for foreign-initiated transactions
US6292488B1 (en) * 1998-05-22 2001-09-18 Compaq Computer Corporation Method and apparatus for resolving deadlocks in a distributed computer system
US6457021B1 (en) * 1998-08-18 2002-09-24 Microsoft Corporation In-memory database system
US6941360B1 (en) * 1999-02-25 2005-09-06 Oracle International Corporation Determining and registering participants in a distributed transaction in response to commencing participation in said distributed transaction
US6671704B1 (en) * 1999-03-11 2003-12-30 Hewlett-Packard Development Company, L.P. Method and apparatus for handling failures of resource managers in a clustered environment
US6295548B1 (en) * 1999-03-12 2001-09-25 Compaq Computer Corporation Detection of an imported transaction for finding the global transaction identifier
US6411981B1 (en) 1999-03-12 2002-06-25 Compaq Computer Corporation Method and apparatus for conducting a transaction between homogeneous and/or heterogeneous transaction processing systems using asynchronous pull of a transaction transfer
US6470342B1 (en) 1999-03-12 2002-10-22 Compaq Computer Corporation Process of maintaining a distributed map of transaction identifiers and using hashing to access these maps
US6571270B1 (en) * 1999-03-15 2003-05-27 International Business Machines Corporation Timeout detection facility
US6529921B1 (en) * 1999-06-29 2003-03-04 Microsoft Corporation Dynamic synchronization of tables
US6513084B1 (en) * 1999-06-29 2003-01-28 Microsoft Corporation Arbitration of state changes
US6681241B1 (en) 1999-08-12 2004-01-20 International Business Machines Corporation Resource contention monitoring employing time-ordered entries in a blocking queue and waiting queue
US6721775B1 (en) 1999-08-12 2004-04-13 International Business Machines Corporation Resource contention analysis employing time-ordered entries in a blocking queue and waiting queue
US6594660B1 (en) 2000-01-24 2003-07-15 Microsoft Corporation Share latch clearing
US6704767B1 (en) * 2000-09-26 2004-03-09 Oracle International Corporation Using distributed information about lock conversion requests to efficiently manage lock state transitions
CA2322604C (en) * 2000-10-06 2005-06-28 Ibm Canada Limited - Ibm Canada Limitee Deadlock management in database systems with demultiplexed connections
GB0118294D0 (en) * 2001-07-27 2001-09-19 Ibm Method and system for deadlock detection and avoidance
US7185339B2 (en) * 2001-08-03 2007-02-27 Oracle International Corporation Victim selection for deadlock detection
US6799172B2 (en) 2001-08-28 2004-09-28 International Business Machines Corporation Method and system for removal of resource manager affinity during restart in a transaction processing system
US6850945B2 (en) * 2002-02-28 2005-02-01 Veritas Operating Corporation Systems, methods and apparatus for creating stable disk images
US6898600B2 (en) * 2002-05-16 2005-05-24 International Business Machines Corporation Method, system, and program for managing database operations
US6845115B2 (en) * 2002-12-05 2005-01-18 Agilent Technologies, Inc. Coupled resonant cavity surface-emitting laser
US7376744B2 (en) * 2003-05-09 2008-05-20 Oracle International Corporation Using local locks for global synchronization in multi-node systems
JP3822577B2 (ja) * 2003-05-22 2006-09-20 株式会社エヌ・ティ・ティ・ドコモ コンピュータ及びプログラム
US7278057B2 (en) * 2003-07-31 2007-10-02 International Business Machines Corporation Automated hang detection in Java thread dumps
US20050240928A1 (en) * 2004-04-09 2005-10-27 Brown Theresa M Resource reservation
US8918367B2 (en) * 2004-04-30 2014-12-23 Sap Se Two phase commit emulation for non distributed transactions
US8074220B2 (en) * 2004-05-21 2011-12-06 Computer Associates Think, Inc. System and method for interfacing an application to a distributed transaction coordinator
US7603362B2 (en) * 2004-08-20 2009-10-13 Microsoft Corporation Ordered list management
US7567986B2 (en) * 2004-10-07 2009-07-28 Microsoft Corporation Method and system for limiting resource usage of a version store
US7403945B2 (en) * 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
US8538931B2 (en) * 2006-04-28 2013-09-17 International Business Machines Corporation Protecting the integrity of dependent multi-tiered transactions
JP4818820B2 (ja) * 2006-06-07 2011-11-16 ルネサスエレクトロニクス株式会社 バスシステムおよびバススレーブならびにバス制御方法
US7861093B2 (en) * 2006-08-30 2010-12-28 International Business Machines Corporation Managing data access via a loop only if changed locking facility
US7844946B2 (en) * 2006-09-26 2010-11-30 Intel Corporation Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections
US20080243865A1 (en) * 2007-03-28 2008-10-02 Oracle International Corporation Maintaining global state of distributed transaction managed by an external transaction manager for clustered database systems
US20080282244A1 (en) * 2007-05-07 2008-11-13 Microsoft Corporation Distributed transactional deadlock detection
US11281654B2 (en) * 2007-10-23 2022-03-22 International Business Machines Corporation Customized roll back strategy for databases in mixed workload environments
US8219852B2 (en) * 2008-05-01 2012-07-10 Tibco Software Inc. Java virtual machine having integrated transaction management system
US9104989B2 (en) * 2008-11-17 2015-08-11 Microsoft Technology Licensing, Llc Priority and cost based deadlock victim selection via static wait-for graph
US20100146033A1 (en) * 2008-12-10 2010-06-10 International Business Machines Corporation Selection of transaction managers based on runtime data
US8276141B2 (en) * 2008-12-10 2012-09-25 International Business Machines Corporation Selection of transaction managers based on transaction metadata
US9201684B2 (en) * 2009-08-28 2015-12-01 International Business Machines Corporation Aiding resolution of a transaction
US8521472B2 (en) * 2009-09-18 2013-08-27 International Business Machines Corporation Method to compute wait time
CN102053861B (zh) * 2009-10-30 2014-03-12 国际商业机器公司 并行程序中死锁检测的方法和系统
US7962615B1 (en) * 2010-01-07 2011-06-14 International Business Machines Corporation Multi-system deadlock reduction
US9052967B2 (en) * 2010-07-30 2015-06-09 Vmware, Inc. Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay
US8626904B1 (en) * 2011-03-09 2014-01-07 Symantec Corporation Detecting and reporting livelocks in a computer
CN103455368B (zh) * 2013-08-27 2016-12-28 华为技术有限公司 一种死锁检测方法、节点及系统
US10078613B1 (en) 2014-03-05 2018-09-18 Mellanox Technologies, Ltd. Computing in parallel processing environments
EP3198426B1 (en) 2014-09-26 2023-08-30 Oracle International Corporation System and method for transaction recovery in a multitenant application server environment
US10339127B2 (en) 2016-01-28 2019-07-02 Oracle International Corporation Guaranteed commit outcome in a distributed transaction processing system
US10528519B2 (en) 2017-05-02 2020-01-07 Mellanox Technologies Ltd. Computing in parallel processing environments
US10394653B1 (en) * 2017-05-02 2019-08-27 Mellanox Technologies, Ltd. Computing in parallel processing environments
US10394747B1 (en) 2017-05-31 2019-08-27 Mellanox Technologies Ltd. Implementing hierarchical PCI express switch topology over coherent mesh interconnect
US10789175B2 (en) 2017-06-01 2020-09-29 Mellanox Technologies Ltd. Caching policy in a multicore system on a chip (SOC)
US10528400B2 (en) * 2017-06-05 2020-01-07 International Business Machines Corporation Detecting deadlock in a cluster environment using big data analytics
US11243820B1 (en) * 2021-04-30 2022-02-08 Snowflake Inc. Distributed deadlock detection and resolution in distributed databases

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4216871C2 (de) * 1991-05-21 2001-09-06 Digital Equipment Corp Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
US5504899A (en) * 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100309787B1 (ko) * 1998-09-24 2001-11-17 이계철 다중데이터베이스시스템에서의분산교착상태식별방법
KR100399579B1 (ko) * 2000-12-04 2003-09-26 한국전자통신연구원 트랜잭션 처리 시스템에서 비동기적인 교착상태 검출 기법
US8495131B2 (en) 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US8768905B2 (en) 2003-05-01 2014-07-01 International Business Machines Corporation Managing locks and transactions
US7844585B2 (en) 2003-05-01 2010-11-30 International Business Machines Corporation Method, system, and program for managing locks and transactions
US7870111B2 (en) 2003-05-01 2011-01-11 International Business Machines Corporation Method, system, and program for lock and transaction management
US8161018B2 (en) 2003-05-01 2012-04-17 International Business Machines Corporation Managing locks and transactions
US8200643B2 (en) 2003-05-01 2012-06-12 International Business Machines Corporation Lock and transaction management
JP2006525573A (ja) * 2003-05-01 2006-11-09 インターナショナル・ビジネス・マシーンズ・コーポレーション ロックおよびトランザクションの管理
JP2010146134A (ja) * 2008-12-17 2010-07-01 Nec Corp 分散トランザクション処理システム、サーバ装置及びそれらに用いる分散トランザクションの障害復旧方法
JP2015075871A (ja) * 2013-10-08 2015-04-20 株式会社リコー 排他制御プログラム、情報処理装置、排他制御方法
US9590908B2 (en) 2014-03-31 2017-03-07 Fujitsu Limited Distributed data processing device and distributed data processing method
JP2015215722A (ja) * 2014-05-09 2015-12-03 日本電信電話株式会社 情報処理装置、情報処理方法、およびプログラム
US20180137210A1 (en) * 2016-11-17 2018-05-17 Sap Se Management of Transactions Spanning Different Database Types
US10565187B2 (en) * 2016-11-17 2020-02-18 Sap Se Management of transactions spanning different database types

Also Published As

Publication number Publication date
JP3392236B2 (ja) 2003-03-31
US5835766A (en) 1998-11-10

Similar Documents

Publication Publication Date Title
JPH08137707A (ja) 分散トランザクション処理システム
JP2705717B2 (ja) ロック装置及び方法、ロック要求の細分性を判別するための装置及び方法
KR930000853B1 (ko) 멀티 프로세서 시스템을 사용한 데이터 베이스 프로세싱 시스템.
US6466965B1 (en) Centralized affinity maintenance in a workload managed client/server data processing system
EP0618532B1 (en) Deadlock detecting device
EP0458564B1 (en) System and method for consistent timestamping in distributed computer databases
US4791554A (en) Method and apparatus for preventing deadlock in a data base management system
Salem et al. Altruistic locking
EP0684569B1 (en) Database system
US7600063B2 (en) Techniques for improved read-write concurrency
EP0817036B1 (en) Information processing apparatus and method
EP0081056A2 (en) A data processing network having a distributed data file access control
US9223625B2 (en) Client server system and method for executing an application utilizing distributed objects
US20080243865A1 (en) Maintaining global state of distributed transaction managed by an external transaction manager for clustered database systems
JPH1165863A (ja) 共有資源管理方法
JPH05173988A (ja) 分散処理方式および該分散処理に適用されるトランザクション処理方式
JPH0683783A (ja) 条件付きオペレーション提供装置及び方法
JPH10283243A (ja) データベース管理システム
US8499298B2 (en) Multiprocessing transaction recovery manager
JP3222125B2 (ja) システム間データベース共用方式
JPH06337798A (ja) デッドロック検出装置
Mishra et al. Hyflowcpp: A distributed transactional memory framework for c++
Arora et al. Dynamic Timestamp Allocation for Reducing Transaction Aborts
JP3524270B2 (ja) 並列処理システム
JPH09269912A (ja) 情報処理方法とその装置

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20010417

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

Free format text: PAYMENT UNTIL: 20080124

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090124

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100124

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110124

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees