(57)【要約】【課題】データベース管理システムで再開始時に回復するデータベースの更新情報量を削減するために一定間隔おきに取得するシンクポイント処理にて、ロールフォワード処理で読み込む先頭ログレコード番号を決定するまで長時間が経過した場合に、ロールフォワード処理で読み込むログレコード数が増加し、システム再開始が完了するまでに時間を要し、長時間システムダウンとなる問題がある。【解決手段】シンクポイント処理にて、ロールフォワード処理で読み込む先頭ログレコード番号を決定するまで一定時間が経過した時点において、確定していないトランザクションが全てシンクポイント取得開始時にマークをつけたトランザクションの場合は、シンクポイントの更新が可能であるとみなし、バッファプールの更新したページを反映してロールフォワード処理で読み込む先頭ログレコード番号を更新することで、システム再開始時にロールフォワード処理で読み込むログレコードの総数を削減し、システムダウン時間を短縮する。【選択図】　図１
2004062473.tif 000002
【特許請求の範囲】
【請求項１】
障害発生時の再開始回復処理を前提としたトランザクション処理を行うデータベース管理方法において、
前記シンクポイント取得開始時に障害発生時の再開始回復処理で使用するログレコードの読み込み開始位置を主記憶装置上に記憶し、さらに外部記憶装置上のデータベースに書き込みされていない主記憶装置上にマッピングされたバッファ中の全ての更新されたページにシンクポイント取得処理中であるマークを付け、前記シンクポイント取得処理中は前記マークのついた全ての更新されたページを前記データベースに書き込みし、前記更新ページを全て前記データベースに書き込みの完了を検知し、前記シンクポイント取得開始時に動作していたトランザクションの決着処理を監視し、前記トランザクションが全て決着した時点をシンクポイント取得完了点とし、前記ログレコードの読み込み開始位置を外部記憶装置に書きこむことにより前記シンクポイント処理中の場合もトランザクション処理続行可能とし、前記シンクポイント処理中にシンクポイントとＲＥＤＯで読み込むログの先頭レコード位置を取得することを特徴とするデータベース管理方法。
【請求項２】
請求項１記載のデータベース管理方法において、前記シンクポイント取得処理中に再び前記シンクポイントを取得する間隔となった時に前記シンクポイントを取得する間隔となったことを示すマークをつけ、前記シンクポイント取得処理が完了した時点で新しい前記シンクポイント取得開始することを特徴とするデータベース管理方法。
【請求項３】
障害発生時の再開始回復処理を前提としたトランザクション処理を行うデータベース管理システムにおいて、
前記シンクポイント取得開始時に障害発生時の再開始回復処理で使用するログレコードの読み込み開始位置を記憶する外部記憶装置と、外部記憶装置上のデータベースに書き込みされていない主記憶装置上にマッピングされたバッファ中の全ての更新されたページにシンクポイント取得処理中であるマークを付け、前記シンクポイント取得処理中は前記マークのついた全ての更新されたページを前記データベースに書き込みする手段と、前記更新ページを全て前記データベースに書き込みの完了を検知し、前記シンクポイント取得開始時に動作していたトランザクションの決着処理を監視し、前記トランザクションが全て決着した時点をシンクポイント取得完了点とし、前記ログレコードの読み込み開始位置を外部記憶装置に書きこむことにより前記シンクポイント処理中の場合もトランザクション処理続行可能とし、前記シンクポイント処理中にシンクポイントとＲＥＤＯで読み込むログの先頭レコード位置を取得する手段とを備えたことを特徴とするデータベース管理システム。
【請求項４】
請求項３記載のデータベース管理システムにおいて、前記シンクポイント取得処理中に再び前記シンクポイントを取得する間隔となった時に前記シンクポイントを取得する間隔となったことを示すマークをつけ、前記シンクポイント取得処理が完了した時点で新しい前記シンクポイント取得開始する手段とを備えたことを特徴とするデータベース管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のトランザクションからアクセスされるデータを記憶するデータベースを管理するデータベース管理技術に関する。
【０００２】
【従来の技術】
多重処理環境におけるデータベース管理システムでは、一定間隔おきにシンクポイントあるいはチェックポイントという同期点を設けている。これは、障害が発生しデータベースの再開始回復処理を実行しなければならない場合、障害が発生した時点の直前のシンクポイントの状態にデータベースを復元することを保証し、そこから処理の再開を図ることによってデータベースの再開始回復処理を行う。シンクポイントは、更新を含むトランザクション処理の進行とは非同期に取得することが出来る。
【０００３】
データベース管理システム、特にリレーショナル・データベース管理システムは、データベース、スキーマ、表、行といったように、論理的な階層をもつ資源で構成される。物理的に表を格納するための不揮発性記憶装置である磁気ディスクなどの場合、行を物理的に固定長のブロックあるいはページと言う単位で格納する。トランザクション処理において行われるデータベースのアクセスは、このページを単位として主記憶装置上に確保されたバッファプールを介して行われる。あるトランザクションにおいて、必要なページがバッファプールに読み込まれ、バッファプール内で検索、更新処理が行われる。バッファプールに読み込まれたページは、出来るだけ長くバッファプール上に存在するように管理されることによって、磁気ディスクなどの外部記憶装置との入出力処理オーバヘッドを削減している。あるトランザクションにおいて行われたデータベースの更新処理については、その更新履歴情報をログとして取得する。ログは外部記憶装置のような不揮発性の記憶装置に永久的に記録される。ログレコードはプロセッサ内の主記憶装置上における揮発性のログバッファにまず書きこまれ、トランザクションが確定される時に外部記憶装置上のログファイルに移される。この場合、トランザクションにおいて行われたバッファプール上のページの更新は、いずれ外部記憶装置上のデータベースに反映されなければならない。
【０００４】
バッファプール上の更新頁を外部記憶装置に反映する方法には、トランザクション確定時とは遅延させてバッファプールより更新されたページを外部記憶装置上のデータベースに反映することによって、同一ページへの複数のトランザクションの更新をまとめて外部記憶装置への書き込みを行うことで、トランザクション確定時の外部記憶装置への書き込みオーバヘッドを削減するものがある。
【０００５】
トランザクション確定時よりも遅延させて外部記憶装置への書き込みを行う場合、外部記憶装置に更新されたページが書き込まれる前に障害などによりデータベース管理システムが終了してしまうとそのページの情報は失われる。この場合、システムの再開始が行われ、システムが終了した時点までに行われたトランザクションの回復を保証する必要がある。トランザクションが確定される前に障害が生じた場合は、そのトランザクションで行われた全ての更新を確実に元に戻す。また、トランザクション確定後に障害が生じた場合は、そのトランザクションにて行われた更新を全て保証させなければならない。
【０００６】
システムの再開始時には、前回のシンクポイントより行われた全てのトランザクションを外部記憶装置上に保存されたログファイルからログレコードを読み出して回復する。ログレコードによるトランザクション回復時には、確定されたトランザクションであっても実際に更新したページについてはバッファプール上から外部記憶装置へ反映されていないことがある。その場合は、外部記憶装置上のデータベースから回復対象のページを再度バッファプール上に読み込み、ログレコードを基に更新処理を再実行（ＲＥＤＯ）する。
【０００７】
逆に確定されたトランザクションおよび確定されていないトランザクションで行われた更新がすでにバッファプールから外部記憶装置へ反映されてしまっている場合もある。これに対応する対策としては、ページ中に更新が発生した時のログのログシーケンス番号（ＬＳＮ）を持っておくことによって解決される。ページに対してあるトランザクションによって更新が行われると、その時のログを取得すると共にそのログレコードのＬＳＮをあわせてページ内に書き込んでおく。そうすると、バッファプールから更新されたページが外部記憶装置に書き込まれることによって、そのトランザクションで行った更新がどのログに対応する更新まで外部記憶装置に反映されているかがわかる。これにより、システムの再開始時に回復対象の更新ページ全てを回復する必要が無くなる。
【０００８】
更新対象ページをバッファプールに読み込んだ場合、読み込んだページのＬＳＮとログレコードのＬＳＮを比較し、ページのＬＳＮの方がログレコードのＬＳＮより大きい時は、そのログレコードの記憶された更新情報はすでに反映されていることになる。ということは、ページのＬＳＮの方がログレコードのＬＳＮより小さい時だけ、ログを使用してＲＥＤＯを行えばよいということになる。データベース管理システムでは、こうした再開始時の処理時間を出来る限り短時間で行うことが望ましい。そのためには、再開始処理時のＲＥＤＯ処理を極力削減することが望まれる。それには、通常バッファプール上で更新されたページを適切な時期にシステムプロセスを使用して、バックグラウンドで外部記憶装置上のデータベースに書き込むことであり、最低限必要なログレコードのみを読み込めるように読み込み開始位置を設定することである。
【０００９】
ここで、再開始処理において直前のシンクポイントから回復処理を行う場合に前提とされるのは、直前のシンクポイント時点のデータベースの状態からログを用いて回復が行えることを保証することである。そのために、シンクポイントを取得する処理では、まずログレコードとしてシンクポイント開始ログを取得し、ＲＥＤＯ開始ログレコード番号となるログレコード番号として主記憶装置上に記憶することから開始する。この後、ログバッファ上のログレコードを外部記憶装置上のログファイルに書きこむ。
【００１０】
ログの書きこみが終了すると、次は実行中かつ確定されていないトランザクションに対してシンクポイント取得処理中であるマークをつけ、バッファプール上の全ての更新されたページを外部記憶装置上のデータベースに書きこむ。これが終わると、停止したトランザクション処理の続行を開始してシンクポイント取得を完了する。最後にＲＥＤＯ開始ログレコード番号を確定するためにマークをつけたトランザクションが全て確定するまで監視を行い、確定後ログバッファ上のログレコードを外部記憶装置上のログファイルに、ＲＥＤＯ開始ログレコード番号を外部記憶装置上に書きこむ。
【００１１】
これによって、マークしたトランザクションをシステム再開始処理でロールバックする必要が無くなるため、ＲＥＤＯ開始ログレコード番号より古いログレコードをデータベース回復処理で使用しなくなる。次のシンクポイントが取得されるまでに障害などによりシステムが終了しても、今取得したシンクポイントのデータベースの状態とＲＥＤＯ開始ログレコード番号より古いログレコードの更新情報が保証されたので、取得したシンクポイントを起点にしてＲＥＤＯ開始ログレコード番号より新しいログレコードを使用して再開始処理を行うことができる。
【００１２】
これらの従来技術は、特開平８−８７５１０号公報に開示されているデータベース管理方法に詳細に説明されている。
【００１３】
【発明が解決しようとする課題】
上記従来技術では、シンクポイント取得処理時点において確定していないトランザクションが長時間更新処理を実行すると、ＲＥＤＯ開始ログレコード番号が確定するまでの間に外部記憶装置上のデータベースに書きこまれていないページとＲＥＤＯで読み込むログレコードが増加することになるため、再開始処理時間を最小にするための工夫が必要となる。
【００１４】
本発明の目的は、再開始処理時間を削減するデータベース管理方法およびシステムを提供することにある。
【００１５】
【課題を解決するための手段】
上記目的を達成するために、本発明のデータベース管理方法では、シンクポイント取得処理時点においてマークをつけた確定していないトランザクションが全て確定するまでに長時間が経過した場合、確定していない全てのトランザクションに前記マークがついていることをシンクポイント取得処理中の一定間隔毎に確認し、全てのトランザクションに前記マークがついている場合にのみＲＥＤＯで読み込むログの先頭ログレコードを主記憶装置上に再度設定し、再び前記バッファの全ての更新したページを書き込むことにより解決する。この場合、マークするトランザクションを増減することがないため、最終的なシンクポイント取得完了のタイミングを変更せずに、ＲＥＤＯで読み込むログレコード量を削減することが出来る。
【００１６】
【発明の実施の形態】
本実施例では、シンクポイント取得処理時点において確定していないトランザクションが長時間更新処理を実行すると、シンクポイント取得処理に長時間を要し、バッファプールから長い間外部記憶装置上のデータベースに書き込まれていないページが発生し、ＲＥＤＯ開始ログレコード番号より新しいログレコードが増加し、ＲＥＤＯでログファイルを読み込む回数が増えることを防ぐ。特にシンクポイント取得処理中に更新したバッファプールを定期的に外部記憶装置上のデータベースに書き込み、ＲＥＤＯ開始ログレコード番号を最適化する。
【００１７】
以下、本発明を実施する場合の一形態を図面を参照して具体的に説明する。
【００１８】
図２は、本発明の一実施例にかかるコンピュータシステム１０の構成を示す。コンピュータシステム１０は、ＣＰＵ１２、主記憶装置１４、磁気ディスク等の外部記憶装置１６及び多数の端末１８で構成される。主記憶装置１４上には、データベース管理システム２０が置かれ、外部記憶装置１６上にはデータベース管理システム２０が管理するデータベース３６及びデータベース更新に関する更新履歴情報であるログファイル３７が格納される。
【００１９】
データベース管理システム２０は、ユーザからのデータベース問い合わせ要求であるＳＱＬを受け取り、構文解析意味解析処理を通してデータベースアクセスの最適なアクセス経路を決定する最適化処理を行ない、決定したアクセス経路に基づいてデータベース処理用の内部処理コードを生成する質問解析処理部２１、生成された内部処理コードを基にデータベースアクセスを行うデータベース演算処理部２２、外部記憶装置１６に格納されたデータベース３６からデータを主記憶装置１４上に確保したバッファプールとの間でデータの入出力を行うバッファプール管理部２３、前記端末１８から投入されたトランザクションを管理するトランザクション管理部２４、バッファプール３４の上で行われたデータの更新をトランザクションとは非同期に外部記憶装置１６上のデータベース３６に書き込みを行う遅延書き込み処理部２５、定期的にデータベースを整合性が取れた状態にすることを保証する処理を行うシンクポイント取得処理部２６、トランザクションで行われたデータベースへの更新履歴情報であるログ（以下、ログと略す）を管理し、各ログレコードのログシーケンス番号（以下、ＬＳＮと略す）を割り振り、トランザクションの完了時に主記憶装置１４上のログバッファ３５から外部記憶装置１６上のログファイル３７に書き込みを行うログ書き込み処理部２７、システム再開始時にＲＥＤＯ開始ログレコード番号を取得してログファイル３７から主記憶装置１４上のログ読み込みバッファ３９にログレコードを読み込みを行うログ読み込み処理部２８、及びログ読み込みバッファ３９のログレコードから主記憶装置１４上に確保したバッファプール及びデータベース３６へのＲＥＤＯを行うＲＥＤＯ処理部２９で構成される。前記バッファプール管理部２３は、主記憶装置１４上に確保したバッファプール３４をデータベースのデータを蓄積する単位である物理適に固定長のページと対応させて管理するためのバッファプール管理テーブル３１、ページ管理テーブル３２及びハッシュ管理テーブル３３を使用する。
【００２０】
図３は、先に述べたトランザクション管理部２４が使用するトランザクション管理テーブル４４の構造を示す。トランザクション管理テーブル４４にはトランザクション実行中であることを示す実行フラグ４４１、シンクポイント取得開始処理でマークする時に使用するマークフラグ４４２、トランザクション番号４４３、トランザクション開始ログのＬＳＮ４４４などで構成する。
【００２１】
ここで、本発明に関わるトランザクション処理について図４から図７を用いて説明する。図２における端末１８からトランザクションが投入されるとトランザクション管理部２４はトランザクション開始処理を行う。トランザクション開始処理の概略処理フローを図４に示す。トランザクションが開始されると、まず、トランザクション管理テーブル４４を当該トランザクション用に割り当て、初期化する（ステップ５２）。
【００２２】
次に、トランザクション開始ログを作成し、トランザクション管理テーブル４４上の実行フラグ４４１をＯＮに設定し、ログ書き込み処理部２７にログの出力要求を発行し、主記憶装置１４上のログバッファ３５に出力し、データベース管理システム内の一貫したＬＳＮを割り振り、ＬＳＮを取得する（ステップ５４）。取得したＬＳＮを当該トランザクションのトランザクション管理テーブルのトランザクション開始ログとして登録する（ステップ５６）。こうして、トランザクション開始処理が完了すると、データベースに対する質問処理が実行される。データベースに対する質問処理のうち、更新処理が行われた場合、更新操作を回復するためのＵＮＤＯログを作成し、ログ書き込み処理部２７に対し書き込み要求を発行するとともにＵＮＤＯログのＬＳＮを取得する（ステップ６３）。ＵＮＤＯログが取得できたら、更新対象行の更新操作を行う（ステップ６４）。そして、更新した行に対する再実行による回復のためのＲＥＤＯログを出力し、ＲＥＤＯログのＬＳＮを取得する（ステップ６５）。取得したＲＥＤＯログのＬＳＮをページ内制御情報４２のＬＳＮ４２５に書き込み、更新する（ステップ６６）。ＲＥＤＯログのＬＳＮを更新した後、当該ページに対する更新をデータベースに反映するため、バッファプール管理部２３に対してページ出力要求を行う（ステップ６８）。
【００２３】
ただし、当該要求は直ちにデータベース３６に書き込まれるのではなく、当該ページを管理するページ管理テーブル３２の出力要求フラグ３３０を出力要求状態に設定するのみとする。出力要求状態に設定することで、当該バッファプールの置換アルゴリズムにしたがって、バッファスチール（他のページを入力するためにデータベースに強制的に書きだす）されるか、遅延書き込み処理部２５によって非同期にデータベース３６に書き込まれるまで、主記憶装置１４上のバッファプール３４上に置かれる。次に、トランザクション内で行ったデータベースへのアクセス処理が終わるとトランザクションを有効なものとするために２フェーズに分けてトランザクションを完結させる。
【００２４】
まず、図６にトラザンクションのＰＲＥＰＡＲＥ処理フェーズについて説明する。まず、トランザクションのＰＲＥＰＡＲＥログをログバッファに書き込む（ステップ７２）。次いで、当該ＰＲＥＰＡＲＥログをログファイル３７に強制出力する（ステップ７４）。ＰＲＥＰＡＲＥフェーズが終わるとトランザクションを正常に終了させるためにＣＯＭＭＩＴフェーズに入る。ＣＯＭＭＩＴフェーズの処理概略フローを図７に示す。トランザクションＣＯＭＭＩＴログをログバッファに出力する（ステップ８２）。ＣＯＭＭＩＴログをログファイル３７に強制出力する。これにより、トランザクションが確約できたので当該トランザクションで取得したすべての排他資源に対するロックを解放する（ステップ８４）。ＣＯＭＭＩＴされたトランザクションは、トランザクション実行時に割り当てられたトランザクション管理テーブルが不要となるため、システム内のアクティブトランザクション表から当該ＣＯＭＭＩＴされたトランザクションを取り除くとともに実行フラグ４４１およびマークフラグ４４２をＯＦＦに設定し、トランザクション管理テーブルを解放する（ステップ８６）。
【００２５】
次に、本発明に関わるＲＥＤＯ処理について、図８を用いて説明する。まずシステムの再開始時に、ログ読み込み処理部２８にて外部記憶装置１６上に記憶したＲＥＤＯ開始ログレコード番号を読み込む（ステップ９１）。次いでログファイル３７からＲＥＤＯ開始ログレコード番号を起点とするログレコードをログ読み込みバッファ３９に読み込み、ＲＥＤＯ処理部２９にログ読み込みバッファ３９上のログレコードを送信する（ステップ９２）。ＲＥＤＯ処理部２９では受信したログレコードからＲＥＤＯログを取得し、ＲＥＤＯログのＬＳＮとＲＥＤＯログが更新したデータベースが記憶しているＬＳＮとを比較する。ＲＥＤＯログのＬＳＮの方が大きい番号である場合、ＲＥＤＯログの更新情報をバッファプール上のページに反映する（ステップ９３）。ログ読み込み処理部２８へ応答を返す（ステップ９４）。ログ読み込み処理部２８ではさらにＲＥＤＯログを読み込む必要がある場合、ＲＥＤＯ開始ログレコード番号をログ読み込みバッファ３９に読めこめなかった先頭のログレコードに更新し、再度ステップ９２から処理を繰り返す（ステップ９５）。
【００２６】
次に、本発明に関わるシンクポイント取得処理について、図１を用いて説明する。シンクポイントの設定の目的は、システムが障害により停止してしまったとしても確実にシステムすなわちデータベースを回復でき、システムを存続できることを確かなものにすることである。また、シンクポイントを設定することによってデータベースの回復時のＲＥＤＯで必要なログの使用を少なくさせることにもある。シンクポイントを取得するタイミングは様々であるが、定期的に何らかのアクションによって実施される。たとえば、ログファイルへのログの出力回数が一定の回数に達した時点によってシンクポイントを取得する方法がある。この場合、シンクポイント取得のトリガを与えるのはログ書き込み処理部２７である。まずシンクポイント取得処理部２６にシンクポイント取得処理要求が渡されると、シンクポイント取得開始ログを作成し、ログバッファに書き込む（ステップ２５１）。次にシンクポイント処理部２６は遅延書き込み処理部２５にバッファプール３４中に存在する全ての更新ページを出力するよう、要求を送信する。
【００２７】
遅延書き込み処理部２５でシンクポイント処理部２６から要求を受信した後の処理を示す。シンクポイント取得開始時点でのバッファプールの物理的整合性を一時的に保証するためにロックを確保する（ステップ２５２）。当該ロックはラッチと呼ぶことも有り、データベースの論理的な整合性を保証するために用いるロックとは異なり、保持時間が短いという特長がある。バッファプールのロックを確保できたならば、当該ロックが解放されるまでの間、トランザクショによるバッファプールへのアクセスは一時的に待たされる。
【００２８】
次に遅延書き込み処理部２５でバッファプール３４中に存在するすべてのページのページ管理テーブルを走査し、出力要求フラグ３３０が出力要求状態になっているページについてシンクポイント取得中フラグ３３５をシンクポイント取得状態に設定する（ステップ２５３）。ステップ２５３と同時にシンクポイント取得においてデータベース３６へ書き込む対象となるページを管理するページ管理テーブルリスト３８を作成する（ステップ２５４）。出力対象ペ−ジ管理テ−ブルリスト３８には、当該リスト作成時にリストに登録されたバッファプ−ル３４中の対象ペ−ジのペ−ジ管理テ−ブル３２のアドレス３８２ａから３８２ｄとその出力対象ペ−ジ数であるシンクポイント出力ペ−ジ数カウンタ３８１で構成される。登録されたリストの最後には、次の出力対象ペ−ジ管理テ−ブルがないことを示す情報３２８ｅとして０を設定する。そして、作成された出力対象ペ−ジ管理テ−ブルリスト３８の当該リストが作成された時点でシンクポイント出力ペ−ジ数カウンタ３８１が決定される（ステップ２５５）。当該カウンタは、セマフォにより実現されていてもよい。当該シンクポイントでデータベースへの書きだしを行うページが確約されたので直ちにバッファプールのロックを解放する（ステップ２５６）。当該バッファプ−ルのロック期間中には、一切の外部記憶装置との入出力処理を行わないのでＣＰＵ処理だけの短いロック時間となる。これにより、バッファプールへのロック待ちとなっていたトランザクションの処理が続行可能となる。そして、作成された出力対象のページ管理テーブルリストに基づいて当該シンクポイントで出力すべきページを遅延書き込み処理部２５に対して要求しデータベースへの出力を開始する（ステップ２５７）。シンクポイントにおいて出力対象となったすべてのページの出力が完了したか否かは、前記シンクポイント出力ペ−ジ数カウンタ３８１が０になったかどうかによって決定される（ステップ２５８）。したがって、シンクポイント出力ペ−ジ数カウンタ３８１が０になるまで当該処理は待ち状態となる。これは、シンクポイント出力対象ペ−ジの書き込み処理中に他のトランザクションによって書き込み処理が行われることがあるため、他のトランザクションによって書き込み処理が行われ、シンクポイント出力ペ−ジ数カウンタ３８１をカウントダウンして０になるまで同期を取る必要があるからである。シンクポイントにおいて出力対象となったすべてのページの出力が完了すると、すなわちシンクポイント出力ペ−ジ数カウンタ３８１が０になると待ち状態が解除されるので、シンクポイント取得完了ログを作成し、ログバッファに書き込むと同時にログファイルへの書き込みを行う（ステップ２５９）。シンクポイント取得処理が完了した時点で、シンクポイント取得処理部２６に完了応答を送信する（ステップ２６０）。
【００２９】
シンクポイント取得処理部２６では、遅延書き込み処理部２５にバッファプール３４中に存在する全ての更新ページを出力するよう要求を送信した後、トランザクション管理テーブル４４を走査して実行フラグ４４１がＯＮである全てのトランザクションのマークフラグ４４２をＯＮに設定し、遅延書き込み処理部２５からシンクポイント取得完了応答を受信するまで待ち合わせる（ステップ２６１）。シンクポイント取得処理部２６はシンクポイント取得完了応答を受信した後、トランザクション管理テーブル４４を走査して、実行フラグ４４１がＯＮかつマークフラグ４４２がＯＮであるトランザクションが存在している間、当該処理を待ち合わせる（ステップ２６２）。これはマークしたトランザクションがロールバックすると更新した情報を回復するためにＲＥＤＯ開始ログレコード番号より前のログレコードを必要とする場合があるためである。マークしたトランザクションが全て確定した後、ログバッファ上に書き込んであるログレコードを全てログファイル３７に反映した後、当該シンクポイントをカレントな有効シンクポイントとするため当該シンクポイント開始ログのＬＳＮをカレント有効シンクポイントとする（ステップ２６３）。この有効シンクポイントのＬＳＮはＲＥＤＯ開始ログレコード番号として使用するので、外部記憶装置１６のような不揮発な記憶装置に格納されることが望ましい。システムがこの後障害や故障によりシステムが停止しても、システムの再開始時にこの有効シンクポイントのＬＳＮを読み出して、ログ読み込み処理部２８から当該ＬＳＮを起点とするログレコードを読み込んで、ログからデータベースの回復が行えるようになる。
【００３０】
以下、本発明の実施形態について図１と図９を用いて説明する。図１のステップ２６２の待ち合わせ中に一定間隔が経過した時に、シンクポイント取得処理部２６では最後に出力したログレコードのレコード番号を取得して主記憶装置１４上に記憶する（ステップ２７１）。一定間隔の経過を示すアクションはさまざまだが、一定間隔の経過をログの出力回数が一定数に達した場合とする方法がある。次にトランザクション管理テーブル４４を走査して実行フラグ４４１がＯＮである全てのトランザクションのマークフラグ４４２がＯＮである時に、シンクポイント取得処理部２６では再度遅延書き込み処理部２５にバッファプール３４中に存在する全ての更新ページを出力するよう、要求を送信する（ステップ２７２）。遅延書き込み処理部２５にて行う処理は前述のステップ２５２からステップ２６０までである。シンクポイント取得処理部２６では遅延書き込み処理部２５からシンクポイント取得完了応答を受信するまで待ち合わせる（ステップ２７３）。シンクポイント取得処理部２６はシンクポイント取得完了応答を受信した後、主記憶装置１４に記憶したログレコードのレコード番号をＲＥＤＯ開始ログレコード番号に反映し、再度ステップ２８２に回帰する（ステップ２７４）。以降ステップ２６３を行った時に外部記憶装置１６に反映するＲＥＤＯ開始ログレコード番号はシンクポイント取得開始時に記憶したログレコード番号１０１ではなく、ステップ２６２の待ち合わせ中に記憶したログレコード番号１０２となるため、ＲＥＤＯで読み込むログレコードの量を（ログレコード番号１０２−ログレコード番号１０１）個分削減することが出来る。
【００３１】
以上により、データベース管理システムで再開始時に回復するデータベースの更新情報量を削減するために一定間隔おきに取得するシンクポイント処理にて、ロールフォワード処理で読み込む先頭ログレコード番号の決定時間を短縮する、もしくは、ロールフォワード処理で読み込むログレコード数を削減することにより、システム再開始が完了するまでの時間を短縮し、システムダウンを短縮することができる。
【００３２】
また、シンクポイント取得開始時にマークしたトランザクションをシンクポイント取得処理途中に再度チェックすることで、マークしたトランザクションが確定するのを待ち合わせる間に再び更新ページをデータベースに書き込んでＲＥＤＯで読み込むログのレコード位置をより新しい番号に変更できるため、ＲＥＤＯで読み込むログのレコード量を大幅に削減することができる。またトランザクションへはマークをつけるだけであるので、シンクポイント取得処理にてトランザクション処理を全く停止することなく確定するまで待ち合わせることが可能である。
【００３３】
【発明の効果】
以上、本発明によれば、再開始処理時間を削減することが可能となる。
【図面の簡単な説明】
【図１】本発明の特長となるシンクポイント取得処理の概略フローを示す。
【図２】本発明を実施するためのデータベース管理システムの構成図
【図３】トランザクションを管理するテーブルの構造を示す
【図４】トランザクション開始処理の処理フローを示す。
【図５】あるトランザクションにおけるデータベースの更新処理の処理フローを示す。
【図６】トランザクションＰＲＥＰＡＲＥ処理の処理フローを示す。
【図７】トランザクションＣＯＭＭＩＴ処理の処理フローを示す。
【図８】ＲＥＤＯ処理の処理フローを示す。
【図９】本発明における、シンクポイント取得処理の処理フローを示す。
【符号の説明】
１０：コンピュ−タシステム、１２：ＣＰＵ、１４：主記憶装置、１６：外部記憶装置、１８：端末、２０：デ−タベ−ス管理システム、２１：質問解析処理部、２２：デ−タベ−ス演算処理部、２３：バッファプ−ル管理部、２４：トランザクション管理部、２５：遅延書き込み処理部、２６：シンクポイント取得処理部、２７：ログ書き込み処理部、２８：ログ読み込み処理部、２９：ＲＥＤＯ処理部、３１：バッファプ−ル管理テ−ブル、３２：ペ−ジ管理テ−ブル、３３：ハッシュ管理テ−ブル、３４：バッファプ−ル、３５：ログバッファ、３６：デ−タベ−ス、３７：ログファイル、３８：出力対象ペ−ジ管理テ−ブルリスト、３９：ログ読み込みバッファ、４２：ペ−ジ内制御情報、４４：トランザクション管理テーブル、３３０：出力要求フラグ、３８１：シンクポイント出力ペ−ジ数カウンタ、４２５：ＬＳＮ、４４１：実行フラグ、４４２：マークフラグ、４４３：トランザクション番号、４４４：トランザクション開始ログのＬＳＮ
【図１】
2004062473.tif 000003
【図２】
2004062473.tif 000004
【図３】
2004062473.tif 000005
【図４】
2004062473.tif 000006
【図５】
2004062473.tif 000007
【図６】
2004062473.tif 000008
【図７】
2004062473.tif 000009
【図８】
2004062473.tif 000010
【図９】
2004062473.tif 000011