(57)【特許請求の範囲】
【請求項１】
複数のデータベースアクセス処理が同一のデータベースをアクセスするとき、データベースに格納されているデータの一貫性を保証するための制御を行うデータベース排他制御方法において、
全ての更新処理未動作中に開始した参照処理の終了後に更新処理を開始し、
前記更新処理においてデータベースデータに対する排他制御を行い、
更新処理動作中に参照処理が開始された場合には、前記データベースデータに対する排他制御を行い、
更新処理未動作中に参照処理が開始された場合には、前記データベースデータに対する排他制御を行わないことを特徴とするデータベース排他制御方法。
【請求項２】
データベースデータに対する排他制御手段を有するデータベース管理システムにおけるデータベース排他制御システムであって、
前記排他制御手段は、
全ての更新処理未動作中に開始した参照処理の終了後に更新処理を開始し、開始された該更新処理においてデータベースデータに対する排他制御を行う更新処理開始手段と、
更新処理動作中に参照処理が開始された場合には、前記データベースデータに対する排他制御を行う更新動作中参照手段と、
更新処理未動作中に参照処理が開始された場合には、前記データベースデータに対する排他制御を行わない更新未動作中参照手段とを有することを特徴とするデータベース排他制御システム。
【請求項３】
データベースデータに対する排他制御手プロセスを有するデータベース管理システムにおけるデータベース排他制御プログラムを格納した記憶媒体であって、
前記排他制御プロセスは、
全ての更新処理未動作中に開始した参照処理の終了後に更新処理を開始し、開始された該更新処理においてデータベースデータに対する排他制御を行う更新処理開始制御プロセスと、
更新処理動作中に参照処理が開始された場合には、前記データベースデータに対する排他制御を行う更新動作中参照制御プロセスと、
更新処理未動作中に参照処理が開始された場合には、前記データベースデータに対する排他制御を行わない更新未動作中参照制御プロセスとを有することを特徴とするデータベース排他制御プログラムを格納した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベース排他制御方法及びシステム及びデータベース排他制御プログラムを格納した記憶媒体に係り、特に、データベース管理システムにおける複数のデータベースアクセス処理が同一のデータベースをアクセスするとき、データベースに格納されているデータの一貫性を保証するためのデータベース排他制御方法及びシステム及びデータベース排他制御プログラムを格納した記憶媒体に関する。
【０００２】
【従来の技術】
データベースにアクセスする処理の単位をトランザクションと呼ぶ。一般的に、複数のトランザクションが同時に走行するとき、トランザクション内で更新中のデータを、他のトランザクションから参照できないように制御し、また、トランザクション内で参照及び更新しているデータについて他のトランザクションから更新できないように制御する。これを行わない場合、例えば、ある利用者が発行したトランザクションがデータ更新を行っている最中に、さらに他の利用者が発行したトランザクションが同じデータを更新した場合、元の利用者の意図がデータベースに反映されない結果になる。このように、個々のトランザクションの観点からデータベースの一貫性を保証する制御を排他制御と呼ぶ。
【０００３】
従来の排他制御方法では、一般に、トランザクションにおける操作対象データについて参照するときは、共有施錠を行い、更新する時は、排他施錠を行う。共有施錠を行ったデータについては、他のトランザクションからの共有施錠を可能とし、多重施錠を行う。個々の利用者は、他の利用者から共有施錠が行われていない場合のみ、共有施錠から排他施錠への変更を可能とする。また、排他施錠を行ったデータについては、自己の参照及び更新は可能とするが、他者からの共有施錠は認めない。これらの制御によりあるトランザクションが使用しているデータについては、施錠中は他のトランザクションによって変更されることなく、また、他のトランザクションが使用しているデータを更新することを抑制できる。これにより一貫性を保証する。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記の従来の技術により排他制御処理を行った場合、トランザクションの処理対象のデータ個数だけ施錠を行う必要がある。しかし、実際には、Ｘ．５００ディレクトリサービス［ＣＣＩＴＴブルーブック第ＶＩＩＩ−６−８参照］などのように、参照のみの処理が多いシステムが存在する。このような参照処理のみ動作中の場合、あるトランザクションから参照されているデータが、他のトランザクションから更新されることはないため、排他制御処理は、余剰な処理となる。
【０００５】
本発明は、上記の点に鑑みなされたもおで、参照処理時における余剰な排他制御を削減することが可能なデータベース排他制御方法及びシステム及びデータベース排他制御プログラムを格納した記憶媒体を提供することを目的とする。
【０００６】
【課題を解決するための手段】
本発明は、複数のデータベースアクセス処理が同一のデータベースをアクセスするとき、データベースに格納されているデータの一貫性を保証するための制御を行うデータベース排他制御方法において、
全ての更新処理未動作中に開始した参照処理の終了後に更新処理を開始し、
更新処理においてデータベースデータに対する排他制御を行い、
更新処理動作中に参照処理が開始された場合には、データベースデータに対する排他制御を行い、
更新処理未動作中に参照処理が開始された場合には、データベースデータに対する排他制御を行わない。
【０００７】
本発明は、データベースデータに対する排他制御手段を有するデータベース管理システムにおけるデータベース排他制御システムであって、
排他制御手段は、
全ての更新処理未動作中に開始した参照処理の終了後に更新処理を開始し、開始された該更新処理においてデータベースデータに対する排他制御を行う更新処理開始手段と、
更新処理動作中に参照処理が開始された場合には、データベースデータに対する排他制御を行う更新動作中参照手段と、
更新処理未動作中に参照処理が開始された場合には、データベースデータに対する排他制御を行わない更新未動作中参照手段とを有する。
【０００８】
本発明は、データベースデータに対する排他制御手プロセスを有するデータベース管理システムにおけるデータベース排他制御プログラムを格納した記憶媒体であって、
排他制御プロセスは、
全ての更新処理未動作中に開始した参照処理の終了後に更新処理を開始し、開始された該更新処理においてデータベースデータに対する排他制御を行う更新処理開始制御プロセスと、
更新処理動作中に参照処理が開始された場合には、データベースデータに対する排他制御を行う更新動作中参照制御プロセスと、
更新処理未動作中に参照処理が開始された場合には、データベースデータに対する排他制御を行わない更新未動作中参照制御プロセスとを有する。
【０００９】
上記のように、本発明によれば、更新処理は、全ての更新処理未動作中に開始した参照処理の終了後に処理を開始するように制御することにより、更新処理と更新処理未走行中に開始した参照処理が同時には動作しないように制御する。
さらに、更新処理と、更新処理動作中に開始した参照処理は、データベースデータに対する排他制御を行い、更新処理が未動作中に開始した参照処理は、データベースデータに対する排他制御処理を行わないことにより、更新処理が未動作中に動作する参照処理に伴う排他制御処理を抑止でき、余剰となる排他制御処理を削減することが可能となる。
【００１０】
【発明の実施の形態】
図１は、本発明の排他制御システムの構成を示す。
排他制御システム１００には、データベース管理システム１０１があり、当該データベース管理システム１０１は、個々のトランザクションごとに設定され、当該トランザクションが現在動作中であるか未動作であるかの状態を把握するための開始状態フラグ１０４、現在更新中の更新トランザクションのカウントをとる更新カウンタ１０５、現在参照中の参照トランザクションのカウントをとる参照カウンタ１０６、排他制御を実現する排他制御部１０７、及び当該データベース管理システム１０１に格納されているデータ１０８から構成される。さらに、当該データベース管理システム１０１に格納されるデータ１０８の参照処理のみを行う参照トランザクション１０２と、当該データ１０８に対する更新処理を含む更新トランザクション１０３とがある。
【００１１】
排他制御部１０７は、全ての更新未動作中に参照トランザクション１０２が開始されると排他制御を行わずに、当該参照トランザクション１０２が終了後に更新トランザクション１０３の処理を開始し、データベースデータ１０８に対する排他制御処理を行う。つまり、いくつかの更新トランザクションが動作中の状態である場合には、当該更新トランザクションの開始状態フラグ１０４が“動作中”となり、これらのトランザクションが未動作の状態である場合には当該開始状態フラグ１０４が“未動作”となる。また、参照トランザクションが動作中、未動作の状態である場合も同様である。さらに、更新カウンタ１０５が０であれば更新中のトランザクションがないことを示し、参照カウンタ１０６が０であれば参照中のトランザクションがないことを示す。従って、排他制御部１０７は、開始状態フラグ１０４と更新カウンタ１０５、及び参照カウンタ１０６を参照して排他処理を行う。
【００１２】
【実施例】
以下、図面と共に本発明の実施例を説明する。
最初に、更新処理のみから構成されるトランザクションの開始処理について説明する。
図２は、本発明の一実施例の更新処理のみから構成されるトランザクション（更新トランザクション）の開始処理のフローチャートである。
【００１３】
ステップ１０１）  更新処理を含む動作中のトランザクション数を示す更新カウンタ１０５が０か否かを確認し、０の場合にはステップ１０２に移行し、０でない場合には、ステップ１０４に移行する。
ステップ１０２）  自トランザクションの開始状態フラグ１０４を更新処理が未動作であることを示す“未動作”に設定する。
【００１４】
ステップ１０３）  更新処理を含むトランザクションが未動作中に開始した参照処理のみから構成されるトランザクション数を示す更新カウンタに１を加算する。
ステップ１０４）  自トランザクションの開始状態フラグ１０４を、更新処理が動作中であることを示す“動作中”に設定する。
【００１５】
ステップ１０５）  通常の開始処理を行う。
次に、参照処理のみから構成されるトランザクションの参照処理について説明する。
図３は、本発明の一実施例の参照処理のみから構成されるトランザクションの参照処理のフローチャートである。
【００１６】
ステップ２０１）  開始状態フラグ１０４を確認し、開始状態フラグが“動作中”であるときステップ２０２に移行し、“未動作”であるとき、ステップ２０３に移行する。
ステップ２０２）  参照処理の対象データについて、排他制御部１０７に依頼し、共有施錠を行う。
【００１７】
ステップ２０３）  対象データについて参照処理を行う。
次に、更新処理のみから構成されるトランザクションの開始処理について説明する。
図４は、本発明の一実施例の参照処理のみから構成されるトランザクションの終了処理のフローチャートである。
【００１８】
ステップ３０１）  開始状態フラグ１０４を確認し、開始状態フラグ１０４が“動作中”であるとき、ステップ３０２に移行し、“未動作”であるとき、ステップ３０３に移行する。
ステップ３０２）  排他制御部１０７に依頼し、自処理でおこなった全ての共有施錠について、施錠解除を依頼する。
【００１９】
ステップ３０３）  参照カウンタから１を減算する。
ステップ３０４）  開始状態フラグを初期化し、通常の終了処理を行う。
次に、更新処理のみから構成されるトランザクションの開始処理について説明する。
図５は、本発明の一実施例の更新処理のみから構成されるトランザクションの開始処理のフローチャートである。
【００２０】
ステップ４０１）  参照カウンタ１０６が０かを確認し、０であればステップ４０３に移行し、そうでない場合にはステップ４０２に移行する。
ステップ４０２）  処理をスリープし、その後ステップ４０１に移行する。
ステップ４０３）  更新カウンタ１０５に１を加算し、通常の開始処理を行う。
【００２１】
次に、更新処理のみから構成されるトランザクションの終了処理について説明する。
図６は、本発明の一実施例の更新処理のみから構成されるトランザクションの終了処理のフローチャートである。
ステップ５０１）  更新カウンタ１０５から１を減算し、通常の終了処理を行う。
【００２２】
上記の処理フローにより、更新処理を含むトランザクションは、排他制御を実行しない参照処理のみから構成されるトランザクション実行中は動作を開始しない。
また、更新処理を含むトランザクションが動作中に走行を開始した参照処理のみから構成されるトランザクションは、参照処理時に排他制御を行う。そのため、更新処理が動作中には、参照処理に伴う排他制御を行うため、データの一貫性は保証される。
【００２３】
また、排他制御を実行しない参照処理が動作中は、更新処理は動作しないため、排他制御を行わずにデータの一貫性は保証される。
また、上記の図２から図６の処理をプログラムとして構築し、データベース管理システムのコンピュータに接続されるディスク装置に格納しておき、データベースの排他制御時にインストールする、または、フロッピーディスクやＣＤ−ＲＯＭ等の可搬記憶媒体に格納しておき、排他制御が必要となるコンピュータにインストールして汎用的に利用することも可能である。
【００２４】
つまり、全ての更新処理未動作中に開始した参照処理の終了後に更新処理を開始し、更新処理においてデータベースデータに対する排他制御を行い、更新処理動作中に参照処理が開始された場合には、前記データベースデータに対する排他制御を行い、更新処理未動作中に参照処理が開始された場合には、データベースデータに対する排他制御を行わないというロジックをプログラミングし、当該プログラムを記憶媒体に格納しておけばよい。
【００２５】
なお、本発明は、上記の実施例に限定されることなく、特許請求の範囲内で種々変更・応用が可能である。
【００２６】
【発明の効果】
上述のように、本発明のデータベース排他制御方法及びシステム及びデータベース排他制御プログラムを格納した記憶媒体によれば、更新処理を含むトランザクションは、排他制御を実行しない参照処理のみから構成されるトランザクション実行中には動作しない。また、更新処理を含むトランザクションが動作中に走行を開始した参照処理のみから構成されるトランザクションは、参照処理時に排他制御を行い、それ以外の時に開始した場合は、参照処理に伴う排他制御は行わない。これにより、従来は、トランザクションにおける全ての参照処理で必要になった排他制御を、参照処理のみ走行中の時は実行せず、更新処理の動作中のみに削減できる。
【図面の簡単な説明】
【図１】本発明の排他制御システムの構成図である。
【図２】本発明の一実施例の更新処理のみから構成されるトランザクション（更新トランザクション）の開始処理のフローチャートである。
【図３】本発明の一実施例の参照処理のみから構成されるトランザクションの参照処理のフローチャートである。
【図４】本発明の一実施例の参照処理のみから構成されるトランザクションの終了処理のフローチャートである。
【図５】本発明の一実施例の更新処理のみから構成されるトランザクションの開始処理のフローチャートである。
【図６】本発明の一実施例の更新処理のみから構成されるトランザクションの終了処理のフローチャートである。
【符号の説明】
１００  排他制御システム
１０１  データベース管理システム
１０２  参照トランザクション
１０３  更新トランザクション
１０４  開始状態フラグ
１０５  更新カウンタ
１０６  参照カウンタ
１０７  排他制御部
１０８  データ
【図１】
0003575236.tif 000002
【図２】
0003575236.tif 000003
【図３】
0003575236.tif 000004
【図４】
0003575236.tif 000005
【図５】
0003575236.tif 000006
【図６】
0003575236.tif 000007