JPH06214848A - データベース管理システム - Google Patents

データベース管理システム

Info

Publication number
JPH06214848A
JPH06214848A JP5007805A JP780593A JPH06214848A JP H06214848 A JPH06214848 A JP H06214848A JP 5007805 A JP5007805 A JP 5007805A JP 780593 A JP780593 A JP 780593A JP H06214848 A JPH06214848 A JP H06214848A
Authority
JP
Japan
Prior art keywords
page
transaction
processing
database
management unit
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.)
Pending
Application number
JP5007805A
Other languages
English (en)
Inventor
Mitsunobu Tasaka
光伸 田坂
Kazuyoshi Negishi
和義 根岸
Hirofumi Inomata
宏文 猪股
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 JP5007805A priority Critical patent/JPH06214848A/ja
Publication of JPH06214848A publication Critical patent/JPH06214848A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 データベースの取消し処理を高速化し、シス
テム障害およびメディア障害に対しても回復が可能な管
理システムを提供する。 【構成】 二つの記憶手段106/108は、データベ
ース中の固定領域であるページ単位110に、トランザ
クションの処理時に参照され、前記ページに対するトラ
ンザクションの処理内容を格納するためのカレント領域
もしくはトランザクション実行開始以前の内容を格納す
るシャドウ領域を備え、二つの記憶手段のうち一方のペ
ージが、カレント領域を備えるときに、二つの記憶手段
のうちの他方の記憶手段のページは、シャドウ領域を備
え、カレント領域が記憶手段のいずれに備えるかを示す
管理情報を保持するページ管理手段200と、カレント
領域を、トランザクションの処理内容に従って更新する
更新手段112および114と、トランザクションが正
常終了したときに、シャドウ領域を、該トランザクショ
ンの処理内容に従って更新する遅延更新手段208とを
有する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データベース管理シス
テムに係わる。特に、データベース管理システムが障害
に対処するための機能に係わる。
【0002】
【従来技術】
[ディスクとバッファ]データベース管理システム(D
BMS)において、データベースは、ファイルとしてデ
ィスクに格納される。DBMSは、アプリケーションプ
ログラムやユーザが発行したデータベースの検索命令や
更新命令に応じて、データベースに存在するデータを処
理する。DBMSは、前記の処理をメモリにおいて行う
ために、処理対象のデータをディスクからメモリに読み
込む。更新命令に対しては、メモリに存在するデータを
更新したのち、当該データをディスクに書き込む。一般
に、DBMSが、上記の処理を行うためにメモリ上に確
保する領域は、バッファと呼ばれる。バッファの管理技
術に関しては、例えば、Effelsberg, et al:"Principle
s of Database Buffer Management," ACM Transactions
on Database Systems, VOL.9, NO.4, 1987, pp.560-59
5.に述べられている。ディスクに存在するデータベース
は、ページと呼ばれる固定長領域に分割される。ディス
クとバッファ間のデータの読み書きは、このページを単
位として行われる。バッファのサイズには制約があるの
で、バッファが一杯のときには、バッファに読み込まれ
ているページのうちからページを選択して、新たに読み
込むページと置換する。ここで、置換されるページに更
新が発生していた場合には、ディスクへの書き込みを行
う。
【0003】[障害回復とトランザクション]DBMS
の重要な機能として、従来から盛んに研究開発が行われ
ているものに、障害回復機能(recovery)がある。これ
は、DBMSに障害が発生したり、ユーザが処理途中で
当該処理を取り消したりした場合でも、データベースの
一貫性を保証するものである。このために、多くのDB
MSが導入している概念が、トランザクションである。
トランザクションとは、Bernstein, et al:"Concurrenc
y Control and Recovery in Database Systems," Addis
on-Wesley, 1987, pp.1-6.に述べられているように、デ
ータベースに対して行われる処理の単位であり、これを
単位として原子性(atomicity)が保証される。トラン
ザクションは、一般に、複数のデータベースに対する命
令から構成される。トランザクションの原子性の保証と
は、トランザクションが終了したあとの状態が、当該ト
ランザクションで実行される全ての命令が、データベー
スに対して反映されるか、もしくは、全く反映されない
かのどちらかであることを保証することである。トラン
ザクションを前者の状態にすることをコミットと呼び、
後者の状態にすることをロールバックと呼ぶ。ユーザ
は、トランザクションを開始し、コミットまたはロール
バックによって、トランザクションを終了する。
【0004】トランザクションの原子性を保証するため
に、DBMSは、当該トランザクションでバッファに読
み込んだページのうちで、更新が発生したページのディ
スクへの書き込みを、更新が発生した時点で行なわず、
コミットまで保留する。トランザクションがコミットさ
れると、更新が発生したページを、強制的にディスクへ
書き込む。従って、バッファのサイズが無制限ならば、
トランザクションがロールバックされると、ディスク書
き込みは発生しない。しかし、前述したように、実際に
は、バッファサイズは制約を有するので、ロールバック
されるトランザクションであっても、当該トランザクシ
ョンが更新したページが、既に、ディスク書き込みされ
ている場合がある。
【0005】一般に、障害回復機能が対処すべき障害と
して、以下の3つがある。
【0006】(1)トランザクション障害 ユーザが、自らが開始したトランザクションを、当該ト
ランザクションにおいて実行された命令のエラー応答な
どに応じて、ロールバックする場合である。DBMS
は、途中まで進行したトランザクションの処理内容を取
り消さなければならない。
【0007】(2)システム障害 DBMSにおいて動作するソフトウェアや、それを実行
するCPUなどのハードウェアの障害である。一般に、
バッファなどのメモリに存在するデータが失われる。シ
ステム障害が発生した場合、DBMSを再起動(restar
t)しなければならない。ここで、DBMSは、障害発
生時に実行されていた複数のトランザクションを回復す
る。ただし、これは、それらのトランザクションの進行
状態に応じて行われる。つまり、それらのトランザクシ
ョンは、その原子性を保証するために、コミットしてよ
い状態まで処理が進行しているものと、そこまで処理が
進行していないために、ロールバックしなければならな
いものに分けられる。前者のトランザクションに対して
は、当該トランザクションの処理をやりなおす。これ
を、一般に、再実行(REDO)と呼ぶ。後者のトランザク
ションに対しては、当該トランザクションで既に行われ
ていた処理を取り消す。これを、一般に、取消し(UND
O)と呼ぶ。
【0008】再実行、取消しを可能にするために、しば
しば用いられるのが、ログやジャーナルと呼ばれる履歴
情報である。これは、データベースの更新命令の実行に
おいて、それが対象とするページの更新前状態と更新後
状態を示すものである。履歴情報は、ディスクに書き出
される。DBMSは、システム障害が発生した後に再起
動され、履歴情報を用いて、トランザクションの再実行
や取消しを行う。なお、上述したトランザクションのロ
ールバックは、ここで述べたトランザクションの取消し
と同様に履歴情報を用いて行われる。従来から、この履
歴情報を用いた障害回復を可能とするために用いられて
いる技術が、ログ先書き(log write ahead)と呼ばれる
技術である。これは、トランザクションの処理結果をデ
ィスクへページ更新を行う際、ページ書き込みを行う前
に、当該ページの更新に関する履歴情報をディスクへ出
力するものである。これにより、ディスクへ書き込まれ
たページであっても、履歴情報を保持しているので、取
消し処理を行うことが可能となる。ここで、ログ先書き
により、履歴情報がディスク出力されていないページ
は、ディスクに書き込まれていないことが保証される。
【0009】(3)メディア障害 データベースが格納されるディスクの障害である。この
ような障害に対しては、しばしば、バックアップが用い
られる。バックアップとは、ある時点のデータベースの
内容を複写したファイルである。障害を起こしたディス
クが正常な状態になると、バックアップファイルをディ
スクに格納する。ただし、バックアップは、メディア障
害が発生したときのデータベースの状態ではない。そこ
で、これを障害が発生した時点の状態に回復するため
に、システム障害のときと同様に、履歴情報を用いて、
バックアップを取得した時点以降に実行されたトランザ
クションの再実行と取消しを行う。
【0010】バックアップを用いたメディア障害回復の
問題点は、バックアップによりデータベースを復旧する
とき、DBMSによるデータベースへの処理が停止して
しまうことである。その間、アプリケーションプログラ
ム、または、ユーザは、ただひたすら待ち続けなければ
ならない。
【0011】[シャドウファイル]トランザクション障
害やシステム障害が発生したときに、トランザクション
の取消し処理を高速に行う技術が、従来から、研究開発
されている。その一つがシャドウファイルと呼ばれるも
のであり、Lorie:"Physical Integrity in a LargeSegm
ented Database," ACM Transactions on Database Syst
ems, VOL.2, NO.1,1977, pp.91-104.に述べられてい
る。これは、バッファに存在するページをディスクへ書
き込むときに、当該ページの元の場所(スロット)に書
き込むのではなく、異なるスロットに書き込むものであ
る。新たに書き込むスロットは、どこでもよく、任意の
空きスロットを選ぶ。これにより、当該ページについ
て、書き込み以前の状態のページと、書き込み以後の状
態のページが、ディスクに存在することになる。前者を
カレントページ、後者をシャドウページと呼ぶ。トラン
ザクション障害やシステム障害が発生したとき、当該ペ
ージに対して行われた処理の取消しは、シャドウページ
をカレントページとすることで可能となる。
【0012】前記論文では、データベースファイルに対
するトランザクション開始時に、当該ファイルのページ
とスロットの対応を示すテーブル(ページテーブル)を
複写しておき、カレントページを含むファイルを示すペ
ージテーブルと、シャドウページを含むファイルを示す
シャドウページテーブルを生成する。すなわち、カレン
トページテーブルはカレントファイルを表し、シャドウ
ページテーブルはシャドウファイルを表す。トランザク
ションの取消しは、シャドウページテーブルをカレント
ページテーブルとすることで行われる。なお、新たなト
ランザクションが、当該ファイルに対する処理を開始す
るとき、それまでのシャドウページテーブルは無効なも
のとなり、再び、カレントページテーブルを複写してシ
ャドウページテーブルを生成する。
【0013】ここで、単一のデータベースファイルに対
して、複数のトランザクションが、並行して動作する場
合を考える。カレントページとシャドウページとの切り
替えは、ページテーブルの切り替え、つまり、カレント
ファイルとシャドウファイルとの切り替えにより行われ
るため、当該ファイルに投入される全てのトランザクシ
ョンに影響を及ぼす。当該ファイルをアクセスする複数
のトランザクションのそれぞれは、異なるページに対し
て処理を行い、異なる進行状態を有する。すなわち、あ
るトランザクションが取消しされるときに、他のトラン
ザクションも取消しするべき状態であるとは限らない。
つまり、上述のページテーブルを用いたシャドウファイ
ルは、DBMSが、複数のトランザクションを並行処理
しているような状態には適用できないため、トランザク
ション障害に用いることが困難である。
【0014】このようなシャドウファイルは、Gray, et
al:"The Recovery Manager of theSystem R Database
Manager," ACM Computing Surveys, VOL.13, NO.2, 198
1,pp.223-242.に述べられているように、IBM社のD
BMSであるSystem Rで用いられている。System Rは、
システム障害が発生したときのDBMS再起動におい
て、シャドウファイルを用いた障害回復を行う。トラン
ザクション障害に対しては、前述したような問題が存在
するため、シャドウファイルを用いずに、前述した履歴
情報を用いた障害回復を行う。
【0015】[シャドウファイルの改良技術]上記シャ
ドウファイルの問題点の解決を試みた技術が、日本電気
社の古瀬精治出願の特開平2−43644「データベー
スアクセス制御方式」に述べられている。この公知例の
原理を、図2に示す。データベースの内容を含むべき2
つのデータベースファイル、データベースファイルa1
06とデータベースファイルb108とを用意する。当
該データベースのページi110は、両方のファイルに
存在する。これらのペアとなるページのうち、片方のペ
ージが、カレントファイルでいうところのカレントペー
ジであり、他方のページが、シャドウファイルでいうと
ころのシャドウページとなる。本公知例は、それぞれの
ファイルにおけるページとスロットの対応の管理には関
与しない。このため、本公知例は、個々のページに対し
て、2つのファイルのうち、いずれがカレントページを
有するかを示す情報(ページ管理情報104)を備え
る。ページ管理情報104において、「新」で示される
ファイルがカレントページを含むファイルであり、
「旧」で示されるファイルがシャドウページを含むファ
イルである。図2では、ページiのカレントページは、
データベースファイルaに、シャドウページは、データ
ベースファイルbに含まれる。
【0016】本公知例の動作は、前述したシャドウファ
イルと似ている。ディスクからのページ読み込み112
においては、カレントページをバッファに読み込む。デ
ィスクへのページ書き込み114においては、ページを
シャドウページに上書きし、ページ管理情報104のシ
ャドウページとカレントページとを切り替える。これ
は、ページ管理情報を更新することにより行われる。上
記の切り替えが発生するのは、トランザクションのコミ
ット116が発生したときである。トランザクションの
ロールバック118が発生したときには、バッファ10
2に読み込んでいたページを捨てるだけで、ページ管理
情報を更新しない。本公知例では、上記のページ管理情
報を導入したことにより、シャドウページとカレントペ
ージとの切り替えを、ページ単位に行うことが可能にな
っている。これにより、異なるページに処理を行う複数
のトランザクションを、並行に処理することが可能にな
る。
【0017】
【発明が解決しようとする課題】上記のシャドウファイ
ルを改良した従来技術には、以下のような課題が存在す
る。
【0018】(1)メディア障害の回復処理オーバヘッ
ド 上記の従来技術では、カレントページとシャドウページ
とは、同一内容を有すわけではなく、常に、当該ページ
に対するトランザクションのコミット後とコミット前の
内容を、それぞれが含む。従って、カレントページを含
むファイルが格納されるディスクにメディア障害が発生
したときには、前述したようなバックアップを用いた回
復方法を用いる必要がある。これでは、DBMSを停止
しなければならず、回復が完了するまで、データベース
に対する処理を再開できない。
【0019】(2)システム障害の回復可能性 また、上記従来技術では、システム障害が発生して、メ
モリに存在するページ管理情報が失われた場合に、障害
発生時点の内容を含むページ管理情報を回復する方法が
述べられていない。上記従来技術では、シャドウページ
とカレントページとの内容が異なるため、システム障害
発生後のDBMS再起動において、カレントページとシ
ャドウページとを正確に示すページ管理情報がなけれ
ば、トランザクションの取消しや再実行を行うことがで
きない。
【0020】これに対処する方法として、ページ管理情
報とその更新履歴をディスク出力しておくことが考えら
れる。しかし、ページ管理情報の更新が発生するたびに
ディスク出力を行うことは、トランザクションの処理の
オーバヘッドを増加することになってしまう。しかも、
上記の従来技術では、トランザクションのコミットや、
バッファページの置換があると、必ず、ページ管理情報
の更新が発生するために、前記処理オーバヘッドは莫大
なものとなる。
【0021】本発明の目的は、複数のトランザクション
を並行処理し、かつ、トランザクションの取消しを高速
処理するDBMSを提供することである。
【0022】また、本発明の目的は、上記のようなDB
MSで、かつ、システム障害が発生したときにでも、ト
ランザクションの回復を正確に行えるDBMSを提供す
ることである。
【0023】さらに、本発明の目的は、上記のようなD
BMSで、かつ、メディア障害が発生したときにでも、
処理を続行できるDBMSを提供することである。
【0024】
【課題を解決するための手段】上記の目的を達成するた
めに、複数のトランザクションを処理する処理手段と、
該処理手段における処理対象であるデータベースを記憶
する二つの記憶手段とを備えるデータベース管理システ
ムであって、前記二つの記憶手段は、データベース中の
固定領域であるページ単位に、前記処理手段のトランザ
クションの処理時に参照され、前記ページに対する該ト
ランザクションの処理内容を格納するためのカレント領
域もしくは該ページの前記トランザクション実行開始以
前の内容を格納するシャドウ領域を備え、前記二つの記
憶手段のうち一方の記憶手段のページが、前記カレント
領域を備えるときに、前記二つの記憶手段のうちの他方
の記憶手段のページは、前記シャドウ領域を備え、前記
ページごとに、前記カレント領域が前記記憶手段のいず
れに備えるかを示す管理情報を保持するページ管理手段
と、前記カレント領域を、該トランザクションの処理内
容に従って更新する更新手段と、前記トランザクション
が正常終了したときに、前記シャドウ領域を、該トラン
ザクションの処理内容に従って更新する遅延更新手段と
を有する。
【0025】前記ページ管理手段は、前記トランザクシ
ョンの取消しが発生したときに、該トランザクションが
処理したページについて、前記シャドウ領域を前記カレ
ント領域と定めるように、前記管理情報を更新すること
ができる。
【0026】さらに、前記トランザクションの処理内容
と、前記ページ管理手段の管理情報との履歴情報を管理
する履歴情報管理手段を有する。
【0027】該データベース管理システムに障害が発生
し、前記ページ管理手段の管理情報が失われたときに、
前記履歴情報管理手段の履歴情報を参照し、前記ページ
管理手段上に前記管理情報を回復する回復手段をさらに
有することができる。
【0028】また、トランザクションが異常終了したと
きに、前記カレント領域において前記トランザクション
の行った処理を取り消す取消し手段をさらに有すること
ができる。
【0029】前記二つの記憶手段のうちのいずれかに障
害が発生したときに、前記ページ管理手段は、全てのペ
ージについて、前記カレント領域が正常な記憶手段に存
在することを示すように前記管理情報を定めることがで
きる。
【0030】また、前記二つの記憶手段のうちいずれか
に障害が発生したときに、前記履歴情報が有する管理情
報と、前記ページ管理手段が保持する管理情報とが一致
するか否かを比較し、比較結果に応じて前記トランザク
ションの再実行もしくは取消しを指示する比較手段をさ
らに有してもよい。
【0031】複数のトランザクションを処理する処理手
段と、固定長領域のページ単位に該処理手段における処
理対象であるデータベースを記憶する記憶手段とを備え
るデータベース管理システムであって、前記記憶手段
は、前記処理手段のトランザクションの処理時に参照さ
れ、該トランザクションの処理内容に従ってデータベー
スを更新するためのカレント領域と、該カレント領域に
対応し、前記トランザクション実行開始以前の内容を記
憶しているシャドウ領域とを前記ページごとにそれぞれ
備え、前記領域に関する情報に基づいて前記ページごと
に前記記憶手段を管理する管理手段と、前記カレント領
域において該トランザクションの処理内容を更新する更
新手段と、前記トランザクションが正常終了したとき
に、前記シャドウ領域において該トランザクションの処
理内容に従ってデータベースを更新する遅延更新手段と
を有することにより、上記課題を解決するようにしても
よい。
【0032】前記管理手段は、前記トランザクションの
取消しが発生したときに、該トランザクションの処理に
おける対応するページの前記シャドウ領域を前記カレン
ト領域として前記領域に関する情報を管理する。
【0033】前記トランザクションごとの処理内容と、
前記管理手段の領域に関する情報との履歴情報を管理す
る履歴情報管理手段をさらに有することができる。該デ
ータベース管理システムに障害が発生し、前記管理手段
の領域に関する情報および前記記憶手段のデータベース
が失われたときに、前記履歴情報管理手段を参照して前
記記憶手段上にトランザクションの処理内容に従ったデ
ータベースを回復する回復手段をさらに有することがで
きる。
【0034】また、トランザクションが異常終了したと
きに、前記カレント領域において前記トランザクション
の行った処理を取り消す取消し手段をさらに有する。
【0035】記記憶手段は、記憶領域が二重化されてお
り、該二重化された記憶領域において、前記ページごと
に前記カレント領域と前記シャドウ領域とが割り当てら
れ、前記管理手段は、前記領域に関する情報を、該二重
化された記憶領域のページが前記カレント領域であるか
前記シャドウ領域であるかを示す情報とし、前記記憶手
段の二重化された領域のうちいずれかの領域に障害が発
生したときに、前記管理手段は、全てのページについ
て、正常な領域を前記カレント領域とするように前記領
域に関する情報を定めるようにしてもよい。
【0036】前記記憶手段の二重化された領域のうちい
ずれかの領域に障害が発生したときに、前記履歴情報管
理手段の最新履歴情報の前記領域に関する情報と、前記
管理手段の領域に関する情報とが一致するか否かを比較
し、比較結果に応じて前記トランザクションの再実行も
しくは取消しを指示する比較手段をさらに有することが
できる。
【0037】
【作用】本発明は、二重化された一組のデータベースフ
ァイルを管理するDBMSに適用することができる。こ
れらのデータベースファイルは、両方とも、単一のデー
タベースの内容を含むが、ある時点においては、必ずし
も、その内容が一致していなくてもよい。データベース
のページ毎に、カレントページを含むデータベースファ
イルを定め、ページ読込みとページ書込みが、共に更新
手段により、カレントページに対して行われる。また、
トランザクションの取消しを、カレントページとシャド
ウページを切り替えることにより行う。さらに、カレン
トページに行った更新処理を、当該更新処理を行ったト
ランザクションがコミットされた後に、遅延更新手段に
よりシャドウページに対しても行う。さらに、履歴情報
管理手段における履歴情報に、当該履歴情報が表す処理
で対象となったページについて、いずれのデータベース
ファイルがカレントページを含んでいたかを示すデータ
(領域に関する情報)を含める。
【0038】本発明によれば、あるページに対してトラ
ンザクションが処理を行っている間、シャドウページ
は、ページのトランザクション開始前の状態を有する。
これにより、シャドウページとカレントページを切り替
えて、シャドウページをカレントページとすることによ
り、トランザクションを取り消すことができる。
【0039】また、ページ単位にシャドウページとカレ
ントページの切り替えを管理するページ管理手段のペー
ジマップを有するので、異なるページに対して処理を行
う複数のトランザクションの並行処理が可能となる。
【0040】また、トランザクションがコミットされた
後に、シャドウページに対する遅延更新を行うので、遅
延更新が終了し、かつ、トランザクションが処理を行っ
ていないページについては、カレントページとシャドウ
ページが同一内容を有する。これにより、メディア障害
が発生したときに、2つのデータベースファイルを異な
るディスク装置に格納していれば、ページマップにおい
て、全てのページのカレントページが、正常なディスク
装置に格納されたデータベースファイルに含まれるとす
るだけで、DBMSの処理を続行することができる。た
だし、遅延更新が行われるべきページは、遅延更新が終
了した後に、新たなトランザクションを受け付けること
ができる。
【0041】また、履歴情報にページマップデータを含
めることにより、システム障害が発生して、メモリ上の
ページマップが失われてしまった場合でも、システム再
起動において、ページマップを回復し、トランザクショ
ンの取消しと再実行を正確に行うことができる。システ
ム障害が発生したときに、トランザクションが処理を行
っていないページについては、カレントページとシャド
ウページの内容は一致するので、ページマップの当該ペ
ージに対するエントリの値は、どちらのデータベースフ
ァイルを示してもよい。システム障害が発生したとき
に、トランザクションが処理を行っていたページについ
ては、以下のように扱うことができる。DBMSは、再
起動されると、トランザクションの取消しと再実行を行
うために、必ず、履歴情報を参照する。ここで、DBM
Sは、履歴情報が有するページマップデータにより、シ
ステム障害が発生した当時、いずれのデータベースファ
イルがカレントページを有していたかを判断し、それを
ページマップに反映する。そのうえで、ページマップの
更新と履歴情報を用いて、トランザクションの取消しや
再実行を行う。なお、あるページに対して、トランザク
ションが処理を行っていたかどうかの判断は、そのペー
ジに関して、コミットされていないトランザクションに
ついての履歴情報が存在するかどうかにより判断するこ
とができる。
【0042】
【実施例】以下、図面を参照して本発明の実施例を説明
する。図1に本実施例の概略を説明するための説明図を
示す。本実施例のデータベース管理システムは、複数の
トランザクションを処理する処理手段と、該処理手段に
おける処理対象であるデータベースを記憶する二つの記
憶手段とを備えるデータベース管理システムであって、
前記二つの記憶手段は、データベース中の固定領域であ
るページ単位に、前記処理手段のトランザクションの処
理時に参照され、前記ページに対する該トランザクショ
ンの処理内容を格納するためのカレント領域もしくは該
ページの前記トランザクション実行開始以前の内容を格
納するシャドウ領域を備え、前記二つの記憶手段のうち
一方の記憶手段のページが、前記カレント領域を備える
ときに、前記二つの記憶手段のうちの他方の記憶手段の
ページは、前記シャドウ領域を備えるように定めてい
る。図1において、二つの記憶手段は2つのデータベー
スファイルの、データベースファイルa106とデータ
ベースファイルb108とであり、ページごとに前記カ
レント領域を含むデータベースファイルと前記シャドウ
領域を含むデータベースファイルとが定められている。
本実施例のデータベース管理システムは、データベース
中のページのカレント領域がいずれのデータベースファ
イルに含まれるかを示す管理情報を保持するページマッ
プ200と、ページマップを管理するページ管理手段と
を備える。以下、カレント領域をカレントページ、シャ
ドウ領域をシャドウページという。ページマップ200
は、カレントページを含むデータベースファイルが、2
つのデータベースファイルのうちのどちらであるかをビ
ットマップにより示す。例えば、ページi110に対応
するビットの値によって、ページiのカレントページを
含むデータベースファイルを示す。図1に示す例では、
ページマップのページiに対応するビットの値が「0」
の場合には、ページiのカレントページはデータベース
ファイルaに含まれ、シャドウページがデータベースフ
ァイルbに含まれる。「1」の場合には、その逆であ
る。本発明のページマップ200と、前記の従来技術の
ページ管理情報104の相違は、それらに対する動作に
ある。本発明では、ページ読み込み112とページ書き
込み114とは、いずれもカレントページに対して行わ
れる。また、トランザクションが正常終了したときに、
シャドウページに該トランザクションの処理の結果を更
新する遅延更新手段208を有して、これにより、シャ
ドウページはトランザクション実行開始以前の内容を記
憶する。遅延更新手段は、トランザクション120がコ
ミットされたとき、当該トランザクションが更新命令を
含むならば、シャドウページに対して、当該トランザク
ションを、更新後ジャーナル204を用いて再実行す
る。なお、あるページに対して新たなトランザクション
が処理を開始したときに、当該ページに対して、それよ
り以前に終了したトランザクションに係わる遅延更新が
行われている場合がある。このような場合には、新たな
トランザクションの開始は、前記の遅延更新の終了まで
延期される。
【0043】障害が発生しないかぎり、カレントページ
とシャドウページの切り替えは発生せず、ページマップ
の更新も発生しない。管理手段は、前記トランザクショ
ンの取消しが発生したときに、該トランザクションの処
理における対応するページの前記シャドウ領域を前記カ
レント領域として前記領域に関する情報を管理する。す
なわち、ページiに対する処理を行っていたトランザク
ションのロールバック(取消し)が発生すると、ページ
マップのページiに対応するエントリを更新して、それ
までのシャドウページをカレントページとする。さら
に、トランザクション120が取消されたとき、当該ト
ランザクションが処理を行っていたページi110が、
バッファページの置換によりィディスクへ書き込まれて
いた場合には、シャドウページ(取消し前のカレントペ
ージ)に対して、更新前ジャーナルを用いた取消し処理
を行う。また、2つのデータベースファイルのうちいず
れかの領域に障害が発生したときに、前記管理手段は、
ページマップを、全てのページについて、正常な領域を
カレントページであると示すようにする。
【0044】また、トランザクションごとの処理内容
と、前記管理手段の領域に関する情報との履歴情報を管
理する履歴情報管理手段をさらに有する。すなわち、更
新命令の実行において、ページに応じて取得する履歴情
報である更新前ジャーナル202と更新後ジャーナル2
04とに、領域に関する情報のページマップデータ20
6を含む。ページマップデータは、トランザクション1
20が、ページiに対する処理を開始したとき、そのカ
レントページが、どちらのデータベースファイルに含ま
れるものであったかを示す。
【0045】以下に、詳細な構成および動作について説
明する。図3は、本発明の実施例を説明するためのDB
MSのシステム構成を示す。本システムは、CPU30
に、記憶手段のディスクa32、ディスクb34および
ディスクc36が接続されたものである。DBMS30
2は、複数のアプリケーションプログラム300、また
は、ユーザが発行して入力部311において受け付け
た、検索命令、更新命令、トランザクションの開始命
令、コミット命令、ロールバック命令等を受け取り、デ
ータベースの内容を含むべく二重化されたファイル、デ
ータベースファイルa302とデータベースファイルb
304とに対してそれらを実行する。アプリケーション
プログラム、または、ユーザが発行して入力部311に
おいて受け付けた命令は、ページ二重化管理部におい
て、個々のページに対する命令として実行される。以降
では、このページに対する命令を、総称して、ページ処
理命令と呼ぶ。
【0046】DBMS302は、以下の機能部から構成
される。命令解析部3020は、アプリケーションプロ
グラム、または、ユーザから受け取った検索命令や更新
命令を解析して、ページに対する検索命令や更新命令を
生成し、ページ二重化管理部3022に渡す。以降で
は、前記のページに対する検索命令や更新命令を、ペー
ジ操作命令400、または、ページ検索命令/ページ更
新命令と呼ぶ。また、命令解析部3020は、アプリケ
ーションプログラム、または、ユーザから受け取ったト
ランザクションに関する命令を解析して、トランザクシ
ョン管理部3024に渡す。以降では、前記の命令をト
ランザクション処理命令と呼ぶ。
【0047】トランザクション管理部3024は、命令
解析部からトランザクション処理命令を受け取り、トラ
ンザクションの登録や登録解除を行い、ページ二重化管
理部とジャーナル管理部3026とに対して、トランザ
クション処理命令402を渡す。また、トランザクショ
ン管理部は、システム再起動管理部からDBMSが再起
動されたことを通知されると、トランザクションの回復
処理を行う。また、トランザクション管理部は、ディス
ク状態管理部からメディア障害の発生を通知されると、
トランザクションの回復処理を行う。ここで、トランザ
クションの回復処理において、トランザクション管理部
は、ジャーナル管理部3026を介して、履歴情報を読
み込み、取消しや再実行が必要なトランザクションを判
断する。さらに、トランザクション管理部は、ページ二
重化管理部に対して、トランザクションの取消し命令や
再実行命令を渡す。以降では、これらを総称してトラン
ザクション回復命令406と呼ぶ。
【0048】ジャーナル管理部3026は、トランザク
ション管理部やページ二重化管理部からの要求に従っ
て、ジャーナルファイル306からの履歴情報408の
読み込み、また、ジャーナルファイルへの履歴情報の書
き込みをファイル管理部3028に要求する。
【0049】ファイル管理部3028は、データベース
ファイルa、データベースファイルbおよびジャーナル
ファイルの読み書きを行う。
【0050】システム再起動管理部3030は、DBM
Sが再起動されたことを判別して、そのことをページ二
重化管理部、トランザクション管理部に通知する。
【0051】つぎに、ページ二重化管理について図4を
参照して説明する。ページ二重化管理部3022は、ペ
ージマップを管理する。図4は、ページ二重化管理部の
システム構成を示す。ページ管理部30220は、ペー
ジマップ302200と、トランザクションで処理中の
ページを管理するページ占有管理テーブル302202
とを有する。ページ管理部は、ページ処理命令を受け取
り、ページマップを参照して、当該ページのカレントペ
ージやシャドウページを有するデータベースファイルを
特定する。ページマップは、データベースの全てのペー
ジに対するエントリを有して、個々のページのカレント
ページが、いずれのデータベースファイルに存在するか
を示す。また、ページ管理部は、前記ページ処理命令
と、前記データベースファイルの識別子を、バッファ管
理部30228に渡し、当該命令の実行を要求する。
【0052】ページ管理部30220が受け取るページ
処理命令には、以下のような命令がある。ページ管理部
は、命令解析部から、ページ操作命令を受け取る。ま
た、ページ管理部は、トランザクション投入管理部30
222からトランザクションが処理を行ったページに対
するトランザクション処理命令を受け取る。以降では、
これらを、ページコミット命令もしくはページロールバ
ック命令と呼ぶ。また、ページ管理部は、遅延更新管理
部30224からトランザクションがコミットされた場
合の、シャドウページに対する遅延更新命令を受け取
る。以降では、これをページ遅延更新命令と呼ぶ。さら
に、ページ管理部は、トランザクション回復管理部30
226からトランザクション回復命令の発行されたトラ
ンザクションが処理を行ったページに対する取消し命令
や再実行命令を受け取る。以降では、これらをページ回
復命令と呼ぶ。
【0053】ページ管理部は、ページ操作命令に対し、
ページ占有管理テーブルを参照して、当該ページを処理
しているトランザクションの有無を調べ、そのようなト
ランザクションがあれば、前記ページ操作命令の実行要
求を、当該トランザクションが終了するまで延期する。
以降では、トランザクションがページを処理中である状
態を、ページが占有されていると言う。さらに、ページ
管理部は、前記ページ操作命令の種類と当該ページの識
別子をトランザクション投入管理部に通知する。
【0054】また、ページ管理部は、システム障害やメ
ディア障害が発生したときに、以下のように動作する。
ページ管理部は、システム再起動管理部から、DBMS
の再起動通知404を受け取ると、ページマップを初期
状態に設定する。ページマップは、DBMSが起動して
いないときには、ディスクに格納される。DBMSは、
正常に起動されたときに、ディスクに格納されたページ
マップを読み込むが、この内容を、ページマップの初期
状態と呼ぶ。また、ページ管理部は、ディスク状態管理
部30230から、メディア障害が発生したディスクの
識別子を受け取り、ページマップの全てのエントリを、
正常なディスクに格納されたデータベースファイルを示
すように更新する。
【0055】バッファ管理部30228は、バッファa
302280とバッファb302282とを有する。バ
ッファaは、データベースファイルaから読み込んだペ
ージを格納し、当該ページはデータベースファイルaに
書き込まれる。バッファbは、データベースファイルb
306から読み込んだページを格納し、当該ページはデ
ータベースファイルbに書き込まれる。バッファ管理部
は、ページ管理部から、ページ処理命令と、それらの処
理を行うべきデータベースファイルの識別子を受け取
り、前記識別子の示すデータベースファイルに対応する
バッファを介して、当該命令を実行する。さらに、バッ
ファ管理部は、ページ処理命令が、ページ更新命令であ
る場合、当該ページの履歴情報を生成してジャーナル管
理部に渡す。また、バッファ管理部は、ページ処理命令
がページロールバック命令である場合、ジャーナル管理
部から当該ページの履歴情報を取得する。また、バッフ
ァ管理部は、バッファが満杯になり、新たなページを読
み込めなくなると、バッファに存在するページから、ペ
ージを選択して、当該ページと新たなページを置換す
る。このとき、置換されたページに更新が発生していた
場合には、当該ページをディスクに書き込む。また、バ
ッファ管理部は、ファイル管理部が異常応答を返すと、
異常が発生したデータベースファイルの識別子を、ディ
スク状態管理部へ通知する。
【0056】トランザクション投入管理部30222
は、トランザクション投入管理テーブル302220を
有する。トランザクション投入管理テーブルは、トラン
ザクションが処理を行ったページを示す。トランザクシ
ョン投入管理部は、トランザクション管理部からトラン
ザクション処理命令を受け取り、それが開始命令であれ
ば、トランザクション投入管理テーブルに当該トランザ
クションに対するエントリを生成する。また、トランザ
クション投入管理部は、ページ管理部からトランザクシ
ョンが占有を開始したページの識別子を受け取り、トラ
ンザクション投入管理テーブルに登録する。また、トラ
ンザクション投入管理部は、トランザクション管理部か
ら、トランザクション処理命令を受け取ると、トランザ
クション投入管理テーブルを参照して、当該トランザク
ションが処理を行ったページに対するページコミット命
令やページロールバック命令を生成して、ページ管理部
に渡す。さらに、トランザクション投入管理部は、トラ
ンザクション管理部からトランザクションのコミット命
令を受け取ると、遅延更新管理部に対して遅延更新を指
示する。
【0057】遅延更新管理部30224は、トランザク
ション投入管理部からトランザクションが処理を行った
ページと前記トランザクションの識別子とを受け取る
と、ジャーナル管理部を介して、必要な履歴情報を取得
して参照し、ページ遅延更新命令を生成してページ管理
部に渡す。
【0058】トランザクション回復管理部30226
は、トランザクション管理部からトランザクションの取
消し命令または再実行命令を受け取ると、当該トランザ
クションの履歴情報をジャーナル管理部に要求する。ト
ランザクション回復管理部は、受け取った履歴情報を参
照し、ページ回復命令を生成し、ページ管理部に渡す。
【0059】ディスク状態管理部は、バッファ管理部か
ら、異常の発生したデータベースファイルの識別子を受
け取ると、ページ管理部に対して、メディア障害が発生
したことを通知する。
【0060】つぎに、図5を参照して以降の実施例で用
いるトランザクションの処理内容とデータベースの内容
について説明する。図5は、ディスク50に格納されて
いるデータベース52の内容と、当該データベース52
に対するトランザクションの処理内容500を示す。ト
ランザクションには、T1やT2というトランザクショ
ンの識別子が付される。図5において、2つのトランザ
クションT1とT2とは、DBMSにより並行処理され
る。データベース52は、固定長を有するページ54を
複数備え、個々のページにはページ識別子56が付され
る。ページ54は、例えば、A0、B0などのデータ5
04を有する。
【0061】次に、図6から図10を用いて、本発明の
第一の実施例の動作を説明する。本実施例では、本発明
を適用したDBMSの、トランザクションのコミット命
令が発行されたときの動作を示す。先ず、図6および図
7について説明する。図6および図7は、図5に示した
トランザクションT1およびT2の処理が終了した段階
における、トランザクション投入管理部と、ページ管理
部と、バッファ管理部とがそれぞれ有するデータの様子
を示す。
【0062】図6に、ページ管理部と、バッファ管理部
とにおけるページ操作命令の実行の様子を示す。ページ
に対するページ操作命令として更新命令があった場合を
例にする。トランザクションT1によるページ2のペー
ジ更新命令600が命令解析部からページ管理部に渡さ
れると、ページ管理部は、ページマップ302200を
参照する。ページ管理部は、当該ページ2のカレントペ
ージがデータベースファイルbに含まれると判断する。
これは、ページマップのページマップデータ66が、カ
レントページを含むデータベースファイルを示す(60
2)ことによる。本実施例では、ページマップデータは
「0」か「1」かを値として有するデータで、「0」は
データベースファイルa、「1」はデータベースファイ
ルbを示す。よって、ページ2のカレントページは、デ
ータベースファイルbに含まれることがわかる。つぎ
に、バッファ管理部が、データベースファイルbから、
ページ2をバッファbに読み込む(604)。ここで、
ページ2が、既にバッファbに存在するならば、データ
ベースファイルbからの読み込みを行う必要はない。ペ
ージ2がバッファbに読み込まれると、バッファ管理部
の処理手段は、ページ更新命令に応じて更新処理を行
う。図6においては、バッファbのページ2のデータ
「B0」が、ページ更新命令に応じて、「B1」に更新
された様子を示している。同様に、バッファ管理部は、
トランザクションT1とT2とが処理を行う他のページ
を、データベースファイルaとデータベースファイルb
とからバッファに読み込み、必要な処理を行う。ここ
で、図5に示したトランザクションT2の処理が終了し
た状況で、バッファbが満杯になり、ページ4がバッフ
ァページの置換によりデータベースファイルbに書き込
まれるとする(606)。
【0063】図7は、トランザクション投入管理部とペ
ージ管理部とによるトランザクションの登録およびペー
ジ占有の管理の様子を示す。トランザクション投入管理
部は、命令解析部から、トランザクションT1とT2と
の開始命令をそれぞれ受け取って、トランザクション投
入管理テーブル302220に、それぞれのエントリを
生成する。トランザクション投入管理テーブルのエント
リは、ページ二重化管理部に投入されているトランザク
ションに対応し、トランザクションが占有するページを
示すレコードへのポインタ72を有する。例えば、図7
において、トランザクションT1が、ページ1、2およ
び5を占有して処理する場合には、ページ1、2および
5をチェインして示すようにする。ページ管理部には、
各ページごとに各トランザクションがエントリされる。
さて、ページ管理部は、命令解析部からページ操作命令
を受け取ると、ページ占有管理テーブル302202に
当該ページの占有を開始したトランザクションを登録す
る。例えば、トランザクションT1のページ2に対する
ページ更新命令600を受け取ったときには、ページ2
に対してT1を登録する。しかるのちに、ページ管理部
は、トランザクション投入管理部に対してトランザクシ
ョンが占有を開始したページとその処理が更新か否かの
種別とを通知する。トランザクション投入管理部は、前
記の通知に応じて、当該ページとその処理種別とを表す
レコードを、当該トランザクションが占有しているペー
ジを示すポインタチェインにつなぐ。前記のレコード
は、ページ識別子62と更新フラグ74とから成る。更
新フラグは、前記のページ操作命令が、更新命令である
かどうかを示すフラグである。例えば、トランザクショ
ンT1がページ2の占有を開始したことに応じて、トラ
ンザクション投入管理テーブルは、ページ2に対するレ
コードを生成し、トランザクションT1に応じたポイン
タチェイン76をつなぐ(702)。
【0064】つぎに、図8を用いて、履歴情報800に
ついて説明する。バッファ管理部は、ページ更新命令に
よりバッファページの更新を行うとき、当該ページ更新
についての履歴情報を生成し、ジャーナル管理部に、当
該履歴情報をジャーナルファイルへ出力するよう要求す
る。図8は、トランザクションT2によるページ4の更
新に関する履歴情報を示す。履歴情報には、更新前ジャ
ーナル802と更新後ジャーナル804とがある。更新
前ジャーナルは、更新処理が行われたページのカレント
ページを含むデータベースファイルを示すページマップ
データ8002と、更新処理が行われたページの識別子
8004と、更新処理を行ったトランザクションの識別
子8006と、当該ページの更新前のデータ8008を
有する。更新後ジャーナルは、前記の更新前ジャーナル
と同様の構造を有して、更新前データの代わりに、当該
ページの更新後のデータ8010を有する。
【0065】つぎに、図9と図10と参照して、トラン
ザクションのコミット命令が発行されたときの処理につ
いて説明する。図9は、トランザクションT1のコミッ
ト命令が発行されたときの、ページ管理部およびバッフ
ァ管理部の動作を示す。図10は、その処理の流れであ
るフローチャートを示す。以下、図10に示すフローチ
ャートに従って、図9を参照して説明を行う。
【0066】先ず、アプリケーションプログラムまたは
ユーザ300が、トランザクションT1のコミット命令
を発行する(S1000)。命令解析部3020が当該
命令を受け取り、トランザクション管理部3024を介
して、トランザクション投入管理部30222に渡す
(S1002)。トランザクション投入管理部は、トラ
ンザクション投入管理テーブル302220を参照し
て、コミット命令のあったトランザクションT1が占有
していたページを調べて、当該ページに対するページコ
ミット命令908を生成する(S1004)。ページコ
ミット命令は、当該命令の種別がコミットであることを
示すデータ9082と、コミットされるトランザクショ
ン識別子9084と、当該命令が対象とするページの識
別子9086と、当該トランザクション内での当該ペー
ジに対する更新発生の有無を示す更新フラグ9088と
を有する。図7に示すように、トランザクションT1が
占有していたページは、ページ1、ページ2およびペー
ジ5であるので、これらのページに対するページコミッ
ト命令を生成する。更新発生の有無は、トランザクショ
ン投入管理テーブルの更新フラグ74を参照すれば判別
できる。つぎに、トランザクション投入管理部は、ペー
ジ管理部30220に、ステップ1004で生成したペ
ージコミット命令を渡す(S1006)。ページ管理部
は、ページマップ302200において、ページコミッ
ト命令が示すページ、つまり、トランザクションT1が
占有しているページのページマップデータ900を参照
して、当該ページのカレントページを含むデータベース
ファイルを調べる(S1008)。ここで、ページ1と
ページ5とのカレントページはデータベースファイル
a、ページ2のカレントページは、データベースファイ
ルbに含まれることがわかる。つぎに、ページ管理部
は、前記ページコミット命令と前記のデータベースファ
イルの識別子を、バッファ管理部に渡す(S101
0)。バッファ管理部は、ページコミット命令の更新フ
ラグ9088を調べて、当該ページに更新が発生してい
たならば、当該ページのバッファページをデータベース
ファイルに書き込む(S1012)。例えば、ページ5
には更新が発生していたので、ページ5のバッファペー
ジを、データベースファイルaに書き込む(902)。
つぎに、ページ管理部は、ページ占有管理テーブルにお
いて、トランザクションT1が占有していたページのエ
ントリから、T1を登録解除する(S1014)。
【0067】一方、トランザクション投入管理部は、遅
延更新管理部30224に、コミットされたトランザク
ションの識別子であるT1と、ステップ1004で調べ
たページ、つまり、ページ1、ページ2およびページ5
のうち、更新のあったページ、つまり、ページ2とペー
ジ5の識別子を渡す(S1016)。遅延更新管理部
は、ジャーナル管理部から当該ページの更新後ジャーナ
ル804を取得する。ここで、遅延更新管理部は、前記
更新後ジャーナルを参照して、当該ページに対するペー
ジ遅延更新命令914を生成し、ページ管理部に渡す
(S1018)。ページ遅延更新命令は、更新後ジャー
ナルが有するデータと、遅延更新命令であることを示す
命令種別9140とを有する。つぎに、ページ管理部
は、ページマップを参照し、前記ページ遅延更新命令が
対象とするページのシャドウページを含むデータベース
ファイルを調べる(S1020)。例えば、ページ2の
シャドウページはデータベースファイルaに含まれる。
つぎに、ページ管理部は、バッファ管理部に、前記ペー
ジ遅延更新命令と、前記データベースファイルの識別子
とを渡す(S1022)。バッファ管理部は、前記シャ
ドウページをデータベースファイルから読み込む(S1
024)。ここでは、ページ2とページ5とのシャドウ
ページが、それぞれ、データベースファイルaと、デー
タベースファイルbから読み込まれる(904)。つぎ
に、バッファ管理部は、ページ遅延更新命令を参照し、
読み込んだシャドウページの遅延更新(906)を行っ
て、それぞれのデータベースファイルに書き込む(S1
026)。
【0068】以上のように処理することにより、前記ト
ランザクションが正常終了したときやコミット命令発行
時に、シャドウページに該トランザクションの処理の内
容に従ってデータベースを更新することができる。
【0069】つぎに、図11および図12を参照して本
発明の第2の実施例を説明する。本実施例は、アプリケ
ーションプログラムまたはユーザ300が、トランザク
ションのロールバック命令が発行したときの、DBMS
302の動作処理を示す。図11は、図6に示す状況に
おいて、トランザクションT2のロールバック命令に対
するページ管理部およびバッファ管理部の動作を示す。
図12は、トランザクションのロールバック命令に対す
る処理のフローチャートを示す。以下、図11を参照し
ながら、図12に示すフローチャートを説明する。
【0070】アプリケーションプログラムまたはユーザ
が、トランザクションT2のロールバック命令を発行す
る(ステップ1200)。ロールバック命令は、命令解
析部3020、トランザクション管理部3024を介し
て、トランザクション投入管理部30222に渡される
(ステップ1202)。トランザクション投入管理部
は、トランザクション投入管理テーブル302220を
参照して、トランザクションT2が占有していたページ
と、当該ページにおける更新発生の有無を更新フラグ7
4により調べて、ページロールバック命令1110を生
成する(ステップ1204)。ページロールバック命令
は、ページコミット命令と同様のデータを有する命令で
あり、ロールバックであることを示す命令種別908
2、トランザクション識別子9084、ページ識別子9
086および更新フラグ9088から構成される。ここ
で、トランザクションT2が占有していたページのペー
ジ3とページ4とに対するページロールバック命令が生
成されたとする。つぎに、トランザクション投入管理部
は、ページ管理部に、前記ページロールバック命令を渡
す(ステップ1206)。ページ管理部は、ページマッ
プ302200を参照して、前記ページロールバック命
令が示すページ、つまり、トランザクションT2が占有
しているページのページマップデータ1100を参照し
て、当該ページのカレントページを有するデータベース
ファイルを調べる(ステップ1208)。例えば、ペー
ジ4のカレントページを有するデータベースファイル
は、図6に示すページマップによれば、データベースフ
ァイルbである。つぎに、ページ管理部は、当該ページ
が更新の発生していたページかどうかを調べる(ステッ
プ1209)。これは、ページロールバック命令の更新
フラグ9088を参照して処理することによって行うこ
とができる。前記更新フラグが更新発生を示しているな
らば、当該ページのページマップデータを更新する(ス
テップ1210)。つまり、ページマップデータ66が
「0」であれば「1」に、「1」であれば「0」に更新
する。更新が発生していなければ、ステップ1212へ
進む。ここで、ページ4には更新が発生していたので、
ページ4のページマップデータは「1」から「0」に更
新される。これにより、シャドウページをカレントペー
ジとすることになりロールバックすることができる。つ
ぎに、ページ管理部は、ページ占有管理テーブル302
202からトランザクションT2を登録解除し(ステッ
プ1212)、バッファ管理部に、前記ページロールバ
ック命令とステップ1208で調べたデータベースファ
イルの識別子とを渡す(ステップ1214)。ここで、
ステップ1210においてページ4のページマップデー
タ66が更新されたことにより、ページ4に対して、デ
ータベースファイルaがカレントページを有し、データ
ベースファイルbはシャドウページを有することにな
る。ステップ1208の段階では、ページ4のカレント
ページを有したのは、データベースファイルbであった
ことに注意されたい。
【0071】つぎに、バッファ管理部は、前記ページロ
ールバック命令が示すページの取消し処理を行う。先
ず、バッファ管理部は、当該ページのデータベースファ
イルへの書き込みが発生していたかどうかを判断する
(ステップ1216)。書き込みが発生していたページ
であるならば(ステップ1218)、データベースファ
イルに格納されているシャドウページに対する取消し処
理(1104)を、更新前ジャーナルを用いて行う(ス
テップ1220)。例えば、ページ4のシャドウページ
(旧カレントページ1106)であるデータベースファ
イルbのページ4は、図6において述べたように、既
に、バッファbからデータベースファイルbに書き込ま
れている。そこで、ページ4の更新についての更新前ジ
ャーナルにより、データベースファイルbのページ4の
取消し処理を行う。また、バッファ管理部は、ステップ
1218で、当該ページのデータベースファイルへの書
き込みが発生していないならば、バッファに存在する当
該ページを破棄する(ステップ1222)。以上のよう
に処理することにより、ロールバック命令が発生したと
きに、ページマップの更新処理の完了を待つだけで、当
該トランザクションが処理していたページに対する新た
なトランザクション処理を開始することができる。さら
に、シャドウページとカレントページとの内容を同一に
することができる。
【0072】つぎに、図13から図15を参照して、本
発明の第3の実施例を説明する。本実施例は、システム
障害が発生し、再起動されたときのDBMS302の動
作を示す。なお、本実施例では、システム障害によっ
て、トランザクションT1は再実行され、トランザクシ
ョンT2は取消されるとする。先ず、図13を参照して
説明する。図13は、システム障害が発生した後、DB
MSが再起動されたときの、ページマップ302200
の回復処理の原理を示す説明図である。
【0073】DBMSが再起動されると、ページ管理部
30220は、ページマップを初期設定する(130
0)。このページマップは、DBMSが以前に正常に終
了するとき、ディスクに書き込まれたものであり、シス
テム障害が発生した時点のページマップの内容を表すも
のではない。つぎに、ページ更新命令の実行の際に生成
された更新前ジャーナル802や更新後ジャーナル80
4が有するページマップデータ8002を用いて、ペー
ジマップの回復処理1300が行われる。ページ管理部
は、前記ページマップデータ8002に従って、初期設
定されたページマップ1300のページマップデータ6
6を更新する(1304)。ジャーナルのページマップ
データ8002によって、システム障害が発生した時点
で実行中であったトランザクションが処理を行ったペー
ジに関して、カレントページがいずれのデータベースフ
ァイルに含まれていたかがわかる。従って、前記ページ
マップデータ8002によるページマップの更新130
4により、前記トランザクションに係るページのページ
マップデータが、システム障害発生直前かつ前記トラン
ザクションの実行直前の値に回復される。一方、システ
ム障害が発生した時点で、いかなるトランザクションも
処理を行っていなかったページは、カレントページが、
どちらのデータベースファイルに含まれていても構わな
い。何故なら、図9で示した遅延更新や、図11で示し
たシャドウページの取消し処理によって、そのようなペ
ージについては、カレントページとシャドウページの内
容が一致することが保証されているからである。従っ
て、そのようなページのページマップデータ1310
は、初期設定されたページマップ1300のページマッ
プデータの値のままで構わない。なお、システム障害発
生時点に実行中で、ページマップデータ66の回復が必
要なトランザクションは、履歴情報800の有無によっ
て判断される。これは、前述したログ先書きによって、
履歴情報が存在しなければ、当該トランザクションが処
理したページはデータベースファイルへ書き込まれてい
ないからである。以上により、ページマップは、システ
ム障害発生直前、かつ、前記トランザクションの実行直
前の状態に回復される(1306)。さらに、ページ管
理部は、ロールバック命令やシステム障害により取り消
されるトランザクションに応じて、ページマップを更新
する(1308)。これによって、ページマップは、シ
ステム障害発生直前の状態に回復される(1312)。
【0074】つぎに、図14を参照して、上記のように
システム障害が発生してDBMSが再起動されたときの
各部での処理の流れを説明する。システム障害が発生し
たあとで、DBMSが再起動される(ステップ140
0)。システム再起動管理部3030は、今回の起動が
再起動であることを判別して、トランザクション管理部
3024とページ管理部30220とに、再起動通知4
04を行う(ステップ1402)。ページ管理部は、前
記再起動通知を受け取ると、ページマップ302200
を初期設定する(ステップ1404)。一方、トランザ
クション管理部は、ジャーナル管理部3026を介し
て、ジャーナルファイル308が有する履歴情報800
を検索し、履歴情報800とページマップ302200
とが一致するか否かを判断することにより、トランザク
ション回復、つまり、再実行や取消しが必要なトランザ
クションを調べる(ステップ1406)。つぎに、トラ
ンザクション管理部は、トランザクション回復管理部3
0226に、ステップ1406で調べたトランザクショ
ンに関するトランザクション回復命令を渡す(ステップ
1408)。トランザクション回復管理部は、前記トラ
ンザクションの履歴情報を取得して参照し、ページ回復
命令1500を生成してページ管理部へ渡す。
【0075】ここで、図15を参照してページ回復命令
について説明する。本発明の実施例において、ページ回
復命令1500は、システム障害回復およびメディア障
害回復のために用いられる。ページ回復命令は、当該命
令が再実行または取消しのいずれであるかを示すトラン
ザクション回復種別1502、当該命令が、システム障
害またはメディア障害のいずれに係るものであるかを示
す障害種別1504および履歴情報800が有するデー
タを有する。トランザクション回復管理部は、トランザ
クション管理部からの指示によりトランザクション回復
種別1502と、履歴情報800が有するデータのペー
ジマップデータ8002、ページ識別子8004、トラ
ンザクション識別子8006および更新前データ800
8/更新後データ8010を設定する。障害種別150
4は、例えば、再起動の指示があればシステム障害と判
断し、再起同されることなく回復処理をする場合にはメ
ディア障害と判断することができる。また、バックアッ
プ処理の指示などがあれば、メディア障害と判断するよ
うにしてもよい。
【0076】さて、図14に示すフローチャートの説明
に戻る。ページ管理部は、ページ回復命令1500を受
け取ると、当該命令が示すページマップデータ8002
に従って、ページマップデータを更新する(ステップ1
412)。例えば、図13に示したように、トランザク
ションT2のページ4更新に関する更新前ジャーナル8
02は、ページマップデータ8002として「1」を有
する。従って、ページ4に対するページ回復命令のペー
ジマップデータ8002によって、ページマップ302
200のページマップデータ66は、「1」に更新され
る。つぎに、ページ管理部は、前記ページ回復命令が取
消しかどうかを、トランザクション回復種別1502を
参照して、判断する(ステップ1414)。取消しでな
い、つまり、再実行ならば、バッファ管理部へ、ページ
マップが示すカレントページに対するトランザクション
の再実行を要求する(ステップ1416)。バッファ管
理部は、本発明の第1の実施例に示した処理と同様の処
理を行う。ステップ1414で、前記ページ回復命令が
取消しであるならば、ページ管理部が、当該ページのペ
ージマップデータを更新する(ステップ1418)。例
えば、トランザクションT2が処理を行ったページ4の
ページ回復命令は取消しであるから、ページ4のページ
マップデータを「0」に更新する。つぎに、ページ管理
部は、バッファ管理部へ、当該ページのシャドウページ
の取消し処理を要求する(ステップ1420)。ここ
で、前記シャドウページは、トランザクションT2実行
中のカレントページである。バッファ管理部は、本発明
の第2の実施例に示した処理と同様の処理を行う。
【0077】以上のように処理することにより、システ
ム障害が発生した場合にも、データを回復し、シャドウ
ページとカレントページとの内容を同一にすることがで
きる。また、本実施例によれば、トランザクションが処
理を行ったページに対するページマップデータを履歴情
報に出力しておくことにより、システム障害が発生し
て、最新のページマップがメモリから失われた場合で
も、最新のページマップを回復して、トランザクション
の回復を正確に行うことができる。
【0078】つぎに、図16および図17を用いて、本
発明の第4の実施例を説明する。本実施例は、メディア
障害が発生したときのDBMSの動作を示す。本実施例
では、ディスクb34にメディア障害が発生し、データ
ベースファイルb306が破壊されたとする。先ず、図
16を参照して、メディア障害が発生したときのページ
マップの扱いについて説明する。メディア障害が発生し
たとき、破壊されたデータベースファイルは、以降、使
用できなくなる。従って、ページマップ302200
を、全てのページのカレントページが、正常な方のデー
タベースファイルに含まれることを示すようにしなけれ
ばならない。図16においては、メディア障害発生直前
のページマップ1600では、カレントページは、デー
タベースファイルa304とデータベースファイルb3
06との両方に存在するが、バックアップ命令がされた
ときなどのようにデータベースファイルbのメディア障
害発生が検知されると(1604)、全てのページマッ
プデータ66が正常なデータベースファイルを示すよう
にページマップを更新する。これにより、ページマップ
は、全てのページマップデータ66は「0」となり、正
常なデータベースファイルaのみを示し(1602)、
ページ管理部は、全てのページ処理命令を、データベー
スファイルaに対して行うようになる。
【0079】つぎに、図17を参照して、メディア障害
が発生したときの処理の流れについて説明する。先ず、
ディスク状態管理部30230が、データベースファイ
ルb306にメディア障害が発生したことを検知して、
ページ管理部30220とトランザクション管理部30
24とに通知する(ステップ1700)。ページ管理部
は、図16に示したように、ページマップ302200
の全てのページマップデータ66が、データベースファ
イルa304を示すように、前記ページマップの更新を
行う(ステップ1702)。つぎに、ページ管理部は、
バッファ管理部に実行中トランザクションが占有してい
るページに対する処理を停止するように要求する(ステ
ップ1704)。バッファ管理部は、前記要求を受ける
と、前記ページに係る処理を停止する(ステップ170
6)。以降、バッファ管理部は、占有しているページに
対するページ処理命令を受け取っても前記命令の実行を
ステップ1724まで保留する。なお、バッファ管理部
は、占有しているページ以外のページに対する処理を続
行できる。
【0080】一方、トランザクション管理部は、メディ
ア障害発生を通知されると、本発明の第3の実施例にお
いて、図1において説明したステップ1406からステ
ップ1410の処理と同様の処理を行い、ページ回復命
令1500を生成して、ページ管理部に渡す(ステップ
1708からステップ1712)。ここでのページ回復
命令は、障害種別1504がメディア障害であることを
示す以外は、第3の実施例と同様のものである。つぎ
に、ページ管理部は、前記ページ回復命令が示すページ
マップデータ8002が、ページマップの示すページマ
ップデータ66と異なるかどうかを判断する(ステップ
1714)。異なるならば、メディア障害発生時点のカ
レントページを有するデータベースファイルは、破壊さ
れたデータベースファイルであり、ステップ1714の
段階でのカレントページは、メディア障害発生時点には
シャドウページであったことになる。ここで、ページ管
理部は、前記ページ回復命令が再実行かどうかを判断す
る(ステップ1716)。再実行であるならば、バッフ
ァ管理部に前記ページ回復命令を渡して、カレントペー
ジへの再実行処理を要求する(ステップ1718)。ス
テップ1716で、前記ページ回復命令が、再実行でな
い、つまり、取消しならば、何もしないで終了する。ス
テップ1714で、ページマップデータ8002とペー
ジマップデータ66が異ならないならば、メディア障害
発生時点のカレントページを有するデータベースファイ
ルは、正常なデータベースファイルである。ここで、ペ
ージ管理部は、ページ回復命令が取消しかどうかを判断
する(ステップ1720)。取消しであるならば、バッ
ファ管理部に前記ページ回復命令を渡して、カレントペ
ージへの取消し処理を要求する(ステップ1722)。
ステップ1720で、前記ページ回復命令が取消しでな
い、つまり、再実行であるならば、前記ページ回復命令
の示す処理は、メディア障害の影響を受けずに正常に行
われているので、何もしないで終了する。ステップ17
18、および、ステップ1722の処理が終了すると、
バッファ管理部は、当該ページに対する処理を再開する
(ステップ1724)。ここで、ステップ1706によ
り、実行を保留されていたページ処理命令が実行され
る。
【0081】以上のように処理することにより、メディ
ア障害が発生したときにも、データベースシステムを停
止することなく、データを回復することができる。
【0082】以上の実施例に示したように、本発明によ
れば、複数のトランザクションを並行処理するDBMS
において、トランザクションのロールバックやシステム
障害が発生したときのトランザクションの取消しを、ペ
ージマップの更新という安価な処理によって行うので、
DBMSの通常処理の再開までの時間を削減できる。
【0083】さらに、本発明によれば、トランザクショ
ンがコミットされた後、シャドウページに対する遅延更
新を行うので、トランザクションが処理を行っていない
ページのカレントページとシャドウページの内容が一致
することが保証される。これにより、メディア障害が発
生し、片方のデータベースファイルが破壊された場合で
も、ページマップの更新の後に、DBMSの処理を続行
できる。
【0084】
【効果】ページマップの更新だけで取消し処理を行うの
で、そのオーバヘッドを削減できる。また、履歴情報が
ページマップデータを持つので、システム障害が発生し
てもページマップを回復することができる。さらに、シ
ャドウページの遅延更新により、メディア障害が発生し
ても、DBMSの処理を続行することができる。
【図面の簡単な説明】
【図1】本発明の原理を説明する概念図。
【図2】従来技術の原理を説明する概念図。
【図3】本発明の実施例に用いるDBMSの機能構成
図。
【図4】本発明が適用されるページ二重化管理部の機能
構成図。
【図5】本発明の実施例に用いるデータベースの内容と
トランザクションの処理内容を示す説明図。
【図6】本発明の実施例に用いるトランザクションに対
してのページ二重化管理部の動作を示す説明図図。
【図7】本発明の実施例に用いるトランザクションに対
してのページ二重化管理部の動作を示す説明図図。
【図8】本発明の実施例に用いる履歴情報を説明する説
明図。
【図9】本発明の第1の実施例におけるページ二重化管
理部の動作を示す説明図。
【図10】本発明の第1の実施例におけるDBMSの処
理の流れを示すフローチャート。
【図11】本発明の第2の実施例におけるページ二重化
管理部の動作を示す説明図。
【図12】本発明の第2の実施例におけるDBMSの処
理の流れを示すフローチャート。
【図13】本発明の第3の実施例におけるページマップ
の回復処理の原理を示す説明図。
【図14】本発明の第3の実施例におけるDBMSの処
理の流れを示すフローチャート。
【図15】本発明の実施例に用いるページ回復命令を説
明する説明図。
【図16】本発明の第4の実施例におけるページマップ
の扱いを示す説明図。
【図17】本発明の第4の実施例におけるDBMSの処
理の流れを示すフローチャート。
【符号の説明】
300・・・アプリケーションプログラムまたはユーザ、
302・・・データベース管理システム、304および3
06・・・データベースファイル、3020・・・命令解析
部、3022・・・ページ二重化管理部、3024・・・トラ
ンザクション管理部、3026・・・ジャーナル管理部、
3030・・・システム再起動管理部、30220・・・ペー
ジ管理部、302200・・・ページマップ、30222・
・・トランザクション投入管理部、302220・・・トラ
ンザクション投入管理テーブル、30224・・・遅延更
新管理部、30226・・・トランザクション回復管理
部、30228・・・バッファ管理部、302280およ
び302282・・・バッファ、30230・・・ディスク状
態管理部、60・・・ページ、62・・・ページ識別子、66
・・・ページマップデータ、800・・・履歴情報、8002
・・・ページマップデータ。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】複数のトランザクションを処理する処理手
    段と、該処理手段における処理対象であるデータベース
    を記憶する二つの記憶手段とを備えるデータベース管理
    システムであって、 前記二つの記憶手段は、データベース中の固定領域であ
    るページ単位に、前記処理手段のトランザクションの処
    理時に参照され、前記ページに対する該トランザクショ
    ンの処理内容を格納するためのカレント領域もしくは該
    ページの前記トランザクション実行開始以前の内容を格
    納するシャドウ領域を備え、 前記二つの記憶手段のうち一方の記憶手段のページが、
    前記カレント領域を備えるときに、前記二つの記憶手段
    のうちの他方の記憶手段のページは、前記シャドウ領域
    を備え、 前記ページごとに、前記カレント領域が前記記憶手段の
    いずれに備えるかを示す管理情報を保持するページ管理
    手段と、 前記カレント領域を、該トランザクションの処理内容に
    従って更新する更新手段と、 前記トランザクションが正常終了したときに、前記シャ
    ドウ領域を、該トランザクションの処理内容に従って更
    新する遅延更新手段とを有することを特徴とするデータ
    ベース管理システム。
  2. 【請求項2】請求項1において、前記ページ管理手段
    は、前記トランザクションの取消しが発生したときに、
    該トランザクションが処理したページについて、前記シ
    ャドウ領域を前記カレント領域と定めるように、前記管
    理情報を更新することを特徴とするデータベース管理シ
    ステム。
  3. 【請求項3】請求項2において、前記トランザクション
    の処理内容と、前記ページ管理手段の管理情報との履歴
    情報を管理する履歴情報管理手段をさらに有することを
    特徴とするデータベース管理システム。
  4. 【請求項4】請求項3において、該データベース管理シ
    ステムに障害が発生し、前記ページ管理手段の管理情報
    が失われたときに、前記履歴情報管理手段の履歴情報を
    参照し、前記ページ管理手段上に前記管理情報を回復す
    る回復手段をさらに有することを特徴とするデータベー
    ス管理システム。
  5. 【請求項5】請求項4において、トランザクションが異
    常終了したときに、前記カレント領域において前記トラ
    ンザクションの行った処理を取り消す取消し手段をさら
    に有することを特徴とするデータベース管理システム。
  6. 【請求項6】請求項5において、前記二つの記憶手段の
    うちのいずれかに障害が発生したときに、前記ページ管
    理手段は、全てのページについて、前記カレント領域が
    正常な記憶手段に存在することを示すように前記管理情
    報を定めることを特徴とするデータベース管理システ
    ム。
  7. 【請求項7】請求項6において、前記二つの記憶手段の
    うちいずれかに障害が発生したときに、前記履歴情報が
    有する管理情報と、前記ページ管理手段が保持する管理
    情報とが一致するか否かを比較し、比較結果に応じて前
    記トランザクションの再実行もしくは取消しを指示する
    比較手段をさらに有することを特徴とするデータベース
    管理システム。
  8. 【請求項8】複数のトランザクションを処理する処理手
    段と、固定長領域のページ単位に該処理手段における処
    理対象であるデータベースを記憶する記憶手段とを備え
    るデータベース管理システムであって、 前記記憶手段は、前記処理手段のトランザクションの処
    理時に参照され、該トランザクションの処理内容に従っ
    てデータベースを更新するためのカレント領域と、該カ
    レント領域に対応し、前記トランザクション実行開始以
    前の内容を記憶しているシャドウ領域とを前記ページご
    とにそれぞれ備え、 前記領域に関する情報に基づいて前記ページごとに前記
    記憶手段を管理する管理手段と、 前記カレント領域において該トランザクションの処理内
    容を更新する更新手段と、 前記トランザクションが正常終了したときに、前記シャ
    ドウ領域において該トランザクションの処理内容に従っ
    てデータベースを更新する遅延更新手段とを有すること
    を特徴とするデータベース管理システム。
JP5007805A 1993-01-20 1993-01-20 データベース管理システム Pending JPH06214848A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5007805A JPH06214848A (ja) 1993-01-20 1993-01-20 データベース管理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5007805A JPH06214848A (ja) 1993-01-20 1993-01-20 データベース管理システム

Publications (1)

Publication Number Publication Date
JPH06214848A true JPH06214848A (ja) 1994-08-05

Family

ID=11675842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5007805A Pending JPH06214848A (ja) 1993-01-20 1993-01-20 データベース管理システム

Country Status (1)

Country Link
JP (1) JPH06214848A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887510A (ja) * 1994-09-19 1996-04-02 Hitachi Ltd デ−タベ−ス管理方法
JP2007164468A (ja) * 2005-12-14 2007-06-28 Nippon Telegr & Teleph Corp <Ntt> データ復旧装置及びプログラム
WO2022224451A1 (ja) * 2021-04-23 2022-10-27 株式会社東芝 管理装置、データベースシステム、管理方法およびプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887510A (ja) * 1994-09-19 1996-04-02 Hitachi Ltd デ−タベ−ス管理方法
JP2007164468A (ja) * 2005-12-14 2007-06-28 Nippon Telegr & Teleph Corp <Ntt> データ復旧装置及びプログラム
WO2022224451A1 (ja) * 2021-04-23 2022-10-27 株式会社東芝 管理装置、データベースシステム、管理方法およびプログラム

Similar Documents

Publication Publication Date Title
USRE37038E1 (en) Method and system for automated termination and resumption in a time zero backup copy process
USRE37601E1 (en) Method and system for incremental time zero backup copying of data
US7779295B1 (en) Method and apparatus for creating and using persistent images of distributed shared memory segments and in-memory checkpoints
US5379398A (en) Method and system for concurrent access during backup copying of data
US5241670A (en) Method and system for automated backup copy ordering in a time zero backup copy session
US7107294B2 (en) Method and apparatus for interrupting updates to a database to provide read-only access
US5907849A (en) Method and system for recovery in a partitioned shared nothing database system using virtual share disks
JP2505112B2 (ja) トランザクション管理方法
US8099627B1 (en) Persistent images of distributed shared memory segments and in-memory checkpoints
JPH0683687A (ja) データ処理システム及びその方法
US20050283504A1 (en) Disaster recovery system suitable for database system
KR950014175B1 (ko) 데이타의 타임제로 백업 복사 방법과 수단
KR19980024086A (ko) 컴퓨터 시스템 및 화일 관리 방법
JP2005525633A (ja) 仮想データコピーを作成するための方法および装置
JP2001518210A (ja) 共通データセットに対する独立及び同時のアクセスに関する方法及び装置
JPH09114717A (ja) コンピュータ・オペレーティング・システムのジャーナリング・ファイル・システムのための単一トランザクション技術
KR100212447B1 (ko) 재수행 단계에서 종료한 트랜잭션 처리 기법을 이용한 댕글링 트랜잭션 발생 방지 방법
JP4095139B2 (ja) コンピュータシステムおよびファイル管理方法
US6092084A (en) One system of a multisystem environment taking over log entries owned by another system
US6076095A (en) Method of one system of a multisystem environment taking over log entries owned by another system
JPH06214848A (ja) データベース管理システム
JPH06149485A (ja) データ完結性保証処理方法
KR100365891B1 (ko) 주기억장치 상주형 데이터베이스 시스템에서 로그 처리를하지 않는 백업/회복 장치 및 그 방법
JP3290182B2 (ja) 共用環境におけるデータ・セットのバックアップ方法及び装置
JPH03265951A (ja) 故障回復型計算機