JP2008287548A - データベースの制御方法及びプログラム - Google Patents

データベースの制御方法及びプログラム Download PDF

Info

Publication number
JP2008287548A
JP2008287548A JP2007132571A JP2007132571A JP2008287548A JP 2008287548 A JP2008287548 A JP 2008287548A JP 2007132571 A JP2007132571 A JP 2007132571A JP 2007132571 A JP2007132571 A JP 2007132571A JP 2008287548 A JP2008287548 A JP 2008287548A
Authority
JP
Japan
Prior art keywords
data
transaction
instruction
log
lock
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.)
Granted
Application number
JP2007132571A
Other languages
English (en)
Other versions
JP4295333B2 (ja
Inventor
Satoshi Watanabe
聡 渡辺
Yoshio Suzuki
芳生 鈴木
Shinji Fujiwara
真二 藤原
Nobuo Kawamura
信男 河村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007132571A priority Critical patent/JP4295333B2/ja
Priority to US11/819,310 priority patent/US8131679B2/en
Publication of JP2008287548A publication Critical patent/JP2008287548A/ja
Application granted granted Critical
Publication of JP4295333B2 publication Critical patent/JP4295333B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】後続トランザクションの待ち時間を低減しながら、先行トランザクションのログ書き込みが失敗した場合に生じる不都合を回避する技術を提供する。
【解決手段】データベースが操作端末等からトランザクション完了の指示を受け付けたことを契機に、トランザクションが保持するデータのロックを解除するデータベースの制御方法を提供する。データベースは、排他制御機構とログ出力機構とログバッファを含み、ログ出力機構は、操作端末からのトランザクション完了の指示を契機にトランザクション完了のログをログバッファに格納する。排他制御機構は、トランザクション完了のログがログバッファに格納されたことを契機に該トランザクションが保持するロックを解除する。
【選択図】図1

Description

本発明は、情報システムのデータ管理を行うデータベースの制御方法に関し、特にデータベースの排他制御の技術に関する。
ACID特性(Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性))は、データベースがトランザクションを処理する際の基本的な性質である。このうち原子性および永続性は、記憶装置にデータ更新記録(ログ)を書き込むことで実現される。すなわち、トランザクション完了のログが記憶装置に書き込まれたか否かによって、トランザクションが完了したか否かが一意に判定される(原子性)。また、記憶装置にログが書き込まれたトランザクションは、その結果が永続化される(永続性)。独立性はデータの排他制御(ロック)により実現される。すなわち、先行するトランザクションがデータをロックし、他のトランザクションの該当データに対する操作を制限することで、トランザクションの独立性が実現される。
ログ出力機構および排他制御機構を有するデータベースは以下のように動作する。データ操作の指示が操作端末101からデータベースに送信される。リレーショナル型データベースの場合、データ操作の指示は、SQL文を用いて行われるのが一般的である。データベースは、操作端末からの指示に基づいてデータの操作を行い、操作端末に対して応答を返す。この際、データベースは、データの排他制御を行い、他のトランザクションからのデータ操作を制限する。操作端末は、トランザクションを終了する際に、トランザクション終了指示(コミット指示)をデータベースに送信する。データベースは、データ操作のログとトランザクション完了のログを記憶装置に書き込む。記憶装置に対するログの書き込みが完了すると、データベースは、データのロックを解除し、トランザクション完了を操作端末に通知する。
上記のロック技術に変えて、MVCC(Multi Version Concurrency Control)技術が用いられる場合もある。MVCC技術では、データを更新する際に、更新前のデータを退避領域に退避する。後続のトランザクションは退避領域のデータを使用して処理を行う。MVCC技術を用いることにより、後続のトランザクションの排他待ち時間が減少し、トランザクションの実行並列度が向上する。
また、ストレージのリモートコピーを利用したデータのリモートバックアップに用いるデータベースでは、ログをリモートサイトに転送するため、ログ出力に長時間を要する問題がある。そこで、データベースに複数個のログバッファを用意し、ログバッファの内容を逐次ストレージ装置に出力するログの多重転送技術が用いられる。ログの多重転送技術を用いることで、ログ出力の効率を向上することができる。
データベースのログ出力機構については特許文献1などに記載されている。データベースのロック機構については特許文献2などに記載されている。また、MVCC技術については特許文献3などに、ストレージのリモートコピーを利用したデータのリモートバックアップについては特許文献4などに、それぞれ記載されている。
特開2006−323826号公報 特開2004−334460号公報 特開2003−140951号公報 特開2006−48103号公報
上述のように、データベースシステムにおいて、記憶装置に対するログの書き込みは、重要な役割を果たしている。ここで、記憶装置としては、磁気記憶装置(ハードディスク装置)や不揮発性メモリなどが使用される。記憶装置にログを書き込むには一定の時間を要し、ログの書き込み時間に起因して、データのロック時間が増大する。ロック時間の増大は、後続のトランザクションの待ち時間の増大につながり、データベースシステムの性能低下をもたらす。
記憶装置に対するログ書き込み時間の影響を低減するため、操作端末からのトランザクション完了の指示を契機にデータのロックを解除することが考えられる。これにより、記憶装置にログが格納されるのを待たずにロックを解除できるため、後続トランザクションの待ち時間が短縮される。
このようにした場合、以下の問題が生じる。先行トランザクションのログの書き込みが失敗した場合、先行トランザクションのデータ操作は無効になる。そのため、先行トランザクションが更新したデータは無効なデータであり、このデータを参照した後続トランザクションは、無効なデータを参照したことになる。
本発明が解決しようとする一つ目の課題は、ログの書き込み時間に起因するデータのロックの時間を削減しつつ、先行トランザクションのログ書き込みが失敗した場合に生じる上記の不都合を回避する技術を提供することである。
なお、先行トランザクションが更新したデータを後続トランザクションが更新した場合は、以下のようにすることで不都合を回避できる。すなわち、先行トランザクションのログの書き込みが失敗した場合に、後続トランザクションも無効にすれば不都合は生じない。そこで、本発明では、後続トランザクションがデータを参照した場合に生じる不都合を回避する技術を提供する。
また、背景技術に記載したMVCC技術を用いた場合にも、先行トランザクションのログ書き込みが失敗した場合に同様の不都合が生じる。MVCC技術では、後続トランザクションは、退避領域に格納された更新前のデータを参照する。しかしながら、そのデータを更新した先行トランザクションのログ書き込みが失敗すれば、そのデータ操作は無効になる。そのため、先行トランザクションが更新したデータは無効なデータであり、このデータを参照した後続トランザクションは、無効なデータを参照したことになる。
本発明が解決しようとする二つ目の課題は、MVCC技術を用いた場合に、先行トランザクションのログ書き込みの失敗により生じる上記の不都合を回避する技術を提供することである。
また、背景技術に記載した、リモートコピーを利用したデータのリモートバックアップに用いるデータベースでは、ログの多重転送技術が用いられる。ログの多重転送技術を用いた場合、データ更新ログが先行して転送され、それに続いてトランザクション完了ログが転送される場合がある。このような状況で、先行するデータ更新ログの転送が失敗し、後続のトランザクション完了ログの出力だけが成功すると、データ更新ログが消失したにも拘わらず、トランザクションが完了したと判断してしまう可能性がある。
本発明が解決しようとする三つ目の課題は、ログの多重転送技術を用いた場合に、先行のログ書き込みが失敗した場合に生じる上記の不都合を回避する技術を提供することである。
本発明は、データベースが操作端末等からトランザクション完了の指示を受け付けたことを契機に、トランザクションが保持するデータのロックを解除するデータベースの制御方法を提供する。データベースは、排他制御機構とログ出力機構とログバッファを含み、ログ出力機構は、操作端末からのトランザクション完了の指示を契機にトランザクション完了のログをログバッファに格納する。排他制御機構は、トランザクション完了のログがログバッファに格納されたことを契機に該トランザクションが保持するロックを解除する。
排他制御機構は、データのロックに「ロック中」または「解除中」の属性を付与して排他制御を行う。データベースは、操作端末から「解除中」のロックをされているデータに対する操作指示を受けた場合、操作指示が参照指示であるか更新指示であるかを判定し、操作指示が参照指示である場合にはロックが解除されるまで待機し、操作指示が更新指示である場合にはデータの更新を実行する。
また、操作端末は、参照指示に対する「ロック解除中のデータの参照許可」の属性や、データに対する「ロック解除中の参照許可」の属性を付与することができる。
また、データベースは、さらにデータ退避領域を含み、排他制御機構は、データを更新する際に、更新前のデータをデータ退避領域に退避する。データベースは、他のトランザクションの該データに対する参照指示を受けた場合に該データ退避領域のデータを参照する。この際、記憶装置にトランザクション完了のログが出力されたトランザクションのうち、最新のトランザクションが更新したデータを用いて参照指示を実行する。
また、ログの多重転送を用いる場合、ログ出力機構は、先行する全てのログ出力の完了している場合に、当該ログ出力が完了したと判断する。
したがって、本発明により、後続トランザクションが不正なデータを参照する問題を回避しつつ、後続トランザクションの更新指示を実行することができる。そのため、後続トランザクションの排他待ち時間を削減することができる。これにより、データベースシステムの性能を向上することができる。
また、参照指示に対する「ロック解除中のデータの参照許可」の属性や、データに対する「ロック解除中の参照許可」の属性を付与することにより、先行トランザクションのログ出力を待たずに後続トランザクションの参照指示を実行することが可能となり、後続トランザクションの排他待ち時間を削減することができる。
また、トランザクション完了のログの出力の状況により、データ退避領域に退避するデータを決定することにより、ログ出力が失敗した場合の不都合を回避できる。すなわち、記憶装置にトランザクション完了のログが出力されたトランザクションのデータを選択して参照指示を実行することにより、ログ出力が失敗した場合に無効になるデータが参照される可能性が無くなる。
また、先行する全てのログ出力が完了している場合にのみ、当該ログ出力が完了したと判断することで、ログの多重転送技術を使用する場合に生じる上記の不都合を回避する。
以下、本発明の一実施形態を添付図面を用いて説明する。
図1は、本発明を適用する計算機システムの構成を示す構成図である。図1の計算機システムは操作端末101、サーバ102、ストレージ103を含み、操作端末101とサーバ102、および、サーバ102とストレージ103はネットワークによって接続されている。サーバ102は、複数台の操作端末101と接続することができる。サーバ102は演算を実行する中央演算処理装置CPU(プロセッサ)104とプログラムやデータを格納するメモリ105を含む。データベース106(データベース管理システム)は、サーバ102上で実行されるプログラムであり、メモリ105に格納されたプログラムをCPU104が実行することにより実現される。
また、操作端末101は、クライアントアプリケーション1011を実行する。クライアントアプリケーション1011は、サーバ102のデータベース106にデータ操作の指示を送信し、データベース106からの応答を受け付けるプログラムである。なお、操作端末101はデータベース106に対して、データの参照指示、更新指示、コミット指示を送信することができる。
ストレージ103はハードディスク装置や不揮発性半導体などの記憶装置を用いて、ログ格納部116と、データ格納部117を格納している。
図2は、ストレージ103が、ログ格納部116およびデータ格納部117を格納する方法を模式的に示した図である。ストレージ103は、ハードディスク装置などの記憶領域を512バイトなどの一定サイズの領域に区切って管理し、それぞれの領域にアドレス201を付与している。このアドレスは、ロジカルブロックアドレス(LBA)と呼ばれる場合もある。図2では、アドレス0の領域にデータ「1、40、2、50」が、アドレス1の領域にデータ「3、40、4、50」が、アドレス2の領域にデータ「5、50、6、70」が格納されている例を示している。サーバ102は、このアドレスを指定して、ストレージ装置に格納されたデータを操作することができる。
データベース106は、メモリ105(図中メモリ領域)に、データ領域管理テーブル111、データ形式管理テーブル112、トランザクション管理テーブル113、ロック管理テーブル114、および、ログバッファ115を格納している。
データ領域管理テーブル111には、データを格納するテーブルの名称と格納位置を格納する。図3は、データ領域管理テーブル111の格納内容を例示している。データ領域管理テーブル111には、テーブル名301、開始LBA302、終了LBA303、および、解除中ロックのデータの参照許可フラグ304が格納される。テーブル名301には、テーブルを識別する名称を格納する。開始LBA302には、テーブルが格納されるストレージ103上の開始位置を示すロジカルブロックアドレスを格納する。終了LBA303には、テーブルが格納されるストレージ103上の終了位置を示すロジカルブロックアドレスを格納する。参照許可フラグ304には、データのロックの属性が解除中のときに、他のトランザクションのデータ参照の許可または不許可を示すフラグを格納する。参照許可フラグ304の「0」の記載は不許可を示し、参照許可フラグ304の「1」の記載は許可を示す。
図3の例では、テーブル名301「STOCK」のデータは、LBA番号0からLBA番号7999に格納され、テーブル名302「CUSTOMER」のデータは、LBA番号10000からLBA番号17999に格納されていることを示している。
データ形式格納テーブル112には、テーブル毎のデータの形式を格納する。図4は、データ形式格納テーブル112の格納内容を例示している。データ形式格納テーブル112には、テーブルを識別する名称を格納するテーブル名401と、テーブル内のデータの形式を格納するデータ形式402が記載されている。図4に示す例では、テーブル名401がStockのテーブルには、Item_IDとQuantityが整数型(INT)で格納されており、テーブル名401がCustomerのテーブルには、Customer_IDが整数型で、Nameが30個の文字列(CHAR[30])で格納されていることを示している。なお、Item_ID、Quantity、Customer_ID、Nameなどはカラム名と呼ばれる場合がある。
データベース106は、データ領域管理テーブル111とデータ形式管理テーブル112を用いて、SQL文の実行が可能である。例えば、「SELECT Quantity FROM Stock Where Item_ID=1」というSQL文は、「Stock」テーブルのItem_IDが1のQuantityの値を参照する指示である。データベース106がこのような指示を受信した場合、データ領域管理テーブル111からStockテーブルが格納されているLBA番号を取得し、ストレージ103から読み込む。そして、データ形式管理テーブル112に記載のデータ形式を参照して、「Item_ID=1」に該当するデータを参照する。
以上では、データベース106がSQL文を実行する方法を例示した。データベース106は、データの参照をするSELECT文だけでなく、データを更新するUPDATE文、データを削除するDELETE文、データを挿入するINSERT文についても、同様に実行可能である。
図1に示した操作端末101は、入出力機構107に指示を送信し、ストレージ103に格納されたデータ格納部117の操作を行う。一連のデータ操作はトランザクション単位で管理され、トランザクションを開始する際に、操作端末101はトランザクション開始の指示をデータベース106の入出力機構107に送信する。また、トランザクションを終了する際に、操作端末101はトランザクション終了の指示を入出力機構107に送信する。
図5は、データベース106の入出力機構107の動作を示すフローチャートである。入出力機構107は、操作端末101から指示を受信すると、ステップ501で受け付けた指示の種別の判定を行う。
操作端末101から受信した指示が、トランザクション開始の指示である場合、ステップ502において、トランザクションに番号付けを行う。入出力機構107は、操作端末101とトランザクション番号の対応を管理するトランザクション管理テーブル113に新たなトランザクションと操作端末101の識別子を格納する。そして、ステップ505において指示されたトランザクションを開始したことを操作端末101に送信する。
操作端末101から受信した指示が、データ操作の指示、または、トランザクション終了の指示である場合、ステップ503において、トランザクション番号と指示の内容をSQL実行機構108に送信する。ステップ504において、上記指示に対するSQL実行機構108からの応答を受信し、ステップ505において、SQL実行機構108からの応答を操作端末101に送信する。ここで、入出力機構107は、トランザクション管理テーブル113を参照し、トランザクション番号に対応付けられた操作端末101にSQL実行機構108が実行したトランザクションに対する応答を送信する。
操作端末101から受信した指示が、ロック解除中のデータに対する参照許可の設定指示である場合、ステップ506において、データ領域管理テーブル111の参照許可フラグ(参照許可属性)304を更新する。ロック解除中のデータの参照設定の指示は、「SET TABLE STOCK LOCK REFER YES」といった形式で与えられ、これは、テーブル名「STOCK」のデータについて、ロック解除中であっても他のトランザクションからの参照を許可する指示である。このような指示を受信した場合、図3に例示するデータ領域管理テーブル111の、テーブル名「Stock」のロック解除中のデータの参照許可フラグ304を「1」に設定する。また、「SET TABLE STOCK LOCK REFER NO」という指示は、テーブル名「Stock」のデータは、解除中のロックがされている場合にデータの参照を不許可にする指示である。このような指示を受信した場合、ステップ506は、図4に例示するデータ領域管理テーブル111の、テーブル名「Stock」のロック解除中のデータの参照許可フラグ304を「0」に設定する。
図6は、SQL実行機構108の動作を示すフローチャートである。SQL実行機構108は、入出力機構107からトランザクション番号と指示の内容を受信することで動作を開始する。SQL実行機構108はステップ601において、受信した指示種別の判定を行う。指示種別としては、データ更新指示、データ参照指示、および、コミット指示がある。ここで、データ更新指示とは、SQL文のUPDATE文、INSERT文、および、DELETE文などを指し、データ参照指示とは、SQL文のSELECT文などを指す。
図7は、データ更新指示を受信した場合のSQL実行機構108の動作を示すフローチャートである。ステップ701では、データ更新指示の操作対象のデータを特定する。データ更新指示は、例えば、「UPDATE STOCK SET Quantity = 100 WHERE Item_ID = 1」といった形式で与えられる。これは、「Stock」テーブルの「Item_ID=1」に該当するデータのQuantityの値を100に更新する指示である。この指示から、「Stock」テーブルの「Item_ID=1」のデータが操作対象のデータであることが分かる。このように、ステップ701では入出力機構107から受信した指示内容から、操作対象のデータを特定する。ステップ702では、図10に示すロック管理テーブル114を参照して、データ格納部117のロック状態の判定を行う。ロック管理テーブル114には、ロックされているデータ格納部117の情報が記載される。
図10にロック管理テーブル114の格納内容を例示する。ロック管理テーブル114には、データ格納部117のテーブルの名称を格納するテーブル名1001と、テーブル内のカラムの識別子を格納する識別カラム名1002と、識別カラム名1002に対応するデータ(レコード)の値を示すカラム値1003と、このデータを操作対象とするトランザクションの番号を格納するトランザクション番号1004と、および、当該データがロック中であるか否かを示すロック状態1005が格納される。テーブル名1001、識別カラム名1002、および、カラム値1003はロックされているデータを特定するための情報であり、トランザクション番号1004には当該データのロックを取得しているトランザクションの番号が記載され、ロック状態1005にはロックの状態(「ロック中」または「解除中」)が記載される。ここに、ロック状態1005の「0」は「ロック中」であることを示し、ロック状態1005の「1」は「解除中」であることを示す。図10の例では、テーブル名「Stock」で識別カラム名「Item_ID」が値「100」であるデータが、トランザクション番号「1」のトランザクションによって、「ロック中」のロックが取得されている例が示されている。
次に、図7のステップ702では、操作対象のデータが「ロック中」の場合にはステップ703に分岐し、操作対象のデータ「解除中」または「ロックなし」の場合はステップ704に分岐する。なお、ロック管理テーブル114に操作対象データのエントリが無い場合、SQL実行機構108は「ロックなし」と判定して、ステップ704の処理へ進む。ステップ703では、操作対象のデータのロック状態が「解除中」になるまで待機する。ステップ704では、SQL実行機構108が操作指示のデータ更新を実行する。上記のUPDATE文の例では、SQL実行機構108は、ストレージ103に格納されている「Stock」テーブルの「Item_ID=1」に該当するデータのQuantityの値を100に更新する。次に、ステップ705では、ログ出力機構110にデータ更新のログをログバッファ115へ出力するよう指示する。上記のUPDATE文の例では、トランザクション番号と「StockテーブルのItem_ID=1に該当するデータのQuantityの値を100に更新」というログの出力をログ出力機構110に指示する。
ステップ706では、排他制御機構109にロックの取得を指示する。上記のUPDATE文の例では、トランザクション番号と「StockテーブルのItem_ID=1に該当するデータのロック状態をロック中に変更」という指示を排他制御機構109に送信する。ステップ707では、データ操作が完了したことの返答を入出力機構107に指示する。この指示にはトランザクション番号が含まれており、指示を受信した入出力機構107はトランザクション管理テーブル113を参照してデータ操作の指示を行った操作端末101に応答を返す。
図8は、データ参照指示を受信した場合のSQL実行機構108の動作を示すフローチャートである。ステップ801では、データ参照の操作対象となるデータを特定する。データ参照指示は、例えば、「SELECT Quantity FROM STOCK WHERE Item_ID=1」といった形式で与えられる。これは、「Stock」テーブルの「Item_ID=1」に該当するデータのQuantityの値を参照する指示である。この指示から、「Stock」テーブルの「Item_ID=1」が操作対象のデータであることが分かる。このように、ステップ801では入出力機構107から受信した指示内容から操作対象のデータを特定する。ステップ802では、ロック管理テーブル114を参照して、操作対象のデータについてロック状態の判定を行う。
ロック管理テーブル114に該当データのエントリがない場合、ロック無しと判定して、ステップ807に分岐する。ロック管理テーブル114に該当データのエントリがある場合は、ステップ803に分岐する。ステップ803では、データ参照の操作指示に、ロック解除中のデータ参照の許可の属性が付与されているか否かを判定する。操作端末101はデータ参照の指示に、ロック解除中のデータ参照の許可の属性を付与することが可能であり、例えば、「SELECT Quantity FROM STOCK WHERE Item_ID=1 LOCK REFER YES」という形式で指定される。
ステップ803では、データ操作指示に「LOCK REFER YES」の指定があるか否かを判定して、この属性の指定があればステップ804の処理へ分岐し、この属性の指定がない場合には、ステップ806へ進む。ステップ804では、操作対象データにロック解除中のデータ参照の許可の属性が付与されているか否かを判定する。これは、図3に例示したデータ領域管理テーブル111のロック解除中のデータの参照許可フラグ304を参照して行う。該当データが格納されているテーブルのデータの参照許可フラグ304が「1」に設定されている場合、ロックの属性が解除中であるデータに対して、参照が許可されていると判定して、ステップ806の処理へ進む。参照許可フラグ304が「0」の場合は、解除中のデータ参照が許可されないのでステップ805に進む。
ステップ805では、操作対象のデータのロックが解除されるまで待機する。ここで、操作対象のデータのロックが解除されたことは、ロック管理テーブル114に該当データのエントリがなくなったことで判定できる。すなわち、SQL実行機構108は、ロック管理テーブル114を監視して、操作対象のデータのエントリがロック管理テーブル114から削除されたことにより、当該データのロックが解除されたと判定する。
ステップ806では、データのロックが「解除中」になるまでSQL実行機構108は待機する。データのロックが「解除中」になったことは、ロック管理テーブル114のロック状態1005が「1」に設定されたことで判定する。
ステップ807では、操作対象のデータをストレージ103から読み込む。ステップ808では、ストレージ103から読み込んだデータの返答を入出力機構107に指示する。この指示にはトランザクション番号が含まれ、入出力機構107はトランザクション管理テーブル113を参照し、データ操作の指示を行った操作端末101に応答を返す。
図9は、操作端末101からコミット指示を受信した場合のSQL実行機構108の動作を示すフローチャートである。ステップ901では、トランザクション番号とトランザクション完了のログ出力の指示をログ出力機構110に送信する。
ステップ902では、排他制御機構109にロック属性の「解除中」への変更を指示する。この指示は、コミットするトランザクションが保持するデータの全てのロックの状態を「解除中」に変更する指示である。ステップ903では、ステップ901で排他制御機構109へ指示したトランザクション完了のログ出力が完了するまで待機する。つまり、SQL実行機構108は、トランザクション完了のログをログバッファ115へ書き込みが完了した通知を排他制御機構109から受信するまで待機する。
ステップ904では、排他制御機構109に該当するトランザクションがロックしていたデータのロックの解除を指示する。この指示は、コミットするトランザクションが取得した全てのロックを解除する指示である。
ステップ905では、コミット完了の応答を入出力機構107に指示する。この指示を受けて、入出力機構107はデータ操作の指示を行った操作端末101にコミット完了の応答を返す。
図11は、排他制御機構109の動作を示すフローチャートである。排他制御機構109は、SQL実行部108から排他制御に関する指示を受信することで動作を開始する。
排他制御機構109がSQL実行部108から受信する指示としては、ロック取得指示、ロック状態変更指示、および、ロック解除指示がある。ロック取得指示とは、例えば、「トランザクション1が、StockテーブルのItem_ID=1のデータのロックを取得」といった指示である。また、ロック状態変更指示とは「トランザクション1のロックを解除中に変更」といった指示であり、ロック解除指示とは「トランザクション1のロックを解除」といった指示である。ステップ1101では、SQL実行部108から受信した指示の種別の判定を行う。受信した指示がロック取得指示の場合にはステップ1102へ進み、受信した指示がロック状態変更指示の場合にはステップ105ヘ進み、ロック解除指示の場合にはステップ1106へ進む。
ステップ1102では、ロック取得指示を受けたデータが既にロック管理テーブル114に登録されているか否かを判定する。上記のロック取得指示の例では、「StockテーブルのItem_ID=1のデータ」がロック管理テーブル114に登録されているか否かを判定する。該当データのエントリがロック管理テーブル114に存在する場合には、ステップ1103において該当エントリをロック管理テーブル114から削除する。ステップ1104では、受信した指示内容に従って、排他制御機構109がロック管理テーブル114に、受信した指示の対象となるデータのエントリを新たに追加する。このとき排他制御機構109は、新たに追加したエントリのロック状態1005を「0」に設定し、ロック状態を「ロック中」に設定する。
排他制御機構109はSQL実行部108からロック状態変更指示を受信した場合、ステップ1105においてロック管理テーブル114を変更し、該当トランザクションのロックの属性を「ロック中」から「解除中」に変更する。すなわち、排他制御機構109は、ロック管理テーブル114のロック状態1005を「1」に設定し、該当するトランザクション番号1004のデータのロックの属性を、「ロック中」から「解除中」に変更する。
排他制御機構109がロック解除指示を受信した場合、ステップ1106に進み、ロック管理テーブル114を変更し、該当トランザクションのロックをロック管理テーブルから削除する。すなわち、排他制御機構109は、ロック管理テーブル114から、該当するトランザクション番号1004のエントリを削除することで、該当するデータのロックを「解除中」から完全に開放された状態に変更する。
図12は、ログ出力機構110の動作を示すフローチャートである。ログ出力機構110はSQL実行部108からの指示に従って、ログを生成してストレージ103のログ格納部116に追記する。
ステップ1201において、ストレージ103に対してログの書き込み中か否かを判定する。ログの書き込み中の場合、ステップ1202においてログの書き込みが完了するまで待機する。なお、ログ出力機構110は、ログ書き込みの完了を待っている間もSQL実行部108から指示を受信することが可能であり、ログの書き込みが完了次第、SQL実行部108から指示されたログの書き込みをまとめて行う。
ステップ1203では、メモリ105のログバッファ115に格納されたログをストレージ103のログ格納部116に対して書き込む。ログ出力機構110が書き込むログとは、例えば、「トランザクション1がStockテーブルのItem_ID=1のQuantityを100に変更」や、「トランザクション1完了」といった内容である。
ステップ1204では、ログバッファ115からストレージ103のログ格納部116へログの出力が完了したことをSQL実行機構108に応答する。なお、ログ出力機構110がストレージ103へのログ出力を完了した時点で、メモリ105のログバッファ115の内容をクリアできる。
図13は、データベース106が操作端末101から受け付けた一連のトランザクションの処理の流れを示すタイムチャートである。図13では、データベース106がデータ格納部117のデータ(レコード)に対して更新処理を行った後に、コミット処理を行うトランザクションの一例を示している。
時刻T0で、データベース106は操作端末101からデータ格納部117の解除中のデータについて更新指示を受信し、更新処理を開始する。SQL実行機構108は、排他制御機構109に当該データのロックを指示し、当該データに対する他のトランザクションのアクセスを禁止する。時刻T1では、データベース106は操作端末101から更新処理を行ったデータ格納部117のデータについてコミット指示を受信し、コミット処理を開始する。
SQL実行機構108は、図9で示したように、ログ出力機構110へ当該コミット処理のログ出力を指示した後に、「ロック中」のデータのロックの属性を「解除中」に変更する。これにより、更新処理、コミット処理の一連のトランザクションAは、コミット処理が完了する以前に、トランザクションAの対象となるデータのロックを制限付きで解除し、後続のトランザクションBが、当該データに対するアクセスを許可することができる。
これにより、トランザクションが、データを排他的にロックする期間を短縮し、データベース106の処理性能を向上することができる。ただし、SQL実行機構108は、ストレージ103のログ格納部116へログの書き込みが完了して、完了の通知を入出力機構107へ送信する時刻T2までロックを解除しない。これにより、ストレージ103へのログの書き込みが失敗した場合であっても、データの整合性が損なわれるのを防ぐことができる。そして、SQL実行機構108は、ロックの属性が解除中のデータについては、更新指示、あるいは、ロック解除中のデータ参照許可の属性がある参照指示を実行する。このように、ロックの解除を部分的なものとして、トランザクションのログ書き込みが失敗した場合にデータの整合性が損なわれるのを防ぐ。一方、従来例では、図14で示すように、時刻T0で更新を開始してからコミット処理が完了する時刻T2までロック中となる。そのため、後続のトランザクションBは時刻T2以降までこのデータにアクセスできず、本発明に比してデータベースの処理性能は低下する。
なお、上記においては、参照指示にロック解除中のデータ参照の許可属性を付与する例を示したが、データ格納部117に格納されるデータに、ロック解除中のデータ参照の許可属性を付与するようにしても良く、上記と同様の作用及び効果を得ることができる。
また、データベース106は、操作端末101からロック解除中のデータ参照の許可の指示を受け付けることができ、当該指示を受け付けた以降の参照指示については、解除中のデータの参照を許可することができる。この場合、操作端末101のユーザが、データベース106またはサーバ102の負荷に応じて、ロック解除中の参照指示に対する制御を行うことが可能となる。
<第2実施形態>
図15は、第2の実施形態を示し、前記第1実施形態のメモリ105の所定の領域に、一時的にデータを格納するデータ退避領域1301を設けたものである。その他の構成は前記第1実施形態と同様であり、同一のものに同一の符号を付した。
メモリ105の所定の領域には、後述するように排他的にロックされる更新前のデータを複写して他のトランザクションへ参照させるためのデータ退避領域1301が設定される。図16は、データ退避領域1301の格納内容を例示する図である。データ退避領域1301には、更新前のデータを格納する退避データ1401と、このデータを排他的に使用するトランザクションのトランザクション番号1402と、トランザクションが完了したか否かを示すトランザクション完了フラグ1403が格納される。
トランザクション完了フラグ1403には、該データの更新を行ったトランザクションが未完了の場合に「0」が設定され、該データの更新を行ったトランザクションが完了している場合に「1」が設定される。
前記従来例のMVCC(Multi Version Concurrency Control)技術を用いる場合、SQL実行機構108の動作フローのうち、前記第1実施形態の図7と図8に示した動作フローは一部を変更して図17、図18のようにし、ログ出力機構110の動作フローは、図12の一部を変更して図19のようにする。以降、MVCC技術を用いる場合の変更点について説明する。
図17は、データ退避領域1301を用いる場合のSQL実行機構108の動作を示すフローチャートである。図17は、前記第1実施形態の図7に示したフローチャートにステップ1501が追加されたフローチャートである。なお、図17のステップ701〜707は前記第1実施形態の図7と同一であるので、重複した説明を省略する。
ステップ1501では、メモリ105のデータ退避領域1301に更新前のデータを退避する。例えば、「UPDATE STOCK SET Quantity = 100 WHERE Item_ID = 1」というSQL文を実行する場合、StockテーブルのItem_ID=1のデータのQuantityを100に変更したことをSQL実行機構108がデータ退避領域1301に記載する。この時点のトランザクション完了フラグ1403は「0」である。
また、ステップ1501では、SQL実行機構108がStockテーブルのItem_ID=1のデータが退避されているか否かを判定し、退避されていない場合には、更新前のデータをトランザクション番号1402=「−1」とし、トランザクション完了フラグ1403を「1」としてデータ退避領域1301に登録する。
図18は、データ退避領域1301を用いてデータ参照指示を受信した場合のSQL実行機構108の動作を示すフローチャートである。図中ステップ801、807、808は前記第1実施形態の図8と同様であるので、重複した説明を省略する。
ステップ1601では、SQL実行機構108がデータ退避領域1301に参照指示で指定されたデータのエントリがあるか判定する。指定されたデータのエントリがあれば、SQL実行機構108はステップ1602ヘ進み、データ退避領域1301のトランザクション完了フラグ1403が「1」となっている完了トランザクションのデータを参照する。
一方、ステップ1601で該当するエントリがない場合には、ステップ807へ進み、SQL実行機構108はデータ格納部117のデータを参照する。この場合では、前記第1実施形態と同様に、参照許可属性が設定されていない場合には、コミットが完了するまでデータの参照を待機することになる。
図19は、データ退避領域1301を用いる場合のログ出力機構110の動作を示すフローチャートで、前記第1実施形態の図12の一部を変更したものである。
ステップ1701では、ステップ1203でトランザクション完了ログを出力した場合、ログ出力機構110は該当トランザクションのデータ退避領域1301のエントリのトランザクション完了フラグ1403を「1」に設定する。このトランザクション完了フラグ1403の変更により、データ退避領域1301に完了トランザクションによって多重に退避されているデータが生じる場合、最新のデータを残し、その他の退避データを削除する。
以上の処理により、他のトランザクションに対して参照用のデータ退避領域1301を設けて、SQL実行機構108は、更新対象のデータについてログ出力機構110へログ出力を指示する際に、当該データの内容をデータ退避領域1301にコピーしておく。そして、SQL実行機構108は当該データをロックするよう排他制御機構109へ指示する。
当該データを参照する他のトランザクション(後続のトランザクションB)は、ロック中のデータ格納部117に代わってデータ退避領域1301のデータを参照することで、ロック解除を待つことなく処理を継続できる。当該データが完了したトランザクションのデータであるか否かは、トランザクション完了フラグ1403を参照することで判断できる。このように、SQL実行機構108は、データ格納部117がロック中の場合にはデータ退避領域1301のデータを参照し、当該データがロック解除中になればデータ格納部117を参照する。このように、トランザクション(先行するトランザクション)がデータをロックしている場合でも、他のトランザクション(後続のトランザクション)は、データを参照できる。そのため、後続のトランザクションの待ちの時間が短縮され、データベース106の処理性能を向上できる。
また、先行するトランザクションのログの書き込みが完了するまで、後続のトランザクションのログの書き込みを禁止するので、先行するトランザクションのログの書き込みが失敗した場合、後続トランザクションも無効にすることができる。これにより、ログの書き込みの失敗によって、データの整合性が失われるのを防ぐことができる。
<第3実施形態>
図20は、第3の実施形態を示し、前記第1実施形態のストレージ103にリモートコピー機能を加えて、このリモートコピー機能を利用したデータのリモートバックアップシステムに、本発明を適用した場合のシステム構成図である。なお、前記第1実施形態と同一のものには、同一の符号を付して重複した説明を省略する。サーバ102のメモリ105に設定されるログバッファは、前記第1実施形態に示したログバッファ115を、複数のログバッファ115a〜115cで構成する。
ログ出力機構110は、生成したログをログバッファ115aに追記していき、ログバッファ115aが満杯になった場合には、ストレージ103のログ格納部116へログバッファ115aの内容をまとめて書き出す。この、ログバッファの書き出しを、フラッシュとよぶ。このとき、ログ出力機構110は、生成したログの書き込み先をログバッファ115bへ切り替えて、SQL実行機構108の処理を継続する。このようにログ出力機構110は、ログバッファ115a〜115cを順次切り替えながら各ログバッファ115a〜115cの内容をまとめてストレージ103へフラッシュしていく。これにより、ログ出力機構110は、複数のログバッファ115a〜115cにより、ログの多重転送を行う。
ログ出力機構110は、生成したログがコミットログであった場合には、現在使用中のログバッファ115a〜115cの内容をストレージ103に書き込む。
ストレージ103は、ログ格納部116及びデータ格納部117を制御するストレージ制御部1801を含む。ストレージ103は外部のストレージ1802とネットワークによって接続されている。ストレージ1802には、ログ格納部1804とデータ格納部1805が設定されている。この例では、ストレージ103及びサーバ102が正サイトを構成し、ストレージ1802が副サイトを構成するデータのリモートバックアップシステムを示す。
ストレージ制御部1801は、サーバ102(またはデータベース106)から、ログ格納部116に対するログの書き込み指示を受信すると、このログの書き込み指示をストレージ制御部1803に送信する。ストレージ制御部1803は、ストレージ103から転送されたログの書き込み指示に基づいてログ格納部1804にログを書き込み、ストレージ103のストレージ制御部1801にログの書き込みが完了したことを示す応答を返す。この応答を受けたストレージ制御部1801は、ログ格納部116にログを書き込み、ログの書き込みを完了する。
図21は、ストレージ103のリモートコピー機能を利用したリモートバックアップシステムにおいて、本発明を適用する場合のログ出力機構110の動作を示すフローチャートである。この処理は、ログ出力機構110が各ログバッファ115a〜115cを監視して、ログが満杯となったとき、またはログバッファ115a〜115cへ書き込まれたログがコミットの場合に実行される。ここで、図21のフローチャートは、複数のログバッファに対して並列して実行することが可能である。
ステップ1901では、ログ出力機構110は、ログバッファの内容をストレージ103のログ格納部116に対して出力する。
ステップ1902では、ステップ1901において、トランザクション完了のログを出力したか否かを判定する。トランザクション完了のログを出力した場合は、ステップ1903に分岐する。
ステップ1903において、ログ出力機構110は、先行して出力された全てのログバッファの出力が完了しているか否かを判定する。そして、ログ出力機構110は、出力が完了していないログバッファがある場合には、ステップ1904に進み、先行する全てのログバッファの出力が完了するのを待つ。ステップ1905では、SQL実行機構110に対して、ログ出力完了の応答を返す。このようにすることで、先行するログバッファの出力が完了していない場合に、後続のログバッファの出力が完了したと判定してしまう可能性を無くす。
図22は、本第3実施形態の動作を示すタイムチャートで、あるデータに対して更新を行うトランザクションTr1〜Tr3が順次発行された場合の動作を示している。
時刻T0では、トランザクションTr1がデータベース106で開始される。トランザクションTr1のコミットが指示されると、時刻T1からトランザクションTr1のログがストレージ103及びストレージ1802へ書き込まれ、書き込みが完了した時刻T2で入出力機構107に対してトランザクション完了の通知を行う。
ここで、時刻T1では、当該データのロックの属性を解除中に設定し、当該データに対する後続トランザクションの操作を許可する。前記第1実施形態と同様に、解除中となったデータに対しては、更新及び条件付きの参照が許可されるため、後続のトランザクションTr2は、時刻T1から当該データに対して更新処理が可能になる。先行するトランザクションTr1のログの書き込みが完了する時刻T2からは、トランザクションTr2による当該データのロックを解除中へ移行し、この時刻T2から、トランザクションTr2のログの書き込みを開始し、時刻T3でトランザクションTr2が完了する。
図23に示すように、従来の制御では、トランザクションTr1のログの書き込みが完了するまで、当該データはロックされ他のトランザクションからのアクセスが拒否される。そのため、後続のトランザクションTr2、Tr3は、先行するトランザクションのログの書き込みが完了するまで処理を開始することができない。ストレージ103のリモートコピー機能を利用してデータのリモートバックアップを行う場合には、ストレージ103からストレージ1802への書き込みが完了して、トランザクションの完了となるため、ログの転送と書き込みよる遅延が大きくなる。本発明では、コミットの開始時にデータのロックを解除しておき、複数のログバッファ115a〜115cを用いることで、先行するトランザクションが完了する以前に後続のトランザクションの処理を実行する。これにより、ログの転送及び書き込みの遅延が大きくなるリモートバックアップシステムにおいて、データベース106の処理性能を向上できる。
なお、上記実施形態においては、データ格納部117、ログ格納部116をストレージ103に設定した例を示したが、これらの格納部をメモリ105に設定するインメモリのデータベースに適用できる。
本発明の第1の実施形態のシステムの構成を示すブロック図である。 第1の実施形態において、ストレージが、データを格納する例を示した説明図である。 第1の実施形態において、データ領域管理テーブルの格納内容を例示する説明図である。 第1の実施形態において、データ形式管理テーブルの格納内容を例示する説明図である。 第1の実施形態において、入出力機構で実行される処理の一例を示すフローチャートである。 第1の実施形態において、SQL実行機構で行われる処理の一例を示すフローチャートの前半部である。 第1の実施形態において、SQL実行機構で行われるデータ更新処理の一例を示すフローチャートである。 第1の実施形態において、SQL実行機構で行われる参照処理の一例を示すフローチャートである。 第1の実施形態において、SQL実行機構で行われるコミット処理の一例を示すフローチャートである。 第1の実施形態において、ロック管理テーブルの格納内容を例示する説明図である。 第1の実施形態において、排他制御機構で行われる処理の一例を示すフローチャートである。 第1の実施形態において、ログ出力機構で行われる処理の一例を示すフローチャートである。 第1の実施形態において、データの更新処理におけるロック状態と時刻の関係を示すグラフである。 従来例を示し、データの更新処理におけるロック状態と時刻の関係を示すグラフである。 本発明の第2の実施形態のシステムの構成を示すブロック図である。 第2の実施形態において、データ退避領域の格納内容を示す説明図である。 第2の実施形態において、SQL実行機構で行われるコミット処理の一例を示すフローチャートである。 第2の実施形態において、SQL実行機構で行われる参照処理の一例を示すフローチャートである。 第2の実施形態において、ログ出力機構で行われる処理の一例を示すフローチャートである。 本発明の第3の実施形態のシステムの構成を示すブロック図である。 第3の実施形態において、ログ出力機構で行われる処理の一例を示すフローチャートである。 第3の実施形態において、トランザクションの処理と時刻の関係を示すグラフである。 従来例において、トランザクションの処理と時刻の関係を示すグラフである。
符号の説明
101 操作端末
102 サーバ
103 ストレージ
106 データベース
107 入出力機構
108 SQL実行機構
109 排他制御機構
110 ログ出力機構
113 トランザクション管理テーブル
114 ロック管理テーブル
115 ログバッファ
116 ログ格納部
117 データ格納部

Claims (13)

  1. 計算機によって実行され、トランザクションの実行指示に従いデータの管理を行うデータベースの制御方法であって、
    前記トランザクションの実行指示を受け付ける処理と、
    前記トランザクションの実行指示で指定されたデータ更新を実行する処理と、
    前記データ更新のログを出力する処理と、
    前記更新したデータを排他的にロックする処理と、
    前記トランザクションを完了させるトランザクション完了の指示を受け付ける処理と、
    前記トランザクション完了の指示を受け付けたことを契機に、前記トランザクションが更新したデータのロックを解除する処理と、
    を含むことを特徴とするデータベースの制御方法。
  2. 前記トランザクション完了の指示を受け付ける処理は、
    前記受け付けたトランザクション完了のログを前記計算機に設定されたログバッファに格納する処理を含み、
    前記トランザクションが更新したデータのロックを解除する処理は、
    前記トランザクション完了のログをログバッファに格納したことを契機に前記トランザクションが更新したデータのロックを解除することを特徴とする請求項1に記載のデータベースの制御方法。
  3. 前記更新したデータを排他的にロックする処理は、
    前記ロックに対してロック中を示す属性を設定して排他制御を行い、
    前記トランザクションが更新したデータのロックを解除する処理は、
    前記ロックに対して解除中を示す属性を設定して部分的な排他制御を行うことを特徴とする請求項2に記載のデータベースの制御方法。
  4. 前記更新したデータを排他的にロックする処理は、
    前記ロックに対してロック中を示す属性を設定して排他制御を行う処理を含み、
    前記トランザクションが更新したデータのロックを解除する処理は、
    前記トランザクション完了のログをログバッファに格納したことを契機に、前記トランザクションが更新したデータのロックに対して解除中を示す属性を設定して部分的な排他制御を行う処理と、
    前記ログバッファに格納されたトランザクション完了のログを前記計算機に接続された記憶装置に格納したことを契機に、前記トランザクションが更新したデータのロックを解除する処理と、
    を含むことを特徴とする請求項2に記載のデータベースの制御方法。
  5. 前記トランザクションの実行中に、新たなトランザクションの実行指示を受け付ける処理と、
    前記受け付けた新たなトランザクションの実行指示が参照指示または更新指示の何れであるかを判定する処理と、
    前記判定した新たなトランザクションの実行指示が参照指示の場合には、前記参照指示で指定されるデータのロックが解除されるまで待機する処理と、
    前記判定した新たなトランザクションの実行指示が更新指示の場合には、前記更新指示で指定されるデータのロックの属性が解除中であっても更新を実行する処理と、
    を含むことを特徴とする請求項3に記載のデータベースの制御方法。
  6. 前記参照指示に対して、ロック解除中のデータの参照を許可する参照許可属性を設定可能であって、
    前記判定した新たなトランザクションの実行指示が参照指示の場合に、前記参照指示で指定されるデータのロックが解除されるまで待機する処理は、
    前記参照指示に参照許可属性が付与されているか否かを判定する処理と、
    前記参照指示に参照許可属性が付与されている場合には、参照指示の対象データのロックの属性が解除中の場合であってもデータの参照を実行する処理と、
    を含むことを特徴とする請求項5に記載のデータベースの制御方法。
  7. 前記データベースが管理するデータに対して、ロック解除中のデータの参照を許可する参照許可属性を設定可能であって、
    前記判定した新たなトランザクションが参照指示の場合に、前記参照指示で指定されるデータのロックが解除されるまで待機する処理は、
    前記参照指示で指定されたデータに参照許可属性が付与されているか否かを判定する処理と、
    前記データに参照許可属性が付与されている場合には、参照指示の対象データのロックの属性が解除中の場合であってもデータの参照を実行する処理と、
    を含むことを特徴とする請求項5に記載のデータベースの制御方法。
  8. 前記データベースに対して、ロック解除中のデータに対する参照許可の属性を設定可能であって、
    前記判定した新たなトランザクションの実行指示が参照指示の場合には、前記参照指示で指定されるデータのロックが解除されるまで待機する処理は、
    前記参照指示の対象データのロックの属性が解除中の場合であってもデータの参照を実行することを特徴とする請求項5に記載のデータベースの制御方法。
  9. 前記計算機は、データベースが管理するデータを退避する退避領域をさらに有し、
    前記トランザクションで指定されたデータを更新する処理は、
    更新前のデータを前記退避領域へ退避する処理を含み、
    前記データを更新するトランザクションの実行中に、参照指示を含む新たなトランザクションを受け付ける処理と、
    前記退避領域に退避されたデータのうち、トランザクション完了ログの出力が完了したトランザクションのデータを用いて、参照指示を実行する処理と、
    を含むことを特徴とする請求項3に記載のデータベースの制御方法。
  10. 計算機によって実行されるデータベースが、前記データベースに対するトランザクションの実行指示を受信し、前記トランザクションを実行し、このトランザクションの実行結果を示すログを生成し、複数のログバッファを使用して、前記ログを前記計算機に接続された記憶装置へ格納するデータベースの制御方法であって、
    前記計算機に設定されたログバッファに、トランザクションのログを格納する処理と、
    前記ログバッファに格納されたログを前記計算機に接続された記憶装置に書き込む処理と、を含み、
    前記各ログバッファに格納されたログを前記計算機に接続された記憶装置に書き込む処理は、
    先行して書き込まれた全てのログの書き込みが完了したか否かを判定する処理と、
    先行して書き込まれた全てのログの書き込みが完了している場合に、当該ログの書き込みが完了したと判定する処理と、
    を含むことを特徴とするデータベースの制御方法。
  11. プロセッサとメモリを備えた計算機によって実行され、トランザクションの実行指示に従いデータの管理を行うプログラムであって、
    前記データベースがトランザクションの実行指示を受け付ける手順と、
    前記トランザクションの実行指示で指定されたデータ更新を実行する手順と、
    前記データ更新のログを前記メモリに設定されたログバッファへ出力する手順と、
    前記更新したデータを排他的にロックする手順と、
    前記トランザクションを完了させるトランザクション完了の指示を受け付ける手順と、
    前記トランザクション完了の指示を受け付けたことを契機に、前記トランザクションが更新したデータのロックを解除する手順と、
    を計算機に機能させることを特徴とするプログラム。
  12. 前記トランザクション完了指示を受け付ける手順は、
    前記受け付けたトランザクション完了のログを前記ログバッファに格納する手順を含み、
    前記トランザクションが更新したデータのロックを解除する手順は、
    前記トランザクション完了のログをログバッファに格納したことを契機に前記トランザクションが更新したデータのロックを解除することを特徴とする請求項11に記載のプログラム。
  13. 前記更新したデータを排他的にロックする手順は、
    前記ロックに対してロック中を示す属性を設定して排他制御を行い、
    前記トランザクションが更新したデータのロックを解除する手順は、
    前記ロックに対して解除中を示す属性を設定して部分的な排他制御を行うことを特徴とする請求項12に記載のプログラム。
JP2007132571A 2007-05-18 2007-05-18 データベースの制御方法及びプログラム Expired - Fee Related JP4295333B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007132571A JP4295333B2 (ja) 2007-05-18 2007-05-18 データベースの制御方法及びプログラム
US11/819,310 US8131679B2 (en) 2007-05-18 2007-06-26 Exclusive control method for database and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007132571A JP4295333B2 (ja) 2007-05-18 2007-05-18 データベースの制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2008287548A true JP2008287548A (ja) 2008-11-27
JP4295333B2 JP4295333B2 (ja) 2009-07-15

Family

ID=40028584

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007132571A Expired - Fee Related JP4295333B2 (ja) 2007-05-18 2007-05-18 データベースの制御方法及びプログラム

Country Status (2)

Country Link
US (1) US8131679B2 (ja)
JP (1) JP4295333B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160050930A (ko) * 2014-10-31 2016-05-11 에스케이텔레콤 주식회사 대용량 분산 파일 시스템에서 데이터의 수정을 포함하는 트랜잭션 처리 장치 및 컴퓨터로 읽을 수 있는 기록매체
WO2018056267A1 (ja) * 2016-09-20 2018-03-29 日本電気株式会社 データベース管理装置、データベース管理方法、及びコンピュータ読み取り可能な記録媒体

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8073778B2 (en) * 2008-09-11 2011-12-06 Linden Research, Inc. Scalable distributed transaction manager for multi-host transactions
US8134793B1 (en) 2010-06-17 2012-03-13 Western Digital Technologies, Inc. Methods and systems for fast release of data from a host by a disk drive
CN102110167B (zh) * 2011-03-01 2013-07-31 上海维宏电子科技股份有限公司 数控系统中实现日志信息管理的方法
US10332129B2 (en) * 2013-11-01 2019-06-25 Salesforce.Com, Inc. Methods and systems for processing a log file
US20160034210A1 (en) * 2014-07-31 2016-02-04 International Business Machines Corporation Committing data across multiple, heterogeneous storage devices
US10339126B2 (en) 2014-08-11 2019-07-02 Salesforce.Com, Inc. Processing log files using a database system
US10467198B2 (en) * 2016-09-15 2019-11-05 Oracle International Corporation Network partition tolerance in a high available centralized VCS implementation
CN107977376B (zh) * 2016-10-24 2020-07-07 腾讯科技(深圳)有限公司 分布式数据库系统及事务处理方法
WO2021086875A1 (en) * 2019-10-31 2021-05-06 Pronto Technology, Inc. Data enrichment and matching

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5347648A (en) * 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
JP2737765B2 (ja) 1995-04-21 1998-04-08 日本電気株式会社 排他制御方式
JP2001229063A (ja) 2000-02-17 2001-08-24 Mitsubishi Electric Corp データ管理システム
JP2003140951A (ja) 2001-11-05 2003-05-16 Ricoh Co Ltd トランザクション同時実行制御方法およびトランザクション同時実行制御装置
JP4331970B2 (ja) 2003-05-07 2009-09-16 株式会社日立製作所 データベースのスナップショット方法及びシステム
JP4484618B2 (ja) * 2004-07-30 2010-06-16 株式会社日立製作所 ディザスタリカバリシステム、プログラム及びデータの複製方法
US20060206538A1 (en) 2005-03-09 2006-09-14 Veazey Judson E System for performing log writes in a database management system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160050930A (ko) * 2014-10-31 2016-05-11 에스케이텔레콤 주식회사 대용량 분산 파일 시스템에서 데이터의 수정을 포함하는 트랜잭션 처리 장치 및 컴퓨터로 읽을 수 있는 기록매체
KR102253841B1 (ko) 2014-10-31 2021-05-18 에스케이텔레콤 주식회사 대용량 분산 파일 시스템에서 데이터의 수정을 포함하는 트랜잭션 처리 장치 및 컴퓨터로 읽을 수 있는 기록매체
WO2018056267A1 (ja) * 2016-09-20 2018-03-29 日本電気株式会社 データベース管理装置、データベース管理方法、及びコンピュータ読み取り可能な記録媒体

Also Published As

Publication number Publication date
JP4295333B2 (ja) 2009-07-15
US8131679B2 (en) 2012-03-06
US20080288497A1 (en) 2008-11-20

Similar Documents

Publication Publication Date Title
JP4295333B2 (ja) データベースの制御方法及びプログラム
KR101805948B1 (ko) 파일 시스템에 대한 체크포인트
EP3117348B1 (en) Systems and methods to optimize multi-version support in indexes
JP3593366B2 (ja) デ−タベ−ス管理方法
KR101573965B1 (ko) 분산형 저장 시스템 내의 데이터의 원자 다중 변경
JP4237354B2 (ja) トランザクション処理方法及びトランザクション処理システム
US11132350B2 (en) Replicable differential store data structure
KR100862661B1 (ko) 지연된 로깅 방법 및 그 장치
JP5343399B2 (ja) 管理プログラム、管理方法、及び管理装置
EP3493071B1 (en) Multi-version concurrency control (mvcc) in non-volatile memory
US8832022B2 (en) Transaction processing device, transaction processing method and transaction processing program
JP2000284995A (ja) データ処理装置及び記録媒体
CN108021338B (zh) 用于实现两层提交协议的系统和方法
CN102024015A (zh) 用于批量删除数据库系统的数据记录的方法
JP6361223B2 (ja) トランザクションシステム
US20130085988A1 (en) Recording medium, node, and distributed database system
JP6293709B2 (ja) ストレージシステムおよびストレージシステム用プログラム
TWI815622B (zh) 資訊處理裝置
JP3785004B2 (ja) トランザクション管理方法及びトランザクション管理装置
JP2023511743A (ja) 確率的データ構造を使用した要求の低減
JPH05307478A (ja) データベース管理システムの構成法
JP4139642B2 (ja) データベース管理方法およびシステム
WO1993003436A1 (en) Method and apparatus for reducing lock period of shared buffer
WO2017060941A1 (ja) 複数のデータの整合性を維持するデータ管理システム及びデータ管理方法
WO2018193638A1 (ja) 計算機及びトランザクション処理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090216

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: 20090407

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090409

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120417

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4295333

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120417

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130417

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130417

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140417

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees