(57)【要約】【課題】ロックエスカレーションの発動を適切に制御することである。【解決手段】ロック制御部は、トランザクション処理における書き込み対象の記憶領域がロックされているか否かを確認し、ロックされていない場合に前記書き込み対象の記憶領域をロックすると共に、監視対象の記憶領域ごとに、トランザクションごとのロック数を閾値と比較し、閾値を超える場合に当該監視対象の記憶領域におけるロックの階層を上げる。データ処理部は、前記ロック制御部によりロックされた書き込み対象の記憶領域に、ロック元である前記トランザクションにより要求されるデータを書き込む。閾値変更部は、監視対象の記憶領域ごとの前記トランザクションの実行状況を含む利得情報に基づいて、前記ロック制御部がロックの階層を上げるのに用いる閾値を変更する。【選択図】図１
2018018390.tif 000002
【特許請求の範囲】
【請求項１】
トランザクション処理における書き込み対象の記憶領域がロックされているか否かを確認し、ロックされていない場合に前記書き込み対象の記憶領域をロックすると共に、監視対象の記憶領域ごとに、トランザクションごとのロック数を閾値と比較し、閾値を超える場合に当該監視対象の記憶領域におけるロックの階層を上げるロック制御部と、
前記ロック制御部によりロックされた書き込み対象の記憶領域に、ロック元である前記トランザクションにより要求されるデータを書き込むデータ処理部と、
監視対象の記憶領域ごとの前記トランザクションの実行状況を含む利得情報に基づいて、前記ロック制御部がロックの階層を上げるのに用いる閾値を変更する閾値変更部と、
を備えるデータベース管理システム。
【請求項２】
前記閾値変更部は、第１のトランザクションの実行中に前記第１のトランザクションによる書き込み回数が多くなると、前記ロックの階層を上げやすくする方向に前記閾値を変更する、
請求項１記載のデータベース管理システム。
【請求項３】
前記閾値変更部は、第１のトランザクションの実行中に前記第１のトランザクションとは異なる第２のトランザクションによる書き込み回数が多くなると、前記ロックの階層を上げにくくする方向に前記閾値を変更する、
請求項１または２記載のデータベース管理システム。
【請求項４】
前記閾値変更部は、第１のトランザクションのロック数に基づいて前記ロック制御部により前記ロックの階層が上げられた場合において、前記第１のトランザクションとは異なる第２のトランザクションによる書き込み回数が多くなると、前記ロックの階層を上げにくくする方向に前記閾値を変更する、
請求項１から３のうちいずれか１項記載のデータベース管理システム。
【請求項５】
前記閾値変更部は、観測期間において、トランザクションごとのロック数が前記閾値に対してロックの階層を上げる条件を満たしたにも関わらず、対象となる記憶領域のロック状況によってロックの階層を上げることができなかった場合、前記ロックの階層を上げにくくする方向に前記閾値を変更する、
請求項１から４のうちいずれか１項記載のデータベース管理システム。
【請求項６】
コンピュータが、
トランザクション処理における書き込み対象の記憶領域がロックされているか否かを確認し、ロックされていない場合に前記書き込み対象の記憶領域をロックすると共に、監視対象の記憶領域ごとに、トランザクションごとのロック数を閾値と比較し、
閾値を超える場合に当該監視対象の記憶領域におけるロックの階層を上げ、
前記ロックされた書き込み対象の記憶領域に、ロック元である前記トランザクションにより要求されるデータを書き込み、
監視対象の記憶領域ごとの前記トランザクションの実行状況を含む利得情報に基づいて、前記閾値を変更する、
データベース管理方法。
【請求項７】
コンピュータに、
トランザクション処理における書き込み対象の記憶領域がロックされているか否かを確認させ、ロックされていない場合に前記書き込み対象の記憶領域をロックすると共に、監視対象の記憶領域ごとに、トランザクションごとのロック数を閾値と比較させ、
閾値を超える場合に当該監視対象の記憶領域におけるロックの階層を上げさせ、
前記ロックされた書き込み対象の記憶領域に、ロック元である前記トランザクションにより要求されるデータを書き込ませ、
監視対象の記憶領域ごとの前記トランザクションの実行状況を含む利得情報に基づいて、前記閾値を変更させる、
データベース管理プログラム。
【請求項８】
トランザクション処理における書き込み対象の記憶領域がロックされているか否かを確認し、ロックされていない場合に前記書き込み対象の記憶領域をロックすると共に、監視対象の記憶領域ごとに、トランザクションごとのロック数を閾値と比較し、閾値を超える場合に当該監視対象の記憶領域におけるロックの階層を上げるロック制御部、および前記ロック制御部によりロックされた書き込み対象の記憶領域に、ロック元である前記トランザクションにより要求されるデータを書き込むデータ処理部を備えるデータベース管理装置と通信し、前記トランザクションの実行状況を含む利得情報を取得する通信部と、
前記通信により得られる前記トランザクションの実行状況を含む利得情報に基づいて、前記ロック制御部がロックの階層を上げるのに用いる閾値を変更し、前記変更した閾値を前記データベース管理装置に送信する、
ロックエスカレーション制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベース管理システム、データベース管理方法、データベース管理プログラム、およびロックエスカレーション制御装置に関する。
【背景技術】
【０００２】
従来、トランザクション処理を行うデータベース装置等において、アクセス先の記憶領域に対してロックを行い、他のアクセス主体がアクセスできないようにする排他制御が行われている。ロックを行う対象は、ロック管理テーブルのリソースの問題などに起因し、アクセスの最小単位となるサイズから、ある程度のまとまったサイズに変更されることがある。ロックを行う対象を大きい単位に変更する処理は、ロックエスカレーションと称される。ロックエスカレーションは、例えば、トランザクションのロックの獲得数が閾値を超えた場合に実行される。
【０００３】
これに関連し、データベースを構成する論理的な階層資源に対して排他制御を行う場合、データベースアクセス中に発生するロックエスカレーションをアクセス方法及び選択率により予測して、エスカレーションの可能性がある場合にはあらかじめ細分性の大きい資源に対してロックを割当て、エスカレーション前のロックのオーバヘッドを軽減する技術が開示されている。
【０００４】
従来の技術では、ロックエスカレーションの閾値の設定を動的に行う仕組みが採用されておらず、管理者がチューニングを行う必要があった。このため、ロックエスカレーションの発動を適切に制御することができない場合があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２５３００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、ロックエスカレーションの発動を適切に制御することができるデータベース管理システム、データベース管理方法、データベース管理プログラム、およびロックエスカレーション制御装置を提供することである。
【課題を解決するための手段】
【０００７】
実施形態のデータベース管理システムは、ロック制御部と、データ処理部と、閾値変更部とを持つ。ロック制御部は、トランザクション処理における書き込み対象の記憶領域がロックされているか否かを確認し、ロックされていない場合に前記書き込み対象の記憶領域をロックすると共に、監視対象の記憶領域ごとに、トランザクションごとのロック数を閾値と比較し、閾値を超える場合に当該監視対象の記憶領域におけるロックの階層を上げる。データ処理部は、前記ロック制御部によりロックされた書き込み対象の記憶領域に、ロック元である前記トランザクションにより要求されるデータを書き込む。閾値変更部は、監視対象の記憶領域ごとの前記トランザクションの実行状況を含む利得情報に基づいて、前記ロック制御部がロックの階層を上げるのに用いる閾値を変更する。
【図面の簡単な説明】
【０００８】
【図１】実施形態のデータベース管理システム１の構成図。
【図２】ロック管理テーブル記憶部３２に記憶される情報の一例を示す図。
【図３】ロックの階層が上げられた際にロック管理テーブル記憶部３２に記憶される情報の一例を示す図。
【図４】データベース管理情報記憶部６０に記憶される情報の一例を示す図。
【図５】利得情報記憶部４２に記憶される情報の一例を示す図。
【図６】データベース管理システム１において実行される処理の流れの一例を示すフローチャート。
【図７】図６に示す処理の一部を模式的に表した図。
【図８】実施形態の手法によって周期的な処理が行われた場合の結果の一例を示す図。
【図９】実施形態の手法によって周期的な処理が行われた場合の結果の他の一例を示す図。
【図１０】第２の実施形態に係るロックエスカレーション制御装置１００の構成および使用環境を示す図。
【発明を実施するための形態】
【０００９】
以下、実施形態のデータベース管理システム、データベース管理方法、データベース管理プログラム、およびロックエスカレーション制御装置を、図面を参照して説明する。
【００１０】
（第１の実施形態）
図１は、実施形態のデータベース管理システム１の構成図である。データベース管理システム１は、一以上のクライアントＣＬとＷＡＮ（Wide Area Network）やＬＡＮ（Local Area Network）、インターネットなどのネットワークを介して接続される。クライアントＣＬは、データベース管理システム１に対してデータの書き込み、読み出し、削除などを要求するアクセス要求元である。クライアントＣＬが複数である場合、複数のクライアントＣＬは、物理的に異なる複数のコンピュータであってもよいし、アプリケーションプログラムにより実現される複数の仮想マシンであってもよい。
【００１１】
データベース管理システム１は、例えば、クライアントインターフェース１０と、要求変換部２０と、ロック制御部３０と、ロック管理テーブル記憶部３２と、データ処理部４０と、利得情報記憶部４２と、レコード情報記憶部５０と、データベース管理情報記憶部６０と、閾値変更部７０とを備える。要求変換部２０、ロック制御部３０、データ処理部４０、および閾値変更部７０は、例えば、ＣＰＵ（Central Processing Unit）などのプロセッサがプログラム（ソフトウェア）を実行することで実現される。また、これらの構成要素のうち一部または全部は、ＬＳＩ（Large Scale Integration）やＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）などのハードウェアによって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。
【００１２】
ロック管理テーブル記憶部３２、利得情報記憶部４２、レコード情報記憶部５０、およびデータベース管理情報記憶部６０は、例えば、ＲＡＭ（Random Access Memory）、ハードディスク、フラッシュメモリなどの記憶装置によって実現される。レコード情報記憶部５０およびデータベース管理情報記憶部６０は、不揮発性の記憶装置により実現されることが好ましい。なお、ロック管理テーブル記憶部３２、利得情報記憶部４２、レコード情報記憶部５０、およびデータベース管理情報記憶部６０のうち一部または全部は、データベース管理システム１に対して外部の記憶装置により実現されてもよい。すなわち、これらの記憶部のうち一部または全部は、データベース管理システム１に含まれない構成要素であってもよい。
【００１３】
クライアントインターフェース１０は、ＮＩＣ（Network Interface Card）などのネットワークインターフェースを含む。
【００１４】
要求変換部２０は、クライアントＣＬから受信される各種要求が記述される言語（例えばＳＱＬ）と、データベース管理システム１において使用されるコマンドとを相互に変換する。
【００１５】
ロック制御部３０は、ロック管理テーブル記憶部３２を参照してトランザクション処理における書き込み対象の記憶領域がロックされているか否かを確認し、ロックされていない場合に書き込み対象の記憶領域をロックする。ロックするとは、他のアクセス要求元による書き込みを禁止する排他制御を行うことである。
【００１６】
図２は、ロック管理テーブル記憶部３２に記憶される情報の一例を示す図である。ロック管理テーブル記憶部３２には、例えば、ロックされたレコードと、その「ロック元」の情報が対応付けられた情報が格納される。レコードは、テーブルに対応付けられている。レコードとは、例えば、データベース管理システム１が扱う最小単位の記憶領域であり、テーブルとは、複数のレコードをまとめたものであり、レコードよりも上位の階層の概念である。「ロック元」が登録されたレコードについて、「ロック元」以外のアクセス要求元は、書き込みを行うことができない。「ロック元」以外のアクセス要求元がロック要求を送信した場合、ロック制御部３０は、そのアクセス要求元に対してエラーを返信する。なお、図２ではロック管理テーブル記憶部３２はテーブルとレコードの２階層の構造を有するものとして表現したが、ロック管理テーブル記憶部３２は、より多階層の構造を有してもよい。
【００１７】
ここで、実施形態におけるトランザクション処理とは、一連の処理としてクライアントＣＬから受信した複数の書き込み要求が全て完了した状態と、書き込みが全く行われていない状態とのいずれかの状態であることが保障されるように制御される処理である。トランザクション処理は、複数のライトコマンドを含む情報を一括して受信することで受け付けられてもよいし、一連の処理であることを示す情報（例えばトランザクション処理の識別情報）が共通して付された複数のライトコマンドを受信することで受け付けられてもよい。また、トランザクション処理は、複数のライトコマンドではなく、一つのライトコマンドで一括して受け付けられてもよい。トランザクションとは、トランザクション処理を要求する一つの（或いは一まとまりの）要求を意味する。トランザクションには、データベース管理システム１によって認識可能な識別情報が付与されている。図２における「ＴＲ００１」および「ＴＲ００２」は、トランザクションの識別情報を例示したものである。
【００１８】
また、トランザクション処理は、例えば、ロック要求→書き込み要求→コミット→ロック解除という段階ごとに、クライアントＣＬから要求される。従って、ロック制御部３０は、トランザクション処理の一段階としてクライアントＣＬから受信されるロック要求に応じてロック制御を行う。
【００１９】
またロック制御部３０は、監視対象の記憶領域ごとに、トランザクションごとのロック数またはロック率を閾値と比較し、閾値を超える場合に当該監視対象の記憶領域におけるロックの階層を上げる（ロックエスカレーション）。図３は、ロックの階層が上げられた際にロック管理テーブル記憶部３２に記憶される情報の一例を示す図である。図３に示す状態では、「ＴＲ００２」以外のアクセス要求元は、テーブル「００２」のいずれのレコードにも書き込みを行うことができない。図３に示すようにロックエスカレーションを行うことで、テーブル「００２」の全てのレコードに対して「ロック元」を登録する場合に比して、ロック管理テーブル記憶部３２に記憶される情報のサイズを低減することができる。
【００２０】
ロックエスカレーションの閾値は、例えば、データベース管理情報記憶部６０に記憶される。図４は、データベース管理情報記憶部６０に記憶される情報の一例を示す図である。データベース管理情報記憶部６０には、テーブルごとに、テーブル名、列情報、エスカレーション閾値などが互いに対応付けられた情報が記憶される。
【００２１】
データ処理部４０は、ロック制御部３０によりロックされたレコード情報記憶部５０における書き込み対象のレコードに、ロック元であるトランザクションにより要求されるデータを書き込む。また、データ処理部４０は、クライアントＣＬから読み出し要求が受信された場合に、レコード情報記憶部５０における読み出し対象のレコードからデータを読み出し、要求変換部２０およびクライアントインターフェース１０を介してクライアントＣＬに送信する。
【００２２】
なお、図２および図３におけるテーブル、およびレコードの項目は、いずれも論理アドレスを示している。論理アドレスを物理アドレスに変換する処理については、データ処理部４０による処理以降のいずれの段階で行われてもよく、これについての説明を省略する。
【００２３】
前述したように、ロックエスカレーションは、ロック管理テーブル記憶部３２のサイズ低減に役立つものであるが、むやみにロックエスカレーションを行うと、レコード情報記憶部５０の稼働効率が低下してしまう。閾値変更部７０は、このロックエスカレーションが適切に行われるための処理を行う。
【００２４】
閾値変更部７０は、トランザクションごとの実行状況を含む利得情報に基づいて、ロック制御部３０が用いる閾値を変更する。利得情報は、例えば、データ処理部４０によって管理され、利得情報記憶部４２に記憶される。
【００２５】
図５は、利得情報記憶部４２に記憶される情報の一例を示す図である。利得情報は、例えば、データ処理部４０によって管理される。利得情報は、例えば、「テーブル名」、「エスカレーション失敗回数」、「エスカレーション後自トランザクション更新回数」、「エスカレーション後他トランザクションアクセス回数」、「トランザクションごと更新回数」などの情報が互いに対応付けられた情報である。
【００２６】
利得情報は、それぞれテーブルごとの情報であり、例えば、トランザクション処理が実行されている最中に、実行中のトランザクションを自トランザクションとして扱いながら更新される。「エスカレーション失敗回数」とは、対象期間内にロックエスカレーションが失敗した回数である。「エスカレーション後自トランザクション更新回数」は、ロックエスカレーションが行われた後において、自トランザクションがレコードの更新を行った回数である。「エスカレーション後他トランザクションアクセス回数」は、ロックエスカレーションが行われた状態において、自トランザクション以外のトランザクション（他トランザクション）が、そのテーブルのレコードに書き込みを試行した回数である。「トランザクションごと更新回数」は、各トランザクションがレコードの更新を行った回数である。
【００２７】
閾値変更部７０は、利得情報、現在の閾値、およびシステム情報（現在のメモリ使用量やＣＰＵの使用率など）に基づいて、ロックエスカレーションの閾値を変更する。例えば、閾値変更部７０は、以下の条件式（１）が満たされる場合に、閾値を上げてロックエスカレーションを行いにくくし、条件式（２）が満たされる場合に、閾値を下げてロックエスカレーションを行いやすくする。
δ＞０ or ε＞０              …（１）
α≦（γ／２）  and  β＝０  …（２）
【００２８】
ここで、δは利得情報における「エスカレーション後他トランザクションアクセス回数」であり、εは利得情報における「エスカレーション失敗回数」である。δまたはεがゼロでない場合、ロックエスカレーションの閾値が上げられる。
【００２９】
また、αは利得情報の「トランザクションごと更新回数」における自トランザクションの更新回数であり、γは現在のロックエスカレーションの閾値であり、βは利得情報における「トランザクションごと更新回数」における他トランザクションの更新回数の合計である。従って、γが基準以上にαよりも大きく、且つβがゼロである場合、ロックエスカレーションの閾値が下げられる。
【００３０】
なお、閾値の変更幅に関しては、一定幅または一定率としてもよいし、条件式に含まれる各パラメータの基準値との乖離程度に基づいて決定されてもよい。
【００３１】
上記の条件式は、あくまで一例であり、閾値変更部７０は、下記の傾向を満たす限り、如何なる条件式を設定してもよい。
（１）自トランザクションの更新回数が多くなると、閾値を下げる。
（２）他トランザクションの更新回数が多くなると、閾値を上げる。
（３）エスカレーション後他トランザクションアクセス回数が多くなると、閾値を上げる。
（４）エスカレーション失敗回数が多くなると、閾値を上げる。
【００３２】
図６は、データベース管理システム１において実行される処理の流れの一例を示すフローチャートである。本フローチャートの処理は、トランザクション処理が開始されるときに開始される。
【００３３】
まず、データベース管理システム１が、クライアントＣＬから更新すべきレコードの内容を取得すると共に、データ処理部４０が、更新するレコードについての現在のロックエスカレーションの閾値を取得する（ステップＳ１００）。次に、ロック制御部３０が、ロック管理テーブル記憶部３２に記憶されたロック管理テーブルを参照し、更新するレコードの属するテーブルが既にロックされているか否かを判定する（ステップＳ１０２）。更新するレコードの属するテーブルが既にロックされている場合、ステップＳ１１２に進む。
【００３４】
更新するレコードの属するテーブルがロックされていない場合、ロック制御部３０は、更新するレコードの属するテーブルのレコードロック数が閾値γを超えるか否かを判定する（ステップＳ１０４）。更新するレコードの属するテーブルのレコードロック数が閾値γ以下である場合、ロック制御部３０は、更新するレコードをロックする（ステップＳ１１０）。
【００３５】
更新するレコードの属するテーブルのレコードロック数が閾値γを超える場合、ロック制御部３０は、ロックエスカレーションが成功するか否かを判定する（ステップＳ１０６）。例えば、ロック制御部３０は、更新するレコードの属するテーブルにおいて実行中のトランザクションでないトランザクションによりロックされたレコードが存在しない場合に、ロックエスカレーションが成功すると判定し、そうでない場合に、ロックエスカレーションが成功しないと判定する。
【００３６】
ロックエスカレーションが成功すると判定した場合、ロック制御部３０は、更新するレコードの属するテーブルをロックする（ステップＳ１０８）。一方、ロックエスカレーションが成功しないと判定した場合、ロック制御部３０は、更新するレコードをロックする（ステップＳ１１０）。
【００３７】
次に、データ処理部４０は、レコードを更新し（ステップＳ１１２）、利得情報を更新する（ステップＳ１１４）。そして、データベース管理システム１は、実行中のトランザクション処理が終了するか否かを判定する（ステップＳ１１６）。トランザクション処理が終了しないと判定した場合、データベース管理システム１は、ステップＳ１００に処理を戻す。
【００３８】
トランザクション処理が終了すると判定した場合、データ処理部４０は、その時点における利得情報を閾値変更部７０に出力する。閾値変更部７０は、前述したように利得情報に基づいて閾値を変更または維持し（ステップＳ１１８）、その結果をデータ処理部４０に出力する。データ処理部４０は、閾値をデータベース管理情報記憶部６０に記憶させる（ステップＳ１２０）。そして、データ処理部４０が利得情報をクリアし（ステップＳ１２２）、本フローチャートの処理が終了する。
【００３９】
このような処理の結果、例えば、特定のトランザクションによる書き込み（更新）が集中する傾向があるテーブルに関しては、前述したロックエスカレーションの閾値変更手法によって、閾値が低く変更されることになる。この結果、特定のトランザクションによって繰り返し更新されるテーブルについては、閾値を低くすることでロックエスカレーションを行いやすくし、テーブルのロックを積極的に行うようにすることができる。一方、複数のトランザクションによって更新される傾向があるテーブルについては、閾値が高く変更されることになるため、ロックエスカレーションを行いにくくし、複数のトランザクションによって共有されるというテーブルの性質を反映した制御を行うことができる。これらの結果、ロックエスカレーションの発動を適切に制御することができる。
【００４０】
図７は、図６に示す処理の一部を模式的に表した図である。図示するように、まず、データ処理部４０が、データベース管理情報記憶部６０からロックエスカレーションの閾値を取得し（１）、更新した利得情報を取得する（２）。次に、データ処理部４０が閾値変更部７０に閾値と利得情報を出力し（３）、閾値変更部７０は変更または維持した閾値をデータ処理部４０に出力する（４）。そして、データ処理部４０は、取得した閾値をデータベース管理情報記憶部６０に記憶させ（５）、利得情報をクリアする（６）。
【００４１】
［実施例１］
図８は、実施形態の手法によって周期的な処理が行われた場合の結果の一例を示す図である。図８および図９では、トランザクションＡとトランザクションＢが同じような周期で、同じテーブルに書き込み要求を発行するものと仮定する。図８に示すように、周期の一巡目において、先にトランザクションＡが書き込み要求を発行すると、その途中でロックエスカレーションが発動し、トランザクションＢはトランザクションＡの処理が終了するまで書き込み要求を発行することができない。図中、破線部分はロック要求に対してエラーが返されることによって書き込み命令を発行できない期間を示している。
【００４２】
一巡目の処理が終了すると、例えば「エスカレーション後他トランザクションアクセス回数」δがカウントアップされゼロでなくなることで、ロックエスカレーションの閾値が例えば４０００から７０００に変更される。これによって、二巡目の処理では、トランザクションＡによるロックエスカレーションのタイミングが遅くなり、ロックエスカレーションをしようとしたタイミングではトランザクションＢによるロックが開始されているため、ロックエスカレーションが失敗することになる。
【００４３】
二巡目の処理が終了すると、例えば「エスカレーション失敗回数」εがカウントアップされゼロでなくなることで、ロックエスカレーションの閾値が例えば７０００から１００００に変更される。これによって、三巡目の処理では、トランザクションＡによるレコードロック数が閾値γを超えなくなり、ロックエスカレーションは試行されない。
【００４４】
このように、複数のトランザクションによって更新される傾向があるテーブルについては、閾値が高く変更されることになるため、ロックエスカレーションを行いにくくし、複数のトランザクションによって共有されるというテーブルの性質を反映した制御を行うことができる。
【００４５】
これに対し、仮に、ロックエスカレーションの閾値が変更されないものとした場合、図８に示す一巡目の状態が繰り返されることになる。この結果、トランザクションＢの待ち時間が長くなり、トランザクションＡと周回差が発生する場合もあり得るため、好ましくない事態が生じる可能性もある。
【００４６】
［実施例２］
図９は、実施形態の手法によって周期的な処理が行われた場合の結果の他の一例を示す図である。図９に示すように、一巡目の処理が終了すると、現在のロックエスカレーションの閾値γが「トランザクションごと更新回数」における自トランザクションの更新回数αに比して基準以上に大きく、且つ「トランザクションごと更新回数」における他トランザクションの更新回数の合計βがゼロであるため、閾値γが例えば５０００から４０００に変更される。この結果、二巡目の処理においてロックエスカレーションが発動することになる。
【００４７】
二巡目の処理が終了すると、前述と同様に、閾値γが例えば４０００から３０００に変更される。この結果、三巡目の処理では、より速いタイミングでロックエスカレーションが発動することになる。このように、特定のトランザクションによる書き込み（更新）が集中する傾向があるテーブルに関しては、閾値が低く変更されることになる。この結果、閾値を低くすることでロックエスカレーションを行いやすくし、テーブルのロックを積極的に行うようにすることができる。閾値を低く変更する処理は、β＝０を満たす限り、α≦（γ／２）の関係が成立しなくなるまで繰り返し実行される。
【００４８】
以上説明した第１の実施形態のデータベース管理システム１によれば、監視対象の記憶領域（例えばテーブル）ごとのトランザクションの実行状況を含む利得情報に基づいて、ロック制御部３０がロックの階層を上げるのに用いる閾値を変更する閾値変更部７０を備えることにより、ロックエスカレーションの発動を適切に制御することができる。
【００４９】
なお、上記実施形態において、ロックエスカレーションの閾値は、テーブルに付随し、トランザクションに依存しないものとしたが、ロックエスカレーションの閾値は、テーブルごと、且つトランザクションごとに設定されてもよい。
【００５０】
（第２の実施形態）
以下、第２の実施形態について説明する。図１０は、第２の実施形態に係るロックエスカレーション制御装置１００の使用環境を示す図である。ロックエスカレーション制御装置１００は、通信部１１０と閾値変更部１２０とを備える。通信部１１０は、データベース管理システム１Ａとネットワークを介して通信し、利得情報やロックエスカレーションの閾値等の情報を取得する。データベース管理システム１Ａは、第１の実施形態に係るデータベース管理システム１から閾値変更部７０を省略した構成を有する。そして、ロックエスカレーション制御装置１００の閾値変更部１２０は、第１の実施形態における閾値変更部７０と同様の処理を行い、変更または維持した閾値の情報を、通信部１１０を介してデータベース管理システム１Ａに送信する。係る構成によっても、ロックエスカレーションの発動を適切に制御することができる。
【００５１】
以上説明した少なくともひとつの実施形態によれば、トランザクション処理における書き込み対象の記憶領域がロックされているか否かを確認し、ロックされていない場合に前記書き込み対象の記憶領域をロックすると共に、監視対象の記憶領域ごとに、トランザクションごとのロック数を閾値と比較し、閾値を超える場合に当該監視対象の記憶領域におけるロックの階層を上げるロック制御部３０と、ロック制御部３０によりロックされた書き込み対象の記憶領域に、ロック元であるトランザクションにより要求されるデータを書き込むデータ処理部４０と、監視対象の記憶領域ごとのトランザクションの実行状況を含む利得情報に基づいて、ロック制御部３０がロックの階層を上げるのに用いる閾値を変更する閾値変更部７０とを持つことにより、ロックエスカレーションの発動を適切に制御することができる。
【００５２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００５３】
１、１Ａ…データベース管理システム、３０…ロック制御部、３２…ロック管理テーブル記憶部、４０…データ処理部、４２…利得情報記憶部、５０…レコード情報記憶部、６０…データベース管理情報記憶部、７０…閾値変更部、１００…ロックエスカレーション制御装置、１１０…通信部、１２０…閾値変更部
【図１】
2018018390.tif 000003
【図２】
2018018390.tif 000004
【図３】
2018018390.tif 000005
【図４】
2018018390.tif 000006
【図５】
2018018390.tif 000007
【図６】
2018018390.tif 000008
【図７】
2018018390.tif 000009
【図８】
2018018390.tif 000010
【図９】
2018018390.tif 000011
【図１０】
2018018390.tif 000012