説明

排他制御装置および排他制御方法

【課題】アクセス方法の違いにより排他特性の異なるトランザクションが混在しているデータベースシステムにおいて、トランザクション処理のボトルネックを解消する。
【解決手段】データベースシステム101は、トランザクションを生成して各トランザクション間の整合性とトランザクションIDを管理するトランザクション管理部106と、トランザクションからデータベース内のリソースに対するアクセス制御とリソースIDを管理するリソース管理部107と、リソース管理部107から取得したトランザクションIDとリソースIDを元にグラフを作成して排他可否を判断する排他制御部108を備える。排他制御部108は、各リソースへの所定のアクセス状態に応じてグラフからサブグラフを分割し、グラフとサブグラフに基づいて排他制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースシステムにおける排他制御装置および排他制御方法に関する。
【背景技術】
【0002】
データベースシステムは、トランザクション間の整合性を維持するために排他制御機構を備えている。排他制御機構は、トランザクションがリソース(表や行など)に更新操作を行なっている間は他のトランザクションからのアクセスを排他する(操作をエラーにする、待ち状態にするなど)場合に利用される。
【0003】
ここで、データベースシステムの排他制御や高速化のための様々な技術が知られている。
例えば、特許文献1は、複数のノード(計算機)間にレプリケートされたデータを、レプリケートされていることを保証しながら各ノードで自由に排他更新することができる分散ノード間排他更新装置を開示する。
特許文献2は、データベースサーバとデータベースのデータを記憶する記憶装置に接続されており、データベースサーバが今後アクセスするデータを予測し、予測の結果に基づいて、データの先読みを記憶装置に指示するプリフェッチサーバを開示する。
【0004】
また、一般に、データベースシステムの排他制御機構はトランザクションとリソースを示すノードと排他状態や待ち状態を示すノード間のリンクから構成されるグラフを作成してトランザクション間の排他制御を行なっている。
グラフの操作はノード間のリンクの整合性を保つためにトランザクション間でアトミックに実行する必要があり、トランザクションが異なるリソースに対してアクセスした場合でもグラフを操作している間はトランザクションが直列に処理される。そのため、排他制御処理がボトルネックとなり、トランザクションのスループットが向上しない問題がある。
【0005】
この問題に対して、グラフをリソースごとにサブグラフに分割して管理する方法が開発されている。グラフを分割することにより、グラフのアトミック操作をサブグラフごとに分離できるため、トランザクション処理の同時実行性が向上する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2000−276420公報
【特許文献2】特開2005−258735公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
データベースシステムの利用方法の拡大に伴い、データベースへのアクセス方法も多岐にわたっている。例えば、オンライン処理システムでは、短時間のトランザクションが限られた特定のリソースにアクセスする。バッチ処理システムでは、長時間のトランザクションが広範囲のリソースにアクセスする。
データベースへのアクセス方法が変わると、トランザクション間の排他特性が変わる。限られた特定のリソースにアクセスするトランザクションは排他するリソースの範囲も限られており、短時間のトランザクションはリソースを排他する時間も短い。
【0008】
しかし、データベースのアクセス方法の異なるトランザクションが、同一のデータベースシステム中で混在して実行される場合、異なる特性の排他処理が同一の排他制御機構で処理される。これにより、ある業務のトランザクションで排他制御処理中に行なうグラフのアトミック操作が別業務のトランザクションが排他制御処理中に行なうグラフのアトミック操作の影響を受けて待ち時間が発生するため、トランザクション処理の同時実行性が向上しない不都合が生じる。
【0009】
上述した、グラフの分割管理方法は、ハッシュによってリソースをサブグラフに割り当てている。このため、このグラフの分割管理方法を用いても排他特性の異なる業務間でグラフのアトミック操作を分離できない。
【0010】
本発明の目的は、アクセス方法の違いにより排他特性の異なるトランザクションが混在しているデータベースシステムにおいて、トランザクション処理のボトルネックを解消することができる排他制御装置および排他制御方法を提供することである。
【課題を解決するための手段】
【0011】
上記目的を達成するため、本発明の排他制御装置は、
複数のクライアントによるデータベースへのアクセスについて排他制御する排他制御装置であって、
前記各クライアントの要求に応じて前記データベースに格納されているリソースにアクセスするために発行された各トランザクションのアクセス要求と、前記データベースに格納されている複数のリソースとの対応を示すリソース管理情報を管理するリソース管理手段と、
前記リソース管理手段によって管理されているリソース管理情報に基づいて前記各トランザクションの前記各リソースに対する排他と待ちの状態を示すグラフを作成し、前記各リソースへの所定のアクセス状態に応じて前記グラフからサブグラフを分割し、前記グラフと前記サブグラフに基づいて排他制御する排他制御手段と、
を備える。
【0012】
好ましくは、本発明の排他制御装置は、
前記排他制御手段が、アクセスされる頻度の高いリソースが存在する場合に、当該アクセスされる頻度の高いリソースをサブグラフに分割する。
【0013】
好ましくは、本発明の排他制御装置は、
前記排他制御手段が、アクセス状態の関連性の強い2つのリソースが存在する場合に、当該アクセス状態の関連性の強い2つのリソースをサブグラフに分割する。
【0014】
また、本発明の排他制御方法は、
複数のクライアントによるデータベースへのアクセスについて排他制御する排他制御方法であって、
前記各クライアントの要求に応じて前記データベースに格納されているリソースにアクセスするために発行された各トランザクションのアクセス要求と、前記データベースに格納されている複数のリソースとの対応を示すリソース管理情報を管理するリソース管理ステップと、
前記リソース管理手段によって管理されているリソース管理情報に基づいて前記各トランザクションの前記各リソースに対する排他と待ちの状態を示すグラフを作成し、前記各リソースへの所定のアクセス状態に応じて前記グラフからサブグラフを分割し、前記グラフと前記サブグラフに基づいて排他制御する排他制御ステップと、
を備える。
【発明の効果】
【0015】
本発明によれば、データベースのアクセス方法の異なるトランザクションが、同一のデータベースシステム中で混在して実行される場合において、特定のトランザクションによる排他制御に伴うグラフのアトミック操作が頻繁に発生する場合にも、他のトランザクションの排他制御はそのアトミック操作に影響を受けることなく処理することができる。
【図面の簡単な説明】
【0016】
【図1】本発明の実施形態に係る排他制御機構を備えたデータベースシステムの構成の一例を示す図である。
【図2】排他制御のためのグラフを構築する従来の手順の例を示す図である。
【図3】図2におけるグラフ管理情報をグラフの形式で示す図である。
【図4】アクセスされる頻度の高いリソースをサブグラフに格納する方法において排他制御部が利用するリソース頻度管理情報の例を示す図である。
【図5】アクセスされる頻度の高いリソースをサブグラフに格納する方法における分割処理の流れを示す図である。
【図6】アクセス状態の関連性の強い2つのリソースをサブグラフに格納する方法において排他制御部が利用するリソース関連度管理情報の例を示す図である。
【図7】アクセス状態の関連性の強い2つのリソースをサブグラフに格納する方法における分割処理の流れを示す図である。
【図8】リソースをサブグラフに分割した後の排他制御処理の流れを示す図である。
【発明を実施するための形態】
【0017】
以下、本発明を適用した排他制御機構の一実施形態について説明する。
図1は、本発明の実施形態に係る排他制御機構を備えたデータベースシステム101の構成の一例を示す図である。
データベースシステム101には、データベース102が接続されている。また、データベースシステム101は、ネットワーク104を介してクライアント103a,103b,103nと通信することができる。
【0018】
データベースシステム101は、CPU(Central Processing Unit)と、メモリと、記憶装置とを有している。
メモリは、RAM(Random Access Memory)やROM(Read Only Memory)等を含む。メモリはデータベース管理プログラムを記憶している。
CPUがデータベース管理プログラムを実行することにより、トランザクション管理部106と、リソース管理部107と、排他制御部108の各機能が実現される。
トランザクション管理部106は、クライアント103a,103b,103nからの処理要求に対してトランザクションを生成して各要求間の整合性を管理し、各トランザクションをトランザクションIDによって管理する。
リソース管理部107は、データベースの内部状態を管理し、トランザクションからの要求に応じてデータベースへのアクセスを制御する。
排他制御部108は、競合するデータベース中のリソースに対してトランザクション間の排他制御を行なう。
【0019】
記憶装置は、ハードディスク装置や光ディスク装置等を含む。記憶装置は、データベース102を記憶している。
データベース102は、データ表105a,105b,105n等のデータベースシステム101が管理対象とするデータを格納している。
【0020】
クライアント103a,103b,103nはデータベースシステム101を通じてデータベース102に格納されたデータにアクセスする。クライアント103a,103b,103nはそれぞれ異なる業務を行なう端末で、データベースへのアクセス頻度やアクセス対象とするデータの量が異なる。
なお、クライアントの数は3つに限らず、2つでも4つ以上でも良い。また、複数のクライアントの機能を実現するためのプログラムが1台のコンピュータで実行されており、1台のコンピュータが複数のクライアントを含んでいても良い。
【0021】
図2は、排他制御のためのグラフを構築する従来の手順の例を示す図である。この例は、クライアント103aのデータベース102へのアクセスと、クライアント103bのデータベース102へのアクセスとが競合するようすを示している。
クライアント103a,103b,103nがそれぞれデータベースシステム101へアクセスすると、トランザクション管理部106はそれぞれの要求に対してそれぞれトランザクションを発行する。そして、トランザクション管理部106は、トランザクションを管理するため、内部にトランザクション管理情報201を生成し、クライアントの識別子(クライアントID)とトランザクションの識別子(トランザクションID)の対応表を格納する。
次に、トランザクション管理部106は、クライアント103a,103b,103nの要求に応じてデータベース102へのアクセスをリソース管理部107へ要求する。
【0022】
例えば、トランザクション管理部106は、クライアント103a,103b,103nの要求に対してそれぞれトランザクションtrn1,trn2,trn3を割り当てて、図2に示すトランザクション管理情報201を生成し、データベース102へのアクセスをリソース管理部107へ要求する。
【0023】
リソース管理部107は、トランザクションのアクセス要求とリソース管理部107が管理するデータベース102内のリソース情報をつき合わせて、該当するデータにアクセスする。そして、リソース管理部107は、アクセス要求を管理するため、内部にリソース管理情報203を生成し、トランザクションIDとリソースIDの対応表を格納する。
【0024】
例えば、データベース102に、行202b,行202c,行202nで構成される表202aが格納されており、表202a,行202b,行202c,行202nのリソースIDがそれぞれt1,t1r1,t1r2,t1rnであるとする。そして、クライアント103aから発生したトランザクションtrn1が表202aの行202bにアクセスを要求し、クライアント103nから発生したトランザクションtrn3が表202aの行202cにアクセスを要求し、その後クライアント103bから発生したトランザクションtrn2も表202aの行202bにアクセスを要求するとする。このとき、リソース管理部107は、図2に示すリソース管理情報203を生成する。
【0025】
次に、リソース管理部107はデータベース102へのアクセスに先立って、排他制御部108に対して該当リソースがアクセス可能であるかどうかを問い合わせる。排他制御部108は、リソース管理部107からトランザクションIDとリソースIDを受け取り、グラフ管理情報204を生成し、トランザクションがリソースに対して排他できるかまたは待ち状態になるかを判定する。
【0026】
例えば、クライアント103aから発生したトランザクションtrn1が表202aの行202bにアクセスし、その後クライアント103bから発生したトランザクションtrn2も表202aの行202bにアクセスする場合、リソース管理部107から排他制御部108へ渡される情報はそれぞれ「trn1,t1r1」と「trn2,t1r1」である。
図2に示すように、排他制御部108は、クライアント103a(トランザクションtrn1)がリソースt1r1にアクセス可能であるため、グラフ管理情報204中の該当レコードに「排他」状態を設定する。一方、クライアント103b(トランザクションtrn2)はリソースt1r1が既にクライアント103a(トランザクションtrn1)によって排他されているためアクセス不可となり、排他制御部108はグラフ管理情報204中の該当レコードには「待ち」状態を設定する。
【0027】
図3は、図2におけるグラフ管理情報204をグラフの形式で示す図である。
トランザクションtrn1はリソースt1r1を排他しているため、トランザクションtrn2は待ち状態になる。トランザクションtrn3はトランザクションtrn1とトランザクションtrn2とは競合しないリソースt1r2を排他している。
【0028】
以下、上述したように構成されたデータベースシステム101において、各リソースへの所定のアクセス状態に応じて排他制御に用いるグラフを分割する方法を説明する。グラフを分割する方法には、アクセスされる頻度の高いリソースをサブグラフに格納する方法と、アクセス状態の関連性の強い2つのリソースをサブグラフに格納する方法がある。
【0029】
図4は、アクセスされる頻度の高いリソースをサブグラフに格納する方法において排他制御部108が利用するアクセス頻度管理情報401の例を示す図である。図4(A)はグラフを分割する前のアクセス頻度管理情報401の例を示し、図4(B)はグラフを分割した後のアクセス頻度管理情報401の例を示す。
グラフID402はリソースID403が示すリソースがどのグラフまたはサブグラフに属しているかを示し、アクセス頻度404はリソースID403が示すリソースがアクセスされる頻度(所定の期間、例えば1分間にアクセスされる回数の平均)を示す。
排他制御部108は、所定の期間ごとに各リソースがアクセスされる回数を集計し、アクセス頻度管理情報401を更新する。
【0030】
図4(A)に示すように、グラフ1は、アクセスされる頻度の低いリソースt1r1およびリソースt1r2と、アクセスされる頻度の高いリソースt1r3を含んでいる。例として、グラフの分割条件をアクセスされる頻度50以上と設定した場合、グラフ1はアクセスされる頻度の低いリソースt1r1とリソースt1r2からなるサブグラフとアクセスされる頻度の高いリソースt1r3からなるサブグラフに分割される(405)。
図4(B)に示すように、排他制御部108は、グラフの分割条件を満たしていないリソースt1r1とリソースt1r2はグラフ1(411)に属したままとし、グラフの分割条件を満たしたリソースt1r3は新設したサブグラフ1(412)に属するように変更する。リソースt1r3のリソースIDにはサブクラス1に属していることを示す情報(s1)を付加し(413)、アクセス頻度404を0に初期化する(414)。
【0031】
図5は、アクセスされる頻度の高いリソースをサブグラフに格納する方法における分割処理の流れを示す図である。排他制御部108は、定期的に図5に示す処理を実施することでグラフを分割する。
排他制御部108は、グラフの分割要否を決定するためアクセス頻度管理情報401中の全てのリソースについてアクセス頻度404を検査する(501、502)。排他制御部108は、アクセス頻度404が予め設定されたしきい値を下回っている場合は何も行なわない(502:偽)(図4のリソースt1r1およびリソースt1r2に該当する)。アクセス頻度404がしきい値以上である場合(502:真)は以下の処理を実行することでリソースをサブグラフに格納する。
【0032】
グラフの分割はグラフの構造を変更する必要があるため、排他制御処理と並列に実行できない(アトミック操作である)。排他制御部108は、排他制御処理が実施されないようにするためグラフにロックをかけた後(503)、サブグラフを作成する(504)(図4のサブグラフ1に該当する)。排他制御部108は、作成したサブグラフにグラフの分割条件を満たしたリソースの情報を登録し(505)(図4の例では、リソースt1r3のグラフIDをグラフ1からサブグラフ1に変更することで、サブグラフにリソース情報の登録を行なっている)、リソースIDにサブグラフに属していることを示す情報を付与する(506)(図4のリソースs1t1r3に該当する)。
【0033】
その後、排他制御部108は、分割前にリソースが属していたグラフからリソース情報を削除する(507)(図4の例では、リソースt1r3のグラフIDをグラフ1からサブグラフ1に変更することで、グラフからリソース情報の削除を行なっている)。
以上でアトミック操作が終了するので、排他制御部108はグラフをアンロックする(508)。その後、排他制御部108は、506で変更したリソースIDを排他制御部108からリソース管理部107へ通知する(509)。
【0034】
図6は、アクセス状態の関連性の強い2つのリソースをサブグラフに格納する方法において排他制御部108が利用するリソース関連度管理情報601の例を示す図である。図6(A)はグラフを分割する前のリソース関連度管理情報601の例を示し、図6(B)はグラフを分割した後のリソース関連度管理情報601の例を示す。
グラフID602は、リソースID603が示すリソースがどのグラフまたはサブグラフに属しているかを示す。関連リソースID604は、リソースID603が示すリソースと同一のトランザクションによってアクセスされるリソースを示す。関連度605は、リソースID603が示すリソースと関連リソースID604が示すリソースの関連度(例えば、同一のトランザクションによってアクセスされた回数)を示す。
【0035】
ここで、アクセス状態の関連性が強い2つのリソースとは、例えば、所定の期間に同一のトランザクションによってアクセスされた回数が多い2つのリソースをいう。排他制御部108は、所定の期間ごとに同一のトランザクションによってアクセスされる各リソースのアクセス回数を集計し、リソース関連度管理情報601を更新する。
【0036】
図6(A)に示すように、リソースt1r1とリソースt1r4は関連度の高い関連リソースを持たない。一方、リソースt1r2とリソースt1r3は相互に関連度が高く(例えば、リソースt1r2とリソースt1r3は同一のトランザクションによってアクセスされた回数が多い)、リソースt1r2はリソースt1r3を関連度の高い関連リソースとして持ち、リソースt1r3はリソースt1r2を関連度の高い関連リソースとして持つ。
例として、グラフの分割条件を関連度50以上と設定した場合、関連度の低いリソースt1r1とリソースt1r4からなるサブグラフと関連度の高いリソースt1r2とリソースt1r3からなるサブグラフに分割される。
【0037】
図6(B)に示すように、排他制御部108は、グラフの分割条件を満たしていないリソースt1r1とリソースt1r4はグラフ1(611)に属したままとし、グラフの分割条件を満たしたリソースt1r2とリソースt1r3は新設したサブグラフ1(612)に属するように変更する。リソースt1r2とリソースt1r3のリソースIDにはサブクラス1に属していることを示す情報(s1)を付加し(613,614)、関連度を0に初期化する(615)。
【0038】
図7は、アクセス状態の関連性の強い2つのリソースをサブクラスに格納する方法における分割処理の流れを示す図である。排他制御部108は、定期的に図7に示す処理を実施することでグラフを分割する。
排他制御部108は、グラフの分割要否を決定するため、リソース関連度管理情報601中の全てのリソースと関連リソースについて関連度を検査する(701,702,703)。排他制御部108は、関連度が予め設定されたしきい値を下回っている場合は何も行なわない(703:偽)(図6のリソースt1r1とリソースt1r4に該当する)。排他制御部108は、関連度がしきい値以上である場合(703:真)は以下の処理を実行することでリソースをサブグラフに格納する。
【0039】
グラフの分割はグラフの構造を変更する必要があるため、排他制御処理と並列に実行できない(アトミック操作である)。排他制御部108は、排他制御処理が実行されないようにするためグラフにロックをかけた後(704)、サブグラフが未作成の場合(705:真)はサブグラフを作成する(705,706)(図6のサブグラフ1に該当する)。排他制御部108は、作成したサブグラフにグラフの分割条件を満たしたリソースの情報を登録し(707)(図6の例では、リソースt1r2とt1r3のグラフIDをグラフ1からサブグラフ1に変更することで、サブグラフにリソース情報の登録を行なっている)、リソースIDにサブグラフに属していることを示す情報(S1)を付与する(708)(図6のリソースs1t1r2とリソースs1t1r3に該当する)。
【0040】
その後、排他制御部108は、分割前にリソースが属していたグラフからリソース情報を削除する(709)(図6の例では、リソースt1r2とリソースt1r3のグラフIDをグラフ1からサブグラフ1に変更することで、グラフからリソース情報の削除を行なっている)。以上でアトミック操作が終了するので、排他制御部108はグラフをアンロックする(710)。その後、708で変更したリソースIDを排他制御部108からリソース管理部107へ通知する(711)。
【0041】
図8は、リソースをサブグラフに分割した後の排他制御処理の流れを示す図である。
リソース管理部107はデータベース102へのアクセスに先立って、トランザクションIDとリソースIDを指定して排他制御部108に該当リソースがアクセス可能であるかどうかを問い合わせる。
排他制御部108は、リソース管理部107から問い合わせがあったリソースのリソースIDにサブグラフIDが含まれているかどうかを判断し、排他制御により操作対象とするグラフまたはサブグラフを決定する(801)。リソースIDにサブグラフIDが含まれている場合(801:真)、排他制御部108はリソースIDから操作対象のサブグラフを決定する(802,803)。リソースIDにサブグラフIDが含まれていない場合(801:偽)、排他制御部108は分割前のグラフを操作対象とする(804)。
【0042】
操作対象のグラフまたはサブグラフが決定した後の処理は、従来のグラフ操作による排他制御の手順と同様である。排他制御部108は、アトミック操作を保障するために操作対象のグラフまたはサブグラフをロックする(805)。そして、排他制御部108は、グラフ管理情報204中の操作対象のグラフまたはサブグラフにトランザクション情報が未登録の場合(806:真)は操作対象のグラフまたはサブグラフにトランザクション情報を追加し(807)、グラフ管理情報204中の操作対象のグラフまたはサブグラフにリソース情報が未登録の場合(808:真)は操作対象のグラフまたはサブグラフにリソース情報を追加する(809)。
【0043】
その後、排他制御部108は、排他制御対象のトランザクションとリソースのグラフ上の関係を検査して排他状態に遷移可能であるか、または待ち状態になるかを判定し(810)、判定結果をリソース管理部107に通知する。以上の処理が完了した後、排他制御部108は、アトミック操作を終了するためにグラフをアンロックする(811)。
【符号の説明】
【0044】
101…データベースシステム
102…データベース
103a,103b,103n…クライアント
104…ネットワーク
105a,105b,105n…データベース中のデータ(表)
106…トランザクション管理部
107…リソース管理部
108…排他制御部
201…トランザクション管理情報
202a…データベースリソース(表)
202b,202c,202n…データベースリソース(行)
203…リソース管理情報
204…グラフ管理情報
401…アクセス頻度管理情報
402,411,412…リソースが属するグラフのID
403,413…リソースID
404,405,414…リソースのアクセス頻度
601…リソース関連度管理情報
602,611,612…リソースが属するグラフのID
603,613…リソースID
604,614…関連リソースID
605,606,615…リソースと関連リソース間のリソース関連度

【特許請求の範囲】
【請求項1】
複数のクライアントによるデータベースへのアクセスについて排他制御する排他制御装置であって、
前記各クライアントの要求に応じて前記データベースに格納されているリソースにアクセスするために発行された各トランザクションのアクセス要求と、前記データベースに格納されている複数のリソースとの対応を示すリソース管理情報を管理するリソース管理手段と、
前記リソース管理手段によって管理されているリソース管理情報に基づいて前記各トランザクションの前記各リソースに対する排他と待ちの状態を示すグラフを作成し、前記各リソースへの所定のアクセス状態に応じて前記グラフからサブグラフを分割し、前記グラフと前記サブグラフに基づいて排他制御する排他制御手段と、
を備えることを特徴とする排他制御装置。
【請求項2】
前記排他制御手段が、アクセスされる頻度の高いリソースが存在する場合に、当該アクセスされる頻度の高いリソースをサブグラフに分割することを特徴とする請求項1に記載の排他制御装置。
【請求項3】
前記排他制御手段が、アクセス状態の関連性の強い2つのリソースが存在する場合に、当該アクセス状態の関連性の強い2つのリソースをサブグラフに分割することを特徴とする請求項1に記載の排他制御装置。
【請求項4】
複数のクライアントによるデータベースへのアクセスについて排他制御する排他制御方法であって、
前記各クライアントの要求に応じて前記データベースに格納されているリソースにアクセスするために発行された各トランザクションのアクセス要求と、前記データベースに格納されている複数のリソースとの対応を示すリソース管理情報を管理するリソース管理ステップと、
前記リソース管理手段によって管理されているリソース管理情報に基づいて前記各トランザクションの前記各リソースに対する排他と待ちの状態を示すグラフを作成し、前記各リソースへの所定のアクセス状態に応じて前記グラフからサブグラフを分割し、前記グラフと前記サブグラフに基づいて排他制御する排他制御ステップと、
を備えることを特徴とする排他制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate