JP3699733B2 - タプル単位排他制御方式 - Google Patents
タプル単位排他制御方式 Download PDFInfo
- Publication number
- JP3699733B2 JP3699733B2 JP18808094A JP18808094A JP3699733B2 JP 3699733 B2 JP3699733 B2 JP 3699733B2 JP 18808094 A JP18808094 A JP 18808094A JP 18808094 A JP18808094 A JP 18808094A JP 3699733 B2 JP3699733 B2 JP 3699733B2
- Authority
- JP
- Japan
- Prior art keywords
- tuple
- page
- area
- added
- length
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Description
【産業上の利用分野】
本発明は、複数のトランザクションからアクセスされるデータを記憶したデータベースを管理するデータベース管理システムにおける、タプル単位排他制御方式に関する。
【0002】
最近、複数のトランザクションからアクセスされるデータを記憶したデータベースを管理するデータベース管理システムとして、タプル指向ファイルシステムが用いられている。
【0003】
データベースのレコードをタプル指向ファイルシステムで構成する場合、ジム・グレイ、アンドレアス・リュータ;「トランザクション プロセシング:コンセプト アンド テクニック」、モーガン カウフマン出版、1993年発行(Jim Gray, Andreas Reuter; TRANSACTION PROCESSING: CONCEPTS AND TECHNIQUES, Morgan Kaufmann Publishers, Inc., 1993)に示されるように、ページは複数のレコードを含み、各レコードはタプルとして表される。図2にページの構成例を示す。ページ201はタプル202とスロット203を含む。スロットは、そのスロットが指すタプルのページ内の位置を記憶しており、各タプルは、ページの番号とスロット番号(以降、物理識別番号と記す)によって一意に識別される。タプルの追加はアドレスの正の方向に追加され、スロットはアドレスの負の方向に増加する。
【0004】
ページ内の状態はページヘッダ207で管理されており、そこにはページ内の未使用領域205の先頭オフセット206、タプルの削除、あるいはタプルが短くなった場合に発生する空き領域204のサイズ、ページに割当てられた最大スロット番号、現在使用中のスロット数等が管理されている。
【0005】
ページにタプルを追加する場合、未使用領域205が新たなタプル追加に必要なサイズより大きい場合は未使用領域の先頭オフセット206よりタプルを追加する。一方、未使用領域は十分な大きさではないが、未使用領域サイズと空き領域サイズとの和が新たなタプル追加に必要なサイズより大きい場合は、ページのコンパクションを行いタプルを追加する。未使用領域サイズと空き領域サイズとの和がタプル追加に十分な大きさでない場合は、別のページに挿入する、又は当該ページにタプルの一部分を挿入して残りを他のページに挿入する等の方法がある。
【0006】
通常データベースは複数のトランザクションから同時にアクセスされるが、上記のタプル指向ファイルシステムでは、あるトランザクション1がページからタプルを削除した後、当該トランザクションの終了より前に別のトランザクション2が当該ページのコンパクションを行って別のタプルの追加を行い、コミット(データの更新)したとする。この後、トランザクション1がロールバックした時に、当該ページにタプルを復元するだけの空き領域がない場合、タプルの復元ができない。
【0007】
この問題を解決するため、ページに対してアクセスを行ったトランザクションが終了するまで当該ページに排他ロックを取る方法や、タプルの削除等ページ内の未使用領域あるいは空き領域が大きくなった場合に、当該ページの未使用領域サイズを管理する未使用領域テーブルに対してトランザクション終了までロックを取り、タプルの追加等、当該ページの未使用領域サイズを消費する処理を行う場合は、この処理を行う前に未使用領域テーブルに対してロックが確保されてから処理を行って、タプルの復元に必要な領域を確保する方法などがある。
【0008】
【発明が解決しようとする課題】
上記従来技術の前者の方法では、トランザクション終了まで当該ページに含まれる他のタプルに対する他のトランザクションからのアクセスが妨げられることになり、トランザクションの並行性が低下する。また、後者の方法では他のタプルの参照や、当該ページの未使用領域あるいは空き領域を消費しない更新、削除等のアクセスは可能であるが、タプルの追加や未使用領域を消費する更新等が妨げられ、当該ページ内の未使用領域や空き領域を有効に利用できない。
【0009】
オブジェクト指向データベース等では、通常1つ以上のタプルを組み合わせて複雑なデータ構造を表現するが、これらのデータに対するアクセス速度を向上させるために、これらの複数のタプルをできるだけ同一ページ内に配置する格納スキーマが採用されている。後者の方法では、ページ内のタプルの削除、更新等が行われた場合に他のタプルを同一ページに格納することができず、複雑な構造を持つデータに対するアクセス速度が遅くなる。
【0010】
本発明の第一の目的は、タプル指向ファイルシステムにおいてロールバック処理時に、タプルの物理識別番号を変化させずにタプルを復元することが可能であり、かつトランザクションの並行性を低下させないタプル単位排他制御方式を提供することである。
【0011】
本発明の第二の目的は、ページ内の空き領域や未使用領域を有効に利用することが可能な、タプル単位排他制御方式を提供することである。
【0012】
【課題を解決するための手段】
上記の目的は、次のような発明によって達成される。すなわち、第一の目的を達成するために、タプルに対する排他制御を要求する処理と、ページに対する排他制御を要求する処理と、ページの空き領域に対する排他制御を要求する処理と、ページの空き領域が使用可能かどうかを判定する処理を持つタプルアクセス手段と、改良されたコンパクション手段を持ち、ページ内の空き領域の総和サイズを増加させたトランザクションが稼働中かどうかを判定し、稼働中であれば当該ページの空き領域が使用されないようにするタプル単位排他制御方式を提供する。
【0013】
第二の目的を達成するために、ページ内のタプルの最後端の位置を記憶する手段と、改良されたコンパクション手段とを設け、タプルの格納時に当該ページ内のタプルの最後端の位置及び空き領域サイズの更新と、タプルの格納に未使用領域を使用する場合は未使用領域管理情報の更新とを行うタプル単位排他制御方式を提供する。
【0014】
【作用】
第一の目的は以下のように達成される。あるトランザクションがページからタプルを削除する等して、ページ内の空き領域サイズを増加させた場合、ページの空き領域に対する排他制御を要求する処理により、当該ページの空き領域の使用を行えないようにする。
【0015】
一方、タプルの追加・更新等の処理で当該ページの未使用領域以外に空き領域の使用が必要な場合は、上記要求手段に対して当該ページの空き領域が使用可能かどうかを判定し、使用可能な場合のみ使用するよう制御する。
【0016】
この後、当該ページ内の空き領域を増加させたトランザクションがロールバックを行う場合、本発明によって提供される排他制御方法、及び未使用エリアにタプルが追加できない場合に改良されたコンパクションを行い、コンパクションによって生じる領域を全て空き領域として管理し、他のトランザクション(ロールバック中のトランザクションを除く)が当該領域を使用できないようにすることにより、当該ページ内の空き領域を保証することができる。
【0017】
従って、タプルの物理識別番号を変更することなく、当該トランザクションのロールバックを行うことが可能となる。このため、当該ページに対する排他制御は、当該ページに対するアクセスが行われている間のみで良くなり、トランザクション処理の並行性を向上させることができる。
【0018】
第二の目的は以下のように達成される。すなわち、ページの空き領域の総和サイズを増加させたトランザクションが当該ページに対して一つの場合で、未使用領域はタプルの格納に十分な大きさではないが、空き領域のサイズを加えるとタプルの格納に必要なサイズが確保される場合に、ページ内のタプルの最後端の位置より後にタプルの追加が可能であれば、ページ内のタプルの最後端の位置より、またそうでない場合は、改良されたコンパクションを行なった後のページ内のタプルの最後端の位置より、本発明によって提供されるページ管理方法を用いてタプルを追加することにより、ページ内の空き領域を有効に使用できる。
【0019】
上記の場合、稼働中トランザクションが増加させたページの空き領域を使用するトランザクションは、当該トランザクションのみである。また、ロールバック時に、当該ページの空き領域を使用していたタプルは、削除されていたタプルの回復を行うまでに当該ページの領域を使用しないように制御される。このため、タプルのロールバックに必要な領域は、削除されていたタプルのロールバック時には確保されていることになり、ロールバック処理においてタプルの物理識別番号を変更せずに、タプルの復元を行うことが可能となる。
【0020】
さらに、第一の目的は、さらに、以下のように達成される。あるトランザクションがページからタプルを削除する場合、ページ内に設定されている削除されたタプルの位置情報を正値から負値に反転させることで削除状態にし、削除されたタプルのイメージはそのままにしておくことにより、当該トランザクションが稼働完了するまで当該プルに対する排他制御を要求する処理により、当該タプルの領域を使用することができないように制御する。
【0021】
一方、タプルの追加で当該ページの未使用領域以外に当該ページの全空き領域の使用が可能な場合、当該ページ内に確保されたすべてのタプルの位置情報を参照し、位置情報が負値の場合は位置情報が示したタプルのイメージを参照し、タプル中に格納されたタプル長と未使用領域とを加算した長さが追加するタプルの長さより長い場合、当該タプルに対する排他制御を要求する処理により、排他が許可されれば削除状態のタプルの領域を使用してタプルを追加できる。
【0022】
【実施例】
図1〜図33を用いて、本発明の実施例を説明する。
図1は、本発明が実施されるデータベース管理システムのブロック図を示すものである。データベース2を管理するデータベース管理システム1には、トランザクション管理手段3、排他制御管理手段4、ジャーナル管理手段5、及びデータアクセス管理手段6が含まれる。
【0023】
本発明で提供されるタプル単位排他制御方式は、データアクセス管理手段6に組み込まれ、それらはタプルアクセス制御手段7、ページ空き領域排他通知処理8、タプル物理識別子排他要求処理9、ページコンパクション手段10、改良されたページコンパクション手段11、ページ空き領域使用判定及び制御処理12、及びページ排他要求処理13が含まれる。
【0024】
本実施例において、タプル排他要求処理9、空き領域使用判定及び制御処理12、及びページ排他要求処理13は、タプルアクセス制御手段7で用いられるアルゴリズムの一部として実現されている。ページ空き領域排他要求処理8は、空き領域使用判定及び管理処理12のアルゴリズムの一部として実現されている。
【0025】
また、ページコンパクション手段10、改良されたページコンパクション手段11は、タプルアクセス制御手段7より必要に応じて呼び出される。タプル排他要求処理9、ページ排他要求処理13、及びページ空き領域排他要求処理8で出された排他要求は、排他制御管理手段4において管理される。また、タプルの追加、削除、更新時にデータアクセス管理手段から取得要求が出されるジャーナルは、ジャーナル管理手段5を通して取得される。
【0026】
まず、本発明の実施例で用いられるデータ構造について説明する。
図2にページの構成例を示す。ページ201はタプル202とスロット203を含む。スロットは、そのスロットが指すタプルのページ内の位置を記憶しており、各タプルは、ページの番号とスロット番号(以降、物理識別番号と記す)によって一意に識別される。タプルの追加はアドレスの正の方向に追加され、スロットはアドレスの負の方向に増加する。ページはデータベース2中に記憶されており、必要に応じてメモリ(図示せず)に読み込まれる。
【0027】
ページ内の状態を示すページ制御情報はページヘッダ207で管理されており、そこにはページ内の未使用領域205の先頭オフセット206、タプルの削除、あるいはタプルが短くなった場合に発生する空き領域204のサイズ、ページに割当てられた最大スロット番号、現在使用中のスロット数等が管理されている。これらのデータは、タプルアクセス手段により、新規にページが割り当てられた場合に初期化され、タプル追加、削除、更新時に更新される。また、これらの処理を行うにあたり、ページのコンパクションが行われたときは、ページコンパクション手段10あるいは改良されたページコンパクション手段11により更新される。
【0028】
図3はページ制御情報207の例である。ページ制御情報207は、ページ内割当てスロット数管理部302、使用スロット数管理部303、空き領域総和サイズ管理部304、未使用エリア先頭オフセット管理部305、タプル最後端オフセット管理部306から構成される。タプル最後端オフセットとは、未使用エリアに隣接する空き領域の先頭オフセットであり、未使用エリアに隣接する空き領域がない場合は、未使用エリア先頭オフセットと等しい値を持つ。
【0029】
ページの初期化時に、割り当てスロット数302及び使用スロット数303、空き領域総和サイズ304は0に、未使用領域先頭オフセット305及びタプル最後端オフセット306はヘッダ207の長さに初期化される。
【0030】
割り当てスロット数302は、タプルの追加、及び削除時にタプルアクセス制御手段7により、また、ページコンパクション時にページコンパクション手段10により更新され、ページコンパクション手段10および改良されたページコンパクション手段11、タプルアクセス制御手段7により参照される。使用スロット数303は、タプルアクセス制御手段7により参照、更新される。空き領域総和サイズ304、及び未使用領域先頭オフセット305は、タプルアクセス制御手段7及びページコンパクション手段10により更新され、タプルアクセス制御手段7により参照される。タプル最後端オフセット207は、タプルアクセス制御手段7及びページコンパクション手段10、11により更新され、タプルアクセス制御手段7により参照される。
【0031】
次に、本発明で用いられるアルゴリズムについて説明する。なお、ページに対するロックは、セマフォで行うことも可能である。また、ページのメモリ上への固定要求および解放要求は、ページに対するロック要求およびロック解放要求時に同時に行われるものとする。
【0032】
図4は、タプルの追加を行う場合にタプルを追加するスロットを求めるアルゴリズムであり、タプルアクセス制御手段7で実行される。ステップ401で先頭のスロットを求め、ステップ402で割当てスロット数分ループし、使用可能スロットを求める。ステップ403で当該スロットが空いているかどうかを判定する(空いていればスロット値が−1)。スロットが空いていた場合、当該スロットに排他ロック(以降Xロックと記す)が可能かどうかをテスト(ステップ404)し、ロック可能であればタプルを追加するスロット番号を当該スロット番号とし(ステップ406)、0を返す(ステップ407)。ステップ403又は404でNの場合は次スロットを求め(ステップ405)、再度ループする(ステップ402e)。ステップ402で示される条件が満たされるまで、ステップ402から402eの間に含まれる処理が繰り返される。全ての割当てスロットを調べたが、タプルを追加するスロットが求められなかった場合は、タプルを追加するスロット番号を割当てスロット数+1とし(ステップ408)、1を返す(ステップ409)。
【0033】
図5は、ページコンパクション手段10によって実行されるコンパクションアルゴリズムである。まず、ワークエリアの初期化を行う(ステップ501)。次に、先頭スロットを求め(ステップ502)、未使用領域先頭オフセットをヘッダ直後に位置付けてから、割当てスロット数分ループを行う(ステップ503)。ステップ504でスロットが使用中かどうかを判定し、使用中であれば(スロットの値が−1ではない)、現在のスロット番号を最大使用スロット番号として保持する(ステップ510)。そして、スロット値が0かどうかを判定し(ステップ511)、0でなければタプルをワークエリアの未使用エリア先頭オフセットからコピーし(ステップ505)、ワークエリアの未使用エリア先頭オフセットを更新する(ステップ506)。その後、次スロットを求める(ステップ507)。全てのタプルのコピーが終了したら(ステップ503e)、ワークエリアの使用スロット数、割当てスロット数、タプル最後端オフセットを更新し(ステップ508)、ワークエリアの内容をページにコピーする(ステップ509)。
【0034】
図6は、改良されたページコンパクション手段11によって実行される改良されたコンパクションアルゴリズムである。図5に示したアルゴリズムとの相違は、未使用領域先頭オフセットおよび割当てスロット数を変更しないことである。改良されたコンパクションは、以下のように行われる。まずワークエリアの初期化を行う(ステップ601)。次に、先頭スロットを求め(ステップ602)、タプル最後端オフセットをヘッダ直後に設定してから割当てスロット数分ループを行う(ステップ603)。ステップ604でスロットが使用中かどうかを判定し、使用中であればタプルをワークエリアの未使用エリア先頭オフセットからコピーし(ステップ605)、ワークエリアのタプル最後端オフセットを更新し(ステップ606)、次スロットを求める(ステップ607)。全てのタプルのコピーが終了したら(ステップ603e)、ワークエリアの使用スロット数、未使用エリア先頭オフセットを更新し(ステップ608)、ワークエリアの内容をページにコピーする(ステップ609)。
【0035】
図3のタプル最後端オフセット領域306を使用しない場合は、上記のコンパクション及び改良されたコンパクションにおいて、タプル最後端オフセット領域のメンテナンスが不要となる。また、改良されたコンパクションにおいては、タプル最後端オフセットの代わりにタプルの最後端位置を示す変数をプログラム内に保持し、処理を行う。
【0036】
図7〜9は、タプル追加のアルゴリズムである。本アルゴリズムはタプルアクセス制御手段7で実行される。本アルゴリズムの処理のステップ701がページ排他要求処理13に、ステップ706がタプル排他要求処理9に、ステップ707及びステップ708が空き領域使用判定及び制御処理12に、ステップ707がページ空き領域排他要求処理8に対応する。
【0037】
まず、ステップ701でタプル追加予定のページにXロックを行う。そして、図4で示したスロットサーチアルゴリズムによりスロットを求め(ステップ702)、スロットサーチの結果を判定して(ステップ703)、挿入に必要なデータ長を求める(ステップ704、705)。
【0038】
ステップ706で追加するタプルの物理識別子にXロックを行ない、ステップ707でページにタプルの追加が可能かどうかを判定する。タプルの追加が可能な場合は、ページの未使用エリア先頭オフセットからタプルを追加する(ステップ711)。この時、未使用領域先頭オフセット及びタプル最後端オフセットの双方を更新する。
【0039】
コンパクションを行えばタプルの追加が可能な場合は、まず、ページの空き領域に対してXモードのロックテストを行う(ステップ708)。ロック可能であれば、ステップ716aでタプル最後端オフセットからタプルが追加可能かどうかを判定し、追加不可能であれば図5に示したコンパクションを行い(ステップ709)、ページの未使用エリア先頭オフセットからページを追加する(ステップ711)。ステップ716aでタプル追加可能であった場合は、タプル最後端オフセットからタプルを追加する(ステップ712)。
【0040】
一方、自トランザクションのみが当該ページの空き領域に対してロックを行っている場合は、ステップ716bでタプル最後端オフセットからタプルが追加可能かどうかを判定し、追加不可能であれば図6に示した改良されたコンパクションを行い(ステップ710)、タプル最後端オフセットからタプルを追加する(ステップ712)。タプルの追加が可能であった場合は、改良されたコンパクションを行うステップをスキップし、タプル最後端オフセットからタプルを追加する。タプル最後端オフセットからタプルを追加する場合、まず、最後端オフセットの更新を行う。そして、タプル追加後の最後端のオフセットが、未使用領域先頭オフセットを超えた場合のみ、未使用領域先頭オフセットをタプル最後端オフセットと等しくする。
【0041】
タプルの追加後、ページに対するロックを解放し(ステップ714)、追加成功を返す(ステップ718)。一方、ステップ707でコンパクションを行ってもページにタプルを追加できない場合、あるいはステップ708で他トランザクションがページの空き領域に対してロックを行っている場合は、ステップ706で行ったロックおよびページに対するロックを解放し(ステップ713、715)、タプル追加不可を返す(ステップ717)。
【0042】
図3のタプル最後端オフセット306を使用しない場合は、ステップ717および718が削除される。また、ページ空き領域ロックテスト(ステップ708)の結果が、同一トランザクションのみがロックしている場合も不可と同一の処理を行うようにする(ステップ710、712は不要となる)。さらに、タプル最後端オフセットの更新も不要となる。
【0043】
図18〜20にタプル更新のアルゴリズムを示す。本アルゴリズムもタプル追加アルゴリズム同様、タプルアクセス制御手段7で実行される。ステップ1601がタプル排他要求処理9に、ステップ1602がページ排他要求処理13に、ステップ1606及びステップ1614がページ空き領域排他要求処理8に、ステップ1603、1606、1609、1613、1614が空き領域判定及び制御処理12に、それぞれ対応する。まず、タプルの物理識別子に対してXロックを行う(ステップ1601)。ただし、タプルに対するロックは、削除対象タプルが検索時にXロックされている場合には必要ない。次に、タプルの存在するページに対してXロックを行い(ステップ1602)、更新前及び更新後のタプル長の比較を行う(ステップ1603)。
【0044】
更新前と更新後のタプル長が等しい場合は、更新後のタプルを更新前のタプル位置に上書きし(ステップ1604)、ページのロックを解放する(ステップ1605)。
更新前の長さが更新後の長さより短い場合は、当該ページの空き領域に対してSロックを確保し(ステップ1606)、更新後のタプルを更新前のタプル位置より上書きし(ステップ1607)、当該ページの空き領域長に、更新前のタプル長と更新後のタプル長の差を加え、更新前タプルの最後端位置がタプル最後端位置である場合は、タプル最後端オフセットを更新する(ステップ1608)。
【0045】
更新後の長さの方が長い場合は、まず、更新後の長さと未使用領域長とを比較する(ステップ1609)。更新後のタプル長と未使用領域長とが等しい、または更新後タプル長の方が短い場合は、未使用領域先頭オフセットから更新後タプルを追加し(ステップ1610)、空き領域長に更新前タプル長を追加し、未使用領域先頭オフセット及びタプル最後端オフセットを更新し(ステップ1611)、更新前タプルを指しているスロット値を、追加した更新後タプルの先頭に変更する(ステップ1612)。
【0046】
当該ページの未使用領域長より更新後タプル長の方が長い場合、空き領域長、更新前タプル長、及び未使用領域長の和と、更新後タプル長とを比較する(ステップ1613)。前者の方が短い、又は等しい場合は当該ページ空き領域使用ロックテストを行う(ステップ1614)。その結果、タプルを更新しようとしているトランザクションと同一のトランザクションのみがロックを確保している場合は、タプル最後端オフセットよりタプル追加可能かどうかを判定し(ステップ1615)、追加不可能であれば、タプルを指すスロット値を−1として改良されたコンパクションを行う(ステップ1616)。その後、タプル最後端オフセットからタプルを追加し、空き領域長、未使用領域長、及びタプル最後端オフセットを更新する(ステップ1617)。
【0047】
ステップ1614の結果、ロック可能である場合は、タプル最後端オフセットよりタプル追加可能かどうかを判定し(ステップ1618)、追加不可能であればタプルを指すスロット値を0としてコンパクションを行い(ステップ1619)、未使用領域先頭オフセットからタプルを追加し、空き領域長、及び未使用領域長、タプル最後端オフセットを更新する(ステップ1620)。ステップ1618の結果、追加可能であればステップ1617を実行する。
【0048】
ステップ1613で更新後タプル長の方が長い場合、あるいはステップ1614でロック不可の場合は、当該ページに対するロックを解放する(ステップ1621)。そして、更新後タプル追加可能なページのサーチを行い(ステップ1622)、先に述べたタプル追加アルゴリズムを利用して、ステップ1622で求めたページに更新後タプルの追加を試みる(ステップ1623)。タプル追加の結果を判定し、失敗であればステップ1622に戻り、成功すれば先にロックを解放した更新タプルの存在するページに再度Xロックを確保する(ステップ1624、ステップ1625)。そして、ページの空き領域にSロックを行い(ステップ1626)、更新前タプルをポイント形式に変換し(ステップ1627)、空き領域長の更新及びステップ1608と同様必要であれば、タプル最後端オフセットを更新する(ステップ1628)。
【0049】
図3におけるタプル最後端オフセット306を使用しない場合は、タプル最後端オフセットの更新が不要になり、また、追加の場合と同様、ページ空き領域ロックテスト(ステップ1614)の結果が同一トランザクションのみがロックしている場合は不可の場合と同一の処理を行うようにする。さらに、ステップ1615、1618、1616、1617が不要となる。
【0050】
図10にタプルの削除アルゴリズムを示す。本アルゴリズムも更新、追加アルゴリズム同様、タプルアクセス手段制御7で実行される。ステップ801がタプル排他要求手段9に、ステップ802がページ排他要求手段13に、ステップ804が空き領域使用判定及び制御手段12とページ空き領域排他要求手段8に、それぞれ対応する。
【0051】
まず、タプルの物理識別子に対してXロックを行う(ステップ801)。ただし、タプルに対するロックは削除対象タプルが検索時にXロックされている場合は必要ない。次に、タプルの存在するページに対してXロックを行う(ステップ802)。次に、ステップ803でタプルの削除を行い、当該ページの空き領域に対して共有ロック(以降Sロックと記す)を行う(ステップ804)。最後に、ページのロックを解放する(ステップ805)。図3のタプル最後端オフセット306を使用しない場合は、タプル最後端オフセットの更新は不要である。
【0052】
次に、ロールバック処理のアルゴリズムについて説明する。なお、本実施例では、ロールバック処理は、タプルに対して行われた処理の逆順にロールバック処理を行うものとする。なお、ロールバックアルゴリズムはすべてタプルアクセス制御手段7において実行される。
図11は、タプル追加のロールバック処理のアルゴリズムである。ステップ901はページ排他要求処理に対応する。タプルの存在するページに対するロックを行い(ステップ901)、タプルの削除を行い(ステップ902)、ページに対するロックを解放する(ステップ903)。ただし、タプル削除において、未使用領域先頭オフセットの更新は行わない。
【0053】
図21は、タプル更新のロールバック処理のアルゴリズムである。ステップ1701がページ排他要求処理13に、ステップ1702が空き領域使用判定及び制御処理12に対応する。まず、タプルを戻すページにXロックを行う(ステップ1701)。次に、更新前タプル(ロールバックの結果ページに戻されるタプル)の長さと更新後タプル(ロールバックの結果、ページから削除されるタプル)の長さとの比較を行う(ステップ1702)。
【0054】
双方の長さが等しい場合は、更新後タプルの存在する位置から更新前タプルを上書きする(ステップ1703)。
更新前タプルの方が短い場合は、更新後タプルの存在する位置から更新前タプルを上書きし(ステップ1710)、長さの差を空き領域長に加える。更新後タプルの最後端位置が、タプル最後端オフセットがである場合は、タプル最後端オフセットのメンテナンスも行う(ステップ1711)。
【0055】
更新前タプル長の方が長い場合は、空き領域長に更新後タプル長を加え(1705)、コンパクションが必要かどうかを判定し(ステップ1705)、必要であれば、更新後タプルを指すスロット値を−1として改良されたコンパクションを行い(ステップ1706)、タプル最後端オフセットから更新前タプルを追加し、必要な情報を更新する(ステップ1707)。
【0056】
コンパクションが必要でなければ、未使用領域先頭から更新前タプルを追加し、必要な情報を更新し(ステップ1708)、その後ページのロックを解放する(ステップ1709)。
タプル最後端オフセット306を使用しない場合、タプル最後端オフセットの更新は不要である。また、改良されたコンパクション(ステップ1706)の実行によりタプルの最後端が求まるため、ステップ1707ではそれを利用して更新前タプルの追加を行う。
【0057】
図12はタプル削除のロールバック処理のアルゴリズムである。ステップ1001がページ排他要求処理13に対応する。まず、タプルを戻すページにXロックを行う(ステップ1001)。次に、コンパクションが必要かどうかを判定し(ステップ1002)、コンパクションが必要であれば、図8に示した改良されたコンパクションを行い(ステップ1003)、タプル最後端オフセットからタプルを追加する(ステップ1004)。コンパクションが不要であれば、ページの未使用エリア先頭オフセットからタプルを追加して(ステップ1005)、最後にページに対するロックを解放する(ステップ1006)。
【0058】
タプル最後端オフセット306を使用しない場合、タプル最後端オフセットの更新は不要である。また、改良されたコンパクション(ステップ1003)の実行によりタプルの最後端が求まるため、ステップ1004ではそれを利用して削除されていたタプルの追加を行う。
【0059】
1.タプル追加・削除例
まず、図13を用いて、本実施例で用いるページの例を示す。1108及び1109はページに格納されているタプルであり、1102は空き領域、1105は未使用領域である。1101はページヘッダであり、図3に示した情報が格納されている。この例では、割当てスロット数は4、使用スロット数は2、未使用領域先頭オフセットは図中1104で示される位置、タプル最後端オフセットは同じく1103で示される位置である。ページの空き領域サイズは図中1102のサイズの総和である。1106、1107、1110、1111はスロットであり、1110はタプル1(1108)の先頭オフセットを、1111はタプル2(1109)の先頭オフセットを指す。1106、1107は現在使用されていないスロットであり、その値は共に−1である。
【0060】
(1)タプル追加例1
まず、図13の状態のページにおいて、ページ内の空き領域を増加させたトランザクションが存在しない場合のタプルの追加例を示す。
タプルの追加には、図7〜9で示されるアルゴリズムを実行する。この例では、図7で示されるアルゴリズムのステップ702(ステップ702のアルゴリズムは図4に示してある)により、スロット1107がタプルを追加するスロットとなる。
【0061】
タプルの追加に必要なサイズが未使用領域(1105)より小さい場合は、ステップ707によりコンパクションを行わなくてもタプルの追加が可能と判断されるため、1104で示される位置からタプルの追加を行う。
一方、タプルの追加に必要なサイズが、未使用領域より大きいが、タプル最後端オフセット(1103)からスロット最後端までのサイズより小さい場合、ステップ718がYとなるため、タプル最後端オフセットからタプルを追加する。
【0062】
タプルの追加に必要なサイズがタプル最後端オフセット(1103)からスロット最後端までのサイズより大きいが、ページ内空き領域1102の総和サイズと未使用領域サイズの和より小さい場合は、図5に示されるページコンパクションを行い、当該ページにタプルを追加することが可能である。
【0063】
(2)タプル追加例2
次に、タプル追加予定ページから、スロット1107に格納されていたタプルを削除したトランザクションが稼働中であった場合のタプルの追加例について説明する。ただし、前記タプルを削除したトランザクションは、タプルを追加しようとしているトランザクションとは等しくないものとする。
【0064】
この場合も、図7〜9に示されるアルゴリズムを用いる。当該ページロック後、ステップ702で追加可能なスロットを求める(アルゴリズムは図4に示してある)。本実施例では、スロット1107がステップ403でYとなるが、次のステップ404でNとなるため(スロットにはXロックが掛けられている)、追加予定スロットとはならず、次のスロット1106が追加予定スロットとなる。タプルの追加に必要なサイズが未使用領域(1105)より小さい場合は、上記(1)と同様にタプルの追加を行う。
【0065】
一方、タプルの追加に必要なサイズが、未使用領域より大きいが、タプル最後端オフセット(1103)からスロット最後端までのサイズより小さい場合、及び、タプルの追加に必要なサイズがタプル最後端オフセット(1103)からスロット最後端までのサイズより大きいが、ページ内空き領域1102の総和サイズと未使用領域サイズの和より小さい場合であるが、この例では当該ページの空き領域にロックが掛けられているため、ステップ808で不可となり、当該ページに対するタプルの追加は不可能と判定される。
【0066】
(3)タプル追加例3
次に、タプルを追加しようとしているトランザクションが、先に当該ページからスロット1107に格納されていたタプルを削除していた場合のタプルの追加について説明する。
この場合も、図7〜9に示されるアルゴリズムを用いる。当該ページロック後、ステップ702で追加可能なスロットを求める(アルゴリズムは図4に示してある)。本実施例では、スロット1107がステップ403でYとなり、次のステップ404でもYとなるため(スロットにはXロックが掛けられているが、Xロックを掛けているトランザクションとロックのテストを行ったトランザクションとは同一トランザクションである)、スロット1107が追加予定スロットとなる。
タプルの追加に必要なサイズが未使用領域(1105)より小さい場合、上記(1)、(2)と同様にタプルの追加を行う。
【0067】
一方、タプルの追加に必要なサイズが、未使用領域より大きいが、タプル最後端オフセット(1103)からスロット最後端までのサイズより小さい場合は、ステップ719がYとなるため、タプル最後端オフセットからタプルを追加する。
【0068】
タプルの追加に必要なサイズがタプル最後端オフセット(1103)からスロット最後端までのサイズより大きいが、ページ内空き領域1102の総和サイズと未使用領域サイズの和よりより小さい場合は、図6に示される改良されたページコンパクションを行い、当該ページのタプル最後端オフセットからにタプルを追加することが可能である。
【0069】
(4)タプル削除例
図13の例で、スロット1111で示されるタプル2(1109)の削除について説明する。タプルの削除には図10で示されたアルゴリズムを用いる。
まず、タプルの物理識別子にXロックを行い、タプルの存在するページを求め、ページのロックを行って、スロット1111の値をー1とする。次に、タプル最後端オフセット1103を更新するが、これは全使用スロットから、最大のスロット値を持つものを求め、そのスロット値+そのスロットが示すタプルのサイズを新たなタプル最後端オフセットとする。
その後、削除されたタプル2のサイズを空き領域サイズに加え、ページの空き領域に対してSロックを行ってページのロックを解放する。
【0070】
次に、図22〜25を用いて、図22中のタプル2(1801)を更新する例について説明する。
(5)タプル更新例:タプルサイズが等しい場合
この場合は、図18〜20に示したアルゴリズムにより、更新後のタプルを1801に上書きすればよい。
【0071】
(6)タプル更新例:タプルが小さくなる場合
タプルが小さくなる場合は、空き領域ロック後、タプル2(1801)に更新後タプルを上書きし、短くなった長さ分を空き領域サイズに加える。
【0072】
(7)タプル更新例:タプルが大きくなる場合
タプルが大きくなる場合は、更新後のタプルがページの未使用領域1802に入る場合は、図23に示すように更新後のタプル2(1901)を未使用領域に入れ、タプル2のあった場所を空き領域とする(1902)。また、図22でタプル3を更新する場合のように、未使用領域に面したタプルを更新する場合は、更新後のタプル長が、更新前のタプル長と未使用領域長の和より小さい場合はタプル3に直接上書きすることも可能である。
【0073】
次に、更新後のタプルが未使用領域には入らないが、コンパクションをすればページに入る場合で、コンパクションが可能な場合は、まずページのコンパクションを行い、更新後のタプル2(2001)を追加すればよい。
【0074】
次に、コンパクションを行ってもページに入らない場合、あるいは、コンパクションを行えばページに入るが、コンパクションが不可の場合は、図25に示すように、まず、タプル2(2104)の追加可能なページ2103を求め、タプルを追加する。その後、ページ2102の空き領域をロックし、タプル2をポイント形式(2101)とし、ポイント形式にタプル2(2104)の物理識別番号を格納する。
【0075】
2.ロールバック例
次に、ロールバック処理の例を示す。なお、実際の処理では、タプルの追加、削除等において、ロールバックのために必要な情報の取得が行われるが、本実施例では省略する。
【0076】
(1)タプル削除のロールバック
図14は、自トランザクションで、図13で示されるページからタプル2を削除した後、他のトランザクションが当該ページにタプル3(1201)を追加し、コミットした直後の様子を示している。
【0077】
ここで、自トランザクションがロールバックを行う場合の例について説明する。 タプル削除のロールバックには図12に示されたアルゴリズムを用いる。まず、当該ページに対してロックを行う。削除されたタプルはスロット1202で示されているが、当該スロットは、タプルの削除時にXロックが掛けられているため、他のトランザクションは使用していない。次に、削除されたタプル2の追加位置を決定する。この場合、ページの未使用エリアオフセット及びタプルの最後端オフセットは共に1203で示された位置を指しているが、未使用エリア1204は、タプル2を追加するのに十分な大きさがないため、コンパクションを行う必要がある。そこで、ステップ1003に示されるように改良されたコンパクションを行う(アルゴリズムは図6)。
【0078】
その結果、図15に示すようにタプル最後端オフセット(1301)が変更される。そして、1301で示された位置より、タプル2の追加を行うことが可能となる。この時、タプルの物理識別子は当該ページのページ番号及びスロット1302のスロット番号(=4)となるが、これはタプル削除前と同一の値となり、タプルの物理位置を変更せずにタプルのロールバックを行うことが可能となる。 未使用領域サイズが、タプル2の追加に必要なサイズより大きい場合は、ページのコンパクションは行われず、未使用領域先頭オフセットの示す位置よりタプルを追加し、未使用領域先頭オフセット及びタプル最後端オフセットの値を更新する。
【0079】
(2)タプル追加・削除のロールバック例
次に、同一トランザクションでのタプルの削除・追加のロールバック例について説明する。図16は、図13に示される状態のページから、タプル2の削除を行い、その後タプル4(1401)の追加を行った場合の例である。
【0080】
ここで、トランザクションのロールバックを行う場合、まず、タプル1401の削除を行う。タプル追加のロールバックには、図11に示すアルゴリズムを使用する。まず、当該ページにロックを行い、スロット1402の値を−1とする。その後、ページのタプル最後端オフセット及び空き領域サイズを更新し、当該ページのロックを解放する。タプル4削除後のページの状態を図17に示す。1501はタプル最後端オフセットの示す位置である。
【0081】
次に、削除されたタプル2のロールバックを行う。タプル2の追加には、図12で示されるアルゴリズムを用いる。まず、タプル2の存在していたページに対してロックを行う。次に、タプルの追加位置を求めるが、これは(1)と同様のため省略する。
【0082】
(3)タプル更新のロールバック例
タプルサイズが変化していない場合は、更新前のタプルをそのまま上書きすればよい。図23や24のように、タプルが長くなっていた場合で、同一ページに収まっている場合は、更新前タプルをそのまま上書きすればよい。図24の例をロールバックした場合の状態を図26に示す。その結果、タプル2は2201のように復元され、残りの部分は空き領域(2202)となる。また、タプル最後端位置の更新が必要である。
【0083】
また、図25に示したように他のページにポイントされている場合は、まずポイント形式2101を空き領域2301とし、未使用領域先頭オフセットから更新前タプル2(2302)を追加する。その後、ページ2103のタプル2(2104)を削除すればよい。
タプルが短くなっている場合は、ポイント形式の復元の場合と同様の処理を行えばよい。
【0084】
前記実施例とは異なる他の実施例を説明する。
図28は、本発明が実施されるデータベース管理システムのブロック図を示すものであり、基本的に図1と同様の構成を示す。
本発明で提供されるタプル単位排他制御方式は、データアクセス管理手段6に組み込まれ、手段6には、タプルアクセス制御手段7及びページコンパクション手段10が含まれる。また、タプルアクセス制御手段7には、タプル物理識別子排他要求手段9及びページ排他制御要求手段13が含まれる。
【0085】
まず、本実施例で用いられる図2におけるページの状態を管理するページヘッダ207の他のデータ構造を図29に示す。ページヘッダ207には、図2で示したページに割り当てられた最大スロット番号302、現在使用中のスロット数303、タプルの削除、あるいはタプルが短くなった場合に発生する空き領域総和サイズ304、未使用領域205の先頭オフセット305に追加して、タプルを削除状態のタプル領域に追加したときや、タプルが短くなったときの空き領域サイズを後のコンパクション対象とするコンパクションサイズ307等の情報が管理されている。コンパクションサイズ307は、新規にページを割り当てた場合及びページのコンパクションを行った場合に初期化(0クリア)される。ページに格納されたタプルの構造の例を図30に示す。タプルの先頭には、当該タプルの物理的な長さを示すタプル長2601が管理され、その後にタプルを構成するデータが格納される。削除状態にあるタプルの領域に追加したいタプルが格納できるか否かの判定は、タプル長2601を参照することによって決定される。
【0086】
図31、及び32は、本実施例で示す異なるタプルの追加を行うアルゴリズムである。本アルゴリズムは、図28におけるタプルアクセス制御手段7において実施される。タプルの追加要求が行われると、まず、追加する候補となるページをサーチし、ページに対してXロックを行う。ページに対するロックは、セマフォで行うことも可能である。また、ページのメモリ上への固定要求および解放要求は、ページに対するロック要求およびロック解放要求時に同時に行われるものとする。ステップ2702では、ページ内の状態を管理するページヘッダ207の空き領域の総和サイズ304と追加するタプル長とを比較し、タプルが当該ページに追加可能か否かを判定する。この時点で空きがないと判断されれば、当該ページにはタプルを追加できないものとし、追加不可を返し(ステップ2703)、次の候補となるページをサーチする。このとき、参照した空き領域総和サイズ304は、当該ページ中のすべての空き領域の総和であり、未使用領域のサイズも含まれる。ステップ2702の判定の結果、タプルの追加が可能と判断されると、次に当該ページの未使用領域に追加可能か否かを判定する(ステップ2704)。未使用領域長は、ページ内の状態を管理するページヘッダ207の未使用領域の先頭オフセット305を使用して求めることができる。
【0087】
判定の結果、未使用領域には十分な領域がない場合には、ステップ2705で当該ページの先頭スロットを求め、ステップ2706で割り当てスロット数分ループし、使用可能スロットを求める。ステップ2707で当該スロットが空いているかどうかを判定する(削除されていれば空き状態であり、スロット値は当該スロットが指し示すタプルの当該ページの先頭からのオフセットを正負を反転させたものか、あるいはスロット値が−1)。スロットが空いていた場合、当該スロットを使用してタプルの物理識別子にXロックが可能かどうかをテストし(ステップ2708)、ロック可能であればステップ2709で、削除状態にある当該スロットが指し示すタプル領域のタプル長2601が追加するタプル長よりも長いかどうかを判定し、削除状態にあるタプル長の方が長い場合は、当該タプル領域を使用することを決定する。削除状態にあるタプル長の方が短い場合は、ページ内の状態を管理するページヘッダ207のコンパクションサイズ307に空き領域のタプル長を加算する(ステップ2710)。また、このとき空きスロット値を−1に更新しておく。
【0088】
ステップ2707、ステップ2708、ステップ2709でNの場合は次スロットを求め(ステップ2711)、再度ループする(ステップ2706e)。全ての割り当てスロットを調べたが、タプルを追加するスロットが求められなかった場合は、ステップ2712でページ内の状態を管理するページヘッダ207のコンパクションサイズ307を使用してコンパクションを行う。本ステップでは、コンパクションサイズと未使用領域長の和が追加するタプル長よりも長ければ、ページ内のコンパクション処理を行って、未使用領域の先頭からタプルを挿入する。コンパクションサイズと未使用領域長の和が追加するタプル長よりも短い場合は、当該ページにはタプルを追加できないものとし、タプル追加不可を返し、別の候補ページをサーチする。
【0089】
ステップ2704でYの場合、及び、全ての割り当てスロットを調べたが、タプルを追加するスロットが求められなかった場合は、タプルを追加するスロット番号を割り当てスロット数+1とし(ステップ2713)、ステップ2713で決定したスロット番号を使用してタプルの物理識別子にXロックを行う(ステップ2714)。そして、未使用領域の先頭から追加するタプルを挿入し、スロット値を未使用領域の先頭とする(ステップ2715)。挿入が終わるとページヘッダ207の空き領域の総和サイズ304及び未使用領域先頭オフセット305を更新する(ステップ2716、2717)。
【0090】
次に、ステップ2709でYとなった場合、使用するスロット番号を、見つけたスロット番号すなわちロック可能なスロット番号とし(ステップ2718)、タプルの物理識別子にXロックを行う(ステップ2719)。そして、当該スロット値の指し示した領域より、追加タプルを挿入し、スロット値の正負を反転させる(ステップ2720)。挿入が終わるとページヘッダ207の空き領域総和サイズ304を更新し(ステップ2721)、ページヘッダ207のコンパクションサイズ307を更新する(ステップ2722)。タプルの追加が終了するとページロックを解放し(ステップ2723)、追加成功を返す(ステップ2724)。
【0091】
図33にタプルの削除アルゴリズムを示す。まず、タプルの物理識別子に対してXロックを行う(ステップ2801)。ただし、タプルに対するロックは、削除対象タプルが検索時にXロックされている場合は必要ない。次に、タプルの存在するページに対してXロックを行う(ステップ2802)。次に、ステップ2803でタプルの削除を行い、当該タプルのスロット値を反転させ、削除状態にする(ステップ2804)。そして、空き領域総和サイズ304を更新する(ステップ2805)。こうしてタプルの削除が終了すると、ページロックを解放する(ステップ2806)。
【0092】
このように、タプルの削除時には、スロットの状態を削除状態にすることにより、当該削除されたタプルの領域はそのままにしておくので、ロールバック時にも当該タプルの領域は、スロット領域の反転だけでタプルを復元できる。すなわち、削除されたタプルに排他が取得されているため、当該タプルの領域についてもデータが保証されている。
【0093】
本実施例で示したタプルの削除状態の表現方法については、スロットの値の反転のみならず、スロットの領域に削除状態を識別するフラグにより判定する方法、及び削除されたタプルのヘッダ等に削除状態を示すフラグを設定して判定する方法等により実現してもよい。
【0094】
【発明の効果】
以上示したように、本発明によればタプル指向ファイルシステムにおいて、タプル単位排他制御を行っても、タプルの物理識別子を変更せずにタプルのロールバックが可能となり、トランザクションの並行性を向上が可能となる。また、ページ内の空き領域の利用効率を高めることが可能となる。
【図面の簡単な説明】
【図1】システム構成の一例を示すブロック図である。
【図2】ページ内におけるタプル管理の一例である。
【図3】ページヘッダの構成例である。
【図4】タプルを追加するためのスロットを捜すアルゴリズムの例である。
【図5】コンパクションを行うアルゴリズムの例である。
【図6】改良されたコンパクションを行うアルゴリズムの例である。
【図7】タプル追加アルゴリズムの例である。(その1)
【図8】タプル追加アルゴリズムの例である。(その2)
【図9】タプル追加アルゴリズムの例である。(その3)
【図10】タプル削除アルゴリズムの例である。
【図11】タプル追加処理のロールバック処理のアルゴリズムの例である。
【図12】タプル削除処理のロールバック処理のアルゴリズムの例である。
【図13】本発明の実施例において用いられる、ページの例である。(その1)
【図14】本発明の実施例において用いられる、ページの例である。(その2)
【図15】本発明の実施例において用いられる、ページの例である。(その3)
【図16】本発明の実施例において用いられる、ページの例である。(その4)
【図17】本発明の実施例において用いられる、ページの例である。(その5)
【図18】タプル更新のアルゴリズムである。(その1)
【図19】タプル更新のアルゴリズムである。(その2)
【図20】タプル更新のアルゴリズムである。(その3)
【図21】タプル更新のロールバック処理のアルゴリズムである。
【図22】タプルの更新例である。(その1)
【図23】タプルの更新例である。(その2)
【図24】タプルの更新例である。(その3)
【図25】タプルの更新例である。(その4)
【図26】タプルの更新例である。(その5)
【図27】タプルの更新例である。(その6)
【図28】データベース管理システムのブロック図である。
【図29】ページヘッダのデータ構造図である。
【図30】タプルの構造例である。
【図31】タプル追加のアルゴリズムである。(その1)
【図32】タプル追加のアルゴリズムである。(その2)
【図33】タプル削除のアルゴリズムである。
【符号の説明】
1…データベース管理システム、2…データベース、3…トランザクション管理手段、4…排他制御管理手段、5…ジャーナル管理手段、6…データアクセス管理手段、7…タプルアクセス制御手段、8…ページ空き領域排他要求処理、9…タプル物理識別子排他要求処理、10…ページコンパクション手段、11…改良されたページコンパクション手段、12…ページ空き領域使用判定及び制御処理、13…ページ排他要求処理。
Claims (8)
- タプル指向ファイルシステムにおいて、
データベースに対する処理を行うデータアクセス手段は、タプルの削除又は縮小によりページ内に生じる空き領域の総和サイズを増加させたトランザクションが稼動中の場合は、当該トランザクション以外のトランザクションが前記空き領域を使用しないよう制御する、タプル単位排他制御方法。 - 前記データアクセス手段は、ロールバックにより復元されるタプルが、前記ページの未使用領域サイズより小さい又は等しい場合は、前記ページの未使用領域から削除された又は更新前のタプルを前記未使用領域に追加し、前記ページの未使用領域サイズより大きい場合は、前記タプルの再詰め込みを行い、タプル最後端位置から前記復元されるタプルを追加する、請求項1記載のタプル単位排他制御方法。
- 前記データアクセス手段は、前記空き領域を増加する処理を行うときに、前記空き領域を使用禁止とする、請求項1記載のタプル単位排他制御方法。
- 前記データアクセス手段は、前記空き領域を増加させた処理を発行した稼働中のトランザクションが当該ページに一つしか存在しない場合は、当該トランザクションからの処理に限り前記空き領域を使用する、請求項2記載のタプル単位排他制御方法。
- 前記データアクセス手段は、前記空き領域を増加させた稼働中のトランザクションが当該ページに一つしか存在しない場合に、未使用領域と隣接する空き領域の使用を可能とするよう制御する、請求項2記載のタプル単位排他制御方法。
- 前記データアクセス手段は、タプル追加のロールバック処理として前記タプルの削除を行い、タプル更新のロールバック処理として前記タプルの位置に前記タプルの更新前タプルを復元し、前記タプル追加又はタプル更新のロールバック処理により生じた領域を空き領域として管理する、請求項2記載のタプル単位排他制御方法。
- タプル指向ファイルシステムにおいて、
データベースに対する処理を行うデータアクセス手段は、先発のタプルを削除するトランザクションによりタプルを削除し、当該タプルの位置情報を削除状態にして後発のタプルを追加するトランザクションが同じページ内にタプルを追加する場合、前記削除状態にあるタプルの長さとページの未使用領域長を加えた長さが追加するタプルの長さよりも長い場合には、前記削除状態にあるタプルに対して排他制御を要求し、前記タプルを削除するトランザクションが稼働中の場合は排他制御を拒否することによって前記削除状態にあるタプルの領域に対するタプルの追加を禁止し、前記タプルを削除するトランザクションが稼働完了している場合は排他制御を許可することによってタプルの追加を可能とする、タプル単位排他制御方法。 - 前記データアクセス手段は、タプルの追加時に削除状態にあるタプルの長さとページの未使用領域長を加えた長さが追加するタプルの長さよりも短い場合、前記削除状態のタプルの長さが使用可能かどうかを判定し、使用可能ならば前記削除状態の領域サイズを加え、前記削除状態のタプルの位置情報を空き状態にし、ページ内のすべての削除状態にあるタプルの長さが前記追加するタプルの長さより短い場合、ページ内の未使用領域を拡張することにより、前記追加するタプルを拡張された未使用領域に挿入する、請求項7記載のタプル単位排他制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18808094A JP3699733B2 (ja) | 1994-08-10 | 1994-08-10 | タプル単位排他制御方式 |
US08/511,088 US5761658A (en) | 1994-08-10 | 1995-08-03 | Method of exclusive control of areas in page for tuple-oriented file system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18808094A JP3699733B2 (ja) | 1994-08-10 | 1994-08-10 | タプル単位排他制御方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0855052A JPH0855052A (ja) | 1996-02-27 |
JP3699733B2 true JP3699733B2 (ja) | 2005-09-28 |
Family
ID=16217359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP18808094A Expired - Fee Related JP3699733B2 (ja) | 1994-08-10 | 1994-08-10 | タプル単位排他制御方式 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5761658A (ja) |
JP (1) | JP3699733B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956704A (en) * | 1997-06-05 | 1999-09-21 | Oracle Corporation | Method and apparatus for parallelizing operations that insert data into an existing data container |
US7130871B2 (en) * | 2002-10-17 | 2006-10-31 | International Business Machines Corporation | Method and apparatus for representing deleted data in a synchronizable database |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4627019A (en) * | 1982-07-08 | 1986-12-02 | At&T Bell Laboratories | Database management system for controlling concurrent access to a database |
JP2644728B2 (ja) * | 1986-01-27 | 1997-08-25 | 株式会社日立製作所 | データディクショナリ・ディレクトリシステム |
US5065311A (en) * | 1987-04-20 | 1991-11-12 | Hitachi, Ltd. | Distributed data base system of composite subsystem type, and method fault recovery for the system |
US5058002A (en) * | 1987-06-23 | 1991-10-15 | Mitsubishi Denki Kabushiki Kaisha | Page splitting method and apparatus for a database stored in a plurality of memory storage units |
JP2755390B2 (ja) * | 1988-05-19 | 1998-05-20 | 株式会社日立製作所 | データベース処理装置及びデータベース処理方法 |
US4961139A (en) * | 1988-06-30 | 1990-10-02 | Hewlett-Packard Company | Data base management system for real-time applications |
US4961134A (en) * | 1988-07-15 | 1990-10-02 | International Business Machines Corporation | Method for minimizing locking and reading in a segmented storage space |
JP3453757B2 (ja) * | 1989-05-29 | 2003-10-06 | 株式会社日立製作所 | バッファ管理方法 |
US5193162A (en) * | 1989-11-06 | 1993-03-09 | Unisys Corporation | Cache memory with data compaction for use in the audit trail of a data processing system having record locking capabilities |
US5247672A (en) * | 1990-02-15 | 1993-09-21 | International Business Machines Corporation | Transaction processing system and method with reduced locking |
GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
JPH0827755B2 (ja) * | 1991-02-15 | 1996-03-21 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データの単位を高速度でアクセスする方法 |
US5333316A (en) * | 1991-08-16 | 1994-07-26 | International Business Machines Corporation | Locking and row by row modification of a database stored in a single master table and multiple virtual tables of a plurality of concurrent users |
US5555388A (en) * | 1992-08-20 | 1996-09-10 | Borland International, Inc. | Multi-user system and methods providing improved file management by reading |
US5530854A (en) * | 1992-09-25 | 1996-06-25 | At&T Corp | Shared tuple method and system for generating keys to access a database |
US5440732A (en) * | 1993-02-05 | 1995-08-08 | Digital Equipment Corp., Pat. Law Gr. | Key-range locking with index trees |
US5485607A (en) * | 1993-02-05 | 1996-01-16 | Digital Equipment Corporation | Concurrency-control method and apparatus in a database management system utilizing key-valued locking |
JPH0784851A (ja) * | 1993-09-13 | 1995-03-31 | Toshiba Corp | 共有データ管理方法 |
-
1994
- 1994-08-10 JP JP18808094A patent/JP3699733B2/ja not_active Expired - Fee Related
-
1995
- 1995-08-03 US US08/511,088 patent/US5761658A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5761658A (en) | 1998-06-02 |
JPH0855052A (ja) | 1996-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5414840A (en) | Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory | |
Zhou et al. | DPTree: differential indexing for persistent memory | |
US5974427A (en) | Method and computer system for implementing concurrent accesses of a database record by multiple users | |
US8719307B2 (en) | Concurrent linked hashed maps | |
US4888681A (en) | Space management system for data files having shared access | |
EP0442715B1 (en) | Transaction processing system and method with reduced locking | |
US5287496A (en) | Dynamic, finite versioning for concurrent transaction and query processing | |
US5237682A (en) | File management system for a computer | |
US6567928B1 (en) | Method and apparatus for efficiently recovering from a failure in a database that includes unlogged objects | |
US5077658A (en) | Data access system for a file access processor | |
US6647510B1 (en) | Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction | |
US7664799B2 (en) | In-memory space management for database systems | |
US20030208500A1 (en) | Multi-level undo of main-memory and volatile resources | |
CN111240588B (zh) | 一种持久性内存对象存储系统 | |
US7328322B2 (en) | System and method for optimistic caching | |
JP2004227569A (ja) | 永続フレームワーク用単一キャッシュによる事象駆動型トランザクション状態の管理 | |
JP4999833B2 (ja) | 複数の独立プロセスによってアクセス可能なキャッシュメモリの一貫性を維持する方法及びシステム | |
JP4126843B2 (ja) | データ管理方法および装置並びにデータ管理プログラムを格納した記録媒体 | |
JP3699733B2 (ja) | タプル単位排他制御方式 | |
CN113220490A (zh) | 异步写回持久化内存的事务持久化方法及系统 | |
US7051051B1 (en) | Recovering from failed operations in a database system | |
JPH0816881B2 (ja) | データベース更新方法 | |
EP0312786B1 (en) | Data access system for a file access processor | |
JP3107094B2 (ja) | 共用バッファのロック期間短縮処理方法及び装置 | |
JP2704028B2 (ja) | ファイル領域管理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040810 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041012 |
|
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: 20050628 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050711 |
|
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: 20080715 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090715 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090715 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100715 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100715 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110715 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110715 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120715 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130715 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |