JP2013117852A - 資源のロックを獲得する装置及び方法 - Google Patents

資源のロックを獲得する装置及び方法 Download PDF

Info

Publication number
JP2013117852A
JP2013117852A JP2011264960A JP2011264960A JP2013117852A JP 2013117852 A JP2013117852 A JP 2013117852A JP 2011264960 A JP2011264960 A JP 2011264960A JP 2011264960 A JP2011264960 A JP 2011264960A JP 2013117852 A JP2013117852 A JP 2013117852A
Authority
JP
Japan
Prior art keywords
lock
time
resource
acquisition
resources
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
JP2011264960A
Other languages
English (en)
Other versions
JP5939561B2 (ja
Inventor
Noriaki Kono
紀昭 河野
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2011264960A priority Critical patent/JP5939561B2/ja
Priority to US13/648,338 priority patent/US8898127B2/en
Priority to DE102012221037.7A priority patent/DE102012221037B4/de
Priority to GB1221512.5A priority patent/GB2498835B/en
Publication of JP2013117852A publication Critical patent/JP2013117852A/ja
Priority to US14/478,108 priority patent/US9189512B2/en
Application granted granted Critical
Publication of JP5939561B2 publication Critical patent/JP5939561B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/02Banking, e.g. interest calculation or account maintenance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • 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/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Development Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】資源のロックを保持している時間をシステム全体として短縮する。
【解決手段】ロック制御装置30は、アプリケーション10からのロック獲得要求の受信、DBMS20へのロック獲得要求の送信、DBMS20からのロック獲得応答の受信、アプリケーション10へのロック獲得応答の送信の各時点で、ロック要求カウンタ、後続ロック要求カウンタ、ロック要求時刻、ロック獲得時刻、初回ロック獲得時刻、後続ロック要求時刻を含む統計情報を取得する。統計処理装置40は、この統計情報に基づき、資源ごとのロック要求回数、資源ごとの後続ロック要求回数、平均ロック待ち時間、平均ロック獲得遅延期待時間を算出し、これらに基づき、ロック獲得を後回しにした場合にロック保持時間から排除される時間の期待度である評価値を算出し、評価値が小さい順に資源を並べたロック順序をロック順テーブル50に出力する。
【選択図】図3

Description

本発明は、資源のロックを獲得する装置及び方法に関する。特に、本発明は、複数の資源に対する特定の順序でその複数の資源の各資源のロックを獲得する装置及び方法に関する。
金融機関のシステム等では、データベース上の複数のデータにロックをかけて更新処理を行う場合がある。例えば、口座Aから口座Bへの振り替えを行う場合には、口座Aの残高を保持するデータベースのレコードと口座Bの残高を保持するデータベースのレコードにロックをかけた上で、口座Aから出金して口座Bに入金する処理を行う。ところが、複数のロックをかける複数のトランザクションが同時に実行される場合には、ロックをかける順番が不定であると、デッドロックが発生する。例えば、口座Aから口座Bへの振り替えと口座Bから口座Aへの振り替えがほぼ同時に発生し、一方が口座A,Bの順に、他方が口座B,Aの順にロックをかけるとすると、口座A,Bのロックの何れもコミットまで開放されないため、デッドロックが発生する。
デッドロックを回避するための一般的な方法として、ロックをかける複数の資源に対して、口座番号順等のロック順序を定め、ロックが必要になる処理の最初で、このロック順序に従って必要な全ての資源にロックをかける方法が知られている。この方法では、例えば、まず、口座Aと口座Bのロック順序を、口座番号順に口座A、口座Bの順と定める。そして、口座Aから口座Bへの振り替えを行う場合、口座Bから口座Aへの振り替えを行う場合の何れにおいても、最初に口座Aと口座Bのロックを口座A,Bの順に取得する。その後、口座Aから出金して口座Bに入金する処理、及び、口座Bから出金して口座Aに入金する処理を行う。
尚、デッドロックを回避するためにロック順序を定めておく技術は、公報記載の技術としても知られている(例えば、特許文献1、2参照)。
特許文献1は、ロック順序の規約を記憶しておくロック順序規約記憶手段を設け、ロック命令移動手段がロック命令をロック順序規約を遵守しながらプログラムの後方に移動し、アンロック命令移動手段がアンロック命令をプログラムの前方に移動する技術を開示する。
特許文献2は、複数の共有資源と、複数の共有資源のそれぞれに設定した排他制御の優先順位を格納する排他制御管理テーブルとを備え、プログラム制御手段が、複数の共有資源を用いる複数のプログラムをそれぞれ独立に実行するにあたり、排他制御管理テーブルに格納された優先順位に従って順次対応する共有資源を排他的にロックする技術を開示する。
また、ロック待ちによるシステムの性能の低下を防止する技術も知られている(例えば、特許文献3〜7参照)。
特許文献3は、機械命令により、主記憶装置上の特定領域の記憶内容を調べ、ロック未獲得なら、ロックを獲得し、ロック獲得が失敗した場合には、ロック獲得試行回数をカウントし、ロック獲得試行回数が予め定められた上限値を越えたとき、自分とは異なるタスクを実行してもよいことをOSに通知する技術を開示する。
特許文献4は、ロック命令とアンロック命令を備えた複数のプロセッサから共有メモリのデータにアクセスするもので、共有メモリは、データのアドレスを示すアドレス情報を格納するためのアドレス情報格納部、アドレス情報に対応してアドレス情報が示すデータに対するロックの試行回数を各プロセッサ毎にカウントするためのアクセスカウンタ、及びアドレス情報に対応するデータがロックされているか否かを示すロックフラグを格納するロックフラグ部の組を保持するアクセス保持部を具備し、これらを用いてロックの試行回数の多いものから順にロックの権限を割り当てる技術を開示する。
特許文献5は、トランザクションの実行毎にその処理の所要時間を計測し、平均所要時間を保存しておき、同一データに対するトランザクション間の競合が起こった場合に、保存されている各トランザクションの過去の平均所要時間をスケジューリングの判断材料として用いる技術を開示する。
特許文献6は、トレースログとマッピングテーブルとを参照して解析し、オペレーションとそのオペレーションに基づいて実行されたプログラムとそのプログラムのトレースログとを対応付けて格納し、格納したオペレーションとそのオペレーションに基づいて実行されたプログラムとそのプログラムのトレースログを参照し、ロック形式毎にオペレーションに対するトレースログを評価してプログラム実行装置で用いるロック形式を決定し、決定したロック形式の複数のプログラム実行装置への設定を行う技術を開示する。
特許文献7は、タスクのロック優先度としてそのタスクがロック中の資源をロック待ちしているタスクの数の単純増加関数で計算される値を設定するロック優先度設定手段と、ロック優先度にしたがってロック待ち行列内の要求を並べ換えるロック順序変更手段とを有する技術を開示する。
特開平6−103091号公報 特開2002−7148号公報 特開平5−257902号公報 特開平6−332789号公報 特開平10−143410号公報 特開2009−37544号公報 特開平5−12041号公報
上述したロック順序を予め定めておく方法を用いることにより、デッドロックを回避することは可能である。しかしながら、処理性能上の課題がある。ある口座に関する入金又は出金のトランザクションが集中した場合、システムのスループットは、その口座のロックを保持する時間(ロック保持時間)に左右される。例えば、ある口座の平均ロック保持時間が0.02秒である場合、その口座が関連する処理は、1秒あたり最大50(=1/0.02)件までしか行うことができない。処理が集中する口座については、その口座の1回のロック保持時間をできるだけ短くすることが望ましいが、上記の方法には、次の2つの問題がある。
(1)他のロックを獲得するための待ち時間がロック保持時間に含まれる。
ロック順序によっては、他のロックを獲得するための待ち時間(ロック待ち時間)が、ロック保持時間に含まれてしまう。例えば、口座A,Bの順にロックを獲得すると予め定めているとすると、口座Aのロック保持時間に口座Bのロック待ち時間が含まれるので、口座Aに処理が集中する場合に不利になる。
(2)ロック獲得を遅延させることができない。
上述した方法では、複数のロックを処理の最初でまとめて獲得しているが、ロック保持時間を短縮するためには、ロック獲得を実際に必要になるまで遅延させることが望ましい。しかしながら、例えば、口座A,Bの順にロックを獲得すると予め定めているとすると、口座Aに処理が集中する場合でも、口座Aのロックを最初に獲得する必要があり、口座Aのロック保持時間を短縮できない。
大量のトランザクションを処理し、ロック待ちが多発するシステムでは、この2つの問題の発生を抑制して、システム全体の合計ロック占有時間をできるだけ短くすれば、システム全体のスループットを向上させることができる。
しかしながら、特許文献1、2の技術では、ロック獲得の順番が予め決められているため、上記の2つの問題を解決することはできない。
また、特許文献3〜7の技術も、ロック待ちによるシステムの性能の低下を防止するものではあるが、上記2つの問題に対する解決策を提示するものではない。
本発明の目的は、資源のロックを保持している時間をシステム全体として短縮することにある。
本発明の他の目的は、資源のロックを保持している時間に含まれる他の資源のロック待ちの時間をシステム全体として短縮することにある。
本発明の更に他の目的は、資源のロックを保持している時間に含まれるその資源が使用されるまでの時間をシステム全体として短縮することにある。
かかる目的のもと、本発明は、複数の資源に対する特定の順序で、複数の資源の各資源のロックを獲得する装置であって、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成する生成部と、生成部により生成された時間排除期待度が大きい資源ほど後の順番になるように、特定の順序を決定する決定部とを含む、装置を提供する。
ここで、生成部は、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、他の資源のロック待ちの時間の長さの期待度であるロック待ち時間排除期待度を含む時間排除期待度を生成する、ものであってよいし、更に、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、各資源が使用されるまでの時間の長さの期待度である使用前時間排除期待度を含む時間排除期待度を生成する、ものであってよい。
その場合、この装置は、複数の資源の各資源を使用するアプリケーションプログラムが各資源のロックの獲得を要求した回数を取得する取得部を更に備え、生成部は、複数の資源の各資源について、取得部により取得された回数に基づいて、ロック待ち時間排除期待度を生成する、ものであってもよいし、複数の資源の各資源を使用するアプリケーションプログラムが各資源のロックの獲得を要求した場合に、複数の資源を管理するソフトウェアに対して各資源のロックの獲得を要求した要求時刻と、ソフトウェアが各資源のロックを獲得した獲得時刻とを取得する取得部を更に備え、生成部は、複数の資源の各資源について、取得部により取得された要求時刻と獲得時刻とに基づいて、ロック待ち時間排除期待度を生成する、ものであってもよい。また、この装置は、複数の資源の各資源を使用するアプリケーションプログラムが2回目以降の資源のロックの獲得の要求として各資源のロックの獲得を要求した回数を取得する取得部を更に備え、生成部は、複数の資源の各資源について、取得部により取得された回数に基づいて、使用前時間排除期待度を生成する、ものであってもよいし、複数の資源の各資源を使用するアプリケーションプログラムが1回目の資源のロックの獲得の要求として各資源のロックの獲得を要求した場合に、各資源のロックが獲得された獲得時刻を取得し、アプリケーションプログラムが2回目以降の資源のロックの獲得の要求として各資源のロックの獲得を要求した場合に、各資源のロックの獲得が要求された要求時刻を取得する取得部を更に備え、生成部は、複数の資源の各資源について、取得部により取得された獲得時刻と要求時刻とに基づいて、使用前時間排除期待度を生成する、ものであってもよい。
また、本発明は、複数の資源に対する特定の順序で、複数の資源の各資源のロックを獲得する装置であって、特定の順序として予め定められた順序を記憶する記憶部と、複数の資源のうちの特定の資源を使用するアプリケーションプログラムが1回目の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した場合に、予め定められた順序において特定の資源よりも前の順番の資源であってロックが獲得されていない資源である他の資源をアプリケーションプログラムが使用する予定であれば、複数の資源を管理するソフトウェアに対して他の資源のロックの獲得を要求した時刻を第1の要求時刻として取得し、ソフトウェアが他の資源のロックを獲得した時刻を第1の獲得時刻として取得し、その後、ソフトウェアに対して特定の資源のロックの獲得を要求した時刻を第1の要求時刻として取得し、ソフトウェアが特定の資源のロックを獲得した時刻を第1の獲得時刻として取得し、特定の資源のロックが獲得された時刻を第2の獲得時刻として取得し、アプリケーションプログラムが2回目以降の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した場合に、予め定められた順序において特定の資源よりも前の順番の資源であってロックが獲得されていない資源である他の資源をアプリケーションプログラムが使用する予定であれば、ソフトウェアに対して他の資源のロックの獲得を要求した時刻を第1の要求時刻として取得し、ソフトウェアが他の資源のロックを獲得した時刻を第1の獲得時刻として取得し、その後、特定の資源のロックの獲得が要求された時刻を第2の要求時刻として取得し、ソフトウェアに対して特定の資源のロックの獲得を要求した時刻を第1の要求時刻として取得し、ソフトウェアが特定の資源のロックを獲得した時刻を第1の獲得時刻として取得する取得部と、複数の資源の各資源について、取得部により第1の要求時刻として取得された時刻と、取得部により第1の獲得時刻として取得された時刻とに基づいて、各資源のロックの獲得を後回しにすることで各資源のロックを保持している時間から排除される、他の資源のロック待ちの時間の長さの期待度であるロック待ち時間排除期待度を生成し、取得部により第2の要求時刻として取得された時刻と、取得部により第2の獲得時刻として取得された時刻とに基づいて、各資源のロックの獲得を後回しにすることで各資源のロックを保持している時間から排除される、各資源が使用されるまでの時間の長さの期待度である使用前時間排除期待度を生成する生成部と、生成部により生成されたロック待ち時間排除期待度と使用前時間排除期待度とに基づいて得られた総合期待度が大きい資源ほど後の順番になるように、記憶部に記憶された予め定められた順序を更新する更新部とを含む、装置も提供する。
更に、本発明は、複数の資源に対する特定の順序で、複数の資源の各資源のロックを獲得する方法であって、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成するステップと、生成された時間排除期待度が大きい資源ほど後の順番になるように、特定の順序を決定するステップとを含む、方法も提供する。
更にまた、本発明は、複数の資源に対する特定の順序で、複数の資源の各資源のロックを獲得する装置として、コンピュータを機能させるプログラムであって、コンピュータを、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成する生成部と、生成部により生成された時間排除期待度が大きい資源ほど後の順番になるように、特定の順序を決定する決定部として機能させる、プログラムも提供する。
本発明によれば、資源のロックを保持している時間をシステム全体として短縮することができる。
本発明の実施の形態におけるデータ処理システムの全体構成例を示したブロック図である。 本発明の実施の形態におけるデータ処理システムのアプリケーション、ロック制御装置、DBMSの関係を示した図である。 本発明の実施の形態におけるデータ処理システムの構成要素間の情報交換の様子を示した図である。 本発明の実施の形態におけるデータ処理システムのロック制御装置が保持する統計情報の一例を示した図である。 本発明の実施の形態におけるデータ処理システムのロック制御装置の動作例を示したフローチャートである。 本発明の実施の形態におけるデータ処理システムのロック制御装置の動作例を示したフローチャートである。 本発明の実施の形態におけるデータ処理システムの統計処理装置の動作例を示したフローチャートである。 本発明の実施の形態におけるデータ処理システムの効果を示した図である。 本発明の実施の形態を適用可能なコンピュータのハードウェア構成を示した図である。
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
まず、本実施の形態の動作の概要を説明する。
本実施の形態では、実際に資源のロックを獲得した際の統計情報を用いて、ロック保持時間にできるだけ他の資源のロック待ちを含まないようにする効果(ロック待ち排除効果)と、ロックの獲得を実際に必要になるまで遅延させることができるようにする効果(ロック獲得遅延効果)とを最大限発揮できるようにロック順序を定める。そして、このロック順序に基づいてロックを獲得することにより、ロックが集中する資源のロック保持時間を短縮し、結果として、システム全体の合計ロック占有時間を短縮することにより、システム全体のスループットを向上させる。
この場合、ロック順序は、システムの統計情報を用いて、次の2つの方法の何れかによって定めるものとする。
第1の方法は、ロック待ち排除効果のみが期待できる場合に採用される方法である。この方法では、一定期間内のロック要求回数をロック対象資源ごとに取得し、ロック要求回数が少ない順をロック順序とする。
第2の方法は、ロック待ち排除効果及びロック獲得遅延効果の両方が期待できる場合に採用される方法である。この方法では、一定期間内のロック要求回数と、そのうちトランザクションにおける後続のロックを要求した回数(後続ロック要求回数)とをロック対象資源ごとに取得し、次の式により算出される評価値が小さい順をロック順序とする。
評価値=平均ロック待ち時間×ロック要求回数+平均ロック獲得遅延期待時間×後続ロック要求回数
ここで、平均ロック待ち時間及び平均ロック獲得遅延期待時間は、見積もりによって予め与えられたものでもよいし、統計処理によって求められたものでもよい。
次に、このような動作を行うデータ処理システムの構成について詳細に説明する。
図1は、本実施の形態におけるデータ処理システムの全体構成例を示したブロック図である。
図示するように、本実施の形態におけるデータ処理システムは、アプリケーションプログラム(以下、単に「アプリケーション」という)10とDBMS(DataBase Management System)20との間に、ロック制御装置30と統計処理装置40とロック順テーブル50とを設けることにより、構成される。
また、図2は、図1に示したデータ処理システムの全体構成のうち、アプリケーション10と、DBMS20と、ロック制御装置30とからなる部分を抜き出して、各構成要素の関係を示したものである。
以下、図1及び図2を参照して、本実施の形態におけるデータ処理システムの各構成要素について説明する。
アプリケーション10は、業務処理を行うプログラムであり、図2に示すように、ロック制御装置30に対して、ロック意図伝達処理11と、ロック獲得要求処理12a,12bと、コミット要求処理13とを行う。尚、図2では、ロック獲得要求処理12a,12bを示したが、これらを区別する必要がない場合は、ロック獲得要求処理12と称する。また、図2には、ロック獲得要求処理12を2回行う例を示したが、ロック獲得要求処理12は3回以上行ってもよい。
ロック意図伝達処理11は、トランザクションの先頭で行われる処理で、データベース上のどの資源をロックするかを伝達する処理である。
ロック獲得要求処理12は、資源のロックが実際に必要になった時点で行われる処理で、その資源に対するロックの獲得を要求する処理である。
コミット要求処理13は、データベース上のロックした資源の使用後に行われる処理で、コミットを要求することにより、その資源に対するロックの開放を要求する処理である。
DBMS20は、ロックの対象となる資源を保持するデータベースを管理するプログラムである。具体的には、データベース上の資源の利用が要求されると、その資源を要求元に提供する。尚、DBMS20は、一般的には、ロック対象の資源を管理する資源管理プログラムであってよいが、ここでは、その代表として、DBMS20を用いるものとする。即ち、本実施の形態では、複数の資源を管理するソフトウェアの一例として、DBMS20を設けている。
ロック制御装置30は、ロック順テーブル50が用意されていることを前提として、図2に示すように、準備処理31と、ロック獲得処理32と、ロック開放処理33とを行う。
準備処理31は、アプリケーション10のロック意図伝達処理11に応じて行われる処理で、ロック獲得処理32のための準備を行う処理である。具体的には、ロック意図が伝達された全ての資源に対するロック順番をロック順テーブル50から読み取り、ロック順番の小さい順にロック対象リストを作る。
ロック獲得処理32は、アプリケーション10のロック獲得要求処理12に応じて行われる処理で、資源のロックを獲得する処理である。具体的には、要求された資源をロック対象リスト上で探し、その資源よりロック順番が小さい資源でロックが獲得されていないものがあれば、ロック順番が小さい順にそれらのロックの獲得をDBMS20に要求する。その後、要求された資源のロックの獲得をDBMS20に要求する。また、ロックを獲得した資源については、ロック対象リスト上にロック獲得済みであることを記録する。
ロック開放処理33は、アプリケーション10のコミット要求処理13に応じて行われる処理で、資源のロックを開放する処理である。具体的には、ロックされた全ての資源に対するロックの開放をDBMS20に要求する。また、ロックが開放された後に、ロック対象リストを削除する。尚、ここでは、ロック開放処理33は、アプリケーション10のコミット要求処理13に応じて行われることとしたが、ロールバックでロックの開放が要求されることにより行われるものでもよい。
統計処理装置40は、ロック制御装置30の動作をモニタすることにより統計情報を取得し、この統計情報に基づいてロック順序を決定する。この統計処理装置40におけるロック順序の決定方法については、後で詳細に説明する。本実施の形態では、順序を決定する決定部の一例として、統計処理装置40を設けている。
ロック順テーブル50は、統計処理装置40が決定したロック順序を保持し、ロック制御装置30にロック順序を提示する。このロック順テーブル50は、コンピュータのメインメモリ90c(図8参照)等、ロック制御装置30が高速にアクセス可能な記憶装置により実現するとよい。
尚、デッドロック防止のため、ロック順テーブル50は、ある時点では確定している必要がある。統計処理装置40は、例えば、1日分又は1か月分の統計処理を行って新しいロック順テーブル50を作成し、古いロック順テーブル50をこの新しいロック順テーブル50で置き換える。このロック順テーブル50を置き換えるタイミングは、ロック順テーブル50がアプリケーション10の平均的なロック獲得傾向を十分に表すように定めればよい。
また、本実施の形態の仕組みを初めて使用する際には、統計処理に基づくロック順序はまだ得られていないので、ロック順序は、人間が有効と思われるものを予測して決定したり、口座番号等に従って機械的に決定したりすればよい。そして、一定期間、稼動させた後、統計処理装置40が作成したロック順テーブル50に置き換えるとよい。
次に、統計処理装置40におけるロック順序の決定方法について詳細に説明する。
まず、ロック順序の決定方法は、アプリケーション10の特性に応じて、次の2つの決定方法から選択するとよい。
第1の決定方法は、ロック要求回数に基づいて決定する方法であり、前述した第1の方法に対応する。
複数のロックの獲得の間に殆ど処理が含まれない場合等、ロック獲得遅延効果が見込めず、ロック待ち排除効果のみが期待できる場合は、ロック要求回数が多い資源のロック獲得を後回しにすれば、大きなロック待ち排除効果が得られる。従って、統計処理装置40は、一定期間内のロック要求回数をロック対象資源ごとに取得し、ロック要求回数が少ない順をロック順序とする。
第2の決定方法は、ロック要求回数と後続ロック要求回数とに基づいて決定する方法であり、前述した第2の方法に対応する。
ロック待ち排除効果とロック獲得遅延効果の両方が期待できる場合、統計処理装置40は、一定期間内のロック要求回数と、そのうちトランザクションにおける後続のロックを要求した回数(後続ロック要求回数)とをロック対象資源ごとに取得し、次の式により算出される評価値が小さい順をロック順序とする。
(式1)評価値=平均ロック待ち時間×ロック要求回数+平均ロック獲得遅延期待時間×後続ロック要求回数
ここで、評価値は、特定の資源のロック獲得を後回しにした場合に一定期間内のシステム全体のロック占有時間をどの程度削減できるかの期待値を表している。具体的には、「平均ロック待ち時間×ロック要求回数」が、特定の資源のロック獲得を後回しにした場合にロック待ち時間をどの程度排除できるかの期待値の合計であり、「平均ロック獲得遅延期待時間×後続ロック要求回数」が、特定の資源のロック獲得を後回しにした場合に資源の使用時期との関係でロック獲得をどの程度遅延させることができるかの期待値の合計である。そして、評価値が大きい資源、つまり、期待効果が大きい資源に後ろの方のロック順番を割り当てることにより、システム全体としてロック保持時間の短縮効果が得られるようにする。
尚、平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知又は推定可能の場合、統計処理装置40は、一定期間内の全ての資源に対するロック要求回数と、一定期間内のトランザクションにおける2回目以降のロック要求回数である後続ロック要求回数とをロック制御装置30から取得し、上記式1により、評価値を算出するとよい。
一方、平均ロック待ち時間の値が既知でも推定可能でもない場合、統計処理装置40は、ロックの獲得を要求した時刻(以下、「ロック要求時刻」という)と、実際にロックが獲得された時刻(以下、「ロック獲得時刻」という)との差を、一定期間内の全てのロック獲得についてロック制御装置30から取得し、一定期間内のロック要求回数で除算して、平均ロック待ち時間を得る。また、平均ロック獲得遅延期待時間の値が既知でも推定可能でもない場合、統計処理装置40は、最初のロックが獲得された時刻(以下、「初回ロック獲得時刻」という)と、トランザクションにおける2つ目以降のロック獲得要求が発行された時刻(以下、「後続ロック要求時刻」という)との差を、一定期間内のトランザクションにおける2回目以降のロック獲得についてロック制御装置30から取得し、一定期間内の後続ロック要求回数で除算して、平均ロック獲得遅延期待時間を得る。
また、より正確にロック順序を決定したい場合、統計処理装置40は、平均ロック待ち時間にロック要求回数を乗ずることに代えて、個々のロック待ち時間を積算すると共に、平均ロック獲得遅延期待時間に後続ロック要求回数を乗ずることに代えて、個々のロック獲得遅延期待時間を積算するようにしてもよい。この場合、ロック順序を決定するための評価値を算出する式は次の通りとなる。
(式2)評価値=Σロック待ち時間+Σ(後続ロック要求時刻−初回ロック獲得時刻)
ここで、1つ目のΣは、一定期間内に特定の資源に対して発行されるロック要求についての総和を意味しており、2つ目のΣは、一定期間内に特定の資源に対して発行されるトランザクションにおける2回目以降のロック要求についての総和を意味している。
但し、評価値を算出する式として、(式1)及び(式2)はあくまで一例である。第1項の値が大きくなれば、その値が大きくなり、かつ、第2項の値が大きくなれば、その値が大きくなるような式であれば、如何なる式を用いてもよい。例えば、(式1)及び(式2)のように第1項と第2項を単純に足し合わせる式ではなく、第1項と第2項に重み付けをして足し合わせるような式を用いてもよい。
尚、ここでは、統計処理装置40は、特定の資源のロック獲得を後回しにした場合にロック待ち時間をどの程度排除できるかの期待値(ロック待ち時間排除期待度の一例)、及び、特定の資源のロック獲得を後回しにした場合に資源の使用時期との関係でロック獲得をどの程度遅延させることができるかの期待値(使用前時間排除期待度の一例)を計算によって求め、これらの期待値に基づく計算により、期間内のシステム全体のロック占有時間をどの程度削減できるかの期待値(時間排除期待度、総合期待度の一例)を求めるようにした。しかしながら、これらの期待値を計算によって求めるのではなく、例えばテーブル等に予め設定された値を検索することによって求めてもよい。このような意味で、統計処理装置40は、ロック待ち時間排除期待度、使用前時間排除期待度、時間排除期待度を生成する生成部の一例と言うことができる。
ここで、ロック制御装置30が統計処理装置40で用いられる統計情報を取得する処理について説明する。尚、ここでは、(式1)で平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知でも推定可能でもない場合を例にとって説明する。
図3は、図1に示したデータ処理システムの構成要素間の情報交換の様子を示した図である。図において、アプリケーション10は、2回のロック獲得要求を行うものとしている。
まず、アプリケーション10が、1回目のロック獲得要求をロック制御装置30に送信すると、ロック制御装置30は、ロック要求カウンタを「1」とする。また、ロック制御装置30は、要求された資源に対するロック獲得要求をDBMS20に送信し、このときの時刻をロック要求時刻として記録する。
一方、要求された資源に対するロック獲得応答をDBMS20から受信すると、ロック制御装置30は、このときの時刻をロック獲得時刻として記録する。また、ロック制御装置30は、ロック獲得応答をアプリケーション10に送信し、このときの時刻を初回ロック獲得時刻として記録する。
その後、アプリケーション10が、2回目のロック獲得要求をロック制御装置30に送信すると、ロック制御装置30は、このときの時刻を後続ロック要求時刻として記録し、ロック要求カウンタ及び後続ロック要求カウンタを「1」とする。また、ロック制御装置30は、要求された資源に対するロック獲得要求をDBMS20に送信し、このときの時刻をロック要求時刻として記録する。
一方、要求された資源に対するロック獲得応答をDBMS20から受信すると、ロック制御装置30は、このときの時刻をロック獲得時刻として記録する。また、ロック制御装置30は、ロック獲得応答をアプリケーション10に送信する。
尚、上記では、アプリケーション10からの1回のロック獲得要求に対して、要求された1つの資源に対するロック獲得要求のみをDBMS20に送信することとした。しかしながら、ロック対象リスト内にロック順番が小さくロックが未獲得の資源が存在する場合のように、アプリケーション10からの1回のロック獲得要求に対して、複数の資源に対するロック獲得要求をDBMS20に送信する場合もある。この場合は、ロック獲得要求ごとにロック要求時刻及びロック獲得時刻を記録する。
このように、ロック制御装置30は、統計情報として、ロック要求時刻と、ロック獲得時刻と、後続ロック要求時刻と、初回ロック獲得時刻と、ロック要求カウンタと、後続ロック要求カウンタとを取得する。ここで、ロック要求時刻は、ソフトウェアに対して特定の資源のロックの獲得を要求した要求時刻、第1の要求時刻の一例であり、ロック獲得時刻は、ソフトウェアが特定の資源のロックを獲得した獲得時刻、第1の獲得時刻の一例であり、初回ロック獲得時刻は、アプリケーションプログラムが1回目の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した場合に特定の資源のロックが獲得された第2の獲得時刻の一例であり、後続ロック要求時刻は、アプリケーションプログラムが2回目以降の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した場合に特定の資源のロックの獲得が要求された第2の要求時刻の一例である。また、ロック要求カウンタは、特定の資源のロックの獲得を要求した回数の一例であり、後続ロック要求カウンタは、アプリケーションプログラムが2回目以降の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した回数の一例である。従って、ロック制御装置30は、回数を取得する取得部、要求時刻と獲得時刻とを取得する取得部、第1の要求時刻と第1の獲得時刻と第2の要求時刻と第2の獲得時刻とを取得する取得部の一例である。
また、ロック制御装置30は、取得した統計情報を、自装置内の図示しない統計情報記憶部に記憶する。
図4は、統計情報記憶部に記憶される統計情報の一例を示した図である。
図示するように、統計情報は、トランザクションIDと、資源IDと、ロック要求時刻と、ロック獲得時刻と、初回ロック獲得時刻と、後続ロック要求時刻と、ロック要求カウンタと、後続ロック要求カウンタとを対応付けたものである。
トランザクションIDは、アプリケーション10によるデータベース上の資源を利用した複数の処理からなる1つの処理単位であるトランザクションを識別する情報である。
資源IDは、アプリケーション10によって利用される資源を識別する情報である。
ロック要求時刻は、ロック制御装置30がDBMS20にロックの獲得を要求した時刻であり、ロック獲得時刻は、DBMS20がロック制御装置30にロックを獲得した旨を伝えた時刻である。
初回ロック獲得時刻は、アプリケーション10からの1回目のロック獲得要求に応じて、ロック制御装置30がアプリケーション10にロックが獲得された旨を伝えた時刻であり、後続ロック要求時刻は、アプリケーション10からの2回目以降のロック獲得要求をロック制御装置30が受け付けた時刻である。
ロック要求カウンタは、アプリケーション10からロック獲得要求があった場合にその旨を保持するカウンタであり、後続ロック要求カウンタは、アプリケーション10から2回目以降のロック獲得要求があった場合にその旨を保持するカウンタである。
次いで、本実施の形態におけるデータ処理システムの動作について説明する。
このデータ処理システムでは、まず、アプリケーション10が、ロック意図伝達処理11にて、複数のロック対象資源をロック制御装置30に伝える。すると、ロック制御装置30が、準備処理31にて、アプリケーション10から伝えられた複数のロック対象資源をロック順テーブル50におけるロック順序に従って並べることにより、ロック対象リストを生成する。以下では、資源「A」、「B」、「C」をこの順に並べたロック対象リストが生成されているものとして説明する。
その後、アプリケーション10が、ロック獲得要求処理12にて、ロック獲得要求をロック制御装置30に送信する。すると、ロック制御装置30が、ロック獲得処理32を行う。
図5−1及び図5−2は、このときのロック制御装置30の動作例を示したフローチャートである。
図5−1に示すように、ロック制御装置30は、まず、今回のロック獲得要求が何回目のロック獲得要求であるかを判定する(ステップ301)。
ここで、今回のロック獲得要求が1回目のロック獲得要求であると判定されれば、次のような動作が行われる。
即ち、ロック制御装置30は、ロック要求カウンタに「1」を記録する(ステップ302)。例えば、図4では、1回目のロック獲得要求で要求された資源「B」に対して、ロック要求カウンタに「1」が記録されている。
次に、ロック制御装置30は、ロック順テーブル50に記憶されたロック順序を参照し、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が、ロック対象リスト上に存在するかどうかを判定する(ステップ304)。
その結果、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が存在すると判定されれば、ロック制御装置30は、そのような資源の中でロック順番が最も小さい資源のロック獲得要求をDBMS20に送信し、そのときの時刻をロック要求時刻として記録する(ステップ305)。そして、このロック獲得要求に応じてDBMS20で資源のロックが獲得された旨のロック獲得応答を受信し、そのときの時刻をロック獲得時刻として記録する(ステップ306)。例えば、図4では、1回目のロック獲得要求で資源「B」が要求されたが、ロック順番が資源「B」よりも小さい資源「A」が存在するので、資源「A」に対して、ロック要求時刻「T11」及びロック獲得時刻「T21」が記録されている。
その後、処理は、ステップ304に戻り、ロック制御装置30は、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が、ロック対象リスト上に存在するかどうかの判定を、そのような資源が存在しなくなるまで行う。尚、このような判定は、ロック対象リスト上の資源のうち、ロックが獲得された資源にロック獲得済みであることを記録することによって行えばよい。
そして、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が存在しないと判定されるようになると、ロック制御装置30は、今回要求された資源のロック獲得要求をDBMS20に送信し、そのときの時刻をロック要求時刻として記録する(ステップ307)。そして、このロック獲得要求に応じてDBMS20で資源のロックが獲得された旨のロック獲得応答を受信し、そのときの時刻をロック獲得時刻として記録する(ステップ308)。例えば、図4では、1回目のロック獲得要求で要求された資源「B」に対して、資源「A」に対するロック獲得時刻よりも遅いロック要求時刻「T12」及びロック獲得時刻「T22」が記録されている。
また、ロック制御装置30は、今回要求された資源のロックが獲得された旨のロック獲得応答をアプリケーション10に送信し、そのときの時刻を初回ロック獲得時刻として記録する(ステップ309)。例えば、図4では、1回目のロック獲得要求で要求された資源「B」に対して、初回ロック獲得時刻「T31」が記録される。但し、資源「B」に対する初回ロック獲得時刻は、後で他の資源に対する初回ロック獲得時刻の欄に移されるので、資源「B」に対する初回ロック獲得時刻の欄は、ここでは空欄としている。
一方、ステップ301で今回のロック獲得要求が2回目以降のロック獲得要求であると判定されれば、次のような動作が行われる。
即ち、図5−2に示すように、ロック制御装置30は、そのときの時刻を後続ロック要求時刻として記録すると共に、ロック要求カウンタ及び後続ロック要求カウンタに「1」を記録する(ステップ352)。尚、このとき、1回目のロック獲得要求で要求された資源に対する初回ロック獲得時刻が今回要求された資源に対する初回ロック獲得時刻の欄に移されるものとする。例えば、図4では、2回目のロック獲得要求で要求された資源「A」に対して、後続ロック要求時刻「T32」、ロック要求カウンタ「1」、後続ロック要求カウンタ「1」が記録されているが、更に、資源「B」に対して記録されていた初回ロック獲得時刻「T31」も記録されている。
次に、ロック制御装置30は、今回要求された資源のロックが既に獲得されているかどうかを判定する(ステップ353)。図5−1のステップ305及びステップ306、又は、後述する図5−2のステップ355及びステップ356で、ロックが未獲得の資源のロックを獲得する場合があり、今回要求された資源のロックが既に獲得されている可能性があるので、このような判定を行っている。
ここで、今回要求された資源のロックが既に獲得されていると判定されれば、処理はステップ359へ進む。
一方、今回要求された資源のロックがまだ獲得されていないと判定されれば、ロック制御装置30は、ロック順テーブル50に記憶されたロック順序を参照し、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が、ロック対象リスト上に存在するかどうかを判定する(ステップ354)。
その結果、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が存在すると判定されれば、ロック制御装置30は、そのような資源の中でロック順番が最も小さい資源のロック獲得要求をDBMS20に送信し、そのときの時刻をロック要求時刻として記録する(ステップ355)。そして、このロック獲得要求に応じてDBMS20で資源のロックが獲得された旨のロック獲得応答を受信し、そのときの時刻をロック獲得時刻として記録する(ステップ356)。
その後、処理は、ステップ354に戻り、ロック制御装置30は、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が、ロック対象リスト上に存在するかどうかの判定を、そのような資源が存在しなくなるまで行う。尚、このような判定は、ロック対象リスト上の資源のうち、ロックが獲得された資源にロック獲得済みであることを記録することによって行えばよい。
そして、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が存在しないと判定されるようになると、ロック制御装置30は、今回要求された資源のロック獲得要求をDBMS20に送信し、そのときの時刻をロック要求時刻として記録する(ステップ357)。そして、このロック獲得要求に応じてDBMS20で資源のロックが獲得された旨のロック獲得応答を受信し、そのときの時刻をロック獲得時刻として記録する(ステップ358)。例えば、図4では、3回目のロック獲得要求で要求された資源「C」に対して、ロック要求時刻「T13」及びロック獲得時刻「T23」が記録されている。
また、ロック制御装置30は、今回要求された資源のロックが獲得された旨のロック獲得応答をアプリケーション10に送信する(ステップ359)。
ロック制御装置30がこのようにして統計情報を自装置内の統計情報記憶部に記憶すると、統計処理装置40がこの統計情報記憶部に記憶された統計情報を処理する。
図6は、このときの統計処理装置40の動作例を示したフローチャートである。
図示するように、統計処理装置40は、まず、統計情報記憶部から統計情報を取り出して、自装置内の図示しないメモリに記憶する(ステップ401)。
次に、統計処理装置40は、統計情報に含まれる全ての資源に対するロック要求時刻及びロック獲得時刻に基づいて、平均ロック待ち時間を算出する(ステップ402)。例えば図4のような形式で統計情報が記憶されているとすると、トランザクションIDと資源IDとの組み合わせのそれぞれについて、ロック要求時刻とロック獲得時刻との差分を算出し、この差分をトランザクションIDと資源IDとの組み合わせの数で除することにより、平均ロック待ち時間を算出する。
また、統計処理装置40は、統計情報に含まれる全ての資源に対する初回ロック獲得時刻及び後続ロック要求時刻に基づいて、平均ロック獲得遅延期待時間を算出する(ステップ403)。例えば図4のような形式で統計情報が記憶されているとすると、トランザクションIDと資源IDとの組み合わせのそれぞれについて、初回ロック獲得時刻と後続ロック要求時刻との差分を算出し、この差分をトランザクションIDと資源IDとの組み合わせの数で除することにより、平均ロック獲得遅延期待時間を算出する。但し、この場合は、初回ロック獲得時刻及び後続ロック要求時刻が記録されていないトランザクションIDと資源IDとの組み合わせは考慮に入れない。
次いで、統計処理装置40は、全ての資源の中から1つの資源に着目し、これを評価対象資源として、次の動作を行う。
即ち、まず、統計処理装置40は、評価対象資源に対するロック要求カウンタに基づいて、ロック要求回数を算出する(ステップ404)。例えば図4のような形式で統計情報が記憶されているとすると、評価対象資源の資源IDを含むレコードを統計情報から抽出し、それらのレコード内のロック要求カウンタの和、つまり、それらのレコードの個数を求め、これをロック要求回数とする。
また、統計処理装置40は、評価対象資源に対する後続ロック要求カウンタに基づいて、後続ロック要求回数を算出する(ステップ405)。例えば図4のような形式で統計情報が記憶されているとすると、評価対象資源の資源IDを含むレコードを統計情報から抽出し、それらのレコード内の後続ロック要求カウンタの和を求め、これを後続ロック要求回数とする。
そして、統計処理装置40は、式「平均ロック待ち時間×ロック要求回数+平均ロック獲得遅延期待時間×後続ロック要求回数」を用いて、評価対象資源に対する評価値を算出する(ステップ406)。その際、「平均ロック待ち時間」としては、ステップ402で算出した値を用い、「ロック要求回数」としては、ステップ404で算出した値を用い、「平均ロック獲得遅延期待時間」としては、ステップ403で算出した値を用い、「後続ロック要求回数」としては、ステップ405で算出した値を用いる。
その後、統計処理装置40は、評価値を算出していない資源が他にあるかどうかを判定する(ステップ407)。
その結果、評価値を算出していない資源があると判定されれば、ステップ404〜406の処理を繰り返す。
一方、評価値を算出していない資源がないと判定されれば、評価値が小さい順に全ての資源をソートし(ステップ408)、ソートした結果をロック順テーブル50に出力する(ステップ409)。
尚、この動作例では、ロック制御装置30が、アプリケーション10からロック獲得要求があった旨を保持するロック要求カウンタと、アプリケーション10から2回目以降のロック獲得要求があった旨を保持する後続ロック要求カウンタとを記録し、統計処理装置40が、資源ごとにロック要求カウンタを数えることによりロック要求回数を取得し、資源ごとに後続ロック要求カウンタを数えることにより後続ロック要求回数を取得するようにしたが、この限りではない。ロック制御装置30が、アプリケーション10からロック獲得要求がある都度カウンタをカウントアップしてロック要求回数を取得し、アプリケーション10から2回目以降のロック獲得要求がある都度カウンタをカウントアップして後続ロック要求回数を取得するようにしてもよい。
また、この動作例では、(式1)で平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知でも推定可能でもない場合を例にとったが、この限りではない。例えば、(式1)で平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知又は推定可能である場合、或いは、(式2)を用いる場合に適用可能なように変更することもできる。
まず、(式1)で平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知又は推定可能である場合について説明する。この場合は、平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が与えられるので、これらの値を統計情報に基づいて算出する必要はない。従って、ロック制御装置30は、ロック要求時刻、ロック獲得時刻、初回ロック獲得時刻、及び、後続ロック要求時刻を取得しなくてよく、統計処理装置40は、ステップ402及びステップ403の処理を行わなくてよい。
次に、(式2)を用いる場合について説明する。この場合は、ロック要求回数及び後続ロック要求回数を用いないので、ロック制御装置30は、ロック要求カウンタ及び後続ロック要求カウンタを取得しなくてよい。また、統計処理装置40は、ステップ402〜ステップ405の処理を行わずに、ステップ406で、評価対象資源に対する「(ロック獲得時刻−ロック要求時刻)+(後続ロック要求時刻−初回ロック獲得時刻)」の値を積算する処理を行うようにすればよい。その際、評価対象資源の資源IDを含むレコード内に後続ロック要求時刻及び初回ロック獲得時刻が記録されていない場合は、(後続ロック要求時刻−初回ロック獲得時刻)の項は「0」とする。
このように、本実施の形態では、ロック獲得を後回しにした場合にロック占有時間が削減される期待度が高い資源が後になるように、ロック順テーブル50に資源を並べるようにした。これにより、デッドロックを防ぎつつ、パフォーマンスを向上することが可能となった。
図7は、資源Aのロック獲得を後回しにすることによる資源Aのロック保持時間の短縮効果について示した図である。
(a)は、ロック順序が資源A,Bの順に決められており、最適化されていない場合の例である。
(b)は、このロック順序が最適化され、資源B,Aの順に変更された場合の例である。破線楕円内の効果1が、ロック待ち排除効果(ロック獲得を後回しにした場合にロック保持時間からロック待ち時間ができるだけ排除されるようにする効果)を示しており、破線楕円内の効果2が、ロック獲得遅延効果(ロック獲得を後回しにした場合にロック保持時間から資源が使用されていない時間ができるだけ排除されるようにする効果)を示している。
最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。図8は、このようなコンピュータのハードウェア構成の一例を示した図である。図示するように、コンピュータは、演算手段であるCPU(Central Processing Unit)90aと、M/B(マザーボード)チップセット90bを介してCPU90aに接続されたメインメモリ90cと、同じくM/Bチップセット90bを介してCPU90aに接続された表示機構90dとを備える。また、M/Bチップセット90bには、ブリッジ回路90eを介して、ネットワークインターフェイス90fと、磁気ディスク装置(HDD)90gと、音声機構90hと、キーボード/マウス90iと、フレキシブルディスクドライブ90jとが接続されている。
尚、図8において、各構成要素は、バスを介して接続される。例えば、CPU90aとM/Bチップセット90bの間や、M/Bチップセット90bとメインメモリ90cの間は、CPUバスを介して接続される。また、M/Bチップセット90bと表示機構90dとの間は、AGP(Accelerated Graphics Port)を介して接続されてもよいが、表示機構90dがPCI Express対応のビデオカードを含む場合、M/Bチップセット90bとこのビデオカードの間は、PCI Express(PCIe)バスを介して接続される。また、ブリッジ回路90eと接続する場合、ネットワークインターフェイス90fについては、例えば、PCI Expressを用いることができる。また、磁気ディスク装置90gについては、例えば、シリアルATA(AT Attachment)、パラレル転送のATA、PCI(Peripheral Components Interconnect)を用いることができる。更に、キーボード/マウス90i、及び、フレキシブルディスクドライブ90jについては、USB(Universal Serial Bus)を用いることができる。
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム(装置又は機器)、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
10…アプリケーション、20…DBMS、30…ロック制御装置、40…統計処理装置、50…ロック順テーブル

Claims (10)

  1. 複数の資源に対する特定の順序で、当該複数の資源の各資源のロックを獲得する装置であって、
    前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成する生成部と、
    前記生成部により生成された前記時間排除期待度が大きい資源ほど後の順番になるように、前記特定の順序を決定する決定部と
    を含む、装置。
  2. 前記生成部は、前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、他の資源のロック待ちの時間の長さの期待度であるロック待ち時間排除期待度を含む前記時間排除期待度を生成する、請求項1の装置。
  3. 前記生成部は、前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、当該各資源が使用されるまでの時間の長さの期待度である使用前時間排除期待度を含む前記時間排除期待度を生成する、請求項2の装置。
  4. 前記複数の資源の各資源を使用するアプリケーションプログラムが当該各資源のロックの獲得を要求した回数を取得する取得部を更に備え、
    前記生成部は、前記複数の資源の各資源について、前記取得部により取得された前記回数に基づいて、前記ロック待ち時間排除期待度を生成する、請求項3の装置。
  5. 前記複数の資源の各資源を使用するアプリケーションプログラムが当該各資源のロックの獲得を要求した場合に、当該複数の資源を管理するソフトウェアに対して当該各資源のロックの獲得を要求した要求時刻と、当該ソフトウェアが当該各資源のロックを獲得した獲得時刻とを取得する取得部を更に備え、
    前記生成部は、前記複数の資源の各資源について、前記取得部により取得された前記要求時刻と前記獲得時刻とに基づいて、前記ロック待ち時間排除期待度を生成する、請求項3の装置。
  6. 前記複数の資源の各資源を使用するアプリケーションプログラムが2回目以降の資源のロックの獲得の要求として当該各資源のロックの獲得を要求した回数を取得する取得部を更に備え、
    前記生成部は、前記複数の資源の各資源について、前記取得部により取得された前記回数に基づいて、前記使用前時間排除期待度を生成する、請求項3の装置。
  7. 前記複数の資源の各資源を使用するアプリケーションプログラムが1回目の資源のロックの獲得の要求として当該各資源のロックの獲得を要求した場合に、当該各資源のロックが獲得された獲得時刻を取得し、当該アプリケーションプログラムが2回目以降の資源のロックの獲得の要求として当該各資源のロックの獲得を要求した場合に、当該各資源のロックの獲得が要求された要求時刻を取得する取得部を更に備え、
    前記生成部は、前記複数の資源の各資源について、前記取得部により取得された前記獲得時刻と前記要求時刻とに基づいて、前記使用前時間排除期待度を生成する、請求項3の装置。
  8. 複数の資源に対する特定の順序で、当該複数の資源の各資源のロックを獲得する装置であって、
    前記特定の順序として予め定められた順序を記憶する記憶部と、
    前記複数の資源のうちの特定の資源を使用するアプリケーションプログラムが1回目の資源のロックの獲得の要求として当該特定の資源のロックの獲得を要求した場合に、前記予め定められた順序において当該特定の資源よりも前の順番の資源であってロックが獲得されていない資源である他の資源を当該アプリケーションプログラムが使用する予定であれば、当該複数の資源を管理するソフトウェアに対して当該他の資源のロックの獲得を要求した時刻を第1の要求時刻として取得し、当該ソフトウェアが当該他の資源のロックを獲得した時刻を第1の獲得時刻として取得し、その後、当該ソフトウェアに対して当該特定の資源のロックの獲得を要求した時刻を当該第1の要求時刻として取得し、当該ソフトウェアが当該特定の資源のロックを獲得した時刻を当該第1の獲得時刻として取得し、当該特定の資源のロックが獲得された時刻を第2の獲得時刻として取得し、
    当該アプリケーションプログラムが2回目以降の資源のロックの獲得の要求として当該特定の資源のロックの獲得を要求した場合に、前記予め定められた順序において当該特定の資源よりも前の順番の資源であってロックが獲得されていない資源である他の資源を当該アプリケーションプログラムが使用する予定であれば、当該ソフトウェアに対して当該他の資源のロックの獲得を要求した時刻を当該第1の要求時刻として取得し、当該ソフトウェアが当該他の資源のロックを獲得した時刻を当該第1の獲得時刻として取得し、その後、当該特定の資源のロックの獲得が要求された時刻を第2の要求時刻として取得し、当該ソフトウェアに対して当該特定の資源のロックの獲得を要求した時刻を当該第1の要求時刻として取得し、当該ソフトウェアが当該特定の資源のロックを獲得した時刻を当該第1の獲得時刻として取得する取得部と、
    前記複数の資源の各資源について、前記取得部により前記第1の要求時刻として取得された時刻と、前記取得部により前記第1の獲得時刻として取得された時刻とに基づいて、当該各資源のロックの獲得を後回しにすることで当該各資源のロックを保持している時間から排除される、他の資源のロック待ちの時間の長さの期待度であるロック待ち時間排除期待度を生成し、前記取得部により前記第2の要求時刻として取得された時刻と、前記取得部により前記第2の獲得時刻として取得された時刻とに基づいて、当該各資源のロックの獲得を後回しにすることで当該各資源のロックを保持している時間から排除される、当該各資源が使用されるまでの時間の長さの期待度である使用前時間排除期待度を生成する生成部と、
    前記生成部により生成された前記ロック待ち時間排除期待度と前記使用前時間排除期待度とに基づいて得られた総合期待度が大きい資源ほど後の順番になるように、前記記憶部に記憶された前記予め定められた順序を更新する更新部と
    を含む、装置。
  9. 複数の資源に対する特定の順序で、当該複数の資源の各資源のロックを獲得する方法であって、
    前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成するステップと、
    生成された前記時間排除期待度が大きい資源ほど後の順番になるように、前記特定の順序を決定するステップと
    を含む、方法。
  10. 複数の資源に対する特定の順序で、当該複数の資源の各資源のロックを獲得する装置として、コンピュータを機能させるプログラムであって、
    前記コンピュータを、
    前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成する生成部と、
    前記生成部により生成された前記時間排除期待度が大きい資源ほど後の順番になるように、前記特定の順序を決定する決定部と
    して機能させる、プログラム。
JP2011264960A 2011-12-02 2011-12-02 資源のロックを獲得する装置及び方法 Active JP5939561B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2011264960A JP5939561B2 (ja) 2011-12-02 2011-12-02 資源のロックを獲得する装置及び方法
US13/648,338 US8898127B2 (en) 2011-12-02 2012-10-10 Device and method for acquiring resource lock
DE102012221037.7A DE102012221037B4 (de) 2011-12-02 2012-11-19 Einheit und Verfahren zum Realisieren einer Ressourcensperre
GB1221512.5A GB2498835B (en) 2011-12-02 2012-11-29 Device and method for acquiring resource lock
US14/478,108 US9189512B2 (en) 2011-12-02 2014-09-05 Device and method for acquiring resource lock

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011264960A JP5939561B2 (ja) 2011-12-02 2011-12-02 資源のロックを獲得する装置及び方法

Publications (2)

Publication Number Publication Date
JP2013117852A true JP2013117852A (ja) 2013-06-13
JP5939561B2 JP5939561B2 (ja) 2016-06-22

Family

ID=48431567

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011264960A Active JP5939561B2 (ja) 2011-12-02 2011-12-02 資源のロックを獲得する装置及び方法

Country Status (4)

Country Link
US (2) US8898127B2 (ja)
JP (1) JP5939561B2 (ja)
DE (1) DE102012221037B4 (ja)
GB (1) GB2498835B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016081204A (ja) * 2014-10-15 2016-05-16 三菱電機株式会社 電子制御装置
CN112699137A (zh) * 2021-01-04 2021-04-23 远光软件股份有限公司 一种跨系统的财务数据处理方法及装置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943504B2 (en) * 2012-04-20 2015-01-27 Qualcomm Incorporated Tracking and releasing resources placed on a deferred unlock list at the end of a transaction
US9378225B2 (en) * 2013-08-06 2016-06-28 International Business Machines Corporation Core service build / deployment for hierarchical database
CN104268024B (zh) * 2014-09-24 2018-02-23 浪潮(北京)电子信息产业有限公司 一种实现进程互斥的方法和装置
SG11201703260QA (en) * 2015-12-30 2017-08-30 Huawei Tech Co Ltd Method for processing acquire lock request and server
US10769128B2 (en) * 2017-01-31 2020-09-08 Salesforce.Com, Inc. Delegated key-level locking for a transactional multi-version key-value store
US11586614B2 (en) 2019-07-30 2023-02-21 Oracle International Corporation Native persistent store support for blockchains
US11640391B2 (en) * 2019-09-11 2023-05-02 Oracle International Corporation Supporting blockchain collections in a database
US11875178B2 (en) 2020-07-30 2024-01-16 Oracle International Corporation Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems
US20220114157A1 (en) * 2020-10-12 2022-04-14 Oracle International Corporation Lock management for distributed application pods
US11494347B1 (en) 2021-05-05 2022-11-08 Oracle International Corporation Efficient update-anywhere replication of queue operations on a replicated message queue

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02194442A (ja) * 1989-01-23 1990-08-01 Nec Corp 共有資源制御装置
JPH0816456A (ja) * 1994-06-24 1996-01-19 Mitsubishi Electric Corp 資源管理装置
JP2002032249A (ja) * 2000-07-19 2002-01-31 Ricoh Co Ltd 排他制御方法、排他制御装置、排他制御プログラムを記録した記録媒体、並びに、データベースシステム
JP2011170414A (ja) * 2010-02-16 2011-09-01 Nec Corp ロック競合管理装置、ロック競合管理方法およびプログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5283897A (en) 1990-04-30 1994-02-01 International Business Machines Corporation Semi-dynamic load balancer for periodically reassigning new transactions of a transaction type from an overload processor to an under-utilized processor based on the predicted load thereof
JPH0512041A (ja) 1991-07-03 1993-01-22 Nec Corp 共有資源排他制御方式
JP2570018B2 (ja) 1991-09-06 1997-01-08 日本電信電話株式会社 ロック区間の自動解析方法及びロック時間の計算方法
JPH05257902A (ja) 1992-03-10 1993-10-08 Fujitsu Ltd 処理プログラム・モードにおけるロック獲得処理方式
JPH06103091A (ja) 1992-09-18 1994-04-15 Hitachi Ltd 並列排他制御命令翻訳方法及びその装置とデータ処理装置
JPH06332789A (ja) 1993-05-27 1994-12-02 Toshiba Corp 並列処理装置及び共有データのロック方法
JP2850863B2 (ja) 1996-06-29 1999-01-27 日本電気株式会社 排他制御装置
JPH10143410A (ja) 1996-11-12 1998-05-29 Meidensha Corp データベース管理システムのトランザクション制御方法
JP2001084235A (ja) 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
JP2002007148A (ja) 2000-06-21 2002-01-11 Mitsubishi Electric Corp 共有資源の排他制御システム及び資源ロック方法並びに記録媒体
US20040002974A1 (en) * 2002-06-27 2004-01-01 Intel Corporation Thread based lock manager
US7360030B1 (en) 2004-06-01 2008-04-15 Sanbolic, Inc. Methods and apparatus facilitating volume management
US7844973B1 (en) * 2004-12-09 2010-11-30 Oracle America, Inc. Methods and apparatus providing non-blocking access to a resource
JP2006252176A (ja) 2005-03-10 2006-09-21 Nec Corp 性能劣化要因検出システム、解析サーバ、性能劣化要因検出方法およびプログラム
US20070039000A1 (en) 2005-08-10 2007-02-15 Hewlett-Packard Development Company, L.P. Lock order determination method and system
US8060880B2 (en) * 2007-05-04 2011-11-15 Microsoft Corporation System using backward inter-procedural analysis for determining alternative coarser grained lock when finer grained locks exceeding threshold
JP5055059B2 (ja) 2007-08-03 2012-10-24 株式会社日立製作所 データベース処理方法、その実施システム及びプログラム
US20100122253A1 (en) 2008-11-09 2010-05-13 Mccart Perry Benjamin System, method and computer program product for programming a concurrent software application
US8898191B2 (en) 2009-12-23 2014-11-25 International Business Machines Corporation Method for providing connections for application processes to a database server

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02194442A (ja) * 1989-01-23 1990-08-01 Nec Corp 共有資源制御装置
JPH0816456A (ja) * 1994-06-24 1996-01-19 Mitsubishi Electric Corp 資源管理装置
JP2002032249A (ja) * 2000-07-19 2002-01-31 Ricoh Co Ltd 排他制御方法、排他制御装置、排他制御プログラムを記録した記録媒体、並びに、データベースシステム
JP2011170414A (ja) * 2010-02-16 2011-09-01 Nec Corp ロック競合管理装置、ロック競合管理方法およびプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016081204A (ja) * 2014-10-15 2016-05-16 三菱電機株式会社 電子制御装置
CN112699137A (zh) * 2021-01-04 2021-04-23 远光软件股份有限公司 一种跨系统的财务数据处理方法及装置
CN112699137B (zh) * 2021-01-04 2023-09-12 远光软件股份有限公司 一种跨系统的财务数据处理方法及装置

Also Published As

Publication number Publication date
GB2498835B (en) 2014-01-01
US8898127B2 (en) 2014-11-25
GB2498835A (en) 2013-07-31
US20140379679A1 (en) 2014-12-25
JP5939561B2 (ja) 2016-06-22
DE102012221037B4 (de) 2022-03-10
US20130144853A1 (en) 2013-06-06
US9189512B2 (en) 2015-11-17
DE102012221037A1 (de) 2013-06-06

Similar Documents

Publication Publication Date Title
JP5939561B2 (ja) 資源のロックを獲得する装置及び方法
Yang et al. Split-level I/O scheduling
US10185688B2 (en) Quality of service for internal I/Os using internal flow mechanism
US9413683B2 (en) Managing resources in a distributed system using dynamic clusters
US20170109203A1 (en) Task scheduling
US8006003B2 (en) Apparatus, system, and method for enqueue prioritization
JP5585140B2 (ja) 仮想計算機システムの管理プログラム,管理装置及び管理方法
US8626765B2 (en) Processing database operation requests
JP2013205880A (ja) 制御装置,制御方法,プログラム及び分散処理システム
US20200042513A1 (en) Transaction control device, transaction control method
US11086815B1 (en) Supporting access to accelerators on a programmable integrated circuit by multiple host processes
US8108573B2 (en) Apparatus, system, and method for enqueue prioritization
US20230327875A1 (en) Data flow control in distributed computing systems
CN109347899B (zh) 在分布式存储系统中写入日志数据的方法
US9965355B2 (en) System and method for dynamic collection of system management data in a mainframe computing environment
US20160154871A1 (en) System and method for managing database
EP3734459B1 (en) Method and system for prioritizing critical data object storage during backup operations
US11281654B2 (en) Customized roll back strategy for databases in mixed workload environments
CN110750498A (zh) 对象访问方法、装置及存储介质
CN107194712B (zh) 共享账户变动信息记录方法及装置、内部账户补账方法及系统
CN115840654A (zh) 消息的处理方法、系统、计算设备及可读存储介质
US11416159B2 (en) Method and system for prioritizing critical data object storage during backup operations
US11461268B2 (en) Information processing system and control method
Yang et al. Natto: Providing distributed transaction prioritization for high-contention workloads
US20130346715A1 (en) Data management apparatus and data management method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150814

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151127

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: 20160419

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20160419

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160511

R150 Certificate of patent or registration of utility model

Ref document number: 5939561

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150