(57)【特許請求の範囲】
【請求項１】
複数の資源に対する特定の順序で、当該複数の資源の各資源のロックを獲得する装置であって、
前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成する生成部と、
前記生成部により生成された前記時間排除期待度が大きい資源ほど後の順番になるように、前記特定の順序を決定する決定部と
を含む、装置。
【請求項２】
前記生成部は、前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、他の資源のロック待ちの時間の長さの期待度であるロック待ち時間排除期待度を含む前記時間排除期待度を生成する、請求項１の装置。
【請求項３】
前記生成部は、前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、当該各資源が使用されるまでの時間の長さの期待度である使用前時間排除期待度を含む前記時間排除期待度を生成する、請求項２の装置。
【請求項４】
前記複数の資源の各資源を使用するアプリケーションプログラムが当該各資源のロックの獲得を要求した回数を取得する取得部を更に備え、
前記生成部は、前記複数の資源の各資源について、前記取得部により取得された前記回数に基づいて、前記ロック待ち時間排除期待度を生成する、請求項３の装置。
【請求項５】
前記複数の資源の各資源を使用するアプリケーションプログラムが当該各資源のロックの獲得を要求した場合に、当該複数の資源を管理するソフトウェアに対して当該各資源のロックの獲得を要求した要求時刻と、当該ソフトウェアが当該各資源のロックを獲得した獲得時刻とを取得する取得部を更に備え、
前記生成部は、前記複数の資源の各資源について、前記取得部により取得された前記要求時刻と前記獲得時刻とに基づいて、前記ロック待ち時間排除期待度を生成する、請求項３の装置。
【請求項６】
前記複数の資源の各資源を使用するアプリケーションプログラムがトランザクションにおける２回目以降の資源のロックの獲得の要求として当該各資源のロックの獲得を要求した回数を取得する取得部を更に備え、
前記生成部は、前記複数の資源の各資源について、前記取得部により取得された前記回数に基づいて、前記使用前時間排除期待度を生成する、請求項３の装置。
【請求項７】
前記複数の資源の各資源を使用するアプリケーションプログラムがトランザクションにおける１回目の資源のロックの獲得の要求として当該各資源のロックの獲得を要求した場合に、当該各資源のロックが獲得された獲得時刻を取得し、当該アプリケーションプログラムが当該トランザクションにおける２回目以降の資源のロックの獲得の要求として当該各資源のロックの獲得を要求した場合に、当該各資源のロックの獲得が要求された要求時刻を取得する取得部を更に備え、
前記生成部は、前記複数の資源の各資源について、前記取得部により取得された前記獲得時刻と前記要求時刻とに基づいて、前記使用前時間排除期待度を生成する、請求項３の装置。
【請求項８】
複数の資源に対する特定の順序で、当該複数の資源の各資源のロックを獲得する装置であって、
前記特定の順序として予め定められた順序を記憶する記憶部と、
前記複数の資源のうちの特定の資源を使用するアプリケーションプログラムがトランザクションにおける１回目の資源のロックの獲得の要求として当該特定の資源のロックの獲得を要求した場合に、前記予め定められた順序において当該特定の資源よりも前の順番の資源であってロックが獲得されていない資源である他の資源を当該アプリケーションプログラムが使用する予定であれば、当該複数の資源を管理するソフトウェアに対して当該他の資源のロックの獲得を要求した時刻を第１の要求時刻として取得し、当該ソフトウェアが当該他の資源のロックを獲得した時刻を第１の獲得時刻として取得し、その後、当該ソフトウェアに対して当該特定の資源のロックの獲得を要求した時刻を当該第１の要求時刻として取得し、当該ソフトウェアが当該特定の資源のロックを獲得した時刻を当該第１の獲得時刻として取得し、当該特定の資源のロックの獲得を当該アプリケーションプログラムに応答した時刻を第２の獲得時刻として取得し、
当該アプリケーションプログラムが当該トランザクションにおける２回目以降の資源のロックの獲得の要求として当該特定の資源のロックの獲得を要求した場合に、前記予め定められた順序において当該特定の資源よりも前の順番の資源であってロックが獲得されていない資源である他の資源を当該アプリケーションプログラムが使用する予定であれば、当該ソフトウェアに対して当該他の資源のロックの獲得を要求した時刻を当該第１の要求時刻として取得し、当該ソフトウェアが当該他の資源のロックを獲得した時刻を当該第１の獲得時刻として取得し、その後、当該アプリケーションプログラムから当該特定の資源のロックの獲得が要求された時刻を第２の要求時刻として取得し、当該ソフトウェアに対して当該特定の資源のロックの獲得を要求した時刻を当該第１の要求時刻として取得し、当該ソフトウェアが当該特定の資源のロックを獲得した時刻を当該第１の獲得時刻として取得する取得部と、
前記複数の資源の各資源について、前記取得部により前記第１の要求時刻として取得された時刻と、前記取得部により前記第１の獲得時刻として取得された時刻とに基づいて、当該各資源のロックの獲得を後回しにすることで当該各資源のロックを保持している時間から排除される、他の資源のロック待ちの時間の長さの期待度であるロック待ち時間排除期待度を生成し、前記取得部により前記第２の要求時刻として取得された時刻と、前記取得部により前記第２の獲得時刻として取得された時刻とに基づいて、当該各資源のロックの獲得を後回しにすることで当該各資源のロックを保持している時間から排除される、当該各資源が使用されるまでの時間の長さの期待度である使用前時間排除期待度を生成する生成部と、
前記生成部により生成された前記ロック待ち時間排除期待度と前記使用前時間排除期待度とに基づいて得られた総合期待度が大きい資源ほど後の順番になるように、前記記憶部に記憶された前記予め定められた順序を更新する更新部と
を含む、装置。
【請求項９】
複数の資源に対する特定の順序で、当該複数の資源の各資源のロックを獲得する方法であって、
前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成するステップと、
生成された前記時間排除期待度が大きい資源ほど後の順番になるように、前記特定の順序を決定するステップと
を含む、方法。
【請求項１０】
複数の資源に対する特定の順序で、当該複数の資源の各資源のロックを獲得する装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
前記複数の資源の各資源について、当該各資源のロックの獲得を後回しにした場合に当該各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成する生成部と、
前記生成部により生成された前記時間排除期待度が大きい資源ほど後の順番になるように、前記特定の順序を決定する決定部と
して機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、資源のロックを獲得する装置及び方法に関する。特に、本発明は、複数の資源に対する特定の順序でその複数の資源の各資源のロックを獲得する装置及び方法に関する。
【背景技術】
【０００２】
金融機関のシステム等では、データベース上の複数のデータにロックをかけて更新処理を行う場合がある。例えば、口座Ａから口座Ｂへの振り替えを行う場合には、口座Ａの残高を保持するデータベースのレコードと口座Ｂの残高を保持するデータベースのレコードにロックをかけた上で、口座Ａから出金して口座Ｂに入金する処理を行う。ところが、複数のロックをかける複数のトランザクションが同時に実行される場合には、ロックをかける順番が不定であると、デッドロックが発生する。例えば、口座Ａから口座Ｂへの振り替えと口座Ｂから口座Ａへの振り替えがほぼ同時に発生し、一方が口座Ａ，Ｂの順に、他方が口座Ｂ，Ａの順にロックをかけるとすると、口座Ａ，Ｂのロックの何れもコミットまで開放されないため、デッドロックが発生する。    
【０００３】
デッドロックを回避するための一般的な方法として、ロックをかける複数の資源に対して、口座番号順等のロック順序を定め、ロックが必要になる処理の最初で、このロック順序に従って必要な全ての資源にロックをかける方法が知られている。この方法では、例えば、まず、口座Ａと口座Ｂのロック順序を、口座番号順に口座Ａ、口座Ｂの順と定める。そして、口座Ａから口座Ｂへの振り替えを行う場合、口座Ｂから口座Ａへの振り替えを行う場合の何れにおいても、最初に口座Ａと口座Ｂのロックを口座Ａ，Ｂの順に取得する。その後、口座Ａから出金して口座Ｂに入金する処理、及び、口座Ｂから出金して口座Ａに入金する処理を行う。
【０００４】
尚、デッドロックを回避するためにロック順序を定めておく技術は、公報記載の技術としても知られている（例えば、特許文献１、２参照）。
特許文献１は、ロック順序の規約を記憶しておくロック順序規約記憶手段を設け、ロック命令移動手段がロック命令をロック順序規約を遵守しながらプログラムの後方に移動し、アンロック命令移動手段がアンロック命令をプログラムの前方に移動する技術を開示する。
【０００５】
特許文献２は、複数の共有資源と、複数の共有資源のそれぞれに設定した排他制御の優先順位を格納する排他制御管理テーブルとを備え、プログラム制御手段が、複数の共有資源を用いる複数のプログラムをそれぞれ独立に実行するにあたり、排他制御管理テーブルに格納された優先順位に従って順次対応する共有資源を排他的にロックする技術を開示する。
【０００６】
また、ロック待ちによるシステムの性能の低下を防止する技術も知られている（例えば、特許文献３〜７参照）。
特許文献３は、機械命令により、主記憶装置上の特定領域の記憶内容を調べ、ロック未獲得なら、ロックを獲得し、ロック獲得が失敗した場合には、ロック獲得試行回数をカウントし、ロック獲得試行回数が予め定められた上限値を越えたとき、自分とは異なるタスクを実行してもよいことをＯＳに通知する技術を開示する。
【０００７】
特許文献４は、ロック命令とアンロック命令を備えた複数のプロセッサから共有メモリのデータにアクセスするもので、共有メモリは、データのアドレスを示すアドレス情報を格納するためのアドレス情報格納部、アドレス情報に対応してアドレス情報が示すデータに対するロックの試行回数を各プロセッサ毎にカウントするためのアクセスカウンタ、及びアドレス情報に対応するデータがロックされているか否かを示すロックフラグを格納するロックフラグ部の組を保持するアクセス保持部を具備し、これらを用いてロックの試行回数の多いものから順にロックの権限を割り当てる技術を開示する。
【０００８】
特許文献５は、トランザクションの実行毎にその処理の所要時間を計測し、平均所要時間を保存しておき、同一データに対するトランザクション間の競合が起こった場合に、保存されている各トランザクションの過去の平均所要時間をスケジューリングの判断材料として用いる技術を開示する。
【０００９】
特許文献６は、トレースログとマッピングテーブルとを参照して解析し、オペレーションとそのオペレーションに基づいて実行されたプログラムとそのプログラムのトレースログとを対応付けて格納し、格納したオペレーションとそのオペレーションに基づいて実行されたプログラムとそのプログラムのトレースログを参照し、ロック形式毎にオペレーションに対するトレースログを評価してプログラム実行装置で用いるロック形式を決定し、決定したロック形式の複数のプログラム実行装置への設定を行う技術を開示する。
【００１０】
特許文献７は、タスクのロック優先度としてそのタスクがロック中の資源をロック待ちしているタスクの数の単純増加関数で計算される値を設定するロック優先度設定手段と、ロック優先度にしたがってロック待ち行列内の要求を並べ換えるロック順序変更手段とを有する技術を開示する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平６−１０３０９１号公報
【特許文献２】特開２００２−７１４８号公報
【特許文献３】特開平５−２５７９０２号公報
【特許文献４】特開平６−３３２７８９号公報
【特許文献５】特開平１０−１４３４１０号公報
【特許文献６】特開２００９−３７５４４号公報
【特許文献７】特開平５−１２０４１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述したロック順序を予め定めておく方法を用いることにより、デッドロックを回避することは可能である。しかしながら、処理性能上の課題がある。ある口座に関する入金又は出金のトランザクションが集中した場合、システムのスループットは、その口座のロックを保持する時間（ロック保持時間）に左右される。例えば、ある口座の平均ロック保持時間が０．０２秒である場合、その口座が関連する処理は、１秒あたり最大５０（＝１／０．０２）件までしか行うことができない。処理が集中する口座については、その口座の１回のロック保持時間をできるだけ短くすることが望ましいが、上記の方法には、次の２つの問題がある。
【００１３】
（１）他のロックを獲得するための待ち時間がロック保持時間に含まれる。
ロック順序によっては、他のロックを獲得するための待ち時間（ロック待ち時間）が、ロック保持時間に含まれてしまう。例えば、口座Ａ，Ｂの順にロックを獲得すると予め定めているとすると、口座Ａのロック保持時間に口座Ｂのロック待ち時間が含まれるので、口座Ａに処理が集中する場合に不利になる。
【００１４】
（２）ロック獲得を遅延させることができない。
上述した方法では、複数のロックを処理の最初でまとめて獲得しているが、ロック保持時間を短縮するためには、ロック獲得を実際に必要になるまで遅延させることが望ましい。しかしながら、例えば、口座Ａ，Ｂの順にロックを獲得すると予め定めているとすると、口座Ａに処理が集中する場合でも、口座Ａのロックを最初に獲得する必要があり、口座Ａのロック保持時間を短縮できない。
【００１５】
大量のトランザクションを処理し、ロック待ちが多発するシステムでは、この２つの問題の発生を抑制して、システム全体の合計ロック占有時間をできるだけ短くすれば、システム全体のスループットを向上させることができる。
しかしながら、特許文献１、２の技術では、ロック獲得の順番が予め決められているため、上記の２つの問題を解決することはできない。
また、特許文献３〜７の技術も、ロック待ちによるシステムの性能の低下を防止するものではあるが、上記２つの問題に対する解決策を提示するものではない。
【００１６】
本発明の目的は、資源のロックを保持している時間をシステム全体として短縮することにある。
本発明の他の目的は、資源のロックを保持している時間に含まれる他の資源のロック待ちの時間をシステム全体として短縮することにある。
本発明の更に他の目的は、資源のロックを保持している時間に含まれるその資源が使用されるまでの時間をシステム全体として短縮することにある。
【課題を解決するための手段】
【００１７】
かかる目的のもと、本発明は、複数の資源に対する特定の順序で、複数の資源の各資源のロックを獲得する装置であって、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成する生成部と、生成部により生成された時間排除期待度が大きい資源ほど後の順番になるように、特定の順序を決定する決定部とを含む、装置を提供する。
【００１８】
ここで、生成部は、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、他の資源のロック待ちの時間の長さの期待度であるロック待ち時間排除期待度を含む時間排除期待度を生成する、ものであってよいし、更に、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、各資源が使用されるまでの時間の長さの期待度である使用前時間排除期待度を含む時間排除期待度を生成する、ものであってよい。
【００１９】
その場合、この装置は、複数の資源の各資源を使用するアプリケーションプログラムが各資源のロックの獲得を要求した回数を取得する取得部を更に備え、生成部は、複数の資源の各資源について、取得部により取得された回数に基づいて、ロック待ち時間排除期待度を生成する、ものであってもよいし、複数の資源の各資源を使用するアプリケーションプログラムが各資源のロックの獲得を要求した場合に、複数の資源を管理するソフトウェアに対して各資源のロックの獲得を要求した要求時刻と、ソフトウェアが各資源のロックを獲得した獲得時刻とを取得する取得部を更に備え、生成部は、複数の資源の各資源について、取得部により取得された要求時刻と獲得時刻とに基づいて、ロック待ち時間排除期待度を生成する、ものであってもよい。また、この装置は、複数の資源の各資源を使用するアプリケーションプログラムが２回目以降の資源のロックの獲得の要求として各資源のロックの獲得を要求した回数を取得する取得部を更に備え、生成部は、複数の資源の各資源について、取得部により取得された回数に基づいて、使用前時間排除期待度を生成する、ものであってもよいし、複数の資源の各資源を使用するアプリケーションプログラムが１回目の資源のロックの獲得の要求として各資源のロックの獲得を要求した場合に、各資源のロックが獲得された獲得時刻を取得し、アプリケーションプログラムが２回目以降の資源のロックの獲得の要求として各資源のロックの獲得を要求した場合に、各資源のロックの獲得が要求された要求時刻を取得する取得部を更に備え、生成部は、複数の資源の各資源について、取得部により取得された獲得時刻と要求時刻とに基づいて、使用前時間排除期待度を生成する、ものであってもよい。
【００２０】
また、本発明は、複数の資源に対する特定の順序で、複数の資源の各資源のロックを獲得する装置であって、特定の順序として予め定められた順序を記憶する記憶部と、複数の資源のうちの特定の資源を使用するアプリケーションプログラムが１回目の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した場合に、予め定められた順序において特定の資源よりも前の順番の資源であってロックが獲得されていない資源である他の資源をアプリケーションプログラムが使用する予定であれば、複数の資源を管理するソフトウェアに対して他の資源のロックの獲得を要求した時刻を第１の要求時刻として取得し、ソフトウェアが他の資源のロックを獲得した時刻を第１の獲得時刻として取得し、その後、ソフトウェアに対して特定の資源のロックの獲得を要求した時刻を第１の要求時刻として取得し、ソフトウェアが特定の資源のロックを獲得した時刻を第１の獲得時刻として取得し、特定の資源のロックが獲得された時刻を第２の獲得時刻として取得し、アプリケーションプログラムが２回目以降の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した場合に、予め定められた順序において特定の資源よりも前の順番の資源であってロックが獲得されていない資源である他の資源をアプリケーションプログラムが使用する予定であれば、ソフトウェアに対して他の資源のロックの獲得を要求した時刻を第１の要求時刻として取得し、ソフトウェアが他の資源のロックを獲得した時刻を第１の獲得時刻として取得し、その後、特定の資源のロックの獲得が要求された時刻を第２の要求時刻として取得し、ソフトウェアに対して特定の資源のロックの獲得を要求した時刻を第１の要求時刻として取得し、ソフトウェアが特定の資源のロックを獲得した時刻を第１の獲得時刻として取得する取得部と、複数の資源の各資源について、取得部により第１の要求時刻として取得された時刻と、取得部により第１の獲得時刻として取得された時刻とに基づいて、各資源のロックの獲得を後回しにすることで各資源のロックを保持している時間から排除される、他の資源のロック待ちの時間の長さの期待度であるロック待ち時間排除期待度を生成し、取得部により第２の要求時刻として取得された時刻と、取得部により第２の獲得時刻として取得された時刻とに基づいて、各資源のロックの獲得を後回しにすることで各資源のロックを保持している時間から排除される、各資源が使用されるまでの時間の長さの期待度である使用前時間排除期待度を生成する生成部と、生成部により生成されたロック待ち時間排除期待度と使用前時間排除期待度とに基づいて得られた総合期待度が大きい資源ほど後の順番になるように、記憶部に記憶された予め定められた順序を更新する更新部とを含む、装置も提供する。
【００２１】
更に、本発明は、複数の資源に対する特定の順序で、複数の資源の各資源のロックを獲得する方法であって、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成するステップと、生成された時間排除期待度が大きい資源ほど後の順番になるように、特定の順序を決定するステップとを含む、方法も提供する。
【００２２】
更にまた、本発明は、複数の資源に対する特定の順序で、複数の資源の各資源のロックを獲得する装置として、コンピュータを機能させるプログラムであって、コンピュータを、複数の資源の各資源について、各資源のロックの獲得を後回しにした場合に各資源のロックを保持している時間から排除される、時間の長さの期待度である時間排除期待度を生成する生成部と、生成部により生成された時間排除期待度が大きい資源ほど後の順番になるように、特定の順序を決定する決定部として機能させる、プログラムも提供する。
【発明の効果】
【００２３】
本発明によれば、資源のロックを保持している時間をシステム全体として短縮することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態におけるデータ処理システムの全体構成例を示したブロック図である。
【図２】本発明の実施の形態におけるデータ処理システムのアプリケーション、ロック制御装置、ＤＢＭＳの関係を示した図である。
【図３】本発明の実施の形態におけるデータ処理システムの構成要素間の情報交換の様子を示した図である。
【図４】本発明の実施の形態におけるデータ処理システムのロック制御装置が保持する統計情報の一例を示した図である。
【図５−１】本発明の実施の形態におけるデータ処理システムのロック制御装置の動作例を示したフローチャートである。
【図５−２】本発明の実施の形態におけるデータ処理システムのロック制御装置の動作例を示したフローチャートである。
【図６】本発明の実施の形態におけるデータ処理システムの統計処理装置の動作例を示したフローチャートである。
【図７】本発明の実施の形態におけるデータ処理システムの効果を示した図である。
【図８】本発明の実施の形態を適用可能なコンピュータのハードウェア構成を示した図である。
【発明を実施するための形態】
【００２５】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
まず、本実施の形態の動作の概要を説明する。
本実施の形態では、実際に資源のロックを獲得した際の統計情報を用いて、ロック保持時間にできるだけ他の資源のロック待ちを含まないようにする効果（ロック待ち排除効果）と、ロックの獲得を実際に必要になるまで遅延させることができるようにする効果（ロック獲得遅延効果）とを最大限発揮できるようにロック順序を定める。そして、このロック順序に基づいてロックを獲得することにより、ロックが集中する資源のロック保持時間を短縮し、結果として、システム全体の合計ロック占有時間を短縮することにより、システム全体のスループットを向上させる。
【００２６】
この場合、ロック順序は、システムの統計情報を用いて、次の２つの方法の何れかによって定めるものとする。
【００２７】
第１の方法は、ロック待ち排除効果のみが期待できる場合に採用される方法である。この方法では、一定期間内のロック要求回数をロック対象資源ごとに取得し、ロック要求回数が少ない順をロック順序とする。
【００２８】
第２の方法は、ロック待ち排除効果及びロック獲得遅延効果の両方が期待できる場合に採用される方法である。この方法では、一定期間内のロック要求回数と、そのうちトランザクションにおける後続のロックを要求した回数（後続ロック要求回数）とをロック対象資源ごとに取得し、次の式により算出される評価値が小さい順をロック順序とする。
評価値＝平均ロック待ち時間×ロック要求回数＋平均ロック獲得遅延期待時間×後続ロック要求回数
ここで、平均ロック待ち時間及び平均ロック獲得遅延期待時間は、見積もりによって予め与えられたものでもよいし、統計処理によって求められたものでもよい。
【００２９】
次に、このような動作を行うデータ処理システムの構成について詳細に説明する。
図１は、本実施の形態におけるデータ処理システムの全体構成例を示したブロック図である。
図示するように、本実施の形態におけるデータ処理システムは、アプリケーションプログラム（以下、単に「アプリケーション」という）１０とＤＢＭＳ（DataBase Management System）２０との間に、ロック制御装置３０と統計処理装置４０とロック順テーブル５０とを設けることにより、構成される。
【００３０】
また、図２は、図１に示したデータ処理システムの全体構成のうち、アプリケーション１０と、ＤＢＭＳ２０と、ロック制御装置３０とからなる部分を抜き出して、各構成要素の関係を示したものである。
以下、図１及び図２を参照して、本実施の形態におけるデータ処理システムの各構成要素について説明する。
【００３１】
アプリケーション１０は、業務処理を行うプログラムであり、図２に示すように、ロック制御装置３０に対して、ロック意図伝達処理１１と、ロック獲得要求処理１２ａ，１２ｂと、コミット要求処理１３とを行う。尚、図２では、ロック獲得要求処理１２ａ，１２ｂを示したが、これらを区別する必要がない場合は、ロック獲得要求処理１２と称する。また、図２には、ロック獲得要求処理１２を２回行う例を示したが、ロック獲得要求処理１２は３回以上行ってもよい。
ロック意図伝達処理１１は、トランザクションの先頭で行われる処理で、データベース上のどの資源をロックするかを伝達する処理である。
ロック獲得要求処理１２は、資源のロックが実際に必要になった時点で行われる処理で、その資源に対するロックの獲得を要求する処理である。
コミット要求処理１３は、データベース上のロックした資源の使用後に行われる処理で、コミットを要求することにより、その資源に対するロックの開放を要求する処理である。
【００３２】
ＤＢＭＳ２０は、ロックの対象となる資源を保持するデータベースを管理するプログラムである。具体的には、データベース上の資源の利用が要求されると、その資源を要求元に提供する。尚、ＤＢＭＳ２０は、一般的には、ロック対象の資源を管理する資源管理プログラムであってよいが、ここでは、その代表として、ＤＢＭＳ２０を用いるものとする。即ち、本実施の形態では、複数の資源を管理するソフトウェアの一例として、ＤＢＭＳ２０を設けている。
【００３３】
ロック制御装置３０は、ロック順テーブル５０が用意されていることを前提として、図２に示すように、準備処理３１と、ロック獲得処理３２と、ロック開放処理３３とを行う。
準備処理３１は、アプリケーション１０のロック意図伝達処理１１に応じて行われる処理で、ロック獲得処理３２のための準備を行う処理である。具体的には、ロック意図が伝達された全ての資源に対するロック順番をロック順テーブル５０から読み取り、ロック順番の小さい順にロック対象リストを作る。
ロック獲得処理３２は、アプリケーション１０のロック獲得要求処理１２に応じて行われる処理で、資源のロックを獲得する処理である。具体的には、要求された資源をロック対象リスト上で探し、その資源よりロック順番が小さい資源でロックが獲得されていないものがあれば、ロック順番が小さい順にそれらのロックの獲得をＤＢＭＳ２０に要求する。その後、要求された資源のロックの獲得をＤＢＭＳ２０に要求する。また、ロックを獲得した資源については、ロック対象リスト上にロック獲得済みであることを記録する。
ロック開放処理３３は、アプリケーション１０のコミット要求処理１３に応じて行われる処理で、資源のロックを開放する処理である。具体的には、ロックされた全ての資源に対するロックの開放をＤＢＭＳ２０に要求する。また、ロックが開放された後に、ロック対象リストを削除する。尚、ここでは、ロック開放処理３３は、アプリケーション１０のコミット要求処理１３に応じて行われることとしたが、ロールバックでロックの開放が要求されることにより行われるものでもよい。
【００３４】
統計処理装置４０は、ロック制御装置３０の動作をモニタすることにより統計情報を取得し、この統計情報に基づいてロック順序を決定する。この統計処理装置４０におけるロック順序の決定方法については、後で詳細に説明する。本実施の形態では、順序を決定する決定部の一例として、統計処理装置４０を設けている。
【００３５】
ロック順テーブル５０は、統計処理装置４０が決定したロック順序を保持し、ロック制御装置３０にロック順序を提示する。このロック順テーブル５０は、コンピュータのメインメモリ９０ｃ（図８参照）等、ロック制御装置３０が高速にアクセス可能な記憶装置により実現するとよい。
尚、デッドロック防止のため、ロック順テーブル５０は、ある時点では確定している必要がある。統計処理装置４０は、例えば、１日分又は１か月分の統計処理を行って新しいロック順テーブル５０を作成し、古いロック順テーブル５０をこの新しいロック順テーブル５０で置き換える。このロック順テーブル５０を置き換えるタイミングは、ロック順テーブル５０がアプリケーション１０の平均的なロック獲得傾向を十分に表すように定めればよい。
また、本実施の形態の仕組みを初めて使用する際には、統計処理に基づくロック順序はまだ得られていないので、ロック順序は、人間が有効と思われるものを予測して決定したり、口座番号等に従って機械的に決定したりすればよい。そして、一定期間、稼動させた後、統計処理装置４０が作成したロック順テーブル５０に置き換えるとよい。
【００３６】
次に、統計処理装置４０におけるロック順序の決定方法について詳細に説明する。
まず、ロック順序の決定方法は、アプリケーション１０の特性に応じて、次の２つの決定方法から選択するとよい。
第１の決定方法は、ロック要求回数に基づいて決定する方法であり、前述した第１の方法に対応する。
複数のロックの獲得の間に殆ど処理が含まれない場合等、ロック獲得遅延効果が見込めず、ロック待ち排除効果のみが期待できる場合は、ロック要求回数が多い資源のロック獲得を後回しにすれば、大きなロック待ち排除効果が得られる。従って、統計処理装置４０は、一定期間内のロック要求回数をロック対象資源ごとに取得し、ロック要求回数が少ない順をロック順序とする。
【００３７】
第２の決定方法は、ロック要求回数と後続ロック要求回数とに基づいて決定する方法であり、前述した第２の方法に対応する。
ロック待ち排除効果とロック獲得遅延効果の両方が期待できる場合、統計処理装置４０は、一定期間内のロック要求回数と、そのうちトランザクションにおける後続のロックを要求した回数（後続ロック要求回数）とをロック対象資源ごとに取得し、次の式により算出される評価値が小さい順をロック順序とする。
（式１）評価値＝平均ロック待ち時間×ロック要求回数＋平均ロック獲得遅延期待時間×後続ロック要求回数
【００３８】
ここで、評価値は、特定の資源のロック獲得を後回しにした場合に一定期間内のシステム全体のロック占有時間をどの程度削減できるかの期待値を表している。具体的には、「平均ロック待ち時間×ロック要求回数」が、特定の資源のロック獲得を後回しにした場合にロック待ち時間をどの程度排除できるかの期待値の合計であり、「平均ロック獲得遅延期待時間×後続ロック要求回数」が、特定の資源のロック獲得を後回しにした場合に資源の使用時期との関係でロック獲得をどの程度遅延させることができるかの期待値の合計である。そして、評価値が大きい資源、つまり、期待効果が大きい資源に後ろの方のロック順番を割り当てることにより、システム全体としてロック保持時間の短縮効果が得られるようにする。
【００３９】
尚、平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知又は推定可能の場合、統計処理装置４０は、一定期間内の全ての資源に対するロック要求回数と、一定期間内のトランザクションにおける２回目以降のロック要求回数である後続ロック要求回数とをロック制御装置３０から取得し、上記式１により、評価値を算出するとよい。
【００４０】
一方、平均ロック待ち時間の値が既知でも推定可能でもない場合、統計処理装置４０は、ロックの獲得を要求した時刻（以下、「ロック要求時刻」という）と、実際にロックが獲得された時刻（以下、「ロック獲得時刻」という）との差を、一定期間内の全てのロック獲得についてロック制御装置３０から取得し、一定期間内のロック要求回数で除算して、平均ロック待ち時間を得る。また、平均ロック獲得遅延期待時間の値が既知でも推定可能でもない場合、統計処理装置４０は、最初のロックが獲得された時刻（以下、「初回ロック獲得時刻」という）と、トランザクションにおける２つ目以降のロック獲得要求が発行された時刻（以下、「後続ロック要求時刻」という）との差を、一定期間内のトランザクションにおける２回目以降のロック獲得についてロック制御装置３０から取得し、一定期間内の後続ロック要求回数で除算して、平均ロック獲得遅延期待時間を得る。
【００４１】
また、より正確にロック順序を決定したい場合、統計処理装置４０は、平均ロック待ち時間にロック要求回数を乗ずることに代えて、個々のロック待ち時間を積算すると共に、平均ロック獲得遅延期待時間に後続ロック要求回数を乗ずることに代えて、個々のロック獲得遅延期待時間を積算するようにしてもよい。この場合、ロック順序を決定するための評価値を算出する式は次の通りとなる。
（式２）評価値＝Σロック待ち時間＋Σ（後続ロック要求時刻−初回ロック獲得時刻）
ここで、１つ目のΣは、一定期間内に特定の資源に対して発行されるロック要求についての総和を意味しており、２つ目のΣは、一定期間内に特定の資源に対して発行されるトランザクションにおける２回目以降のロック要求についての総和を意味している。
【００４２】
但し、評価値を算出する式として、（式１）及び（式２）はあくまで一例である。第１項の値が大きくなれば、その値が大きくなり、かつ、第２項の値が大きくなれば、その値が大きくなるような式であれば、如何なる式を用いてもよい。例えば、（式１）及び（式２）のように第１項と第２項を単純に足し合わせる式ではなく、第１項と第２項に重み付けをして足し合わせるような式を用いてもよい。
【００４３】
尚、ここでは、統計処理装置４０は、特定の資源のロック獲得を後回しにした場合にロック待ち時間をどの程度排除できるかの期待値（ロック待ち時間排除期待度の一例）、及び、特定の資源のロック獲得を後回しにした場合に資源の使用時期との関係でロック獲得をどの程度遅延させることができるかの期待値（使用前時間排除期待度の一例）を計算によって求め、これらの期待値に基づく計算により、期間内のシステム全体のロック占有時間をどの程度削減できるかの期待値（時間排除期待度、総合期待度の一例）を求めるようにした。しかしながら、これらの期待値を計算によって求めるのではなく、例えばテーブル等に予め設定された値を検索することによって求めてもよい。このような意味で、統計処理装置４０は、ロック待ち時間排除期待度、使用前時間排除期待度、時間排除期待度を生成する生成部の一例と言うことができる。
【００４４】
ここで、ロック制御装置３０が統計処理装置４０で用いられる統計情報を取得する処理について説明する。尚、ここでは、（式１）で平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知でも推定可能でもない場合を例にとって説明する。
図３は、図１に示したデータ処理システムの構成要素間の情報交換の様子を示した図である。図において、アプリケーション１０は、２回のロック獲得要求を行うものとしている。
【００４５】
まず、アプリケーション１０が、１回目のロック獲得要求をロック制御装置３０に送信すると、ロック制御装置３０は、ロック要求カウンタを「１」とする。また、ロック制御装置３０は、要求された資源に対するロック獲得要求をＤＢＭＳ２０に送信し、このときの時刻をロック要求時刻として記録する。
一方、要求された資源に対するロック獲得応答をＤＢＭＳ２０から受信すると、ロック制御装置３０は、このときの時刻をロック獲得時刻として記録する。また、ロック制御装置３０は、ロック獲得応答をアプリケーション１０に送信し、このときの時刻を初回ロック獲得時刻として記録する。
【００４６】
その後、アプリケーション１０が、２回目のロック獲得要求をロック制御装置３０に送信すると、ロック制御装置３０は、このときの時刻を後続ロック要求時刻として記録し、ロック要求カウンタ及び後続ロック要求カウンタを「１」とする。また、ロック制御装置３０は、要求された資源に対するロック獲得要求をＤＢＭＳ２０に送信し、このときの時刻をロック要求時刻として記録する。
一方、要求された資源に対するロック獲得応答をＤＢＭＳ２０から受信すると、ロック制御装置３０は、このときの時刻をロック獲得時刻として記録する。また、ロック制御装置３０は、ロック獲得応答をアプリケーション１０に送信する。
【００４７】
尚、上記では、アプリケーション１０からの１回のロック獲得要求に対して、要求された１つの資源に対するロック獲得要求のみをＤＢＭＳ２０に送信することとした。しかしながら、ロック対象リスト内にロック順番が小さくロックが未獲得の資源が存在する場合のように、アプリケーション１０からの１回のロック獲得要求に対して、複数の資源に対するロック獲得要求をＤＢＭＳ２０に送信する場合もある。この場合は、ロック獲得要求ごとにロック要求時刻及びロック獲得時刻を記録する。
【００４８】
このように、ロック制御装置３０は、統計情報として、ロック要求時刻と、ロック獲得時刻と、後続ロック要求時刻と、初回ロック獲得時刻と、ロック要求カウンタと、後続ロック要求カウンタとを取得する。ここで、ロック要求時刻は、ソフトウェアに対して特定の資源のロックの獲得を要求した要求時刻、第１の要求時刻の一例であり、ロック獲得時刻は、ソフトウェアが特定の資源のロックを獲得した獲得時刻、第１の獲得時刻の一例であり、初回ロック獲得時刻は、アプリケーションプログラムが１回目の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した場合に特定の資源のロックが獲得された第２の獲得時刻の一例であり、後続ロック要求時刻は、アプリケーションプログラムが２回目以降の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した場合に特定の資源のロックの獲得が要求された第２の要求時刻の一例である。また、ロック要求カウンタは、特定の資源のロックの獲得を要求した回数の一例であり、後続ロック要求カウンタは、アプリケーションプログラムが２回目以降の資源のロックの獲得の要求として特定の資源のロックの獲得を要求した回数の一例である。従って、ロック制御装置３０は、回数を取得する取得部、要求時刻と獲得時刻とを取得する取得部、第１の要求時刻と第１の獲得時刻と第２の要求時刻と第２の獲得時刻とを取得する取得部の一例である。
【００４９】
また、ロック制御装置３０は、取得した統計情報を、自装置内の図示しない統計情報記憶部に記憶する。
図４は、統計情報記憶部に記憶される統計情報の一例を示した図である。
図示するように、統計情報は、トランザクションＩＤと、資源ＩＤと、ロック要求時刻と、ロック獲得時刻と、初回ロック獲得時刻と、後続ロック要求時刻と、ロック要求カウンタと、後続ロック要求カウンタとを対応付けたものである。
【００５０】
トランザクションＩＤは、アプリケーション１０によるデータベース上の資源を利用した複数の処理からなる１つの処理単位であるトランザクションを識別する情報である。
資源ＩＤは、アプリケーション１０によって利用される資源を識別する情報である。
ロック要求時刻は、ロック制御装置３０がＤＢＭＳ２０にロックの獲得を要求した時刻であり、ロック獲得時刻は、ＤＢＭＳ２０がロック制御装置３０にロックを獲得した旨を伝えた時刻である。
初回ロック獲得時刻は、アプリケーション１０からの１回目のロック獲得要求に応じて、ロック制御装置３０がアプリケーション１０にロックが獲得された旨を伝えた時刻であり、後続ロック要求時刻は、アプリケーション１０からの２回目以降のロック獲得要求をロック制御装置３０が受け付けた時刻である。
ロック要求カウンタは、アプリケーション１０からロック獲得要求があった場合にその旨を保持するカウンタであり、後続ロック要求カウンタは、アプリケーション１０から２回目以降のロック獲得要求があった場合にその旨を保持するカウンタである。
【００５１】
次いで、本実施の形態におけるデータ処理システムの動作について説明する。
このデータ処理システムでは、まず、アプリケーション１０が、ロック意図伝達処理１１にて、複数のロック対象資源をロック制御装置３０に伝える。すると、ロック制御装置３０が、準備処理３１にて、アプリケーション１０から伝えられた複数のロック対象資源をロック順テーブル５０におけるロック順序に従って並べることにより、ロック対象リストを生成する。以下では、資源「Ａ」、「Ｂ」、「Ｃ」をこの順に並べたロック対象リストが生成されているものとして説明する。
その後、アプリケーション１０が、ロック獲得要求処理１２にて、ロック獲得要求をロック制御装置３０に送信する。すると、ロック制御装置３０が、ロック獲得処理３２を行う。
【００５２】
図５−１及び図５−２は、このときのロック制御装置３０の動作例を示したフローチャートである。
図５−１に示すように、ロック制御装置３０は、まず、今回のロック獲得要求が何回目のロック獲得要求であるかを判定する（ステップ３０１）。
【００５３】
ここで、今回のロック獲得要求が１回目のロック獲得要求であると判定されれば、次のような動作が行われる。
即ち、ロック制御装置３０は、ロック要求カウンタに「１」を記録する（ステップ３０２）。例えば、図４では、１回目のロック獲得要求で要求された資源「Ｂ」に対して、ロック要求カウンタに「１」が記録されている。
【００５４】
次に、ロック制御装置３０は、ロック順テーブル５０に記憶されたロック順序を参照し、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が、ロック対象リスト上に存在するかどうかを判定する（ステップ３０４）。
【００５５】
その結果、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が存在すると判定されれば、ロック制御装置３０は、そのような資源の中でロック順番が最も小さい資源のロック獲得要求をＤＢＭＳ２０に送信し、そのときの時刻をロック要求時刻として記録する（ステップ３０５）。そして、このロック獲得要求に応じてＤＢＭＳ２０で資源のロックが獲得された旨のロック獲得応答を受信し、そのときの時刻をロック獲得時刻として記録する（ステップ３０６）。例えば、図４では、１回目のロック獲得要求で資源「Ｂ」が要求されたが、ロック順番が資源「Ｂ」よりも小さい資源「Ａ」が存在するので、資源「Ａ」に対して、ロック要求時刻「Ｔ１１」及びロック獲得時刻「Ｔ２１」が記録されている。
【００５６】
その後、処理は、ステップ３０４に戻り、ロック制御装置３０は、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が、ロック対象リスト上に存在するかどうかの判定を、そのような資源が存在しなくなるまで行う。尚、このような判定は、ロック対象リスト上の資源のうち、ロックが獲得された資源にロック獲得済みであることを記録することによって行えばよい。
【００５７】
そして、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が存在しないと判定されるようになると、ロック制御装置３０は、今回要求された資源のロック獲得要求をＤＢＭＳ２０に送信し、そのときの時刻をロック要求時刻として記録する（ステップ３０７）。そして、このロック獲得要求に応じてＤＢＭＳ２０で資源のロックが獲得された旨のロック獲得応答を受信し、そのときの時刻をロック獲得時刻として記録する（ステップ３０８）。例えば、図４では、１回目のロック獲得要求で要求された資源「Ｂ」に対して、資源「Ａ」に対するロック獲得時刻よりも遅いロック要求時刻「Ｔ１２」及びロック獲得時刻「Ｔ２２」が記録されている。
【００５８】
また、ロック制御装置３０は、今回要求された資源のロックが獲得された旨のロック獲得応答をアプリケーション１０に送信し、そのときの時刻を初回ロック獲得時刻として記録する（ステップ３０９）。例えば、図４では、１回目のロック獲得要求で要求された資源「Ｂ」に対して、初回ロック獲得時刻「Ｔ３１」が記録される。但し、資源「Ｂ」に対する初回ロック獲得時刻は、後で他の資源に対する初回ロック獲得時刻の欄に移されるので、資源「Ｂ」に対する初回ロック獲得時刻の欄は、ここでは空欄としている。
【００５９】
一方、ステップ３０１で今回のロック獲得要求が２回目以降のロック獲得要求であると判定されれば、次のような動作が行われる。
即ち、図５−２に示すように、ロック制御装置３０は、そのときの時刻を後続ロック要求時刻として記録すると共に、ロック要求カウンタ及び後続ロック要求カウンタに「１」を記録する（ステップ３５２）。尚、このとき、１回目のロック獲得要求で要求された資源に対する初回ロック獲得時刻が今回要求された資源に対する初回ロック獲得時刻の欄に移されるものとする。例えば、図４では、２回目のロック獲得要求で要求された資源「Ａ」に対して、後続ロック要求時刻「Ｔ３２」、ロック要求カウンタ「１」、後続ロック要求カウンタ「１」が記録されているが、更に、資源「Ｂ」に対して記録されていた初回ロック獲得時刻「Ｔ３１」も記録されている。
【００６０】
次に、ロック制御装置３０は、今回要求された資源のロックが既に獲得されているかどうかを判定する（ステップ３５３）。図５−１のステップ３０５及びステップ３０６、又は、後述する図５−２のステップ３５５及びステップ３５６で、ロックが未獲得の資源のロックを獲得する場合があり、今回要求された資源のロックが既に獲得されている可能性があるので、このような判定を行っている。
【００６１】
ここで、今回要求された資源のロックが既に獲得されていると判定されれば、処理はステップ３５９へ進む。
一方、今回要求された資源のロックがまだ獲得されていないと判定されれば、ロック制御装置３０は、ロック順テーブル５０に記憶されたロック順序を参照し、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が、ロック対象リスト上に存在するかどうかを判定する（ステップ３５４）。
【００６２】
その結果、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が存在すると判定されれば、ロック制御装置３０は、そのような資源の中でロック順番が最も小さい資源のロック獲得要求をＤＢＭＳ２０に送信し、そのときの時刻をロック要求時刻として記録する（ステップ３５５）。そして、このロック獲得要求に応じてＤＢＭＳ２０で資源のロックが獲得された旨のロック獲得応答を受信し、そのときの時刻をロック獲得時刻として記録する（ステップ３５６）。
【００６３】
その後、処理は、ステップ３５４に戻り、ロック制御装置３０は、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が、ロック対象リスト上に存在するかどうかの判定を、そのような資源が存在しなくなるまで行う。尚、このような判定は、ロック対象リスト上の資源のうち、ロックが獲得された資源にロック獲得済みであることを記録することによって行えばよい。
【００６４】
そして、今回要求された資源よりもロック順番が小さく、かつ、ロックが未獲得の資源が存在しないと判定されるようになると、ロック制御装置３０は、今回要求された資源のロック獲得要求をＤＢＭＳ２０に送信し、そのときの時刻をロック要求時刻として記録する（ステップ３５７）。そして、このロック獲得要求に応じてＤＢＭＳ２０で資源のロックが獲得された旨のロック獲得応答を受信し、そのときの時刻をロック獲得時刻として記録する（ステップ３５８）。例えば、図４では、３回目のロック獲得要求で要求された資源「Ｃ」に対して、ロック要求時刻「Ｔ１３」及びロック獲得時刻「Ｔ２３」が記録されている。
【００６５】
また、ロック制御装置３０は、今回要求された資源のロックが獲得された旨のロック獲得応答をアプリケーション１０に送信する（ステップ３５９）。
【００６６】
ロック制御装置３０がこのようにして統計情報を自装置内の統計情報記憶部に記憶すると、統計処理装置４０がこの統計情報記憶部に記憶された統計情報を処理する。
図６は、このときの統計処理装置４０の動作例を示したフローチャートである。
図示するように、統計処理装置４０は、まず、統計情報記憶部から統計情報を取り出して、自装置内の図示しないメモリに記憶する（ステップ４０１）。
【００６７】
次に、統計処理装置４０は、統計情報に含まれる全ての資源に対するロック要求時刻及びロック獲得時刻に基づいて、平均ロック待ち時間を算出する（ステップ４０２）。例えば図４のような形式で統計情報が記憶されているとすると、トランザクションＩＤと資源ＩＤとの組み合わせのそれぞれについて、ロック要求時刻とロック獲得時刻との差分を算出し、この差分をトランザクションＩＤと資源ＩＤとの組み合わせの数で除することにより、平均ロック待ち時間を算出する。
【００６８】
また、統計処理装置４０は、統計情報に含まれる全ての資源に対する初回ロック獲得時刻及び後続ロック要求時刻に基づいて、平均ロック獲得遅延期待時間を算出する（ステップ４０３）。例えば図４のような形式で統計情報が記憶されているとすると、トランザクションＩＤと資源ＩＤとの組み合わせのそれぞれについて、初回ロック獲得時刻と後続ロック要求時刻との差分を算出し、この差分をトランザクションＩＤと資源ＩＤとの組み合わせの数で除することにより、平均ロック獲得遅延期待時間を算出する。但し、この場合は、初回ロック獲得時刻及び後続ロック要求時刻が記録されていないトランザクションＩＤと資源ＩＤとの組み合わせは考慮に入れない。
【００６９】
次いで、統計処理装置４０は、全ての資源の中から１つの資源に着目し、これを評価対象資源として、次の動作を行う。
即ち、まず、統計処理装置４０は、評価対象資源に対するロック要求カウンタに基づいて、ロック要求回数を算出する（ステップ４０４）。例えば図４のような形式で統計情報が記憶されているとすると、評価対象資源の資源ＩＤを含むレコードを統計情報から抽出し、それらのレコード内のロック要求カウンタの和、つまり、それらのレコードの個数を求め、これをロック要求回数とする。
【００７０】
また、統計処理装置４０は、評価対象資源に対する後続ロック要求カウンタに基づいて、後続ロック要求回数を算出する（ステップ４０５）。例えば図４のような形式で統計情報が記憶されているとすると、評価対象資源の資源ＩＤを含むレコードを統計情報から抽出し、それらのレコード内の後続ロック要求カウンタの和を求め、これを後続ロック要求回数とする。
【００７１】
そして、統計処理装置４０は、式「平均ロック待ち時間×ロック要求回数＋平均ロック獲得遅延期待時間×後続ロック要求回数」を用いて、評価対象資源に対する評価値を算出する（ステップ４０６）。その際、「平均ロック待ち時間」としては、ステップ４０２で算出した値を用い、「ロック要求回数」としては、ステップ４０４で算出した値を用い、「平均ロック獲得遅延期待時間」としては、ステップ４０３で算出した値を用い、「後続ロック要求回数」としては、ステップ４０５で算出した値を用いる。
【００７２】
その後、統計処理装置４０は、評価値を算出していない資源が他にあるかどうかを判定する（ステップ４０７）。
その結果、評価値を算出していない資源があると判定されれば、ステップ４０４〜４０６の処理を繰り返す。
一方、評価値を算出していない資源がないと判定されれば、評価値が小さい順に全ての資源をソートし（ステップ４０８）、ソートした結果をロック順テーブル５０に出力する（ステップ４０９）。
【００７３】
尚、この動作例では、ロック制御装置３０が、アプリケーション１０からロック獲得要求があった旨を保持するロック要求カウンタと、アプリケーション１０から２回目以降のロック獲得要求があった旨を保持する後続ロック要求カウンタとを記録し、統計処理装置４０が、資源ごとにロック要求カウンタを数えることによりロック要求回数を取得し、資源ごとに後続ロック要求カウンタを数えることにより後続ロック要求回数を取得するようにしたが、この限りではない。ロック制御装置３０が、アプリケーション１０からロック獲得要求がある都度カウンタをカウントアップしてロック要求回数を取得し、アプリケーション１０から２回目以降のロック獲得要求がある都度カウンタをカウントアップして後続ロック要求回数を取得するようにしてもよい。
【００７４】
また、この動作例では、（式１）で平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知でも推定可能でもない場合を例にとったが、この限りではない。例えば、（式１）で平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知又は推定可能である場合、或いは、（式２）を用いる場合に適用可能なように変更することもできる。
【００７５】
まず、（式１）で平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が既知又は推定可能である場合について説明する。この場合は、平均ロック待ち時間及び平均ロック獲得遅延期待時間の値が与えられるので、これらの値を統計情報に基づいて算出する必要はない。従って、ロック制御装置３０は、ロック要求時刻、ロック獲得時刻、初回ロック獲得時刻、及び、後続ロック要求時刻を取得しなくてよく、統計処理装置４０は、ステップ４０２及びステップ４０３の処理を行わなくてよい。
【００７６】
次に、（式２）を用いる場合について説明する。この場合は、ロック要求回数及び後続ロック要求回数を用いないので、ロック制御装置３０は、ロック要求カウンタ及び後続ロック要求カウンタを取得しなくてよい。また、統計処理装置４０は、ステップ４０２〜ステップ４０５の処理を行わずに、ステップ４０６で、評価対象資源に対する「（ロック獲得時刻−ロック要求時刻）＋（後続ロック要求時刻−初回ロック獲得時刻）」の値を積算する処理を行うようにすればよい。その際、評価対象資源の資源ＩＤを含むレコード内に後続ロック要求時刻及び初回ロック獲得時刻が記録されていない場合は、（後続ロック要求時刻−初回ロック獲得時刻）の項は「０」とする。
【００７７】
このように、本実施の形態では、ロック獲得を後回しにした場合にロック占有時間が削減される期待度が高い資源が後になるように、ロック順テーブル５０に資源を並べるようにした。これにより、デッドロックを防ぎつつ、パフォーマンスを向上することが可能となった。
【００７８】
図７は、資源Ａのロック獲得を後回しにすることによる資源Ａのロック保持時間の短縮効果について示した図である。
（ａ）は、ロック順序が資源Ａ，Ｂの順に決められており、最適化されていない場合の例である。
（ｂ）は、このロック順序が最適化され、資源Ｂ，Ａの順に変更された場合の例である。破線楕円内の効果１が、ロック待ち排除効果（ロック獲得を後回しにした場合にロック保持時間からロック待ち時間ができるだけ排除されるようにする効果）を示しており、破線楕円内の効果２が、ロック獲得遅延効果（ロック獲得を後回しにした場合にロック保持時間から資源が使用されていない時間ができるだけ排除されるようにする効果）を示している。
【００７９】
最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。図８は、このようなコンピュータのハードウェア構成の一例を示した図である。図示するように、コンピュータは、演算手段であるＣＰＵ（Central Processing Unit）９０ａと、Ｍ／Ｂ（マザーボード）チップセット９０ｂを介してＣＰＵ９０ａに接続されたメインメモリ９０ｃと、同じくＭ／Ｂチップセット９０ｂを介してＣＰＵ９０ａに接続された表示機構９０ｄとを備える。また、Ｍ／Ｂチップセット９０ｂには、ブリッジ回路９０ｅを介して、ネットワークインターフェイス９０ｆと、磁気ディスク装置（ＨＤＤ）９０ｇと、音声機構９０ｈと、キーボード／マウス９０ｉと、フレキシブルディスクドライブ９０ｊとが接続されている。
【００８０】
尚、図８において、各構成要素は、バスを介して接続される。例えば、ＣＰＵ９０ａとＭ／Ｂチップセット９０ｂの間や、Ｍ／Ｂチップセット９０ｂとメインメモリ９０ｃの間は、ＣＰＵバスを介して接続される。また、Ｍ／Ｂチップセット９０ｂと表示機構９０ｄとの間は、ＡＧＰ（Accelerated Graphics Port）を介して接続されてもよいが、表示機構９０ｄがＰＣＩ Ｅｘｐｒｅｓｓ対応のビデオカードを含む場合、Ｍ／Ｂチップセット９０ｂとこのビデオカードの間は、ＰＣＩ Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バスを介して接続される。また、ブリッジ回路９０ｅと接続する場合、ネットワークインターフェイス９０ｆについては、例えば、ＰＣＩ Ｅｘｐｒｅｓｓを用いることができる。また、磁気ディスク装置９０ｇについては、例えば、シリアルＡＴＡ（AT Attachment）、パラレル転送のＡＴＡ、ＰＣＩ（Peripheral Components Interconnect）を用いることができる。更に、キーボード／マウス９０ｉ、及び、フレキシブルディスクドライブ９０ｊについては、ＵＳＢ（Universal Serial Bus）を用いることができる。
【００８１】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム（装置又は機器）、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤが含まれる。
【００８２】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【００８３】
１０…アプリケーション、２０…ＤＢＭＳ、３０…ロック制御装置、４０…統計処理装置、５０…ロック順テーブル
【図１】
0005939561.tif 000002
【図２】
0005939561.tif 000003
【図３】
0005939561.tif 000004
【図４】
0005939561.tif 000005
【図５−１】
0005939561.tif 000006
【図５−２】
0005939561.tif 000007
【図６】
0005939561.tif 000008
【図７】
0005939561.tif 000009
【図８】
0005939561.tif 000010