JP3621433B2 - データベース排他制御方法 - Google Patents
データベース排他制御方法 Download PDFInfo
- Publication number
- JP3621433B2 JP3621433B2 JP12157593A JP12157593A JP3621433B2 JP 3621433 B2 JP3621433 B2 JP 3621433B2 JP 12157593 A JP12157593 A JP 12157593A JP 12157593 A JP12157593 A JP 12157593A JP 3621433 B2 JP3621433 B2 JP 3621433B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- transaction
- long
- identifier
- database
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【産業上の利用分野】
本発明は、管理対象データ毎にマスタ/ローカルを問わずデータベース内で唯一の識別子であるデータ識別子の発番手段を有し、該データ識別子によりデータベース内の各データの管理を行うデータベース管理システムであって、マスタデータベースからデータ集合の一部を複写して一時的にローカルデータベースを作成し、ローカルデータベース上でデータの更新を行った後、該更新データに基づきマスタデータベースのデータを更新するサイクルであるロングトランザクションをとる分散型データベース管理システムにおいて、マスタデータベース上の各データに対する占有処理を司る、データベース排他制御方法に関する。
【0002】
【従来の技術】
従来、データベース上の各データに対する占有処理は、データベースにアクセスする各トランザクションの中でアクセスしたデータから逐次ロックし、トランザクションの終了時に該トランザクションで占有したデータのロックを全て解除する方法で行われていた。そして先行のトランザクションで占有されているデータを後行のトランザクションでアクセスしたい場合は、後行のトランザクションが先行トランザクションの終了、即ち該データのロック解除を一定時間待ち、一定時間内にロックが解除されたらデータベースアクセスを再開し、一定時間内にロックが解除されない場合はエラーとしていた。
【0003】
【発明が解決しようとする課題】
このため、マスタデータベースから業務上必要となるデータの一部を複写して、一時的にローカルデータベースを作成し、業務終了後にローカルデータベース上での更新内容をマスタデータベースに反映するサイクルを取るデータベースシステムにおいて、CAD/CAMあるいはガス・水道・電気等の施設設計業務のように、大量のデータを長時間に渡って更新する業務を行う場合は、一回のトランザクション当たりの処理時間が非常に長くなり、同一データに対する複数トランザクションからのアクセス競合があると、先行トランザクションでアクセスしたデータがなかなか占有解除されず、業務処理上は後行のトランザクションにアクセス優先権を割り当てなければならない状況下では円滑な業務遂行に支障をきたす。また、トランザクションが長時間に渡り、かつアクセス対象データが非常に多い場合、従来のようにアクセス対象データを逐次ロックする方法では、トランザクション間で、互いにアクセス対象資源の一部を占有し合って、相互にウエイト状態に陥るデッドロックが多発し、業務処理が停止してしまうという問題もある。
【0004】
本発明の目的は、上記問題点を解決するもので、一つの処理時間が長期間にわたるトランザクション(ロングトランザクション)が複数競合するデータベースシステムにおいても、トランザクション内でアクセス対象となるデータの占有処理を遅滞無く行うことができ、かつ同一データに対して複数のトランザクションから占有要求があった場合も、トランザクションの先行/後行に関係無く、業務上最も優先順位の高いトランザクションで該データの占有が行えるようにした、データベース排他制御方法を提供することにある。
【0005】
【課題を解決するための手段】
本発明のデータベース排他制御方法は、
マスタデータベース上の各データについて、当該データがどのトランザクションに占有されているかを示すロック制御フラグと、
現在実行中のロングトランザクションを識別するデータベース内ユニークなロングトランザクション識別子と、当該ロングトランザクションを実行させている利用者を識別する利用者識別子とからなるトランザクション管理表と、
を設け、
利用者が更新対象データを特定する条件式とともにロングトランザクションの開始要求を行なうと、該ロングトランザクションの識別子を払い出すとともに、該ロングトランザクション識別子を該利用者の利用者識別子とともトランザクション管理表に記憶し、
与えられた更新対象データを特定する条件式によりマスタデータベースを検索して、検索された各データの、該データを占有しているロングトランザクションの識別子であるロック制御フラグにより、それぞれの占有状況をチェックし、
該データがどのロングトランザクションからも占有されていない場合、該データのロック制御フラグに該ロングトランザクションの識別子を設定して該データを占有し、
該データが他のロングトランザクションにより占有されている場合は、該データのロック制御フラグに記録されたロングトランザクション識別子とトランザクション管理表から先行ロングトランザクションの利用者である先行利用者を特定し、
該先行利用者と当該利用者の間でお互いのロングトランザクションのどちらで該データを占有すべきかを調整し、
先行ロングトランザクションに占有権があるとした場合は、該データを当該ロングトランザクションでの更新対象データから除き、
当該ロングトランザクション、すなわち後行ロングトランザクションに占有権があるとした場合、マスタデータベース上の該データのロック制御フラグに後行ロングトランザクションの識別子を設定して占有権を先行ロングトランザクションから後行ロングトランザクションに変更し、後行ロングトランザクションに該データの更新値を与えるものである。
【0006】
【作用】
本発明は、同一のデータに対して複数のトランザクションから占有要求があった場合、後行トランザクション側で該データを占有している先行トランザクションの識別子をキーに該トランザクションの利用者を特定し、先行および後行トランザクションの利用者同志で該データの優先権がどちらにあるかを調整し、必要ならば該データの占有権を後行トランザクション側に変更することによって、業務上最も優先すべきトランザクションに更新対象データの占有権を遅滞無く委譲できるようにしたことを特徴とする。
【0007】
従来の技術とは、1つのデータに対して複数のトランザクションから占有要求があった場合、占有要求を先に発行したトランザクションに占有権を一意に設定するのではなく、占有要求の競合が発生した都度、トランザクション間(即ちトランザクションを実行している利用者間)で該データの占有権を調整して、業務上最も優先すべきトランザクションに該データの占有権を遅滞なく変更できるようにした点が異なる。
【0008】
【実施例】
次に、本発明の実施例について図面を参照して説明する。
【0009】
図1は本発明の一実施例を示すシステム構成図である。
【0010】
データベース管理システム1は、データベース内での唯一の識別子であるデータ識別子を発番するデータ識別子発番機構13と、ロングトランザクション識別子を発番するロングトランザクション識別子発番機構11と、各ロングトランザクションを実行している利用者の識別子である利用者識別子とロングトランザクション識別子の対応表であるトランザクション管理表12を含み、マスタデータベース2からデータの集合の一部を複写して一時的にローカルデータベース3を作成し、ローカルデータベース3上でデータの更新を行なった後、該更新データに基づきマスタデータベース2のデータを更新するサイクル(ロングトランザクション)を行なう。マスタデータベース2は、マスタデータベース2上の各データ毎に該データを占有しているロングトランザクションの識別子であるロック制御フラグ41と、データ識別子42と、データ実体が格納されるカラム43からなるテーブル4を含んでいる。ローカルデータベース3は、マスタデータベース2内のテーブル4に対応し、データ識別子51とデータ実体が格納されるカラム52からなるテーブル5を含んでいる。データベース管理システム1外にはデータベースの利用者6が存在し、利用者間の対話手段7が設けられている。
【0011】
図2はデータベース管理システム1における排他制御動作のフローチャートである。利用者が更新対象データを特定する条件式とともにロングトランザクションの開始要求を行なうと、要求のあった利用者の利用者識別子と払い出されたロングトランザクション識別子がトランザクション管理表12に格納される。あるデータ(レコード)の占有(ロック)要求時は、まず当該データのロック制御フラグ41を検査する(ステップ81)。すでにロック済み、すなわち別のロングトランザクション識別子が設定されているかどうか調べる(ステップ82)。別のロングトランザクション識別子が設定されていなければ、マスタデータベース2内のテーブル4のロック制御フラグ41に当該ロングトランザクション識別子を設定する(ステップ88)。別のロングトランザクション識別子が設定されていれば、まず先行のロングトランザクションのトランザクション識別子を得る(ステップ83)。次に、トランザクション管理表12から、先行のロングトランザクションに対応する利用者識別子を得る(ステップ84)。次に、電話等の対話手段7を用いて、先行ロングトランザクションの利用者と占有の優先権について調整する(ステップ85,86)。当該ロングトランザクションが優先権を得られなかった場合は、当該データに対する更新は断念し、更新対象データから除外する(ステップ87)。当該ロングトランザクションが優先権を得た場合は、当該データのロック制御フラグ41に当該ロングトランザクション識別子を設定(書き換えを含む)し、データのロック状態を設定する(ステップ88)。
【0012】
なお、あるデータについてロック状態の設定が不要になった場合は、随時、該データに付帯するロック制御フラグ41のロングトランザクション識別子を削除する。また、ロングトランザクション実行中に、当該ロングトランザクションで占有していないマスタデータベース2上のデータを、当該ロングトランザクションで新たに占有する必要が生じた場合は、該データのロック制御フラグ41をチェックし、ロングトランザクション開始時と同様の処理を行なう。また、ロングトランザクション終了時には、当該ロングトランザクションで占有したデータのロック制御フラグ41から当該ロングトランザクション識別子を削除するとともに、トランザクション管理表12からロングトランザクション識別子と利用者識別子を削除する。
【0013】
図3は、初期状態で、ある利用者(仮にA氏)がロングトランザクションの開始要求を行い、マスタデータベース2のデータ集合の一部をローカルデータベース3に複写した様子を示す図である。図4は、A氏のロングトランザクション実行期間中に、別の利用者(仮にB氏)が、ロングトランザクションを開始した時の様子を示す図である。B氏は、データ識別子42がMのデータについて、図3のテーブル4からロック制御フラグ41が“00001”であることを知り、さらにトランザクション管理表12からロングトランザクション識別子“00001”のロングトランザクションの利用者がA氏であることを知る。そこで、B氏はA氏と占有権の調整を行ない、占有権を獲得した。その結果、A氏のローカルデータベース3からデータ識別子Mのデータは削除され、代りにB氏のローカルデータベース3に加えられる。そして、マスタデータベース2のデータ識別子Mのロック制御フラグ41が“00002”に書き換えられる。
【0014】
図4に示すように、あるデータ集合を占有対象として複数のロングトランザクションが同じ期間に実行されても、占有(ロック)するデータの単位を最小のレコード単位としているため、データのアクセス競合を極小化することができる。さらに、ロック制御フラグ41、トランザクション管理表12により、占有している利用者が特定できるため、アクセス競合が発生した場合でも、占有優先権の調整が可能であり、デッドロックを回避することができる。
【0015】
【発明の効果】
以上説明したように本発明は、1つのデータに対して複数のトランザクションから占有要求があった場合、占有要求の競合が発生した都度、トランザクション間、即ちトランザクションを実行している利用者間で該データの占有権を調整して、業務上最も優先すべきトランザクションに該データの占有権を遅滞なく変更できるようにしたことにより、アクセス競合の極小化とデッドロックの回避が可能となるため、CAD/CAMあるいはガス・水道・電気等の施設設計業務のように、大きな図面をベースに図形データや属性データを更新する作業を複数の作業者で分担して実施する際に、待ち時間を少なくし、効率的な業務遂行が図れる効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例のシステム構成図である。
【図2】データベース管理システム1における排他制御動作のフローチャートである。
【図3】初期状態である利用者がロングトランザクションの開始要求を行ない、マスタデータベース2のデータ集合の一部をローカルデータベース3に複写する動作の説明図である。
【図4】先行利用者がロングトランザクション実行期間中に、別の利用者がロングトランザクションを開始したときの説明図である。
【符号の説明】
1 データベース管理システム
2 マスタデータベース
3 ローカルデータベース
4 マスタデータベース2内のテーブル
5 テーブル4に対応するローカルデータベース3内のテーブル
6 データベースの利用者
7 対話手段
11 ロングトランザクション識別子発番機構
12 トランザクション管理表
13 データ識別子発番機構
41 ロック制御フラグ
42 データ識別子の格納カラム
43 テーブル4のデータ実体を格納するカラム
51 テーブル5におけるデータ識別子の格納カラム
52 テーブル5のデータ実体を格納するカラム
81〜88 ステップ
Claims (1)
- 管理対象データ毎にマスタ/ローカルを問わずデータベース内で唯一の識別子であるデータ識別子の発番手段を有し、該データ識別子によりデータベース内の各データの管理を行うデータベース管理システムであって、マスタデータベースからデータ集合の一部を複写して一時的にローカルデータベースを作成し、該ローカルデータベース上でデータの更新を行った後、該更新データに基づき前記マスタデータベースのデータを更新するサイクルであるロングトランザクションをとる分散型データベース管理システムにおいて、
マスタデータベース上の各データについて、当該データがどのトランザクションに占有されているかを示すロック制御フラグと、
現在実行中のロングトランザクションを識別する、データベース内でユニークなロングトランザクション識別子と、当該ロングトランザクションを実行させている利用者を識別する利用者識別子とからなるトランザクション管理表と、
を設け、
利用者が更新対象データを特定する条件式とともにロングトランザクションの開始要求を行なうと、該ロングトランザクションの識別子を払い出すとともに、該ロングトランザクション識別子を該利用者の利用者識別子とともトランザクション管理表に記憶し、
与えられた更新対象データを特定する条件式により前記マスタデータベースを検索して、検索された各データの、該データを占有しているロングトランザクションの識別子であるロック制御フラグにより、それぞれの占有状況をチェックし、
該データがどのロングトランザクションからも占有されていない場合、該データのロック制御フラグに該ロングトランザクションの識別子を設定して該データを占有し、
該データが他のロングトランザクションにより占有されている場合は、該データのロック制御フラグに記録されたロングトランザクション識別子と前記トランザクション管理表から先行ロングトランザクションの利用者である先行利用者を特定し、
該先行利用者と当該利用者の間でお互いのロングトランザクションのどちらで該データを占有すべきかを調整し、
先行ロングトランザクションに占有権があるとした場合は、該データを当該ロングトランザクションでの更新対象データから除き、
当該ロングトランザクション、すなわち後行ロングトランザクションに占有権があるとした場合、前記マスタデータベース上の該データのロック制御フラグに後行ロングトランザクションの識別子を設定して占有権を先行ロングトランザクションから後行ロングトランザクションに変更し、後行ロングトランザクションに該データの更新権を与えることを特徴とするデータベース排他制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12157593A JP3621433B2 (ja) | 1993-05-24 | 1993-05-24 | データベース排他制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12157593A JP3621433B2 (ja) | 1993-05-24 | 1993-05-24 | データベース排他制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06332780A JPH06332780A (ja) | 1994-12-02 |
JP3621433B2 true JP3621433B2 (ja) | 2005-02-16 |
Family
ID=14814636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP12157593A Expired - Fee Related JP3621433B2 (ja) | 1993-05-24 | 1993-05-24 | データベース排他制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3621433B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09114714A (ja) * | 1995-10-20 | 1997-05-02 | Nec Corp | 分散型ファイル管理システム |
US6138118A (en) * | 1998-07-30 | 2000-10-24 | Telcordia Technologies, Inc. | Method and system for reconciling concurrent streams of transactions in a database |
FI109620B (fi) * | 1999-10-26 | 2002-09-13 | Tellabs Oy | Menetelmä ja järjestely atomaaristen päivitysten toteuttamiseksi loogista flashmuistilaitetta käyttäen |
US7689560B2 (en) | 2000-10-13 | 2010-03-30 | Miosoft Corporation | Persistent data storage techniques |
EP1197876A3 (en) * | 2000-10-13 | 2003-04-16 | Miosoft Corporation | Persistent data storage techniques |
US7587428B2 (en) | 2000-10-13 | 2009-09-08 | Microsoft Corporation | Maintaining a relationship between two different items of data |
US7991740B2 (en) * | 2008-03-04 | 2011-08-02 | Apple Inc. | Synchronization server process |
JP5352421B2 (ja) * | 2009-10-30 | 2013-11-27 | 株式会社エヌ・ティ・ティ・データ | データアクセス装置、データアクセス方法およびデータアクセスプログラム |
JP5427593B2 (ja) * | 2009-12-25 | 2014-02-26 | 富士通フロンテック株式会社 | 情報処理装置、情報処理方法、および情報処理プログラム |
JP5830042B2 (ja) * | 2013-02-13 | 2015-12-09 | 日本電信電話株式会社 | 二重更新防止システム及び二重更新防止方法 |
JP7079573B2 (ja) * | 2017-07-18 | 2022-06-02 | 株式会社オービック | 楽観的排他処理直列化装置、楽観的排他処理直列化方法、および、楽観的排他処理直列化プログラム |
-
1993
- 1993-05-24 JP JP12157593A patent/JP3621433B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH06332780A (ja) | 1994-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1040433B1 (en) | A fine-grained consistency mechanism for optimistic concurrency control using lock groups | |
US4881166A (en) | Method for consistent multidatabase transaction processing | |
Salem et al. | Altruistic locking | |
US5890153A (en) | Database lock control method | |
US6961729B1 (en) | Processing in parallel units of work that perform DML operations on the same spanning rows | |
US8271464B2 (en) | Parallel nested transactions in transactional memory | |
KR0126245B1 (ko) | 체크인/체크아웃모델용 록킹 메카니즘 | |
JPH0522259B2 (ja) | ||
JPH10301834A (ja) | 共用メモリの管理方法 | |
JP3621433B2 (ja) | データベース排他制御方法 | |
JP2001527244A (ja) | オブジェクト・リレーショナル・マッピングにおけるクエリー実行をクライアントとサーバーとで効率的に分割する方法及び装置 | |
JPH09244896A (ja) | 永続性オブジェクトのオブジェクトベース構築方法、コンピュータ読み取り可能媒体、および情報操作システム | |
JPH0468470A (ja) | Cadシステム | |
JPH05307478A (ja) | データベース管理システムの構成法 | |
JP3741388B2 (ja) | データベースの予約アクセス処理方法 | |
Wolfson | The virtues of locking by symbolic names | |
JPH03123946A (ja) | データベースの排他制御方法 | |
JPS62162136A (ja) | 階層構造を有する索引をもつフアイルの同時更新制御方式 | |
JPH09269912A (ja) | 情報処理方法とその装置 | |
JP2546101B2 (ja) | 分散型データベース更新方法 | |
JPS63159949A (ja) | フアイルのアクセス方法 | |
JPS592159A (ja) | デ−タ制御方式 | |
CN117348977A (zh) | 一种数据库中事务并发控制的方法、装置、设备及介质 | |
JPH10133929A (ja) | データベース更新制御方式及びその方法 | |
JPH1185593A (ja) | カウンタテーブル分散配置方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20041102 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041118 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071126 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081126 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091126 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101126 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101126 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111126 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111126 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121126 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |