JPH04310148A - データの単位を高速度でアクセスする方法 - Google Patents

データの単位を高速度でアクセスする方法

Info

Publication number
JPH04310148A
JPH04310148A JP4031264A JP3126492A JPH04310148A JP H04310148 A JPH04310148 A JP H04310148A JP 4031264 A JP4031264 A JP 4031264A JP 3126492 A JP3126492 A JP 3126492A JP H04310148 A JPH04310148 A JP H04310148A
Authority
JP
Japan
Prior art keywords
page
lock
data
manager
mode
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
JP4031264A
Other languages
English (en)
Other versions
JPH0827755B2 (ja
Inventor
Chandrasekaran Mohan
チャンドラセカラン・モハン
Inderpal S Narang
インデルパル・エス・ナラング
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH04310148A publication Critical patent/JPH04310148A/ja
Publication of JPH0827755B2 publication Critical patent/JPH0827755B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/912Applications of a database
    • Y10S707/922Communications
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データベース管理シス
テムの複数のインスタンスが1つ、または、それ以上の
不揮発性のデータ・ストレージ中のデータのリソースへ
アクセスし、かつ、データを共有する環境において、デ
ータのリソースへのアクセスを制御し、そして、データ
のリソースの完全性(integrity)を維持する
ことに関する。
【0002】
【従来の技術】共通のアクセスを与えるデータベース管
理システムは、アクセスされたデータの完全性を維持す
るばかりでなく、アクセスを高速度で行なう必要がある
【0003】単一のデータベース管理システム(DBM
S)において、データの容量を増加し、そしてデータの
入手の容易性(データの可用性)(availabil
ity)を改良するために提案されたアプローチは、複
数のデータベース管理システムを使用することである。 複数のデータベース管理システムの環境において使用さ
れる原理的なアーキテクチヤは、「データ・シエアリン
グ(data sharing)(データの共有)」と
呼ばれており、デイスクのような不揮発性データ・スト
レージのデータのリソースへのアクセスを共有すること
を含んでいる。また、このアーキテクチヤは、「共有デ
イスク」環境と呼ばれている。デイスクが共有されてい
る環境において、データベースを含むすべてのデイスク
装置は、異なつた幾つかのセントラル・エレクトロニク
ス・コンプレツクス、即ちCEC(central e
lectronics complex)(電子装置の
中心的な複合体)によつて共有されている。デイスク装
置により実行されるデータベース管理システム(DBM
S)のインスタンスを持つ各CECは、共有されたデイ
スクのデータベースの任意の部分にアクセスし、修正す
ることができる。このアーキテクチヤにおいて、各CE
Cは臨時のデータベースのために、それ自身のバツフア
を持つている。バツフアされるデータの単位の一貫性(
coherency)を維持するために、大域ロツキン
グ手段及びプロトコルが与えられている。共有デイスク
環境に使われる代表的なアーキテクチヤは、IBM社か
ら提供されているIMS/VSデータ・シエアリング・
プロダクトである。
【0004】一般的に言えば、共有デイスク環境におい
て、データの単位は、「ページ」の形式で獲得され、転
送される。最初、実行するトランザクシヨンは、そのC
EC中のデータベース管理システムからのデータ(通常
、「レコード」)を要求する。データベース管理システ
ム(DBMS)は、レコードを含むページを獲得し、ペ
ージをバツフアにストアし、そして、ページの利用可能
性及び位置のトランザクシヨンを通知する。
【0005】ページは、DBMSによつて、デイスク装
置(直接アクセス・ストレージ装置、即ちDASD)か
らか、または、前にページをバツフアしたDBMSの他
のインスタンスから得ることができる。
【0006】レコードを直ちに獲得することができるか
否かは、レコードが他のトランザクシヨンによつて現在
アクセスされているか否かに依存する。例えば、若し、
レコードがその中のデータを変更する目的のために、他
のトランザクシヨンによつて獲得されたとすれば、後続
するすべてのアクセス要求は、最新のデータのバージヨ
ン(改訂版)が利用可能であることを保証するために、
更新処理と同期されねばならない。一部分のデータに対
するアクセスの同期は、そのデータを現在更新している
トランザクシヨンに対して、他のすべてのトランザクシ
ヨンがそのデータにアクセスするのを阻止する「ロツク
(保護すること)」を与えることによつて与えられる。
【0007】事実、ロツクは、必ずしもページにアクセ
スするための障害にはならない。若し、ロツクが共有さ
れたロツク(Sモードのロツク)であれば、1つ以上の
トランザクシヨンが1つのページにアクセスすることが
できる。若し、ロツクが排他的ロツク(Xモードのロツ
ク)であれば、ロツクを処理するトランザクシヨンだけ
が1つのページにアクセスすることができる。
【0008】Sモードのロツクは、ページに対して複数
のアクセスを同時に処理し、Sモードのロツクは同じペ
ージの他のSモードのロツクの面に与えられる。若し、
XモードのロツクがSモードのロツクでロツクされてい
るページに要求されたならば、要求者側のトランザクシ
ヨンは、Sモードのロツクが解放されるまで保留される
【0009】トランザクシヨンの処理において、トラン
ザクシヨンがデータの単位を更新する目的で、データの
単位に対するロツクを処理している時、その更新が「コ
ミツト」されるまでか、または「ロールバツク(rol
l back)」されるまで、ロツクは放棄されない。 これに関連して、トランザクシヨンがページを更新しよ
うとした場合、その更新は、トランザクシヨンが特定の
段階(「同期した時点」)に達した時か、または、試み
られたすべての更新が行なわれない時にコミツトされる
。このプロシージヤの目的は、処理の完全性(inte
grity)に影響を与える可能性がある更新処理をし
ているときにシステムに異常が生じた場合、ページの一
貫性を維持することにある。若し、更新処理が中止の状
態を表示することなく完了したならば、その更新は「コ
ミツト」され、若し、異常状態が表示されたならば、そ
の更新は「ロールバツク」(復旧)される。
【0010】トランザクシヨンが更新処理を完了し、そ
の更新がコミツトされた時、そのトランザクシヨンは更
新されたデータの単位に対するロツクを解放して、その
データの単位が利用可能であることを他の要求者側に知
らせ、そして、そのデータの単位中のデータが完全性を
維持していることを保証する。
【0011】更新処理の可逆性(更新処理の経過を遡求
すること)は、DBMSがデイスクのような信頼性のあ
るストレージ・リソース中に維持されている「ログ」に
よつてサポートされる。ログは、トランザクシヨンの更
新動作の経歴を示す記録、つまり、更新動作の経過記録
のことであつて、更新されるデータの単位のトランザク
シヨン、更新される前のデータの単位の状態及び更新処
理の日時を識別するものである。ロールバツク(以下、
「復旧(recovery)」ともいう)動作は、誤動
作を起した更新動作が開始される前のデータの単位を元
の形に復帰するためにログのエントリ(記入項目)を使
用する。
【0012】トランザクシヨンの完全性、復旧、発生セ
グメント及びロツキングについては、1986年にアデ
イソン・ウエズレイ社(Addison Wesley
)で出版されたデート(C.J.Date)著の「デー
タベース・システム入門」(AN INTRODUCT
ION TO DATABASE SYSTEMS)と
題する書籍の第18章を参照されたい。
【0013】ロツク及びトランザクシヨンの処理は、デ
ータベース管理システムにおける複数のアクセス、デー
タの一貫性及び復旧に関する問題に対処するように設計
されなければならない。データが要求された時、データ
の一貫性を失うことなく、データの単位に迅速なアクセ
スが与えられるような技術であつて、複数のデータベー
ス管理システムによりデータを共有する環境において使
用することのできる技術が望まれている。例えば、一方
のCEC中のDBMSのインスタンスがアクセスを要求
しているページを、他方のCEC中のDBMSのインス
タンスが更新する時に、データの完全性に問題が生じる
。異なつたCECの中にDBMSのインスタンスが増殖
するので、データのこれらの単位の完全性を維持しなが
ら、バツフアにストアされるか、またはデイスクにスト
アされるかによつて、データの単位へ最も速くアクセス
することを与える技術が必要である。
【0014】
【発明が解決しようとする課題】従つて、本発明の目的
は、データ・リソースの首尾一貫性を保証すると共に、
DBMSの複数のインスタンスの複数のユーザによつて
データ・リソースに高速度アクセスを与えるための方法
及び装置を提供することにある。
【0015】本発明の他の目的は、データの単位をデイ
スクにストアすることなく、DBMS相互の間でのデー
タの単位の転送をサポートするロツキング・プロシージ
ヤを提供することにある。
【0016】本発明の他の目的は、複数のユーザでデー
タを共有する環境において、一方のDBMSのバツフア
から、修正されたデータの単位を、必要とする他方のD
BMSへ転送することによつて、デイスクに対するI/
O(入/出力)動作を回避することにある。
【0017】本発明の他の目的は、データの単位がデイ
スクに書き戻される前に、データの単位の更新を、複数
のデータベース管理システムによつて行なわせることに
ある。
【0018】
【課題を解決するための手段】本発明に従つて、複数の
ユーザのデータ共有装置は、データベース管理システム
(DBMS)のすべてのインスタンスが使用することの
できる1つ、またはそれ以上のデイスク中にストアされ
たデータへのアクセスを獲得するために、1つ、または
それ以上のセントラル・エレクトロニクス・コンプレツ
クスについて実行することのできるDBMSの複数個の
インスタンスを許容する。この装置において、DBMS
のすべてのインスタンスのために、データの単位に対す
るロツクを管理する大域ロツキング・システムによつて
、ロツクの管理装置が与えられる。下記の方法によつて
、異なつたDBMSのインスタンスに実行されるトラン
ザクシヨンによつて要求されるデータの単位への高速度
のアクセスは、デイスクのI/O動作を行なうことなく
、しかも、転送されるデータの単位の完全性を保証して
、要求されたデータの単位のDBMS相互間の転送によ
つて与えられる。その方法とは、第1のセントラル・エ
レクトロニクス・コンプレツクスにおける第1の処理に
よつてデイスクから得られたデータの単位に対してロツ
クを発生することと、第1の処理によつて上記データの
単位を更新することと、第1の処理による上記データの
単位更新に応答して、連続番号である上記データの単位
のバージヨン番号を発生することと、上記第1のセント
ラル・エレクトロニクス・コンプレツクス中の上記デー
タの単位にバージヨン番号を付け、そして、該バージヨ
ン番号を上記ロツクと共に貯蔵することと、第2のセン
トラル・エレクトロニクス・コンプレツクスにおける第
2の処理から、データの単位の中のレコードに対してロ
ツク要求を発生することと、上記レコードに対するロツ
ク要求に応答して、ストアされた上記バージヨン番号に
よつて上記第2の処理を与えることと、上記第2の処理
によつてデータの単位に対してロツクを発生することと
、上記データの単位に対してロツクを発生することに応
答して、上記データの単位をデイスクに書き込むことな
く、あるいは、上記データの単位を更新するためにI/
O動作をログすることなく、上記第1の処理から上記第
2の処理にデータの単位の転送を促進することと、若し
、ストアされた上記バージヨン番号が上記第1の処理か
ら上記第2の処理へ転送された上記データの単位中のバ
ージヨン番号とは異なつていれば、上記デイスクから上
記第2の処理のデータの単位を与えた後、上記デイスク
のレコードを読み取ることと、そうでなければ、上記第
1の処理から上記第2の処理に転送された上記データの
単位からのレコードを読み取ることとからなるデータを
アクセスする方法である。
【0019】
【実施例】IBM社のDB2データベース・システムに
おいて、更新されたページは、トランザクシヨンの応答
時間と同時処理性(concurrency)とを向上
させるために、トランザクシヨンをコミツトする時に、
デイスクには書き込まれない。デイスクから取り出され
たページであつて、更新処理を受け更新されたページは
「汚れたページ」と呼ばれる。更新システムのバツフア
中に汚れたページを保持することは、汚れたページの「
キヤツシング(caching)」と呼ばれる。DBM
Sが誤動作した場合、復旧が適正に完了したことを保証
するために、汚れたページ中に含まれたレド(再度−r
edo)更新をやり直すためのチエツクポイントにおけ
る更新システムのログの中に充分な情報が記録される。 データを共有する環境において、各DBMSのインスタ
ンスはページをキヤツシユする、即ち、貯蔵するために
、それ自身のバツフア貯蔵位置を持ち、かつ、ローカル
・ログも持つている。 若し、汚れたページが1方のシステム(「所有者側」の
システムと呼ばれる)に貯蔵されたならば、そのページ
を要求した他方のシステムは、所有者側からのページの
現在のバージヨン(改訂版)を獲得しなければならない
。所有者側は、(a)データベース管理システム(DB
MS)の間のメモリからメモリへの転送(以下、「ペー
ジ転送」という)によつて要求者側にページを転送する
か、または(b)デイスクにページを書き込んだ後、そ
のデイスクからそのページを要求者側によつて読み取ら
せることによつて、要求者側にページを転送することが
できる。メモリからメモリへの転送動作は、デイスクの
2つの入/出力処理動作(所有者側による書き込み処理
動作と、要求者側による読み取り処理動作)を節約でき
るので、応答時間を短縮する利点と、同時処理性を向上
させる利点は、メモリからメモリへの転送動作にあるこ
とは明らかである。
【0020】データの一貫性(均一性)は、下記のメツ
セージ処理によつてメモリからメモリへの転送において
保証することができる。つまり、上述のメツセージ処理
とは、所有者側は、更新されたページをデイスクに書き
込み、次に、バツフアされているそのページのすべての
バージヨンを無効にするメツセージを同報通信し、そし
て、ページに対するロツクを解放する前に、すべての要
求者側から、放送内容についての承認を待つ処理を行な
うことを意味する。然しながら、バツフアの無効の同報
通信は、ページ間の競合の発生率が低い場合には、時間
の浪費になる。また、この処理はトランザクシヨンの応
答時間を増加し、そして、同時処理性を減少する。
【0021】本発明は、要求者側の要求に基づいて、所
有者側から要求者側に更新ページの転送を与える。従つ
て、本発明は、要求処理によつて、貯蔵された汚れたペ
ージを検出することと、所有者側のシステムによつて要
求者側のシステムに更新ページを迅速に与えることとを
可能にしている。
【0022】キヤツシユされた、汚れたページの検出は
、本発明に従つて、ページに関連したバージヨン番号の
形式で、大域ロツク・マネージヤにおいて保持されてい
る足跡記録(trail)によつて与えられる。この足
跡記録はページの古いコピー(out−of−date
 copy)を簡単に検出するために用いられる。足跡
記録は付加的なメツセージなしで作られる。
【0023】与えられたロツクの大域テーブルがすべて
のユーザに維持されている場合において、足跡記録は、
複数のユーザでデータを共有する環境に特に好適である
。その結果、ページを更新する目的のために、現在バツ
フアされていないページにロツクが始めて要求された時
、ロツクが与えられ、ページがデイスクから呼び出され
、ページが更新され、バージヨン番号がそのページに与
えられ、そして、ページの大域ロツク・テーブル中に記
入されたロツク記録の中にバージヨン番号がストアされ
る。
【0024】データ単位に対するロツクを要求した後続
するすべての要求は、更新されたバージヨン番号を含む
応答を受け取る。要求者側は、データ単位が新しいバー
ジヨンを必要とするか否かを決定するために、応答で受
け取つたバージヨン番号と、データ単位のコピーに付け
られたバージヨン番号とを比較することができる。若し
、要求者側のバージヨン番号が戻されたバージヨン番号
よりも小さければ、要求者側は、所有者側から最新のバ
ージヨンの転送を求めるか、または、DASDからの最
新のバージヨンを求めることができる。
【0025】図1は本発明を適用するための複数のユー
ザでデータを共有する環境を示す図である。複数のユー
ザでデータを共有する環境において、データベース(D
B)10は、データを永久に(不揮発性で)貯蔵するた
めに、1つ、またはそれ以上の直接アクセス・ストレー
ジ装置(デイスク装置)を含ませることができる。デー
タは、複数個のセントラル・エレクトロニクス・コンプ
レツクス(central electronics 
complex−CEC)によつてデータベース10に
書き込まれ、または、データベース10から読み取られ
る。図1においては、夫々、参照数字12及び14を付
した2つのセントラル・エレクトロニクス・コンプレツ
クス、即ちCECが示されている。各CECは1人、ま
たはそれ以上のデータベースのユーザのために稼働し、
この目的のために適するデータベース管理機能を含んで
いる。例えば、CEC12はデータ・マネージヤ(DM
)20、バツフア・マネージヤ(BM)22及びバツフ
ア・プール(BP)24を有するデータベース管理シス
テム(DBMS)16を含んでいる。DBMS16はロ
グ26を含んでいる。同様に、CEC14は、データ・
マネージヤ、DM32、バツフア・マネージヤ、BM3
4、バツフア・プール、BP36及びログ37を有する
データベース管理システムDBMS30を含んでいる。 この明細書において、各DBMSは同じであり、相互に
「インスタンス」と称される。
【0026】データベース10中にストアされたデータ
単位へのアクセスは、ローカル・ロツク・マネージヤ(
LLM)18及び31と、大域ロツク・マネージヤ(G
LM)40とを含むロツキング・システムによつて管理
される。
【0027】ロツキング、つまりロツク動作は、ローカ
ル・ロツク・マネージヤと関連した大域ロツク・マネー
ジヤによつて管理される。これに関連して、トランザク
シヨンは識別されたデータ単位へのアクセスを要求する
。この要求は、トランザクシヨンを実行するDBMSを
通るメツセージによつて送られる。この要求で暗に求め
られているものは、DBMS16がそのローカル・ロツ
ク・マネージヤ18に転送されるロツクを求める要求で
ある。ローカル・ロツク・マネージヤ(LLM)18は
大域ロツク・マネージヤ(GLM)40にそのロツク要
求を送る。GLM40は、そのLLM18から与えられ
た要求を受け取つて処理し、そして、要求者側のLLM
に戻されたメツセージによつて、要求を処理し、ロツク
を与える。
【0028】図1のロツク・マネージヤの配列は、大域
ロツキング機能を与えるけれども、ロツクが与えられた
時、データベース10にI/O(入/出力)動作を行な
わない。GLMの大域ロツキング管理機能の特有な能力
は、ロツクが要求されたデータ単位の更新されたバージ
ヨンを持つ他の任意のDBMSを決定し、識別するため
のロツク・マネージヤ(DBMSの大域ロツク・マネー
ジヤ(GLM)と関連したローカル・ロツク・マネージ
ヤ(LLM)で構成される)の能力である。更に、メツ
セージ及びロツク名が与えられれば、このロツク・マネ
ージヤは現在のロツクの保有者にメツセージを送ること
ができる。このメツセージは、「通知(notify)
」メツセージと呼ばれる。
【0029】DBMSのインスタンス16及び30は、
大域ロツキング機能と関連して動作する現在利用可能な
データベース管理システムを含ませることができる。こ
れらのインスタンスはメツセージによつてロツク・マネ
ージヤと通信するものと仮定する。本発明の1実施例に
おいて、データベース10に対して入/出力動作を行な
うことなく、汚れたページを検出し、そして、検出され
た汚れたページをメモリからメモリへ転送する有効な方
法が与えられる。
【0030】性能の観点から、DBMSの各インスタン
スは、それ自身のログを維持するインスタンス自身のロ
グ・マネージヤ25を持つており、そのログ・マネージ
ヤに対してログ記録が先ず書き込まれる。図1に示した
DBMS16において、ログ・マネージヤ(LM)25
がログ26を管理する。DBMS30においては、ログ
・マネージヤ(LM)35はログ37を管理する。デー
タの復旧を処理する目的のために、併合されたログ機能
は、ローカル・ログの併合バージヨンを作る(図1にお
いては「併合されたログ」42)。この機能はセントラ
ル・エレクトロニクス・コンプレツクス(CEC)の任
意のCEC中に設けることができる。ログ・マネージヤ
は、順次に増加する値を持つログの連続番号(LSN)
を各ログ記録に関連させる。例えば、ログの連続番号、
LSNは、図1の複数のユーザでデータを共有するCE
C中のクロツクをシステム・クロツク44によつて同期
されるのを要求する刻時装置(timestamp)で
構成することができる。
【0031】以下の実施例の説明において、前に読み取
られたDASDの位置と同じ位置へ、更新されたページ
が書き込まれる方式のライト・アヘツド・ロギング、W
AL、即ち、書き込みに先行するログ動作(write
−ahead logging−WAL)に基づいて、
ページの復旧が行なわれるものと仮定する。このWAL
のプロトコルは、変更されるページがDASD中のその
変更ページの前のバージヨンに置換する前に、ページの
変更を表わすログ記録が、不揮発性ストレージ装置中に
既に存在しなければならないことを規定している。本発
明において、データベース中のすべてのページは、その
ページに対する最新の更新を記載したログ記録のLSN
(ログの連続番号)を含むPage_LSNフイールド
を持つている。このフイールド中のこの値は、ページの
「バージヨン番号(VRSN)」と呼ばれる。このこと
は、ページの正確な復旧を行なうために、そのページの
ために書き込まれたログ記録に関して、ページの状態を
正確に関連付けるのを可能にする。更に、後で説明され
るように、DBMSのインスタンス中のデータベースは
、DBMSがデイスク・ストレージ装置に更新ページを
書き込む前に、そのログが、対応するログの連続番号、
LSNの値を取るよう強制されることを保証するために
バージヨン番号の情報を使用する。
【0032】同時に生じた複数の更新ページを1つのペ
ージのバージヨンに併合するメカニズムの存在を必要と
するので、任意のDBMSが、更新するためのページを
獲得した時、そのページと同じページが異なつたDBM
S中で同時に更新されるべきでないことが決められる。 また、同時に処理される更新処理はロツク動作の細分性
(granularity)にも影響する。これらの問
題を解決するための本発明は、複数システムによつてそ
のページの更新を直列化するために、ページに関して物
理的なロツクを使用し、そして、レコードに関して論理
的なロツクを使用する。論理ロツク、即ち、Lロツクは
、トランザクシヨンの期間中、保持されるが、他方、物
理的ロツク、即ち、Pロツクは、データベース管理シス
テムがバツフア・プール中にページを保持している期間
中保持される。Pロツクは、トランザクシヨン・システ
ムの下のバツフア・マネージヤ(BM)によつて獲得さ
れるが、Lロツクは個々のトランザクシヨンの下にある
データ・マネージャ(DM)によつて獲得される。種々
の異なつたロツク・モードの間でロツキングの互換性の
関係が存在することと、ロツク・モードは、上述したS
モードのロツク及びXモードのロツクと、「更新」のた
めのUモードのロツクとを含むことが規定される。更新
モードは、他のシステムがSモードのロツクを獲得する
のを可能とするが、更新のトランザクシヨンが完了する
まで、他のすべてのロツクを阻止する。
【0033】本発明において、Pロツク(物理的ロツク
)は、Sモード(共有モード)か、またはUモード(更
新モード)の何れかに条件付けられるが、Lロツク(論
理的ロツク)は、Sモードか、またはXモード(排他的
モード)に条件付けられる。
【0034】図1の異なつた要素は、通常のメツセージ
転送プロトコルによつて通信するシステムを通る高速度
通信リンクによつて他のエレメントに直接接続されてい
る。CEC12は、高速度通信リンク51aを介して大
域ロツク・マネージヤ40と通信し、他方、リンク51
bはCEC14を大域ロツク・マネージヤ40に接続す
る。CEC12とCEC14との間の直接の通信は高速
度リンク(通信リンク)50によつて与えられる。CE
C12及び14の間のページの直接の転送は、リンク5
0を介して行なわれる。この転送は、送信保証が与えら
れていないデータグラム・プロトコルを用いることによ
つて行なわれるのが好ましい。このことは、ページを直
接に送信するためのコストを最小限にするのに重要なこ
とである。
【0035】次に、図1に示した環境において動作する
機能的な要素の間の相互接続と、本発明を実施するため
に使用されるデータ・オブジエクトとを説明するために
図2を参照する。図2において、CEC12は細部を理
解するために必要な機能的な要素の細部を図示している
が、図面の簡略化を図るために、CEC14は必要最小
限の機能的要素しか図示していない。図2から理解でき
るように、大域ロツク・マネージヤ(GLM)40はC
EC12、14及び70中に含まれている複数個のロー
カル・ロツク・マネージヤ(LLM)のためのロツク管
理機能を遂行するN個の通路を持つ管理ロジツク・マネ
ージヤである。各CECにおいて、実行するトランザク
シヨンは、DBMSのローカル・インスタンスによつて
データにアクセスする。例えば、CEC12において、
要求者側のトランザクシヨン(TX)80は、データベ
ース管理システム(DBMS)16を通して通常の態様
でデータベース(DB)10中のデータにアクセスする
。これに関連して、TX80が読み取り動作、または更
新動作をするために、レコードにアクセスを必要とする
時、TX80は、DBMS16へ要求を送り、DBMS
16において、データ・マネージヤ20は、Lロツクの
ための要求をローカル・ロツク・マネージヤ(LLM)
18に送る。要求されたレコードは、バツフア・マネー
ジヤ22によつて、バツフア・プール24(図1)中に
既に存在するページか、または、他のDBMSからバツ
フア・プールに転送されたページの何れかを持つバツフ
ア・プール24から取り出されるか、あるいは、データ
ベース(DB)10から取り出される。バツフア・プー
ル24の中の各ページはバツフア制御ブロツク(BCB
)を持つており、図2において、BCBの1つが参照数
字85で示されている。
【0036】バツフア制御ブロツク(BCB)85は、
参照数字85a乃至85nで示された複数個の情報フイ
ールドを含んでいる。フイールド85aは、ページの名
前を表わすフイールドである。フイールド85bは、こ
のブロツクによつて制御されるページのバージヨン番号
(VRSN)を保持している。フイールド85c(Do
ing_I/O)(入/出力装置が動作中)は、ページ
がデータベース10からI/O処理によつて獲得された
か否かを表わしている。フイールド85d(New_P
age_Req)(新しいページの要求)は、ページの
新しいバージヨンがバツフア・プール24に入れられな
ければならないか否かを表わす。フイールド85e(P
age_Usable)(使用可能ページ)は、ページ
の現在のバージヨンが使用可能か否かを表わす。フイー
ルド85f(Data_Moved)(データの移動)
は、ページが他のDBMSから受け取られた後、そのペ
ージがバツフア・プールに移動された時にセツトされる
。フイールド85g(U_Lock_Held)(Uモ
ードのロツクの保持)は、UモードのPロツクがそのペ
ージに保持されているか否かを表示する。フイールド8
5h(U_Lock_Req)(Uモードのロツク要求
)は、UモードのPロツクがそのページのために要求さ
れたか否かを表示する。フイールド85j(Wait_
Queue)(待ち行列)は、DBMSによつて遂行さ
れるトランザクシヨンがページにアクセスするのを待つ
ているか否かを表示する。フイールド85kは、ページ
を復旧するための走査が開始されなければならない最も
初期のログのポイントである復旧ログの連続番号(RL
SN)をストアする。フイールド85l(Page_D
irty)(汚れたページ)は、ページがデイスクから
読み取られた後に、ページが更新されたか否かを表わす
。フイールド85hは、ページのポインタ(PTR)で
ある。この場合、ページは参照数字90によつてバツフ
ア・プール24中に表示されたP1として示されている
【0037】本発明の実施例におけるページのフオーマ
ツトは、バツフア・プール中のコピーによつて表わされ
たページのバージヨン番号(VRSN)の値を含んでい
る少なくとも1つのフイールド90bと、少なくとも1
つのレコードとを含んでいる。図2において、ページ9
0は、夫々レコードR1及びR2を含む2つのレコード
・フイールド90c及び90dを持つている。
【0038】また、バツフア・マネージヤ22は、更新
されたページの待ち行列92(「汚れたページ」の待ち
行列(dirty queue)と呼ばれる)を維持し
ており、この待ち行列の中に、更新されたページ93及
び94が待機している。
【0039】各ページに対して2つのモードを持つラツ
チは、実行するトランザクシヨンのバツフア・マネージ
ヤ22によつて管理される。これらのラツチがセツトさ
れた時、このラツチは、Xモードのラツチ、または、S
モードのラツチがページP1に関して獲得されたことを
表示する。ページP1のために、ラツチ・フイールド(
L)82がラツチの状態を表示するためにバツフア制御
ブロツク85中に与えられる。
【0040】ローカル・ロツク・マネージヤ18は、貯
蔵された各ページのためのレコードが維持されているロ
ツク・テーブル81を管理し、1つのPロツクと、1つ
、またはそれ以上のLロツクのモードを表示する。この
フオーマツトは参照数字83で示されている。
【0041】大域ロツク・マネージヤ40は、DBMS
のローカル・インスタンスに与えられているロツクのた
めのエントリを含む大域ロツク・テーブル100を維持
している。大域ロツク・テーブル100の中のPロツク
のエントリは、参照数字103によつて表示されており
、最小限のフイールド103a乃至103eを含んでい
る。フイールド103aはロツクされたページを表わす
。フイールド103bはそのページのためのRLSNの
値を含んでおり、フイールド103cはそのページのた
めのVRSNの値を含んでいる。ロツクのホルダはフイ
ールド103dホルダ(HLDR)で示され、ホルダの
ロツク・モードはフイールド103eのモード(MOD
E)で示されている。Lロツクのエントリは参照数字1
02で示されており、少なくとも、ロツク名、モード及
びホルダのフイールドを含んでいる。
【0042】リンク50のデータグラム転送をサポート
するために、各DBMSはページを転送するデータグラ
ムを合成し、そして転送するための処理(Page_T
ransfer)(ページ転送)105を含んでいる。 また、各DBMSは転送されたページを受け取り、そし
て貯蔵するためのデータ受け取り処理(Data_Rc
v)(データの受け取り)107を含んでいる。図2と
、以下の説明において、CEC12は、CEC12にペ
ージを転送するCEC14によつて所有されているペー
ジの読み取りを要求するものと仮定する。従つて、図2
においては、「Page_Transfer」105及
び「Data_Rcv」だけしか示していない。
【0043】所有者側のシステムのバツフア中にあるペ
ージの汚れたバージヨンに要求者側のシステムを導くた
めの足跡記録を、どのようにしてページのバージヨン番
号のVRSNフイールドによつて与えることができるか
を以下に説明する。また、ページが復旧された後に、ど
のようにしてページが要求者側のシステムに転送される
かについても以下に説明する。また、これと並行して、
転送されたページの復旧についても以下に説明を行なう
【0044】[ページ転送プロシージヤ]CEC12中
の要求者側のシステムのトランザクシヨン80がページ
中のレコードへのアクセスを要求したものと仮定する。 データ・マネージヤ20は、その要求を受け取り、そし
て、そのレコードのためのLロツク要求を作る。Lロツ
クが得られた後、データ・マネージヤ20はバツフア・
マネージヤ22のFix_Page(ページの固定)の
プロシージヤを呼び出す。要求されたレコードを持つペ
ージはバツフア・プール24の中には存在しないものと
仮定する。この場合、バツフア・プール中にはページが
ないことを知らせるバツフア・マネージヤ22は、その
ページのためのPロツクの要求を発生する。このPロツ
クの要求はそのページを所有しているシステムのPag
e_Transfer(ページ転送)プロシージヤを呼
び出すために、ロツク・マネージヤを付勢する。若し、
そのページが所有者側のシステムにおいて、バツフアさ
れており、より新しいバージヨンが必要とされるならば
、通知メツセージは、所有者側のシステム中のバツフア
・マネージヤに対してページの転送を生じさせる。所有
者側のシステムのバツフア・マネージヤは、要求者側の
システムのバツフア・マネージヤのPロツクが与えられ
るように、必要に応じて、そのPロツクを変換する。 以下に説明されるように、Fix_Page処理は、ペ
ージを転送するために用いられる特定の方法に従つて処
理される。
【0045】トランザクシヨンのために要求されたレコ
ードのロツクはLロツクであり、他方、バツフア・マネ
ージヤ22により要求されたページのロツクはPロツク
である。トランザクシヨンは、ページに関するレコード
を読み取るために、レコードに対するSモードのLロツ
クを獲得し、他方、そのバツフア・マネージヤは、レコ
ードをバツフア・プール24の中に入れる前に、ページ
に関するSモードのPロツクを獲得する。ページがバツ
フア・プール中に貯蔵されている間、Pロツクは保持さ
れる。レコードを更新するために、トランザクシヨンは
、レコードに関するXモードのLロツクを要求する。 然しながら、トランザクシヨンが、きれいなページを更
新することができる前に、バツフア・マネージヤは、ペ
ージについてのUモードのPロツクを獲得しなければな
らない。ページが、このバツフア・マネージヤによつて
、汚れたページで貯蔵されている間、UモードのPロツ
クは、バツフア・マネージヤによつて保持されていなけ
ればならない。
【0046】汚れたページを所有しているDBMSのバ
ツフア・マネージヤがページを更新するために、Uモー
ドのPロツクを獲得した時、(1)ページの更新を求め
た他のシステムによつて生じたシステム相互間のロツク
の妨害がある場合か、または(2)他のシステム中の要
求者がページを読み取る目的のための妨害しないロツク
要求を行なつた場合には、バツフア・マネージヤは、P
age_Transferプロシージヤが呼び出された
ことをローカル・ロツク・マネージヤ(LLM)に宣言
する。いずれの場合でも、所有者側のバツフア・マネー
ジヤのPage_transferプロシージヤは、そ
のページを要求者側に利用可能にさせる。
【0047】汚れたページの所有者側がページの更新を
完了した時、それをコミツトするプロシージヤは、更新
されたページの新しいVRSN値を含むレコードに対す
るアンロツク(ロツクの解放)要求を生じる。この新し
いVRSN値は大域ロツク・テーブルのページのロツク
の記録中の対応するフイールドに置き換えられる。
【0048】要求者側のデータ・マネージヤがページの
バージヨン番号の検証と、レコードのロツクに対するロ
ツク要求とを送つた時、ロツクの管理機構は、レコード
のロツクと、ページのVRSN値とを与えることによつ
て応答する。データ・マネージヤは、バツフア・マネー
ジヤに受け取られたVRSN値をFix_Page処理
の呼び出しに送る。Fix_Page処理において、バ
ツフア・マネージヤは、バツフア・プールがページのバ
ージヨンを持つているか否かをチエツクし、若し、バツ
フア・プールがページのバージヨンを持つていれば、ロ
ツク管理機構から受け取つたVRSN値と、バツフア・
プール中のページのバージヨンのVRSN値とを比較す
る。バツフア・プールがページのバージヨンを持つてお
り、そして、バツフア・プールのVRSN番号が、受け
取られたVRSN番号よりも大きいか、または等しい場
合、要求者側のバツフア・マネージヤは所有者側から、
汚れたページを獲得しない。然しながら、若し、受け取
られたVRSN値が、要求者側のバツフア・マネージヤ
によつて処理されたページのバージヨンのVRSN値よ
りも大きければ、所有者側のバツフア・マネージヤのP
age_Transfer処理が、通知メツセージを介
して呼び出され、そして、そのページは要求者側のバツ
フア・プールに転送される。
【0049】ロツク要求とPage_Transfer
の呼び出しとが、所有者側のバツフアから要求者側のバ
ツフアに汚れたページを転送するものと仮定して、以下
に、従来のプロシージヤを説明するが、本発明に従つて
、ページ転送を、より効果的に行なうために、更に3つ
のプロシージヤが考えられている。
【0050】[単純なページ転送プロシージヤ]単純な
ページ転送プロシージヤにおいて、所有者側のバツフア
・マネージヤはページをデイスクに書き込む。書き込み
が完了した後、所有者側のバツフア・マネージヤは、要
求されたロツクのモードに従つてそのPロツクを変換す
る。次に、ロツクの機構は要求者側にロツクを付与し、
要求者側のシステム中のバツフア・マネージヤはデイス
クからページを読み取る。
【0051】この従来の方法は本発明には好適ではない
が、条件が満たされた時には、利用することのできる単
純な転送方法を与える。この方法は、ロツク・マネージ
ヤから、所有者側へのロツク・メツセージを必要とし、
そして、ページをデイスクに書き込むために所有者側に
よるDASDのI/O動作を必要とするので、好ましい
方法ではない。WALのプロトコルが用いられている場
合には、書き込みのI/O動作はログの処理を行なわね
ばならない。また、ページ転送に応答するために、所有
者側からロツク管理機構(lock manageme
nt)ヘのメツセージと、デイスクからページを読み取
るために要求者側のバツフア・マネージヤによるI/O
動作とを必要とする。
【0052】この単純な方法は、転送の応答時間が長く
、そして、同時処理性が減少するので、コストがかかる
ことは明らかであろう。
【0053】[中間的な速度のページ転送方式]中間的
な速度のページ転送方式において、所有者側のバツフア
・マネージヤは、要求されたページをデイスクに書き込
み、そして、要求者側のバツフア・マネージヤにそのペ
ージを同時に転送する。デイスクへの書き込みは、要求
がUモードのロツクのためである場合にのみ行なわれる
。デイスクの書き込み動作の終了に続いて、所有者側の
バツフア・マネージヤはそのPロツクのグレードを下げ
ることができ、書き込み動作の終了に続いてロツク管理
機構は要求者側のバツフア・マネージヤにロツクを与え
る。
【0054】要求者側のバツフア・マネージヤによる読
み取りI/O動作は、要求者側のバツフア・マネージヤ
へページを転送することによつて回避されることは明白
である。然しながら、データグラムのプロトコルは、要
求者側が転送されたページを受け取るであろうことは保
証されていない。システムが誤動作をした場合、誤動作
をしたシステムのログが、誤動作を起したシステムのバ
ツフア・プール中に保持されている汚れたページを回復
するためだけに必要とされる。
【0055】要求者側のシステムにおいて、転送された
ページが時間通りに到着することを保証できないことに
は、以下の3つの可能性が原因である。第1の可能性と
しては、Pロツクが要求者側に与えられる前に、ページ
が到着することである。第2の可能性としては、Pロツ
クが付与された後に、長い時間を経過してページが到着
することであり、この場合、そのページは、要求者側で
デイスクから読み取られて既に貯蔵されているかもしれ
ない。第3の可能性としては、要求者側のバツフア・マ
ネージヤがPロツクを獲得し、デイスクからページを読
み取り、そのページを更新し、デイスクに書き込み、そ
して、そのバツフア・プールからそのページを除去した
後に、ページが到着することである。
【0056】第1の場合は通常生じるケースであり、つ
まり、そのページのPロツクの要求が与えられる前に、
ページが要求者側のバツフア・マネージヤに転送される
場合である。
【0057】第2及び第3の可能性に基づく事態がどの
ように取り扱われるかを説明するために、Pロツクが要
求された時に既にセツトされているバツフア制御ブロツ
ク(BCB)85(図2)を参照する。Pロツクが与え
られた時に、そのページはバツフア・プール24にもス
トアされておらず、CEC14からも受け取つていない
と仮定した場合、若し、Comm_Link転送オプシ
ヨンをNOに現在保持していなければ、バツフア・マネ
ージヤ22は、そのページについてUモードのロツクを
要求し、次に、データベース10からの読み取りI/O
動作を開始する。BCBのフイールド85cの中のDo
ing_I/Oフラグは、ページがデータベース10か
ら読み取られていることを表示するためにマークされる
。この実施例では、所有者側からページを再要求する時
間切れ手段は与えられていない。更に、所有者側のシス
テムがデータベースにページを書き込んだ後に、Pロツ
クが要求者側のシステムに与えられるので、要求者側は
データベースからページの現在のバージヨンを獲得する
。これに続いて、若し、転送されたページが到達し、そ
して、既に貯蔵されたバージヨンがあれば、転送された
ページのバージヨンは無視される。
【0058】第3の場合において、若し、BCBが見い
出されなければ、そのページは無視される。
【0059】[高速度ページ転送方式]高速度のページ
転送方式において、所有者側のバツフア・マネージヤは
、ページ転送の間で、デイスクに直接にページを書き込
むことはない。この方式は、所有者側のロツク・マネー
ジヤへのメツセージと、ページを送るメツセージと、所
有者側からロツク・マネージヤへの応答メツセージとの
たつた3つのメツセージしか必要としない。デイスクの
I/O動作は必要としない。高速度ページ転送方式は、
上述した単純なページ転送方法及び中間的な速度のペー
ジ転送方法よりも、よりよい応答時間と同時処理性とを
与える。然しながら、この方式は、汚れたページを一方
のシステムから他方のシステムに転送することができ、
そして1つ以上のシステムからの更新したページを含ま
せることができるので、ページの復旧が複雑になる。簡
単な転送方法及び中間速度の転送方式においては、汚れ
たページは所有者側からの更新ページだけにしか含まれ
ていない。従つて、高速度の転送方式においては、ペー
ジを復旧するために、すべてのシステムの併合されたロ
グが要求される。
【0060】高速度ページ転送方式においては、汚れた
ページをデイスクに書き込むことなく、所有者側のシス
テムから要求者側のシステムに汚れたページを転送する
。所有者側から要求者側へ、汚れたページを転送した結
果、若し、ページの所有権(page’s owner
ship)も転送されるならば、転送側のバツフア・マ
ネージヤは汚れたページの待ち行列からそのページを除
去することができる。ページは、複数のシステムからの
コミツトされ、または、コミツトされない更新ページを
含むことができる。汚れたページを更新するために他の
システムに更新するページが転送された時、ページの所
有権は受け取り側のシステムに移転する。高速度転送方
式において、ページをデイスクに書き込むことは受け取
り側のシステムの責任である。また、ページをデイスク
に書き込む前に、書き込みが誤動作した場合には、所有
者側は、そのページを復旧する責任がある。勿論、所有
権は、復旧処理の呼び出しを行なつたり、あるいは、ペ
ージをデイスクに書き込む処理を行なつたりすることな
く移転することができる。
【0061】汚れたページは、複数の所有者から、具体
化されていない(non−externalized)
変更(即ち、ページのバージヨンがデイスクの中に入れ
られていない変更)を含んでいるかもしれないから、最
初にページを汚すトランザクシヨン・システムは、大域
ロツク・マネージヤ40によつて維持されているロツク
記録の対応するフイールドの中に、復旧ログの連続番号
(recover−log sequence num
ber−RLSN)を記録する。このRLSNの値は、
併合されたログ中の最も初期のログのポイント(地点)
であつて、ページの現在の所有者が、デイスクにページ
を書き込む前に、デイスクへの書き込みを失敗した場合
、関連したページに対してログされた変更を再試行する
ために、上述の最も初期のログのポイントから、ログは
走査されねばならない。復旧ログの連続番号RLSNを
維持し、追跡することについての説明は以下に細述され
る。
【0062】高速転送方式の下ではページの所有権を移
転する間で、前の所有者側のシステムは、前の所有者側
の汚れたページの待ち行列から汚れたページを除去する
ので、適用されない(ページのデイスクのバージヨンに
対して)昔のログ記録のログの連続番号は、前の所有者
によつてチエツクポイントにされていた再開始の復旧ポ
イントの計算には使用されない。例えば、若し、システ
ムS1にただ1つの汚れたページがあり、その所有権が
システムS2に移転するとすれば、S1の次のチエツク
ポイントは、その汚れたページのRLSNではなく、S
1のチエツクポイントの開始点である再開の復旧ポイン
トの記録となる。然しながら、復旧システムによつて所
有されているすべてのページのRLSNは復旧ポイント
の計算に使用されなければならない。
【0063】ページの所有権の移転の間で、転送する方
の所有者側のシステムは、所有者側の汚れたページの待
ち行列からページを除去するので、若し、復旧ログの連
続番号RLSNが失われたならば、ページの復旧が困難
に晒される場合がある。例えば、ページがシステムS1
によつてUモードに保持されており、そして、システム
S2がUモードにページを要求している場合を想定する
。システムS1はシステムS2にページを送り、その汚
れたページの待ち行列からページを除去し、そして、ロ
ツクのグレードを下げる。次に、システムS1の次のチ
エツクポイントが始動し、そして、送出された汚れたペ
ージの適用されない昔のログ記録よりも新しい再開始ポ
イントを記録する。ここで、システムS1を含むCEC
が誤動作をしたものと仮定する。従つて、RLSNが失
われ、そして、S1及びS2のチエツクポイントの情報
は、汚れたページが関連するログの記録の位置を表示す
るために利用することはできない。本発明において、こ
の問題は、RLSNを含む大域ロツク・テーブル100
を周期的にチエツクポイント処理をすることによつて取
り扱うことができる。これは、汚れたページのリストを
効果的にした環境規模のチエツクポイントである。この
チエツクポイントは、環境規模の誤動作、即ちCEC規
模の誤動作が発生した時に、復旧の再開始のポイントを
決定するのに使用される。このチエツクポイントは、大
域ロツク・テーブル100を定期的に問合せ、そして、
Uモードのロツクが保持されているページの識別子及び
RLSNを記録する1つのトランザクシヨン・システム
を低優先度の処理で動作させることによつて実行するこ
とができる。従つて、環境規模の復旧の再開始の間にお
いて、復旧の再開始のポイントを計算するために、最低
位の優先度で記録されているRLSNが用いられる。
【0064】高速度転送方式についての最後の説明は、
通信リンク50を経たページ転送に関する。short
_message(短いメツセージ)によつて、所有者
側に汚れたページが存在することを知らせるロツクが要
求者側に送られる。ページの古いバージヨンを使用する
ことは、中間速度の転送方式と同じように回避される。 然しながら、高速度転送方式においては、若し、ページ
の古いバージヨンが貯蔵されていたり、あるいは、ロツ
クが与えられる時までに、ページが受け取られなければ
、要求者側はデイスクから、ページを読み取ることはで
きず、現状のままのページを使用する。若し、要求者側
のシステムがPロツクを獲得した時に、まだ現在の所有
者になつていなければ、要求者側のシステムは、先ず、
Uモードのロツクを獲得しなければならない。これに関
連して、要求者側のデータベース管理システムは、前の
所有者により、そのページがデイスクに書き込まれるべ
きであることを、要求者のロツク要求の中に委託する。 若し、所有者側のシステムが誤動作を起さなければ、所
有者側はデイスクにページを書き込み、そして、要求者
側はデイスクに書き込まれたページを獲得することがで
きる。若し、現在の所有者側が誤動作を起したならば、
システムは、要求者側にページを復旧させる。この場合
の復旧は、ページを現状に戻すために、デイスクから、
ページの、より古いバージヨンを読み取ることと、併合
ログからのログ記録を適用することとを含む。 所有者側のシステムが誤動作を起した時、ログは、RL
SNからLSNへ走査される。LSNの上限は、新しい
所有者がそのページの所有者になつた時点において、そ
の特定の時点で新しいログ記録が書き込まれたとしたな
らば、どんなLSNの値であるかを知ることによつて、
新しい所有者によつて獲得することができる。
【0065】[超高速度のページ転送方式]超高速度の
ページ転送方式において、所有者側のバツフア・マネー
ジヤは、ページを転送する前に、そのページのLSN(
ログの連続番号)値を取るようにログを強制するよう要
求されない。この方式によりページ転送に与える影響は
、3つのメツセージを持つことと、デイスクのI/O処
理動作がないことと、ログ記録の値を強制しないことと
である。然しながら、WALプロトコルが順守されるの
を保証するために、この方式は、デイスクからページが
取り出されて以来、システムのページが更新されたすべ
てのシステムに対して、1システム毎にページに関連し
たLSNを追跡することを必要とする。更新するシステ
ムに対して記憶されるべきLSNは、ページがそのシス
テムによつて他のシステムに転送された時のページのL
SNである。すべての更新するシステムが、追跡される
LSNに夫々の関連ログを強制した後にだけ、そのペー
ジをデイスクに書き込むことができる。各システムは、
他のシステムのログとは独立して、各システムのログに
強制させるシステム自身のログを持つているので、上述
のことが要求される。
【0066】一連のシステムのログ記録を追跡すること
は、以下のプロシージヤに従つて達成することができる
。汚れたページのために、或る数のスロツトをバッフア
制御ブロツク(BCB)に割り当てることができ、各ス
ロツトは、ページを更新した各々のシステムによつて書
き込まれた最後のログ記録にあるLSNを追跡するのに
使用される。スロツトが入手可能である間では、更新す
るシステムは、ページに対して今書き込まれたばかりの
ログ記録のLSNを書き込む。このスロツトが入手可能
でなければ、システムは、上述の第1の方法に従う。 つまり、更新するシステムは、システムがページを転送
する前に、ログを強制すると言うことである。若し、汚
れたページの所有権が、必要なポイントに強制された更
新システムのログなしで転送されたならば、スロツトの
中の情報はページと一緒に、新しい所有者に送られる。
【0067】汚れたページをデイスクに書き込む前に、
その汚れたページの現在の所有者は、そのページを前に
更新したすべてのシステムが、対応するスロツトに記入
されたLSNに、夫々のログを強制することを保証する
。デイスクのような安定したストレージに転送すること
によつて、システムのログが具体化されている最大のL
SNを、大域ロツク・マネージヤ40に周期的に登録す
ることが、本発明の一実施例において、能率を増す目的
で考慮されている。この最大のLSNは、Hi_LSN
(高い_ログの連続番号)と呼ばれる。大域ロツク・マ
ネージヤ40が特定のシステムにメツセージを送る時に
、大域ロツク・マネージヤは、周期的に、他のシステム
のHi_LSNを送る。若し、他のシステムに必要とさ
れるLSNに強制されるべきであることを、そのログが
現在知らなければ、現在の所有者側のシステムは上述の
他のシステムにメツセージを送り、そして、上述のよう
にログを強制するようそのシステムに要求する。以前の
システムの1つが誤動作をして、ログを強制する要求に
応答しない場合、現在の所有者側のバツフア・プール中
には、安定したストレージ、例えば、デイスク装置中に
ログ記録がない幾つかの更新された汚れたページがある
はずである。従つて、そのページは以下に説明する態様
で復旧されねばならない。以下に説明されるページ復旧
を行なう前に、必要とするLSNに対するそれらのログ
記録を具体化するために、前にページを更新したすべて
の生き残りのシステムが必要とされる。これは、他のシ
ステムによつて行なわれ、後でコミツトされる更新のた
めに、未だ具体化されていないログ記録の喪失を防ぐ。 現在の所有者側のシステムは直接アクセス・ストレージ
装置からのページを読み取り、そして、併合されたログ
を使用してそのページを復旧する。この復旧は、そのペ
ージのRLSNからページの復旧が開始された時点のL
SNまで、併合されたログの走査して、関連するログ記
録を取り出し、処理することによつて行なわれる。 ページの復旧が開始された上述の時点はTo_LSNと
呼ばれる。
【0068】[レコードのロツキングを有するページ転
送方式]ロツク管理機能 上述したLロツクの形式でレコードのロツキングをする
ものと仮定すると、ロツク管理機構も、ページの同時処
理を維持するのを援助する。図2を参照して、CEC1
2が要求者側のシステムであり、CEC14が所有者側
のシステムであり、大域ロツク・テーブル100の記録
は各ロツクのためのVRSNフイールドを含んでいるも
のと仮定する。例えば、このフイールドはRLSNフイ
ールドに加えて、ページのLSNを含み、そして、ペー
ジ復旧のためのログ・ポイントである。DBMS中に貯
蔵されていないページに対する最初のロツクが要求され
た時、VRSNフイールドは、ロツク・マネージヤによ
つてゼロに初期化され、そして、システムによつて与え
られたVRSNが現在の値よりも大きい時にのみ、この
VRSNフイールドの値は大域ロツク・テーブル100
中の値と置換される。
【0069】ロツク・ホルダからのアンロツク(ロツク
の解放)要求と共に、ロツク管理機構はページのロツク
名のリストと、それらに関連したVRSNとを受け取る
。代表的な例でいえば、トランザクシヨンをコミツトし
た時か、または、トランザクシヨンが完全にロール・バ
ツク(復旧)した後において、トランザクシヨンのため
のすべてのロツクを解放するために、トランザクシヨン
のシステムがアンロツク要求を発生した時、トランザク
シヨンのシステムは更新されたページのページのロツク
名のリストと、それらのページのバージヨン番号とを、
アンロツク要求に含まれたフイールド中のロツク・マネ
ージヤに送る。アンロツク要求と共にこのリストを送る
目的は、これらのページを貯蔵しているかもしれない他
のシステムがこれらのページの現状を容易に検証するこ
とができるように、更新されたページのバージヨン番号
を登録することにある。
【0070】ページのロツク名のリスト及びこれらのペ
ージのバージヨンのリストは、所有者側のシステムによ
つて維持されている。このリストは図2において参照数
字120で示されており、表示されたリストはバツフア
・マネージヤの制御の下にある。リスト120は、ペー
ジの更新が遂行されている時にバツフア・マネージヤ3
4によつて維持されている。他の案として、ページのロ
ツク名及びバージヨンのリスト120は、汚れたページ
のバツフア・プールを走査することによつてトランザク
シヨンの終了の時に発生することができる。バツフア・
マネージヤ34は、システム規模のリスト120を維持
している。バツフア・マネージヤがページを横取りした
時、バツフア・マネージヤは、Pロツクのためのそのア
ンロツク要求を持つページのVRSNを送る。ロツク管
理機構がアンロツク要求を受け取つた時、ロツク管理機
構はロツクのためのVRSNフイールドの中にその値を
入力する。
【0071】トランザクシヨンは、システム規模のリス
トがコミツトされていない他のトランザクシヨンによつ
て更新されたページのPage_ID(ページの識別子
)を含んでいるかもしれないので、更新されていないペ
ージのVRSNを送ることがある。また、更新されたペ
ージのVRSNは、他のトランザクシヨンか、またはバ
ツフア・マネージヤによつて既に送られているので、そ
のトランザクシヨンはVRSNを送らない。ロツク管理
機構のメカニズムは、VRSNを受け取つたアンロツク
要求を送る前に、供給されたVRSNを更新する。
【0072】以下の説明のために、ロツク要求は、トラ
ンザクシヨンか、またはバツフア・マネージヤかによつ
て発生することができるものとする。トランザクシヨン
が要求者側システムにある時には、要求ロツクはLロツ
クであり、バツフア・マネージヤが要求者側システムに
ある時には、要求ロツクはPロツクである。ロツク要求
はローカル・ロツク・マネージヤを介して、複数フイー
ルドのメツセージの形式で大域ロツク・マネージヤに送
られる。要求者は、通常、要求者側のトランザクシヨン
のローカル・ロツク・マネージヤか、またはバツフア・
マネージヤを通つて大域ロツク・マネージヤ40から送
られたメツセージの形式で要求の付与を通知される。こ
の説明において、Short_message(短いメ
ツセージ)は、常に、付与メツセージに通される。
【0073】同様に、トランザクシヨンのコミツト、ま
たは、ロール・バツクの後に、アンロツク要求は、ロツ
クを所有しているシステムによつて、そのローカル・ロ
ツク・マネージヤを介して大域ロツク・マネージヤ40
に送られる。
【0074】ロツク管理のメカニズムは、ロツク要求と
関連して検証オプシヨンを与える。検証オプシヨンはロ
ツク要求に応答して名付けられたページのVRSNを返
還する。データ・マネージヤがレコードに対するLロツ
クの要求を発生した時、明らかに、データマネージヤは
、レコードがストアされているページのVRSNを獲得
する。若し、ページに対するロツクがすべてのシステム
によつて現在保持されていないならば、ロツク管理機構
は、VRSN値をゼロに戻し、そして、Short_m
essage中のOwner_Exists(所有者の
存在)をNOにする。検証オプシヨンは、データ・マネ
ージヤによつて用いられ、そして、ページの古いバージ
ヨンがバツフア・マネージヤのバツフア・プールに現在
貯蔵されている場合、データ・マネージヤが、ページの
訂されたバージヨンを読み取り、または、読み取るであ
ろうことを保証する。レコードのロツクが付与され、そ
して、ロツク付与のメツセージが与えられた後に、ロツ
ク・マネージヤによつて、VRSN値が検索される。 Lロツクの要求が発生された時に、他のシステムがその
レコードを依然として修正している場合に、他のシステ
ムの修正がコミツトされた後に、対応するページのVR
SN番号が必要とされることには注意を向ける必要があ
る。Lロツクが要求者側のシステムに付与可能になるま
で、VRSN値を検索するのを遅延することによつて、
ロツク管理機構が、更新されるレコードのページの最新
のコミツトされたバージヨンのVRSN値を知るであろ
うことを、ロツク管理機構は保証することができる。ペ
ージの現在のVRSN値が大域ロツク・テーブル100
の中に入力されたことが保証されるまで、トランザクシ
ヨンのLロツクは解放されないから、上述の保証は可能
である。この保証を達成するために、VRSN番号は、
VRSN値を伴つたアンロツク要求がトランザクシヨン
の終了の間で処理される前に更新される。
【0075】検証オプシヨン及びロツク要求に応答して
与えられたVRSN値は、Short_message
として返還される。Short_messageが付与
されたLロツクと共に返還された時、そのShort_
messageはL_Short_message(L
ロツクの短いメツセージ)と呼ばれる。本発明の下で、
システムS1のトランザクシヨンT1がレコードR1に
対してSモードのロツクを保持しており、そして、シス
テムS1のトランザクシヨンT2もまた、レコードR1
に対してSモードのロツクを要求した場合、ローカル・
ロツク・マネージヤはLロツクを地域的に与えることを
考慮している。この場合、オリジナルのロツク要求者に
与えられたL_Short_messageは新しい要
求者に与えられねばならない。従つて、ローカル・ロツ
ク・マネージヤは、レコードR1のためのロツクをトラ
ンザクシヨンT2に与えると共に、トランザクシヨンT
1に与えられたL_Short_messageを送る
能力を持つている。システムがロツクを現在保持してお
らず、かつ返還するVRSN値がないページを、検証オ
プシヨンが参照したことを、若し、ロツク管理機構が見
い出したならば、ロツク・マネージヤはゼロの値と、O
wner_Exists=NOを安全に返還することが
できる。このことは、ページの最新のバージヨンがデー
タベース10の中にあり、そして、読み取られる訂正バ
ージヨンであることを暗示している。これはまた、Lロ
ツクを要求したシステムは、Lロツクが与えられた時点
で、バツフア・プール中に貯蔵されたページのバージヨ
ンを現在持つていないことを意味することが判る。
【0076】L_Short_messageは、要求
者側が要求ページの現在貯蔵されたバージヨンを使用す
ることができるか否かを決めるために、Fix_Pag
eの処理に使用される。貯蔵されたページが現在のバー
ジヨンでなく、そして、要求者側がページの新しいバー
ジヨンを必要とするならば、そのバツフア・マネージヤ
は、ページの新しいバージヨンを得ることが必要である
。ロツク管理機構のメカニズムは、或るモードにロツク
を保持しているシステムへメツセージを送るための通知
オプシヨンを与える。バツフア・マネージヤは、若し、
新しいバージヨンがあれば、ページの新しいバージヨン
を、所有者から得るために、上述の通知オプシヨンを使
用する。バツフア・マネージヤは、ページの新しいバー
ジヨンがNEW_Page_Reqフイールド(図2の
85a)へのエントリによつて要求されたことをバツフ
ア制御ブロツクに知らせるので、貯蔵されたページのバ
ージヨンよりも、より新しいバージヨンは、新しいバー
ジヨンが到着するまで保留される。L_Short_m
essage中のVRSNが、貯蔵されたページのVR
SNよりも小さいか、または等しいトランザクシヨンは
、貯蔵されたページのバージヨンを使用するように続行
することができる。若し、そのページについての所有者
がいないことを、ロツク管理機構が表示したならば、デ
イスクのページのバージヨンは最新のバージヨンである
ことが想定される。この場合には、バツフア・マネージ
ヤはデータベース10からページを読み取る。
【0077】Page_Transferのプロシージ
ヤを理解するために、図2において、CEC14中の所
有者側のDBMS30がCEC12中の要求者側のDB
MS16にShort_messageを送る場合を仮
定する。この短いメツセージは、ローカル・ロツク・マ
ネージヤ31と、大域ロツク・マネージヤ40と、ロー
カル・ロツク・マネージヤ18とを通る通路によつて送
られる。転送されるページのVRSN値を含むこの短い
メツセージは、このメツセージがPロツクに関連してい
るので、P_Short_message(Pロツクの
短いメツセージ)と呼ばれる。若し、所有者側がPag
e_Transfer動作の一部としてその動作を行な
うならば、所有者側は低いグレードの要求と関連したP
ロツクにこのメツセージを付加する。若し、そうでなけ
れば、所有者側は、そのページを要求者側に直接に転送
した後、ローカル・ロツク・マネージヤと、大域ロツク
・マネージヤと、ローカル・ロツク・マネージヤとを通
すによつてP_Short_messageだけを要求
者側に送る。この場合、P_Short_messag
eは、ページ転送の要求を承認する。若し、この動作の
間で、所有者側が所有権を放棄したならば、ロツク管理
機構は大域ロツク・テーブル中のページのVRSN値を
更新する。Short_messageは、ページの所
有者が存在するか否かを表示するフラグ・フイールドで
あるOwner_Existsを含む。このフラグは大
域ロツク・マネージヤ40によつてセツトされる。若し
、Pロツクか、または、より新しいバージヨンが要求さ
れたページに対して所有者がいなければ、大域ロツク・
マネージヤ40は、そのページのVRSN値を含むP_
Short_messageを発生する。所有者がいな
い場合、若し、少なくとも1つのシステムがそのページ
についてのSモードのロツクを既に保持しているならば
、大域ロツク・テーブル100は、このページのための
エントリを既に持つている。この場合、ページが更新さ
れ、そして次に、更新システムが、大域ロツク・マネー
ジヤ40によつて、大域ロツク・テーブル100の中の
VRSN値を更新させた後に、更新システムによつてU
モードのロツクが放棄されているので、VRSN値はゼ
ロではない。そうでなければ、現在のロツクの要求の結
果として大域ロツク・テーブルのエントリが発生される
という事実によつて、VRSN番号はゼロである。この
場合、既に説明したように、VRSNフイールドはゼロ
値で初期化される。
【0078】本発明の方法を実行する際に、図1及び図
2に示された複数のユーザでデータを共有する環境によ
つて実行されるプロシージヤを、表I乃至表IIIの疑
似コード表示を参照して以下に説明する。当業者には明
らかなように、この分野の専門家は、示された疑似コー
ド表示及び関連する記述に基づいて、汎用コンピユータ
・システムを動作するために必要な実行用インストラク
シヨンを、特別の努力を要することなく容易に作成する
ことができる。疑似コードの表において、「¬=」は「
等しくない」ことを表わし、コメントは「/*」と「*
/」との間に挟まれて記載されている。
【0079】[中間的な速度のページ転送方式のための
Fix_Pageの処理]最初に、要求者側のシステム
のデータ・マネージヤがレコードに対してLロツク要求
を発生したことに応答して、要求者側のシステムのトラ
ンザクシヨンが幾つかのデータを要求する。ローカル・
ロツク・マネージヤはL_Short_message
を持つLロツクをデータ・マネージヤに与える。次に、
若し、要求がレコードの読み取りであれば、データ・マ
ネージヤは、バツフア・マネージヤに対して、パラメー
タとしてL_Short_messageを持つFix
_Page要求を発生する。若し、Fix_Page要
求がページ中のレコードを更新する要求であれば、L_
Short_messageは送らない。読み取りの場
合に、L_Short_messageを送る理由は、
バツフア・マネージヤがL_Short_messag
e中のVRSNよりも大きいか、または等しいVRSN
を持つバツフア・プールのページを与えねばならない義
務を保証するためである。ページ中のレコードを更新す
るためには、バツフア・マネージヤはページの最新バー
ジヨンを獲得しなければならない。バツフア・マネージ
ヤはページの最新バージヨンを獲得しなければならない
場合には、L_Short_messageは送る必要
はない。バツフア・マネージヤによるFix_Page
の処理の間で、若し、ページが現在貯蔵されていなけれ
ば、バツフア・マネージヤはページのPロツクを要求す
る。この場合、ページは所有されているか、または他の
システムによつて所有されていないかの何れかである。
【0080】若し、ページが他のシステムによつて所有
されているならば、ロツク管理機構は、そのページを所
有しているシステムの中にPage_Transfer
プロシージヤを呼び出す。所有者側のシステムはページ
を転送し、そして、転送されたページのVRSN値と、
Owner_Exist=YESとを持つP_Shor
t_messageを送る。Pロツクが要求者側に与え
られる時間までに、若し、VRSNを持つページが到着
しなければ、バツフア・マネージヤは、Comm_Li
nk_Transfer(通信リンクによる転送)=N
Oの関連メツセージを有するUモードのロツクを要求す
ることによつて、ページの所有者になるように試みる。 これは、使用中のPage_Transfer方法とは
無関係に、現在の所有者によつてデイスクにページを書
かせる。若し、現在の所有者側のシステムが誤動作を起
したならば、ページは大域ロツク・マネージヤ40によ
つて与えられたRLSNを用いて復旧される。この場合
、遂行される復旧動作は使用しているページ転送方法に
依存する。
【0081】所有者がいない場合には、P_Short
_messageは、そのことを表示して、要求者側の
システムはデイスクからページを読み取る。
【0082】第I表を参照すると、Fix_Pageの
処理への入力は、Page_ID(ページの識別子)、
Request_Type(要求のタイプ、つまり読み
取り要求か、更新要求)及びL_Short_mess
ageである。Sモードのラツチ及びXモードのラツチ
は、ページの内容の物理的な一貫性を与えるために、ペ
ージのアクセスの間で使用される。Sモードのラツチ8
3は、関連したページの読み取りアクセスの間で用いら
れ、Xモードのラツチ82はページの更新動作の間で用
いられる。バツフア・マネージヤは、常に、適当なラツ
チを、要求者側のトランザクシヨンに戻す。バツフア・
マネージヤは、常に、識別されたページに対してバツフ
ア制御ブロツクを位置付けるよう試みる。以下に、2つ
の場合、即ち(1)ページのバツフア制御ブロツク(B
CB)が現在、存在していない場合と、(2)バツフア
制御ブロツクが存在している場合とを説明する。
【0083】第1の場合において、バツフア制御ブロツ
クが存在していないことは、ページが貯蔵(キヤツシユ
)されていないことを意味する。この場合においては、
バツフア・マネージヤ22は、バツフアを割り当て、バ
ツフア制御ブロツク85を作成し、そして、ページが使
用不能であることを表示するためにバツフア制御ブロツ
クのフイールド85eを使用不能(Page_Unus
able)にマークし、フイールド85fをオフにセツ
トし、そして、ページのPロツクを要求する。Page
_Unusableのマークは、このページの使用可能
なバージヨンが存在しないことを知らせる次のfix_
pageを発生させる。Data_Move(データの
移動)フラグは、処理の後の点において、Data_R
cv(データの受け取り)処理が、ページのコピーを受
け取り、貯蔵したか否かを表示する。Pロツクは、要求
に依存して、Sモード、またはUモードのバツフア・マ
ネージヤ22によつて要求される。要求されたロツクk
モードは、U_Lock_HeldフイールドをNOに
セツトし、そして、U_Lock_Reqフイールドを
NO、またはYESにセツトすることによつてバツフア
制御ブロツク中に表示される。要求されたPロツクが与
えられた時、バツフア・マネージヤは、Pロツクを持つ
P_Short_messageを受け取る。 若し、ページの所有者が存在すれば、このメツセージは
、所有者によつて発生されたものか、そうでなければ、
大域ロツク・マネージヤ40によつて発生されたもので
ある。Data_Rcv処理と直列化するために、要求
に応じて、バツフア・マネージヤ22はページをSモー
ドにラツチするか、Xモードにラツチする。若し、Uモ
ードのロツクが得られたならば、フイールド85g及び
85hが更新される。若し、バツフア制御ブロツクが、
オンにセツトされたData_Movedフイールドに
よりマークされ、そして、VRSN値のP_Short
_messageが、バツフア制御ブロツクに貯蔵され
たページのVRSN値よりも小さいか、または等しい値
であれば、バツフア・マネージヤ22は、Page_U
sableフイールド85eをオンに転じ、そして、ペ
ージの到着を持つている待ち状態にあるすべてのトラン
ザクシヨンを活動させる。若し、(1)ページは転送さ
れていない(Owner_Exisits=NO)か、
(2)ページは受け取られておらず(Owner_Ex
isits=YES)、そしてData_Moved=
OFFであるか、(3)Data_Moved=ONで
あり、そしてBCBに貯蔵されたVRSNがP_Sho
rt_message中のVRSN値よりも小さい時、
ページの古いバージヨンが受け取られたならば、バツフ
ア制御ブロツクは、DASDからのページを得るための
処理が進行していることを表示するために、Page_
Unusable(使用不能ページ)及びDoing_
I/Oにマーク付けをする。このマーク付けは、I/O
が処理中の間で、Data_Rcvプロシージヤがペー
ジを修正するのを阻止する。この場合、バツフア・マネ
ージヤ22は、Page_Recovery(ページの
復旧)のルーチンを呼び出して、ページの復旧ルーチン
にMust_Recovery(復旧が必須である)フ
ラグを送る。このフラグは、若し、Owner_Exi
sts=YESならばYESにセツトされ、そうでなけ
れば、NOにセツトされる。Page_Recover
yルーチンからの復帰するときに、バツフア・マネージ
ヤ22は、要求のタイプに応じて、ページをSモードか
、またはXモードにラツチし、そして、呼び出し側に戻
る。
【0084】第1の場合のPage_Recovery
ルーチンはバツフア制御ブロツク中のMust_Rec
overフラグにマーク付けをする。若し、このフラグ
が「YES」に条件付けられ、そして、Uモードのロツ
クが保持されていないことを、バツフア制御ブロツクが
表示したならば、復旧ルーチンはメツセージComm_
Link_Transfer=NOを持つUモードのP
ロツクを要求する。Uモードのロツク要求は、所有者側
のシステムによつてデイスクにページを書かせる。通常
、ページに対してSモードのロツクが要求された時には
、所有者側のシステムはデイスクにページを書き込まな
い。従つて、Uモードのロツク要求が必要である。Uモ
ードのロツクが与えられた後、バツフア制御ブロツクは
、Uモードのロツクが保持されたことを知らせるために
更新される。若し、Uモードのロツクが既に保持されて
いれば、Must_Recoverフラグが「NO」に
セツトされて、上述の処理は行なわれない。何れの場合
でも、次に、I/O動作がデイスクからのページを読み
取るために開始される。I/O動作が完了した後、Pa
ge_Usableフイールドはバツフア制御ブロツク
中でYESにセツトされ、Doing_I/Oフイール
ドはNOにセツトされ、そして、New_Page_R
equestedフラグはNOにセツトされ、待ち状態
のすべてのトランザクシヨンは再度開始され、呼び出し
は復帰する。
【0085】第2の場合、即ち、要求ページのためのバ
ツフア制御ブロツク(BCB)が存在する場合において
、バツフア・マネージヤ22はBCB_Page_Un
usableフイールドを検査する。若し、ページが使
用不能であることを、このフイールドが表示したならば
、これは、ページの使用可能なバージヨンは現在貯蔵さ
れていないことと、他のトランザクシヨンが、ページの
使用可能なバージヨンを得るための処理を既に行なつて
いることとを意味する。この場合には、現在のトランザ
クシヨンはWait_Queue(待ち行列)にそれ自
身を待ち行列に入れて、実行を保留する。このトランザ
クシヨンは、ページが使用可能になつた時に再度開始さ
れる。Fix_Page処理は、保留されたロツクがペ
ージを更新するためのものか、またはページを読み取る
ためのものかに依存する。
【0086】トランザクシヨンがページを更新する要求
を発生したものと仮定する。この場合、バツフア・マネ
ージヤは、ローカルCEC中のXモードにラツチをセツ
トすることによつてXモードにページをラツチする。更
新の要求に応答した読み取り要求の場合(以下に説明す
る)とは異なつて、ページの更新が許される前に、ペー
ジの最新のバージヨンがローカル・バツフア・プール中
にあるのを保証することを必要とするまで、バツフア・
マネージヤは、L_Short_messageに注意
を払わない。若し、Uモードのロツクがページに対して
既に保持されているならば、Fix_Pageの処理は
、直ちに呼び出し側に戻る。若し、Uモードのロツクは
現在保持されていないが、しかし、他のトランザクシヨ
ンのFix_Page要求に応答して既に要求されてい
れば、現在のトランザクシヨンはそれ自身保留され、前
のトランザクシヨン要求の付与を待つ。そうでなければ
、Xモードのラツチは解放され、そして、バツフア制御
ブロツクのU_Lock_Reqフイールド及びNew
_Page_Reqフイールドをマークした後に、Uモ
ードのPロツクが要求され、これにより、Uモードのロ
ツク及びページの新しいバージヨンが要求されているこ
とを他のシステムに知らせる。Uモードのロツク要求は
、バツフア・マネージヤによるメツセージとしてロツク
・マネージヤに送られる。Uモードのロツク要求によつ
て、最適化するために、貯蔵されたページのVRSN値
を送ることができる。若し、貯蔵されたページのVRS
Nが、現在の所有者を助けるならば、要求者側がページ
の最新のバージヨンを既に持つていることを見い出すた
めに、上述のことは有用である。若し、要求者側のバー
ジヨンが現在のバージヨンであれば、所有者側は、VR
SN値を比較することができ、そして、ページ転送をし
ない選択をする。
【0087】Uモードのロツクを与えたロツク管理機構
からメツセージを与えた時、バツフア・マネージヤはU
_Lock_Reqフイールドを消去し、そしてU_L
ock_Heldフイールドをセツトすることによつて
、バツフア制御ブロツクを更新する。この時点で、ペー
ジはXモードにラツチされ(Xモードのラツチをセツト
するバツフア・マネージヤによつて)、ページの最新の
バージヨンがバツフア・プール中に既に存在しているこ
とを保証するために、チエツクが行なわれる。Uモード
のロツクを与えるために、大域ロツク・マネージヤ40
によつて送られたメツセージは、大域ロツク・テーブル
100中のVRSN値を含むP_Short_mess
ageを伴つている。バツフア・マネージヤがこのメツ
セージを受け取つた時、バツフア・マネージヤはXモー
ドのラツチをセツトして、受け取つたVRSN値と、バ
ツフア・プール中のページのバージヨンのVRSN値と
を比較する。若し、ローカル・ページのバージヨンのV
RSN値が受け取つたVRSN値よりも小さければ、P
age_Unusableフイールド及びDoing_
I/Oフイールドがバツフア制御ブロツクにセツトされ
、そして、Page_Recoveryルーチンがに用
いられ、直接アクセス・ストレージ装置からページを読
み取る。
【0088】読み取り要求がトランザクシヨンから受け
取られたものと仮定する。ページはページのSラツチを
セツトすることによつてSモードにラツチされる。読み
取り要求の場合、トランザクシヨンに対して使用可能に
されたページのバージヨンは、常に、最新のバージヨン
でなければならないというわけではないから、バツフア
・マネージヤは、常に、最新のバージヨンではない。L
_Short_message中にあるページのVRS
N値によつて表示されているバージヨンと少なくとも同
じ新しさのバージヨンであることが、必要とされるだけ
である。バツフア制御ブロツク中のVRSN値と、この
メツセージで受け取られたVRSN値とを比較する前に
、Sモードのラツチがセツトされる。若し、このメツセ
ージに含まれたVLSNの値がバツフア制御ブロツクの
VLSNの値よりも小さいか、または等しいならば、F
ix_Page処理は呼び出し側のトランザクシヨンに
戻る。メツセージに含まれたVLSNがBCBのVLS
Nよりも大きい場合には、ページの新しいバージヨンの
ための要求が他のトランザクシヨンによつて既に発生さ
れていなければ、ページの新しいバージヨンのための要
求が発生される。その要求は所有者側のDBMSにNo
tify_Message(通知メツセージ)を発生す
ることによつて行なわれる。Pロツク要求の場合のよう
に、Notify_Messageは、所有者側によつ
て、ローカル・ロツク・マネージヤ(LLM)と、大域
ロツク・マネージヤ(GLM)と、ローカル・ロツク・
マネージヤ(LLM)とを通つて送られるP_Shor
t_messageを送らせる。若し、所有者がなけれ
ば、大域ロツク・マネージヤはメツセージを発生して、
GLMと、LLMとを経てP_Short_messa
geを転送する。トランザクシヨンは、P_Short
_messageの到着を待つている間、中断している
。中間速度のページ転送方式の影響下にあるとしても、
トランザクシヨンが読み取り要求を発生するまで、所有
者側のDBMSは、ページをデイスクに書き込まず、ま
た、要求者側にもページを転送しない。ロツク管理機構
からP_Short_messageを受け取つた後に
、再開始されたトランザクシヨンは、ページに対するS
モードのラツチを獲得し、そして、そのページのVRS
N値と、L_Short_message中のVRSN
値とを比較することによつて、ページの所望のバージヨ
ンが到着したか否かを見るためにチエツクを行なう。若
し、所望のバージヨンが到着していれば、呼び出しは復
帰する。若し、所望のバージヨンが到着していなければ
、Must_Recoverフイールドは、P_Sho
rt_message中のOwner_Existsフ
ラグと同じ値にセツトされる。この時点で、ページの要
求されたバージヨンを得るために、Page_Reco
veryルーチンが呼び出される。
【0089】[所有者側のバツフア・マネージヤのPa
ge_Transferの処理]表II及び図2を参照
して、以下に説明する。Page_Transferプ
ロシージヤがページを所有するDBMSのバツフア・マ
ネージヤに呼び出された時、そのプロシージヤは、ペー
ジを先ず固定し、そしてSラツチを付勢する。このラツ
チングはページの一貫したバージヨンを転送するために
必要とされる。若し、ページが汚れたページであり、U
モードのロツク要求が要求者側のシステムによつて与え
られ、そして、ページのための書き込みI/Oの処理の
準備が整つていなければ、所有者側のバツフア・マネー
ジヤは、ページをデイスクに書き込むためのI/O動作
を開始する。若し、Comm_Link_Transf
erが要求されたならば、ページは要求者側に直接に転
送される。若し、ページの書き込みI/O動作が処理中
であり、そして、要求されたロツク・モードがUモード
であれば、プロシージヤはI/O動作が完了するのを待
つ。要求されたロツク・モードがUモードの場合、Pロ
ツクのSモードにグレードを低下する要求は、所有者側
のバツフア・マネージヤによつて準備され、そして、新
しいロツク状態が所有者側のバツフア・マネージヤのバ
ツフア制御ブロツク中に知らされる。ページはラツチさ
れず、固定されない。次に、プロシージヤは、P_Sh
ort_messageをロツク管理機構に戻し、ロツ
ク管理機構はこのメツセージを要求者側に転送する。同
時に、所有者側はロツクのグレードを落した要求を与え
る。若し要求者側がUモードのロツクを求めたならば、
Page_TransferプロシージヤがLLMと、
GLMと、LLMとを通つてページのVRSN値を送り
、GLMがこのページの大域ロツク・テーブルのエント
リ中のVRSN値を更新する。
【0090】[要求者側のData_Receiveプ
ロシージヤ]要求者側のバツフア・マネージヤが、Da
ta_Receiveプロシージヤによつて、要求され
たページ及び制御情報をどのようにして受け取るかを、
III表及び図2を参照して説明する。このプロシージ
ヤは、要求されたページが到達した時に呼び出される。 転送されたページが遅く到着し、要求者側がDASDか
らページを既に読み取つているならば、転送されたペー
ジは無視される。
【0091】このプロシージヤが呼び出された時に、若
し、バツフア制御ブロツク(BCB)が存在しなければ
、前に要求されたページの到着は遅延されていることを
意味する。Pロツク要求、または、Fix_Pageか
らの「通知」の呼び出しは、すべてのページ転送を付勢
するから、若し、要求されたページが時間内に到着した
ならば、BCBは存在する。Data_Receive
プロシージヤが呼び出された時に、若し、BCBが存在
しなければ、受け取られたページは無視される。
【0092】このプロシージヤによるページの移動はB
CBの中のData_Movedフラグによつて表示さ
れる。若し、このフラグが「ON」にマークされている
ならば、ページはバツフア・プールの中に貯蔵されてい
る。
【0093】BCBのPage_Usableフイール
ドがマークされており、そして、ページが到着したなら
ば、貯蔵されたページの上に重ね書きする前に、Dat
a_Receiveプロシージヤは、受け取つたページ
のVRSN値と、BCB中のVRSN値とを比較しなけ
ればならない。この理由は、ページの時間通りの到着が
不確定なためである。若し、そのVRSN値が貯蔵され
たページのVRSN値よりも小さいか、または等しけれ
ば、受け取られたページは無視される。そうでなければ
、そのページは存在するバージヨンの上に重ねてコピー
される。レコードに対してロツク処理をしているので、
現在貯蔵されているページの最新のバージヨンが到着す
る。1方の読み取り装置は貯蔵されたバージヨンからの
レコードを読み取り、他方、他の読み取り装置は他のレ
コードのためのページの最新のバージヨンを必要とする
。後者は、ロツク管理機構を通る要求者側から所有者側
への「通知」の呼び出しを介して、より新しいバージヨ
ンの転送を付勢する。
【0094】既に貯蔵されているページに重ね書きをす
る前に、ページの古いバージヨンを実際に読み取るよう
なトランザクシヨンがないことを保証するために、Da
ta_Receiveプロシージヤは、ページをXモー
ドにラツチする。また、複数のData_Receiv
eプロシージヤはページをXモードにラツチすることに
よつて直列化される。
【0095】所有者側によつて送られたページが到着し
た時、Data_Receiveプロシージヤが呼び出
され、Data_Rcvプロシージヤが呼び出された時
、このプロシージヤはそのページのためのBCBを位置
付ける。ページは以下の場合には直ちに無視される。 即ち、それらの場合とは、(1)BCBが存在しない場
合と、(2)BCBのDoing_I/Oフラグがセツ
トされている場合と、(3)BCBにおいて、Page
_Usable表示がオンで、New_Page_Re
qフラグがオフの場合とである。
【0096】若し、BCBが存在するならば、(1)ペ
ージは使用不能の場合と、(2)ページは使用可能の場
合の2つの場合が考えられ、以下に説明する。
【0097】第1の場合においては、Data_Rec
eive処理はページをXモードにラツチする。若し、
BCBのDoing_I/O、Data_Moved、
またはPage_Usableフイールドがセツトされ
ていれば、プロシージヤは直ちにページのラツチをオフ
にする。そうでなければ、プロシージヤはページをコピ
ーし、BCB中のData_Movedフラグをオンに
転じ、ページのラツチをオフにして、復帰する。
【0098】第2の場合においては、Data_Rcv
プロシージヤはページをXモードにラツチする。次に、
Doing_I/Oフラグがオンか、またはNew_P
age_Reqフラグがオフか、または受け取つたペー
ジのVRSN値が、貯蔵されたページのVRSN値より
も小さいか、または等しいことが見い出された場合に、
プロシージヤはNew_Page_Reqをオフにセツ
トし、ページをラツチし、そして復帰する。そうでなけ
れば、プロシージヤはページをコピーする。若し、U_
Lock_Requestedがオフであれば、プロシ
ージヤは、New_Page_Reqをオフにセツトし
た後に、Wait_Queueに待機しているトランザ
クシヨンを活動させる。次に、プロシージヤはページの
ラツチをオフにして復帰する。若し、Uモードのロツク
が要求されたならば、活動した動作はUモードのロツク
を受け取つたトランザクシヨンの責任である。
【0099】表I  :  Fix_Pageのプロシ
ージヤ 第1の場合  −  バツフア制御ブロツク(BCB)
が存在しない場合(即ちページが貯蔵されていない場合
)。 1.バツフアを割り当て、そして、BCBの「Page
_Unusable」をマークする。 「Data_Moved」はOFFにセツトされる。 2.Pロツクを要求する。若し、Uモードのロツクが要
求されたならば、BCBのU_Lock_Reqをマー
クする。 /*要求のタイプが読み取りであるか、または更新であ
るかに従つて、ロツクはSモードか、またはUモードに
要求される。*//*ロツク・マネージヤはロツク付与
を持つP_Short_messageを送る。(若し
、そのページが他のシステム中に貯蔵されているとすれ
ば、所有者側はこのメツセージを送る。若し、他のシス
テム中にそのページが貯蔵されていなければ、ロツク・
マネージヤによつてこのメツセージが発生される。)所
有者側がこのメツセージを送る場合には、P_Shor
t_Message中のOwner_Existsフラ
グがYESにセツトされ、そうでなければ、0wner
_ExistsはNOにセツトされる。*/3.要求の
タイプに応じて、ページはSモードか、またはXモード
にラツチされる。 /*受け取られたデータを直列化する。*/4.IF(
若し)、  BCBのData_Movedフイールド
が「ON」にマークされているならば(THEN)、 
 以下の動作を行なえ。 a.若し(IF)(P_Short_message中
のOwner_Exists=YES)であり、かつ、
(Page_Version_Number=P_Sh
ort_message中のVersion_Numb
er)であれば(THEN)、以下の動作をせよ。 1)BCBの「Page_Usable」をマークする
。 2)若しあれば、待機している処理を再開始する。 3)復帰する。        /*ラツチは保持する
。*/5.若し(IF)、(P_Short_mess
age中のOwみer−Exists=NOである)か
、    /*ページは送られない。*/    また
は、(BCBは「Data_Moved=OFF」にマ
ークされている)か、/*Data_Rcvはデータを
移動しない。 */    または、((BCBは「Data_Mov
ed=ON」にマークされ、    /*古いData
_Rcvは移動した。*/    そして、P_Sho
rt_message中のOwner_Exists=
YESであり)  そして、      /*古いペー
ジ。*/(Page_Version_numberが
P_Short_message中のバージヨン番号よ
りも小さい))ならば(THEN)、以下の動作を行な
え。 a.BCBの「Page_Unusable、及びDo
ing_I/O」をマークする。    /*これは、
Sラツチが解放された後に、受け取つたデータの出口か
らデータが移動するのを阻止する。ロツク要求及びI/
O動作を通してラツチを保持しない。*/ b.ラツチを解放する。 c.若し(IF)、  P_Short_messag
eの中のOwner_Exists=YESならば(T
HEN)、Must_Recover=YESにする。     /*Must_Recoverフラグは、ペー
ジ復旧ルーチンに送られる。*/それ以外は(ELSE
)、  Must_Rocover=NOにする。 d.Page_Recovery_routineを呼
び出す。 e.要求のタイプに従つてページをSモードか、または
Xモードにラツチする。 f.復帰する。 ページ復旧ルーチン 1.IF(若し)Must_Recover=YESな
らば(THEN)、以下の動作を行なえ。    /*
ページは何処かに貯蔵されている。*/ a.若し、BCBが「U_Lock_Held=NO」
を表示していれば、「Comm_Link_Trans
fer=NO」を持つUモードのPロツクを要求せよ。 /*Uモードのロツク要求は、デイスクへページを書き
込む処理を、所有者側によつて行わせる。Sモードのロ
ツクがページに要求された時、所有者側はページをデイ
スクに書き込まないことには注意を払う必要がある。従
つて、Uモードのロツクを獲得する必要がある。*/ロ
ツクが与えられた後、BCBを「U_Lock_Hel
d=YES」にマークする。 2.デイスクからページを読み取る。 3.I/O動作が完了した時、 a.BCBを「Page_Usable及びDoing
_I/O=NO」、New_Page_Request
ed=NOにマークする。 b.若し、待機している処理があるならば、再開始する
。 c.復帰する。 第2の場合  −  BCBが存在する場合。 1.BCBを再度チエツクする。 若し(IF)、BCBが「Page_Unusable
」にマークされているならば(THEN)、a.このト
ランザクシヨンをWaiter_Q(BCBに固定され
ている)に待機させる。 b.トランザクシヨンを保留する(ページが使用可能に
なつた時に、トランザクシヨンは再開始される)。 /*==================*//*更
新の要求の処理は以下の通りである。*//*====
==============*/2.若し(IF)、
要求のタイプ=更新であれば(THEN)、以下の動作
を行なえ。 a.ページをXモードにラツチする。 b.Chk−U−Again(Uモードを再度チエツク
する)。若し(IF)、(「U_Lock_Held=
NO」)ならば(THEN)、  以下の動作をせよ。 1)Xラツチを解放する。      /*ロツク要求
を通してラツチを保持しない。*/ 2)若し(IF)、「U_Lock_Requeste
d=NO」であれば(THEN)、以下の動作を行なえ
。      /*Uモードのロツクは未だ要求されて
いない。*/ a)BCBを「New_Page_Requested
=YES」にマークする。 b)若し(IF)、妨害が生じれば(THEN)、Ch
k−BCB−Againに行け。      /*Sロ
ツクの結果として、若し、I/Oが処理中であれば、待
機する。*/ c)BCBを「U_Lock_Requested=Y
ES」にマークする。 d)Uモードのロツクを要求する。 /*(Uモードのロツクが要求された時、貯蔵されたペ
ージのバージヨン番号を送ることは可能である。これは
、要求側がページの現在のバージヨンを持つている場合
には有用である。所有者側はバージヨン番号を比較する
ことができ、そして、若し要求者側のバージヨンが現在
のバージヨンであれば、所有者側のページは転送されな
い。)*/ e)Uモードのロツクが与えられた時、BCBを「U_
Lock_held=YES」にマークする。    
  /*若し、Uモードのロツクが他のシステムによつ
て保持されており、それがページを転送したならば、P
_Short_message中のOwner_Exi
stsは、YESであり、そうでなければ、NOである
。*/i.若し(IF)、(P_Short_mess
age中のOwner_Exists=YES)であれ
ば(THEN)、以下の動作を行なえ。/*転送された
ページがData_Rcvによつて移動されたか否かを
チエツクする。*/ i)ページをXモードにラツチする。 ii)若し(IF)、(Page_Version_N
umber)が(P_Short_messageのバ
ージヨン番号)よりも小さければ(THEN)、以下の
動作を行なえ。 1.BCBを「Page_Unusable」及びDo
ing_I/O」にマークする。 2.Xモードのラツチを解放する。 3.Must_Recover=NOにセツトする。/
*Uモードのロツクの保持、デイスクのバージヨンは良
好。*/ 4.ページの復旧(Page_Recovery)ルー
チンを呼び出す。 5.ページをXモードにラツチする。 6.若し(IF)、「U_Lock_Held=NO」
ならば(THEN)、以下の動作を行なえ。/*ラツチ
を待つている間にUモードのロツクは横取りされたか。 */ a.Xモードのラツチを解放する。 b.Chk−U−Againに行く。 7.復帰する。 /*ページのVRSNはP_Short_messag
e中のVRSNよりも小さい。*/ iii)それ以外(ELSE)は以下の動作を行なえ。 /*Data_Rcv(データの受け取り)によつて移
動されたページは良好である。*/ 1.若しあれば、待機中の処理を再始動する。/*Uモ
ードのロツクの処理の待ちか、または、新しいページの
処理の待ちがある。*/ 2.復帰する。 ii.それ以外(ELSE)は以下の動作を行なえ。/
*P_Short_message中のOwner_E
xists=NO、貯蔵されたページが要求を満足する
か否かをチエツクする。*/ i)若し(IF)、(P_Short_message
中のVRSNが、Page_Version_Numb
er(ページのバージヨン番号)よりも大きければ(T
HEN)、以下の動作を行なえ。 1.ページをXモードにラツチする。 2.BCBを「Page_Unusable及びDoi
ng_I/O」にマークする。 3.ラツチを解放する。 4.Must_recover=NOにセツトする。/
*Uモードのロツクの保持、デイスクのバージヨンは良
好である。*/ 5.ページ復旧ルーチンを呼び出す。 ii)若し、あれば、待機している動作を再開始する。 /*Uモードのロツク処理の待ちか、または新しいペー
ジ処理の待ち。*/ iii)ページをXモードにラツチする。 iv)復帰する。 3.それ以外(ELSE)は、以下の動作を行なえ。 
   /*Uモードのロツクは既に要求されている。*
/a)二重交換比較(compare double 
swap−CDS)インストラクシヨンによつてWai
ter_Qの中にこのトランザクシヨンを待機させる。 b)若し(IF)、妨害が起きたなら(THEN)、C
hk−U−Againに行く。    /*CDSが誤
動作したならば、再駆動する。*/ c)トランザクシヨンを保留する。 d)Chk−U−Againに行く。    /*再始
動の後、再駆動する。*/ e)それ以外(ELSE)は、復帰せよ。    /*
Uモードのロツクは既に保持されており、Xモードのラ
ツチを保持して復帰する。*/ /*===================*//*
以下の記述は読み取り要求の処理である。*//*==
=================*/3.Chec
k−Again:ページがSモードにラツチされている
か再度チエツクする。 /*(Uモードのロツクの要求のためか、または、ペー
ジの新しいバージヨンが要求されているという理由のた
めに処理することのできるData_Rcvの出力に対
して直列化するためにラツチが獲得される。)*/4.
若し(IF)、L_Short_message中のバ
ージヨン番号がPage_Version_Numbe
rよりも小さいか、または等しければ(THEN)、復
帰せよ。 /*この貯蔵されたバージヨンは使用することができる
。*/ 5.若し(IF)、L_Short_message中
のバージヨン番号がPage_Version_Num
berよりも大きければ(THEN)、以下の動作を行
なえ。 /*ページの新しいバージヨンが必要である。*/a.
Sモードのラツチを解放する。 b.若し(IF)、BCBが「New_Page_Re
quested=YES」にマークされていれば(TH
EN)、以下の動作を行なえ。 1)このトランザクシヨンをWaiter_Qの中に待
機させる。 2)若し(IF)、妨害が生じれば(THEN)、Ch
eck−Againに行く。 /*CDSの誤動作、例えば、Data_Rcvが「N
ew_Page_Requested=NO」にセツト
されていれば、妨害が生じる。*/ 3)トランザクシヨンを保留する。(トランザクシヨン
はData_Rcvの出力か、またはUロツクの要求に
よつて再開始される。) 4)Check−Againに行く。 c.それ以外(ELSE)は、以下の動作を行なえ。 
   /*先ず、新しいバージヨンが必要とする最初の
ものを検出する。*/ 1)BCBを「New_Page_Requested
=YES」にマークする。 2)若し(IF)、妨害があれば(THEN)、Chk
−BCB−Againに行く。 3)Uモードのロツクのホルダ(所有者側のシステム)
に対して「ページを送れ」の「通知」を発生する。 /*(「通知」は、Pロツク要求のように、ページの所
有者、または、ロツク・マネージヤによつて、P_Sh
ort_messageを送らせる。これは、ページの
到着のタイム・リミツトをセツトする必要を除く。)*
/ トランザクシヨンは、ここで保留される。このトランザ
クシヨンは、P_Short_messageが到着し
た時、ロツク・マネージヤによつて再開始される。 4)ページをSモードにラツチする。 /*これは、Data_Rcvがデータを移動しないこ
とを保証する。*/ 5)若し(IF)、L_Short_message中
のバージヨン番号がページのバージヨン番号よりも大き
ければ(THEN)、以下の動作を行なえ。 /*新しいバージヨンが到着していなければ、ページを
復旧する。*/ a)ページをXモードにラツチする。 /*ページを復旧するために、読み出し動作を行なう。 */ b)BCBを「Page_Unusable及びDoi
ng_I/O」にマークする。 c)Xモードのラツチを解放する。 d)Must_Recover=YESにする。 /*ページを復旧するためにUモードのロツクを獲得す
る。*/ e)ページ復旧ルーチンを呼び出す。 f)ページをSモードにラツチする。 6)復帰する。
【0100】Fix_Page処理において、ページの
新しいバージヨンが受け取られた時、待機中のすべての
トランザクシヨンは再活動される。VRSNの要件が、
今受け取られたページによつて満足された待機中のトラ
ンザクシヨンだけのData_Rcvを再活動させるこ
とによつて、処理を幾分か改良することが可能である。 Data−Rcvは、若し、Wait_Queueが空
でなければ、ページの最新のバージヨンのためのページ
要求を発生する。これは、Waiter_QのElem
ent中の各ウエイターと、Data_Rcv出口中の
付加的なロジツクとによつて必要とされるVRSNを追
跡することが必要である。
【0101】表II  :  ページ転送プロシージヤ
(所有者側のシステム) BM(所有者側のシステム中の)は以下の動作を行なう
。 1.バツフア・プールの中にページを位置付け、そして
、それを固定する。 2.ページをモードにラツチする。 /*これは、ページの一貫したバージヨンを転送するた
めに必要である。(更新トランザクシヨンはページを更
新するためにXモードのラツチを獲得する。)*/3.
若し(IF)、(ページが汚れたページ)であり、そし
て(要求されたロツク・モードがUモード)であれば(
THEN)、デイスクへの書き込みを開始せよ。 4.若し(IF)、Comm_Link_Transf
erがYESであれば(THEN)、以下の動作を行な
え。 .ページをコピーし、そして、制御情報を設定する。 .ページを転送する。 5.若し(IF)、(ページの書き込みI/O動作が進
行中)であり、そして(要求されたロツクがUモード)
であれば(THEN)、I/O動作が終了するのを待て
。 6.若し(IF)、要求されたロツク・モードがUモー
ドであれば(THEN)、PロツクのグレードをSモー
ドのロツクに下げよ。BCBの中に新しいロツク状態を
「通知」する。 7.ページのラツチを解放する。 8.ページの固定を解く。 9.P_Short_messageとロツクのグレー
ドを下げる要求とをロツク・マネージヤに戻す。若し、
要求されたロツクがUモードのロツクであれば、バージ
ヨン番号を与える。ロツク・マネージヤはロツク・テー
ブル中のバージヨン番号を更新する。 10.出口に行く。
【0102】表III  :  データの受け取りプロ
シージヤ Data_Rcvプロシージヤによつて行なわれる処理
に関して重要な点は以下の通りである。 .若し、BCBが存在しなければ、Data_Rcvが
呼び出された時、そのデータは、前に要求されたページ
の遅れた到着であるか否かを決定する。Fix_Pag
eからのPロツク要求はページ転送を付勢するから、若
し、ページが時間内に到着するならば、BCBは存在す
る。Data_Rcvが呼び出された時に、BCBが存
在しなければ、受け取られたページは無視される。 .Data_Rcvによつてページが移動されたか否か
を知るために、BCBは、可能性ある1つのページ状態
として「Data_Moved」フラグを持つている。 若し、BCBが「Page_Unusable」及び「
Data_Moved=ON」にマークされているなら
ば、ページは貯蔵される。若し、BCBが「Page_
Unusable」及び「Data_Moved=OF
F」にマークされているならば、ページは貯蔵されない
。 .たとえ、BCBが「Page_Usable」にマー
クされていたとしても、レコードのロツキングのために
、より新しいページのバージヨンが到着するかもしれな
い。一方の読み取りシステムは貯蔵されたバージヨンか
らのレコードを読み取ることができ、他方、他の読み取
りシステムは他のレコードのためのページの、より新し
いバージヨンを必要とする。受け取られたページは、介
入した更新によつて貯蔵されたバージヨンよりも、より
新しいものであり得る。然しながら、受け取られたペー
ジのバージヨン番号は、貯蔵されたページのバージヨン
番号に書き重ねる前に、検査されねばならない。検査を
する理由は、時間内に到着するページの持つ不確定性の
ためである。受け取られたページは、若し、そのバージ
ヨン番号が貯蔵されているページのバージヨン番号より
も小さいか、またはそれと等しければ、無視される。 .既に貯蔵されているページに重ね書きするために、D
ata_Rcvはページに対してXモードのラツチを得
る。読み取りシステムはページを使用するためにSモー
ドのラツチを獲得し、更新システムはXラツチを獲得す
る。また、複数のData_Rcv出口はXラツチによ
つて直列化される。Data_Rcv処理はページのた
めに、BCBを位置付ける。ページは、下記の場合には
、直ちに無視される。 1.BCBが存在しないとき。 2.BCBが「Doing_I/O」を表示した時。 3.BCBが「Page_Usable」と「New_
Page_Requested=NO」を表示した時。 若し、BCBが存在すれば、ページは使用不能の場合と
、ページは使用可能の場合の2つの場合がある。 第1の場合  −  Page_Unusableの場
合1.ページはXモードにラツチする。    /*F
ix_Pageに対して直列化する*/ 2.若し(IF)、BCBが「Doing_I/O」ま
たは「Data_Moved=ON」または「Page
_Usable=YES」にマークされているならば(
THEN)、以下の動作を行なえ。    /*Xモー
ドのラツチを獲得した後、フラグを再度チエツクする。 */ a.ラツチを解放する。 b.出口に行く。 /*(転送されるページは古いバージヨンだから、その
バージヨンは無視する。BCBが「Page_unus
ableで、Data_Moved=OFF」にマーク
された時だけに、Data_Rcvが処理を続行する。 )*/ 3.ページをコピーする。 4.BCB中にバージヨン番号(そのページの)を入力
する。 5.BCBを「Data_Moved=ON」にマーク
する。 6.ページのラツチを解放する。 (これは、若し、Fix_Pageが待機しているなら
ば、Pロツク要求を発生した要求側システムのFix_
Pageを再始動する。) 7.出口に行く。 第2の場合  −  Page_Usableの場合1
.ページをXモードにラツチする。(これは、読み取り
システム、更新システム及びページ復旧ルーチンに対し
て直列化することである。) /*Xモードのラツチが獲得された後、フラグを再度チ
エツクする。下記の記述を参照のこと。*/2.若し(
IF)、(BCBが「New_Page_Reques
ted=NO」にマークされている)か、    /*
これは、汚れたページの書き込みI/O動作か、または
、ページ復旧が古いバージヨンであるという理由のため
の読み取りI/O動作である。*/    または、(
BCBは「New_Page_Requested=N
O」にマークされている)か、    /*新しいペー
ジは既に受け取られている。*/または、(受け取られ
たページのバージヨン番号が、貯蔵されたページのバー
ジヨン番号/*古いバージヨン番号*/よりも小さいか
、または等しい)ければ(THEN)、以下の動作を行
なえ。 a.「New_Page_Requested=NO」
b.ページのラツチを解放する。 c.出口に行く。 3.ページをコピーする。 4.BCBの中のページのバージヨン番号を「通知」す
る。 5.若し(IF)、「U_Lock_Requeste
d=NO」ならば(THEN)、以下の動作を行なえ。     /*若し、Uモードのロツクが要求されたなら
ば、待機中の処理は、Uモードのロツクが得られた後に
、再活動される。*/ a.Waiter_Qを交換する。 b.「New_Page_Requested=NO」
をセツトする。 6.ページのラツチを解放する。 7.若し(IF)、Waiter_Qが交換されたなら
ば(THEN)、待機中の処理を再開始する。 /*ページの新しいバージヨンを待つ。*/8.出口に
行く。
【0103】所有者側にあるページが、所有者側ではな
い他のシステムによつて要求された時、所有者側のバツ
フア・プール中の汚れたページの存在を検出するための
レコードのロツキングと関連して、VRSN値を使用す
る例を説明するために、図2乃至図5を参照する。最初
に、ページP1は任意のバツフア・プールの中に現在存
在しないが、しかし、デイスクの中にはP1が存在する
ものと仮定する。図3のステツプ200において、CE
C12の中のトランザクシヨンTX2は、ステツプ20
2においてCEC12のデータ・マネージヤ20が、L
LM18によつて大域ロツク・マネージヤ40にSモー
ドのLロツクのためのロツク要求メツセージを送つたこ
とに応答して、ページP1中のレコードR2を読み取る
要求をする。ロツク要求に付随して、レコードR2を含
むページP1のためのVRSNの現在の値を求める検証
の要求がある。XモードのLロツクがページP1中のレ
コードR1に要求されることを除いて、第2のトランザ
クシヨンTX1のためのCEC14の同じVRSNは若
干遅れるものと仮定する。これらのステツプは図3の参
照数字204及び205で示されている。各Lロツク要
求及び検証の要求が大域ロツク・テーブルをアクセスす
ることに応答する大域ロツク・マネージヤ(GLM)4
0はページP1のためのレコードがないことを見い出す
。ステツプ206及び207において、GLMは要求さ
れたロツクを付与するメツセージを要求者側に送り、そ
して、L_Short_message中にVRSNの
デフオルトをゼロの値に戻す。ステツプ208において
、ロツク付与のメツセージ及びShort_messa
geがデータ・マネージヤ20によつて受け取られた時
、データ・マネージヤ20はバツフア・マネージヤ22
に対するページの要求によつてFix_Page処理を
開始する。ステツプ209において、バツフア・マネー
ジヤ22は表Iの第1の場合に従つてFix_Page
処理を開始して、P1のためのBCBを作成し、そして
、SモードのPロツクを要求するメツセージを送る。 ステツプ210において、Pロツクを要求して送られた
メツセージはP_Short_messageを含む付
与メツセージを大域ロツク・マネージヤから引き出す。 P_Short_messageは、Owner_Ex
istsと、VRSN値との2つの関連フイールドを持
つている。この場合、Uモードのロツクがないことは、
前者のフイールドを「NO」にセツトし、他方、更新が
ないことは、後者のフイールドをゼロにセツトする。ス
テツプ211乃至216において、Fix_Pageの
処理は、ステツプ5(表I)を開始し、そして、ページ
復旧ルーチンを呼び出すことによつてサブ・ステツプa
乃至fを実行し、そして、デイスクからページP1を獲
得する。ページのデイスクのバージヨンはVRSN=9
8を持つているものと仮定する。トランザクシヨンTX
2はレコードR2を読み取り、そして、そのトランザク
シヨンの処理を完了する。この処理は読み取りだから、
更新ログのエントリは作成されず、ページのVRSN番
号は同じにとどまる。データ・マネージヤ20はLロツ
クの解放を要求する。
【0104】ステツプ221において、バツフア・マネ
ージヤ24によるページP1の獲得から若干遅れて、C
EC14のDBMS30中のデータ・マネージヤ32に
より、ステツプ207で受け取られたL_Short_
messageは、Fix_Pageの呼び出しをバツ
フア・マネージヤ34に送る。ステツプ222乃至22
4において、バツフア・マネージヤ34は表I中の第1
の場合に従つてFix_Pageの処理を行ない、BC
Bを作り、そして、UモードのPロツクを要求するメツ
セージを送る。この要求は、ロツク・マネージヤから、
P_Short_messageを含む付与を生じる。 バツフア・マネージヤ24により保持されているページ
P1にあるPロツクはSモードのロツクであり、かつ、
ページは更新されていないので、GLMはOwner_
ExistsフイールドをNOにセツトし、VRSN値
をゼロにする。ステツプ224において、バツフア・マ
ネージヤ34のFix_Pageの処理は表Iのステツ
プ5に進んで、サブステツプa乃至fを実行し、そして
、デイスクからページP1を獲得する。ページP1のV
RSN値は依然として98であることは注意を要する。 図4を参照すると、ステツプ225において、トランザ
クシヨンTX1は、レコードR1を更新し、更新のログ
処理から生じたLSNのログ値を獲得し、そして、BC
BのVRSNフイールドとページとを更新する。ステツ
プ225において、VRSN値は99に更新され、そし
て、CEC14のバツフア・プール36中のページP1
中のBCB及びページP1を新しいバージヨンに更新す
る。次に、このトランザクシヨンはコミツトされ、そし
て、アンロツク要求のメツセージがロツク・マネージヤ
に送られて、レコードR1に対するLロツクの解放を要
求し、そして、更新により作られた99のVRSN値を
ページP1に与える。この要求がステツプ227で受け
取られるとGLM40はVRSN値及びP1の対応する
レコードを変更し、次に、アンロツク要求を処理して、
レコードR1に関するLロツクを解放する。対応する大
域ロツク・テーブルの記録のMODEフイールドの中に
入れられたBM34により保持されているUモードのロ
ツクは、解放されていないことは注意を払う必要がある
【0105】図4のステツプ227が完了した時点にお
いて、P1の汚れたページのバージヨンは、99のVR
SN値と共にバツフア・プール36の中に貯蔵され、こ
の値は、大域ロツク・テーブル中のページP1に対する
ロツク・レコードの中に入れられるはずのものであり、
ページの前のバージヨン(VRSN値98)はDBMS
16のバツフア・プール26の中に貯蔵されている。ペ
ージP1のためのGLMにより受け取られたすべてのロ
ツク、または検証要求は、Pロツクがすべてのシステム
によりP1に保持されている限りは、大域ロツク・テー
ブル中のページP1のためのロツク記録中のVRSN値
の形式で足跡を与えることができる。ロツク記録は、こ
の場合、所有者側はBM34であるUモードのPロツク
の所有者を記録していることを想起されたい。
【0106】図4のステツプ228において、CEC1
2の中の第3のトランザクシヨンTX3は、レコードR
1のロツクを獲得し、かつ、P1のVRSNを検証する
ために、ステツプ229において、データ・マネージヤ
20によつてLロツク要求及び検証の要求を発生する。 ステツプ231において、GLM40は大域ロツク・テ
ーブルをチエツクし、更新されたVRSN99を獲得し
、そして、ロツクの付与の要求及びL_Short_m
essageをデータ・マネージヤ20に送り戻す。 ロツク付与が受け取られた時、ステツプ233において
、データ・マネージヤ20は、ステツプ235において
、Fix_Pageの処理の第2の場合を実行するバツ
フア・マネージヤ24にVRSN値を送る。ページは使
用可能であり、そして、更新要求は受け取られ、表Iの
第2の場合のステツプ3の処理が始まるので、ページは
、地域的にSモードにラツチされ、そして、VRSN値
はBCBの中のVRSN値に対してチエツクされる。 L_Short_message中のVRSN値はBC
B中のVRSN値よりも大きいので、ステツプ5が実行
される。この時点で、貯蔵されたページの新しいバージ
ヨンの必要性が検出され、そして、バツフア・プール2
6の中にページの新しいバージヨンを転送する処理に向
けられる。
【0107】本発明に従つた転送の順序を説明するため
に、表Iのステツプ5と、図2と、図4を参照する。表
Iのステツプ5において、Sモードのラツチが解放され
、ページP1のためのDBMS16に向けられた競合の
要求がないものと仮定すると、処理はステツプ5cに進
む。ステツプ[5.]の[c.]の第1及び第2の動作
は完了したものと仮定する。ステツプ[5.][c.]
(図4のステツプ237)において、バツフア・マネー
ジヤ24は、GLM40を介して、ページP1の所有者
(BM34)に向けられた通知を発生する。その通知は
「ページの転送」である。この処理は、P_Short
_messageが送られるまで中断する。通知メツセ
ージはステツプ239において、ロツク管理機構を通し
てBM34に送られ、そして、表IIに記載されたペー
ジ転送処理を開始する。図5を参照する。ステツプ24
1において、バツフア・マネージヤ(BM)34に送ら
れた通知に応答して、BM34はバツフア・プールの中
にページを位置付け、ページをSモードにラツチし、そ
して、ステツプ3に移動する。この場合、ページは汚れ
たページであるが、しかし、要求はSモードのロツクな
ので、ステツプ3はスキツプされる。ステツプ4におい
て、Comm_Link_Transferのデフオル
トの設定は「YES」である。デフオルトの設定によつ
て、ページP1はコピーされ、必要な制御情報は設定さ
れ、そして、ページ及びその情報はステツプ245にお
いて通信リンク50を介してCEC12に送られる。こ
の例において、表IIのステツプ5及び6はスキツプさ
れ、表Iのステツプ7において、ページのラツチは解放
され、ステツプ8において、ページは解放され、ステツ
プ9において、P_Short_messageはロツ
ク・マネージヤを通つてCEC12に送られる。このこ
とは、図5のステツプ247及び248に対応している
。P_Short_messageと転送されるページ
の間には競争があることは明らかである。ロツク・マネ
ージヤを通るメツセージの時間は、通信リンク50を直
接に通るメツセージの転送の時間よりも長いものとする
と、通常の動作において、ページは、P_Short_
messageの到達の前にCEC12に受け取られる
【0108】図5のステツプ250において、制御情報
と共に、ページが受けとられた時、CEC12において
、表IIIのデータ受け取りプロシージヤが呼び出され
る。
【0109】表III及び図5を参照すると、前のトラ
ンザクシヨンのために、ページがBCBのPage_U
sableフイールド中の「使用可能」にマークされて
いるので、Data_Recのプロシージヤが呼び出さ
れた時、ページP1のためのBCBが存在する。この時
点で、ページが図5のステツプ252において、バージ
ヨン番号の比較によつて、そのページのバージヨン番号
は、貯蔵されたバージヨン値よりもより新しいか否かの
処理が行なわれる。この例においては、これは、明らか
に、貯蔵されているバージヨンが新しい。この場合にお
いては、バツフア・プール24中のページの前のバージ
ヨンが使用可能なので、表IIIの第2の場合に従う(
図5のステツプ255)。従つて、ページはXモードに
ラツチされ、表IIIの条件は全く満足されず、ページ
はコピーされ、VRSN値はBCBにコピーされ、そし
て、Uモードのロツクは要求されなかつたので、ステツ
プ5が実行され、ページのラツチは解放され、待機して
いるトランザクシヨンは再開始され、処理は完了される
【0110】表Iのステツプ[5.]の[c.]に戻る
と(図5のステツプ257)、ページは、P_Shor
t_messageが到着するまでに、Data_Re
cの処理によつて処理されているものと仮定する。従つ
てBMのFix_Page処理が再開始された時、ペー
ジはSモードにラツチされ、そして、バッフア・プール
の中のバージヨン番号は、図5のステツプ259のL_
Short_messageに受け取られたVRSNと
比較される。若し、このメツセージの値がBCBの中の
値よりも大きいならば、新しいバージヨンは到達してい
ないと想像され、ページの復旧を必要とする(図5のス
テツプ262)。そうでなければ、ページは到着して、
バツフア・プールの中に入れられており、そのVRSN
値は更新され、従つて、ページは保留されたトランザク
シヨンに入手可能である。
【0111】[単一システムの復旧]システムが誤動作
をした後に、復旧を再開始すること(「ARIES:ラ
イト・アヘツド・ロギングを用いた微細分化ロツキング
及び部分的復旧をサポートするトランザクシヨンの復旧
方法」(Transaction Recovery 
Method Supporting Fine Gr
anularity Locking and Par
tial Rollbacks Using Writ
e−Ahead Logging)と題する1989年
1月に刊行されたIBM社の刊行物IBMリサーチ・リ
ポート番号RJ6649に記載されているアプローチを
参照する時に、以下の点に注意すべきである。元へ戻す
(undo)パスの間で、若し、Uモードのロツクが現
在保持されていなければ、Uモードのロツクは影響され
たページに対して再度獲得されなければならない。この
Uロツクの獲得は、通常の処理の間でさえも、Uモード
のロツクは行き詰まりには含まれていないから、行き詰
まりを生じない。レド(redo)復旧に含まれたペー
ジ(即ち、システムが誤動作した時に、Uモードのロツ
クが保持されていたページ)は、レド復旧パスが完了し
た後に、そのページを必要とする他の任意のシステムに
転送可能である。 若し、誤動作したシステムが復旧処理中にあれば、ロツ
ク・マネージヤは、誤動作したシステムのページ転送プ
ロシージヤが実行可能であることを、誤動作したシステ
ムが表示するまで、入力した他のシステムのロツク要求
を待機させる。トランザクシヨン・システムはレド復旧
パスの終りでページ転送プロシージヤを動作する(即ち
、失われたすべての更新ページの「経過記録の繰り返し
」を行なつた後において)。
【0112】[高速度ページ転送方式]高速度ページ転
送方式については、汚れたページの所有権は、そのペー
ジをデイスクに最初に書き込むことなく転送されるので
、ページがデイスクに書き込まれる前に新しい所有者が
誤動作した場合、ページのRLSNは、ページを正しく
復旧するためにGLMにおいて追跡されねばならない。 これを達成するために、RLSNの値は、Uモードのロ
ツクがページに要求された時に与えられる。
【0113】[RLSNの割り当て及び追跡]RLSN
はDBMSによつて割り当てられ、そして、ロツク管理
機構によつて追跡される。バツフア・マネージヤ(BM
)は、Uモードのロツクがページに対して要求された時
か、または、ページの状態が汚れていないページから、
汚れたページに変更した時に、バツフア制御ブロツク(
BCB)にRLSNを割り当て、そして追跡する。 BMは、若し、BMが今書き込まれたとしたならば、ロ
グ記録と関連したであろうLSN(実質的には、ログの
終りのLSN)を、RLSNとして選択する。LLM及
びGLMは、RLSNフイールド中にストアすることの
できる最大値(Hi_Valueと称される)に、ロツ
ク・テーブルのエントリのRLSNフイールドを初期化
する。ページのHi_ValueのRLSN値は、その
ページに対しては復旧を要しないことを暗示している。 ページに対してUモードのロツクが要求されると、Pロ
ツク要求はBMによつて割り当てられたRLSN値を含
んでいる。BMは、RLSN値がロツク管理機構によつ
て条件付きでセツトされることを要求する。ロツク管理
機構(LKM)は、若し、LKMの現在のRLSN値が
Hi_Valueであれば、その値にRLSNをセツト
する。このことは、汚れたページの所有権が一方のシス
テムから他方のシステムに転送された時に、ページがデ
イスクに書き込まれることなく、ロツク管理機構のRL
SN値は修正されないことを意味する。いずれの場合で
も、ロツク・マネージヤ(LM)は、ロツク要求を処理
した後にLMが持つているRLSN値をBMに戻す。U
モードのロツクが解放された時か、または、ページの所
有権が他のシステムに移転されることなくSモードのロ
ツクにグレードが低下された時(これは、現在の所有者
がページをデイスクに書き込んだ後にのみ発生する)、
ロツク管理機構はRLSN値をHi_Valueにセツ
トすることができる。
【0114】ページ復旧のために処理されねばならない
ログの範囲を減少するために、所有者側のシステム中の
バツフア・マネージヤは、デイスクにページを書き込ん
だ後であるが、しかし、RLSNをHi_Valueに
無条件にセツトするために、LKMによつて再度ページ
が汚される前に、RLSNを前の方に強制する。この場
合、ページが再度汚された時、バツフア・マネージヤは
、更新が行なわれる前に、LKMにおいてRLSNを先
ず更新しなければならない。代案として、RLSN値が
LKMの値とHi_Valueとの間の値にセツトされ
ることなく、BCBにおいて追跡された高い値に、ペー
ジが再度汚される前に、RLSNを強制することができ
る。RLSNを前の方に強制することは、ここで説明し
ている方法には必要ではない。これは、誤動作が生じて
ページの復旧を必要とする場合、走査されねばならない
ログの範囲を狭めるための最良の方法である。
【0115】[Fix_Pageの処理]Fix_Pa
geへの入力は中間的な速度のページ転送方式と同じで
ある。その処理は、以下に述べる事項を除けば、中間的
な速度のページ転送方式と同じである。RLSN(即ち
、ログの現在の終りのLSN)は、UモードのPロツク
が要求された時に、条件付きでセツトされる。RLSN
はBCB中のロツク・マネージヤから戻されることは注
意を要する。RLSNは、デイスクへ書き込んだ後に、
RLSNを前の方に強制するためにBCBの中で追跡さ
れる。汚れたページのバージヨンは、Uモードのロツク
が要求された時に転送されるので、そのページは、ペー
ジが使用可能のマーク付けされた後、Dirty_Q(
汚れたページの待ち行列)の中で待たされる。ページが
デイスクから読み取られた後に、ページ復旧ルーチンで
遂行される処理の間でUモードのロツクが、要求側のシ
ステムによつて獲得される時間までに、所有者側のシス
テムによつて送られたページが受け取られなかつた時、
ログは、ページを復旧するためにRLSNから処理され
ねばならない。
【0116】[ページ転送のためのバツフア・マネージ
ヤのプロシージヤ(所有者側のシステム)]バツフア・
マネージヤのページ転送プロシージヤがページの所有者
側のシステムに呼び出された時、若し、Comm_Li
nk_Transfer=NOに特定されたならば、中
間的な速度のページ転送方式が用いられる。通常の場合
、このオプシヨンは、所有者側のシステムによつてペー
ジをデイスクに書き込むために、Uモードのロツクが要
求された時に用いられる。他の場合には、プロシージヤ
はページを最初に固定し、そしてSモードにラツチする
。このラツチ動作はページの一貫したバージヨンを転送
するために必要とする。若し、ページが汚れたページで
あり、他のシステムによつてUモードのロツクが要求さ
れ、かつ、ページのための書き込みI/O動作が進行中
でなければ、必要に応じて、ログはページのLSNに強
制され、そして、ページはDirty_Qから除去され
る。若し、ページがDity_Qから除去されたならば
、要求者側のシステムに送られる制御情報中に、Pag
e_Dirty=ONがセツトされる。ページは、制御
情報と共に、要求者側のシステムに直接に転送される。 若し、ページの書き込みI/O動作が進行中であり、か
つ、要求されたロツクのモードがUモードであれば、こ
のプロシージヤはI/O動作が完了するまで待機する。 次に、若し、要求されたモードがUモードであれば、S
モードのPロツクのグレードを下げるための要求が準備
され、そして、新しいロツク状態がBCBに通知される
。この場合、このプロシージヤは、このページのための
ロツク・テーブル中のLSN値を更新するために、ロツ
ク管理機構のページのLSNに行く。ページはラツチが
解放され、そして、固定が解かれる。次に、このプロシ
ージヤはP_Short_messageと、グレード
下げ要求によつてロツク・マネージヤに戻る。
【0117】[データ受け取り(Data_Rcv)プ
ロシージヤ]若し、汚れたページが送出されるならば、
ページの持つ制御情報によつて表示されているように、
データ受け取りのプロシージヤの処理は、中間的な速度
のページ転送方式で述べた方法とは異なつている。その
相異は、付加的な処理が必要であること、つまり、ペー
ジが汚れたページであることを表示するためにBCBを
マークする処理が必要なことである。
【0118】[単一のシステムの誤動作からの復旧]D
BMSのためのロツク管理機構は、上述したように、D
BMSのローカル・ロツク・マネージヤ(LLM)と関
連した大域ロツク・マネージヤ(GLM)で構成されて
いる。GLMの誤動作を取り扱うために、本発明の実施
例では、主GLMの機能を引き継いだ時点を決めるため
に、主GLMの状態を監視するためのバツクアツプGL
Mが定義されているものとする。バツクアツプGLMが
引き継いだ時、バツクアツプGLMは、大域ロツク・テ
ーブルを再構成するために、すべてのLLMと通信する
。LLMが誤動作したことをGLMが通知した時、それ
は、LLMが「維持される」よう特に求められているロ
ツクを除いて、誤動作したLLMによつて保持されてい
るすべてのロツクを解放する。図1に示した共有デイス
クのCECの中の複数のシステムの誤動作を復旧するた
めに、GLMの大域ロツク・テーブルが周期的にチエツ
クポイント処理を受ける。
【0120】ページのPロツク及びそれらのRLSNが
システムの再開始の時にGLMから入手可能である場合
を取り上げて説明する。レド復旧を必要とするページは
、保持されたUモードのロツクを持ち、そして、そのR
LSNはHi_Valueと等しくない。Uモードのロ
ツクが復旧システムによつて維持されているすべてのペ
ージのRLSNは、レド・パスのログ走査のための開始
点を計算するのに考慮に入れられる。併合されたログは
、ページから失われたすべての更新を再度行なうための
レド・パスの間で、走査される。ログ記録の更新は、U
モードのロツクが保持され、かつ、ページのLSNがロ
グ記録のLSNよりも小さい時にのみ、再度行なわれる
。ログは最後のLSN(更新システムが誤動作する前に
、復旧システムによつて書き込まれた最後のログ記録)
まで走査される。
【0121】若し、システムがUモードに維持されたペ
ージのロツクを要求し、そして、誤動作をしたシステム
がその復旧処理を開始しなければ、GLMは、「あなた
がページを復旧して下さい。」というメツセージと共に
、他のシステムにそのロツクを与えることができる。 これは、データの可用性(availability)
を高める。GLMは、要求者側に送られるP_Shor
t_messageを通して用いられる前に、ページを
復旧するための必要性を表示することができる。この改
良によつて、若し、Sモードのロツクだけが要求された
としても、GLMはUモードのロツクを与えることがで
きる。
【0121】P_Short_messageは以下の
付加的な情報を持つている。 1.表示子  −  「あなたがページを復旧して下さ
い。」 2.ロツクを維持しているシステムのシステム標識子。
【0122】要求者側のシステムはUモードのロツクを
保持している誤動作をしたシステムの最終のLSNを決
定するために、ローカル・ログを併合するシステムを問
合せることができる。前と同様に、GLMに保持されて
いるRLSNは、ロツクが与えられた時、返還される。 要求者側はデイスクからページを読み取り、故障したシ
ステムのRLSNから最終のLSNまで併合ログを走査
し、そして、ページを復旧することができる。このよう
な復旧が行なわれた時、復旧されたページは汚れたペー
ジにマークされ、Dirty_Qに置かれる。
【0123】若し、誤動作をしたシステムがその復旧処
理を既に開始しており、かつ、保持されているPロツク
が他のシステムによつて要求されているならば、ロツク
は、復旧のレド・パスが完了した後にのみ、転送可能で
ある。これは、中間的な速度のページ転送方式で説明し
た方法と同じである。若し、それらのロツクが現在保持
されていなければ、Uモードのロツクは、復旧している
間(undo)で、影響されたページに再度獲得されね
ばならない。
【0124】[セントラル・エレクトロニクス・コンプ
レツクス(環境規模)の誤動作からの復旧]共有デイス
クを持つCECの誤動作は、保持されたロツク及びそれ
らのRLSNのすべてを喪失したことによつて特徴付け
られる。このような事態においては、ロツクのレド復旧
処理の走査のための開始点は、単一システムの誤動作の
場合と同じようには決定することはできない。また、ペ
ージは汚れたページである間に転送することができるの
で、ページを転送するための時間があり、この時間はど
のシステムにも属していない。これは、ページの復旧に
問題を生じる。この問題に対処するために、GLMのロ
ツク・テーブルを定期的にチエツクポイント処理をする
必要があることは既に述べた通りである。
【0125】[GLMのロツク・テーブルのチエツクポ
イント処理]定期的に、システムはBegin_GLM
_checkpointのログ記録を先ず書き込むこと
によつてGLMのチエツクポイントを取り、次に、GL
Mから、すべてのページの識別子と、Hi_Value
に等しくないRLSNを持つページのための関連RLS
Nとを要求し、そして、上記のページの識別子及び関連
RLSNをEnd_GLM_checkpointのロ
グ記録中に書き込む。チエツクポイント処理の頻度は、
共有デイスクを持つCECにおいて、異なつたシステム
により書き込まれたログ記録の数に基づいて決めること
ができる。
【0126】以下の事項は、共有デイスクを持つCEC
の誤動作の後で、再開レド・ポイントを決定するために
必要とされる。 1.End_GLM_checkpointのログ記録
がアクセスされねばならず、そして、その内容に基いて
、RLSNの最小値が決められなければならない。GL
Mのロツク・テーブルのチエツクポイントが取られた時
に、若し、Hi_Valueよりも小さいRLSNを持
つたページがなければ、上述の最小値はBegin_G
LM_checkpointのログ記録のLSNの開始
値にセツトされる。 2.併合されたログは、Begin_GLM_chec
kpointのログ記録のLSNの最小値であるLSN
から開始して、前のステツプで決定されたLSNまで処
理しなければならない。「レド復旧」処理と呼ばれるこ
の処理は、1989年1月に発行され、1990年11
月に改訂された「ARIES」と題するIBMリサーチ
・リポートRJ6649号に記載された方法を含んでい
る。レド走査がBegin_GLM_checkpoi
ntのログ記録に到達するまで、GLMのチエツクポイ
ントのログ記録だけを処理する必要がある。このポイン
トの後、すべてのログ記録は、ログの終りに到達するま
で処理されねばならない。
【0127】[超高速ページ転送方式]この方式は高速
度のページ転送方式の変形された方式として以下に記載
される。ページと共に転送された制御情報は、他のシス
テムによつてこのページに対する更新のログ記録が具体
化されたか否かを追跡するために、以下の付加的な情報
を含んでいる。この付加的な情報のフオーマツトは以下
の通りである。即ち、一定の数(例えば、8個)のスロ
ツトがあり、各スロツトは、システムの識別子と、ペー
ジが転送される前に、ページを更新するためのシステム
によつて書き込まれたログ記録の最も大きなLSN値と
を含んでいる。若し、スロツトがない時には、ページが
転送される前に、ログはこのシステムによつて強制され
る。所有者側のバツフア・マネージヤにおいて、若し、
スロツトが使用可能ならば、システムの識別子とページ
のLSNがスロツトの中に置かれる。ログは強制されな
い。若し、使用可能なスロツトがなければ、ページが転
送される前に、ログは強制される。 Fix_Pageの処理は高速度のページ転送方式と同
じである。Data_Rcvプロシージヤは拡張された
制御情報を獲得し、それをBCBから呼び出す。 Hi_LSNの同報通信プロシージヤ:各システムは、
ログがそのシステムの中でどの程度具体化されたかを表
示するために、GLMにHi_LSNを周期的に送る。 GLMはシステム識別子に対応するエントリを入れ、そ
して、Hi_LSNを与えられた値に置き換える。GL
Mは、受け取り側システム中のプロシージヤを呼び出す
メツセージを通してHi_LSNを他のシステムに周期
的に知らせる。呼び出されたプロシージヤの処理は以下
の通りである。各システムはシステムの識別子のベクト
ルと、それらに関連するHi_LSNとを持つている。 このベクトルはGLMからのメツセージに基いて更新さ
れる。 デイスクへ汚れたページを書き込むときの付加的な処理
:デイスクにページを書き込む前に、この処理は、スロ
ツトのLSNがスロツトのシステムのHi_LSNより
も小さいか、またはそれと等しいか否かについて、スロ
ツト毎にチエツクする。若し、そのHi_LSNよりも
大きければ、処理は、そのスロツトのLSNの値までロ
グを強制することを要求する適当なシステムに対するA
ckを持つ「通知」を発生する。若し、システムが誤動
作したために、そのシステムが応答しなかつたならば、
ページの復旧が開始された時に、ページはRLSNから
始まりログ・ポイントに至る併合ログから復旧される。 単一システムの復旧:若し、誤動作したシステムがUモ
ードのロツクを保持しているならば、併合されたログは
、RLSNから、誤動作の時まで走査される。ログの併
合処理は、すべてのシステム中のログ記録を誤動作の時
点まで、具体化させ、これにより、トランザクシヨンが
コミツトしたために、その後に具体化されたログを獲得
したページ復旧の時点において、誤動作を起さないシス
テムが具体化されたログ記録を持つことが出来る場合を
カバーすることは注意を払う必要がある。ページ復旧は
、若しログが誤動作しないシステムに強制されなければ
、このログ記録をミスする。 他の処理は高速度ページ転送方式で説明した処理と同じ
である。CECの復旧は高速度ページ転送方式の復旧と
同じである。
【0128】[データの可用性を改善すること]中間的
な速度のページ転送方式が使用されている時、データの
可用性は、或る種の誤動作の間で、幾つかの付加的なス
テツプを取ることによつて更に改善することができる。 ページがUモードのロツクに保持されており、そして、
他のシステムが同じページを必要としている時に、若し
、システムが誤動作をしたならば、GLMは、「あなた
がページを復旧して下さい。」と言う表示を持つPロツ
クを与えることができる。これは、コミツトていないレ
コードに対するロツクが誤動作を生じたシステムによつ
て依然として保持されているので、レコードのロツキン
グによつて行なうことができる。これは、若し、要求者
側のシステムがアクセスするのを必要とし、そして、そ
れが、そのページ中に与えられ、誤動作を起したシステ
ムを復旧する前に、要求者側がそのレコードをアクセス
することができるので、より良いデータの可用性を与え
る。
【0129】次に、どのようにしてBM及びGLMが上
述の改善されたデータの可用性をサポートするかについ
ての説明を以下に述べる。GLMは、ロツクが維持され
ている間に、ロツクが転送可能か否かをロツクによつて
特定することができるオプシヨンをサポートする。この
オプシヨンは、Pロツクが保持されていたとしても、P
ロツクを他のシステムに転送させるのを許容する。ここ
で、ロツクは、誤動作したシステムが再始動処理中にな
いときにだけ転送可能であることは注意を喚起する必要
がある(例えば、再開始システムは、その再開始の間で
はロツク・マネージヤに未だ接続されていない)。若し
、誤動作を起したシステムが再開始動作をしているなら
ば、ページは、レド・パスが完了された後にのみ転送す
ることができる。バツフア・マネージヤは、ロツク・マ
ネージヤがUモードのPロツクと、ロツクが維持されて
いる間で転送可能である表示子とを要求した時に、ロツ
ク・マネージヤにRLSNを与える。RLSNは、ロツ
ク・マネージヤによつて保持され、そして、既に説明し
たように、バツフア・マネージヤによつて書き込みI/
O動作の後で、前の方に強制される。要求者側のシステ
ムが、保持されているPロツクを要求し、かつ、誤動作
を起したシステムがその再始動復旧処理をしていない時
、GLMは「あなたがシステム「a」のRLSN「r」
からページを復旧して下さい。」というメツセージを要
求者側に表示し、そして、Uモードのロツクを要求者側
に与える。GLMは、復旧するためにログが必要とされ
るシステム識別子のために、ロツク名のエントリ中に付
加的なフイールドを持つている。然しながら、GLMが
「あなたがページを復旧して下さい。」というメツセー
ジを要求者側に通知した時、ロツクの所有者のシステム
識別子は復旧ログのためのシステムの識別子とは異なる
。要求者側のシステムがページを復旧して、そのページ
をデイスクに書き込んだ後、要求者側のシステムは、復
旧ログのシステム識別子をセツトするために、ロツク・
マネージヤに要求を発生する。要求者側のシステム中の
バツフア・マネージヤは、システム「a」のログのRL
SN「r」からシステム「a」のログの終りまでを走査
することによつてページを復旧する。
【0130】本発明を実施するときに、セントラル・エ
レクトロニクス・コンプレツクスは、例えば、複数処理
タイプのメーン・フレーム・コンピユータを含むことが
できる。このようなコンピユータの一例はIBM309
0シリーズの機械であつて、特にモデル600が好適で
ある。公知のように、IBM3090のモデル600は
DB2タイプのDBMSインスタンスを含む複数個の処
理を実行することができる。
【0131】
【発明の効果】本発明は、複数のユーザでデイスク装置
のような不揮発性メモリを持つデータベース管理システ
ムにおいて、移動されるデータに一貫性を持たせ、しか
も、データに高速度のアクセスを与えることができる。
【図面の簡単な説明】
【図1】本発明を実施するための代表的なコンピユータ
・システムの環境を示すブロツク図である。
【図2】本発明を実施するのに必要な機能素子及びデー
タ構造の細部を説明するためのブロツク図である。
【図3】一方のDBMSのインスタンスにおいて更新さ
れたデータ単位を他方のDBMSのインスタンスで検出
し、そして、両方のインスタンスの間で更新されたデー
タ単位を転送する動作を説明するためのブロツク図であ
る。
【図4】一方のDBMSのインスタンスにおいて更新さ
れたデータ単位を他方のDBMSのインスタンスで検出
し、そして、両方のインスタンスの間で更新されたデー
タ単位を転送する動作を説明するためのブロツク図であ
る。
【図5】一方のDBMSのインスタンスにおいて更新さ
れたデータ単位を他方のDBMSのインスタンスで検出
し、そして、両方のインスタンスの間で更新されたデー
タ単位を転送する動作を説明するためのブロツク図であ
る。
【符号の説明】
10  データベース 12、14  セントラル・エレクトロニクス・コンプ
レツクス(CEC) 16、30  データベース管理システム(DBMS)
のインスタンス 18、31  ローカル・ロツク・マネージヤ(LLM
)20、32  データ・マネージヤ(DM)22、3
4  バツフア・マネージヤ(BM)24、36  バ
ツフア・プール(BP)25、35  ログ・マネージ
ヤ(LM)26、37  ログ 40  大域ロツク・マネージヤ(GLM)42  併
合されたログ 44  システム・クロツク 50  通信リンク 80  トランザクシヨン(TX) 81  ロツク・テーブル 83  P_Lock(Pロツク) 85  バツフア制御ブロツク 85a  ページの名前のフイールド 85b  VRSNを保持するブロツク85c  Do
ing_I/Oフイールド85d  New_Page
_Req(新しいページの要求)フイールド 85e  Page_Usableフイールド85f 
 Data_Movedフイールド85g  U_Lo
ck_Heldフイールド85h  U_Lock_R
eqフイールド85j  Wait_Queueフイー
ルド85k  RLSNを保持するブロツク85l  
Page_Dirtyフイールド85n  ポインタ 90  ページ 90b  ページのバージヨン番号のフイールド90c
、90d  ページのレコード・フイールド92  汚
れたページの待ち行列 93、94  更新されたページ 100  大域ロツク・テーブル 102  L_Lockのエントリ 103  P_Lockのエントリ 105  ページ転送 107  データの受け取り

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  セントラル・エレクトロニクス・コン
    プレツクス(CEC)中において実行する処理に対して
    データの単位にロツクを発生することによつて、複数個
    のセントラル・エレクトロニクス・コンプレツクスの間
    で、データに対して、共有したアクセスをするためのシ
    ステムであつて、上記データは、すべての上記セントラ
    ル・エレクトロニクス・コンプレツクスが接続されてい
    る1つ、または、それ以上のデイスクにストアされてお
    り、上記ロツクは、すべての上記セントラル・エレクト
    ロニクス・コンプレツクスが接続されているロツク・マ
    ネージヤによつて発生され、管理されているシステムに
    おいて、データの転送単位の完全性を保ちながら、デイ
    スクのI/O動作をすることなく、データの単位を高速
    度でアクセスする方法において、第1のセントラル・エ
    レクトロニクス・コンプレツクスにおける第1の処理に
    よつてデイスクから得られたデータの単位に対してロツ
    クを発生することと、第1の処理によつて上記データの
    単位を更新することと、上記第1の処理によるデータの
    単位更新に応答して、連続番号であるデータの単位のバ
    ージヨン番号を発生することと、上記第1のセントラル
    ・エレクトロニクス・コンプレツクス中の上記データの
    単位にバージヨン番号を付け、そして、該バージヨン番
    号を上記ロツクと共に貯蔵することと、第2のセントラ
    ル・エレクトロニクス・コンプレツクスにおける第2の
    処理から、データの単位の中のレコードに対してロツク
    要求を発生することと、上記レコードに対するロツク要
    求に応答して、ストアされた上記バージヨン番号によつ
    て上記第2の処理を与えることと、上記第2の処理によ
    つてデータの単位に対してロツクを発生することと、上
    記データの単位に対してロツクを発生することに応答し
    て、上記データの単位をデイスクに書き込むことなく、
    あるいは、上記データの単位を更新するためにI/O動
    作をログすることなく、上記第1の処理から上記第2の
    処理にデータの単位の転送を促進することと、若し、貯
    蔵された上記バージヨン番号が上記第1の処理から上記
    第2の処理へ転送された上記データの単位のバージヨン
    番号とは異なつていれば、上記デイスクから上記第2の
    処理のデータの単位を与えた後、上記デイスクのレコー
    ドを読み取ることと、そうでなければ、上記第1の処理
    から上記第2の処理に転送された上記データの単位から
    のレコードを読み取ることとからなるデータの単位を高
    速度でアクセスする方法。
JP4031264A 1991-02-15 1992-01-23 データの単位を高速度でアクセスする方法 Expired - Lifetime JPH0827755B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65656791A 1991-02-15 1991-02-15
US656567 1991-02-15

Publications (2)

Publication Number Publication Date
JPH04310148A true JPH04310148A (ja) 1992-11-02
JPH0827755B2 JPH0827755B2 (ja) 1996-03-21

Family

ID=24633601

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4031264A Expired - Lifetime JPH0827755B2 (ja) 1991-02-15 1992-01-23 データの単位を高速度でアクセスする方法

Country Status (3)

Country Link
US (1) US5327556A (ja)
EP (1) EP0499422A3 (ja)
JP (1) JPH0827755B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010026933A (ja) * 2008-07-23 2010-02-04 Toshiba Corp メモリシステム、ホスト装置

Families Citing this family (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5426747A (en) 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US5499367A (en) * 1991-11-15 1996-03-12 Oracle Corporation System for database integrity with multiple logs assigned to client subsets
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
US5432929A (en) * 1992-09-09 1995-07-11 International Business Machines Corporation Storage subsystem having a modifiable key-lock
US5596754A (en) * 1992-10-29 1997-01-21 Digital Equipment Corporation Method for performing private lock management
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
US5870764A (en) * 1993-05-12 1999-02-09 Apple Computer, Inc. Method of managing a data structure for concurrent serial and parallel revision of a work
US5748985A (en) * 1993-06-15 1998-05-05 Hitachi, Ltd. Cache control method and cache controller
US5577226A (en) * 1994-05-06 1996-11-19 Eec Systems, Inc. Method and system for coherently caching I/O devices across a network
JP3699733B2 (ja) * 1994-08-10 2005-09-28 株式会社日立製作所 タプル単位排他制御方式
US5644768A (en) * 1994-12-09 1997-07-01 Borland International, Inc. Systems and methods for sharing resources in a multi-user environment
US5659757A (en) * 1995-04-27 1997-08-19 International Business Machines Corporation Method and system for lock instrumentation in a data processing system
US5612865A (en) * 1995-06-01 1997-03-18 Ncr Corporation Dynamic hashing method for optimal distribution of locks within a clustered system
US5699500A (en) * 1995-06-01 1997-12-16 Ncr Corporation Reliable datagram service provider for fast messaging in a clustered environment
US6173306B1 (en) 1995-07-21 2001-01-09 Emc Corporation Dynamic load balancing
US5860137A (en) * 1995-07-21 1999-01-12 Emc Corporation Dynamic load balancing
FI102788B1 (fi) 1995-09-14 1999-02-15 Nokia Telecommunications Oy Yhteisen levydatan hallinta kahdennetussa tietokoneyksikössä
US5692182A (en) * 1995-10-05 1997-11-25 International Business Machines Corporation Bufferpool coherency for identifying and retrieving versions of workfile data using a producing DBMS and a consuming DBMS
US5745903A (en) * 1995-10-06 1998-04-28 Ncr Corporation Method and apparatus for file change notification
KR0152714B1 (ko) * 1995-12-06 1998-10-15 양승택 다중 사용자 환경의 저장시스템에서 버퍼 잠금기법을 이용한 버퍼 관리방법
JP3524270B2 (ja) 1996-06-24 2004-05-10 株式会社日立製作所 並列処理システム
US6574654B1 (en) * 1996-06-24 2003-06-03 Oracle Corporation Method and apparatus for lock caching
US5805900A (en) * 1996-09-26 1998-09-08 International Business Machines Corporation Method and apparatus for serializing resource access requests in a multisystem complex
US5974425A (en) 1996-12-17 1999-10-26 Oracle Corporation Method and apparatus for reapplying changes to a database
US6076095A (en) * 1997-03-28 2000-06-13 International Business Machines Corporation Method of one system of a multisystem environment taking over log entries owned by another system
US6092084A (en) * 1997-03-28 2000-07-18 International Business Machines Corporation One system of a multisystem environment taking over log entries owned by another system
US6237001B1 (en) * 1997-04-23 2001-05-22 Oracle Corporation Managing access to data in a distributed database environment
JP3319341B2 (ja) * 1997-06-20 2002-08-26 日本電気株式会社 データ共有システム
EP0952510A4 (en) * 1997-11-14 2006-05-31 Mitsubishi Electric Corp SCHEME AND METHOD FOR DATA UPDATE
EP1408408B8 (en) * 1998-02-13 2006-03-29 Oracle International Corporation Managing a resource used by a plurality of nodes
US6353836B1 (en) 1998-02-13 2002-03-05 Oracle Corporation Method and apparatus for transferring data from the cache of one node to the cache of another node
US7200623B2 (en) 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US7930278B2 (en) 1998-02-13 2011-04-19 Oracle International Corporation Methods to perform disk writes in a distributed shared disk system needing consistency across failures
EP1176509B1 (en) * 1998-02-13 2004-05-12 Oracle Corporation Managing recovery of data after failure of one or more caches
US6173292B1 (en) * 1998-03-04 2001-01-09 International Business Machines Corporation Data recovery in a transactional database using write-ahead logging and file caching
US6633891B1 (en) * 1998-11-24 2003-10-14 Oracle International Corporation Managing replacement of data in a cache on a node based on caches of other nodes
US7065540B2 (en) 1998-11-24 2006-06-20 Oracle International Corporation Managing checkpoint queues in a multiple node system
US6484185B1 (en) * 1999-04-05 2002-11-19 Microsoft Corporation Atomic operations on data structures
US6460048B1 (en) 1999-05-13 2002-10-01 International Business Machines Corporation Method, system, and program for managing file names during the reorganization of a database object
US6351744B1 (en) * 1999-05-28 2002-02-26 Unisys Corporation Multi-processor system for database management
US6874104B1 (en) * 1999-06-11 2005-03-29 International Business Machines Corporation Assigning recoverable unique sequence numbers in a transaction processing system
US7185005B1 (en) 2000-05-12 2007-02-27 Oracle International Corporation Nested transactions in a file system
US7203709B2 (en) * 2000-05-12 2007-04-10 Oracle International Corporation Transaction-aware caching for access control metadata
US7725878B1 (en) 2000-05-12 2010-05-25 Oracle International Corporation Property bundles on a per instance basis
US7389493B1 (en) 2000-05-12 2008-06-17 Oracle International Corporation Categories on a per instance basis
US7421541B2 (en) * 2000-05-12 2008-09-02 Oracle International Corporation Version management of cached permissions metadata
US7987217B2 (en) * 2000-05-12 2011-07-26 Oracle International Corporation Transaction-aware caching for document metadata
US6523033B1 (en) * 2000-07-13 2003-02-18 International Business Machines Corporation Apparatus and method for file locking for computer programs that use different size locks
US7146364B1 (en) * 2000-11-03 2006-12-05 International Business Machines Corporation Method and system for recovering data in a plurality of systems
US6850938B1 (en) 2001-02-08 2005-02-01 Cisco Technology, Inc. Method and apparatus providing optimistic locking of shared computer resources
CN1315055C (zh) * 2001-03-07 2007-05-09 甲骨文国际公司 对多节点系统中的检查点队列进行管理
US6965975B2 (en) * 2001-03-31 2005-11-15 Lg Electronics Inc. Apparatus and method for moving contents having a restricted number of copies between storage media
US7694302B1 (en) * 2001-04-05 2010-04-06 Network Appliance, Inc. Symmetric multiprocessor synchronization using migrating scheduling domains
US7178137B1 (en) 2001-04-05 2007-02-13 Network Appliance, Inc. Automatic verification of scheduling domain consistency
US7895173B1 (en) 2001-06-27 2011-02-22 Microsoft Corporation System and method facilitating unified framework for structured/unstructured data
US20030004970A1 (en) * 2001-06-28 2003-01-02 Watts Julie Ann Method for releasing update locks on rollback to savepoint
US7499924B2 (en) * 2001-06-28 2009-03-03 International Business Machines Corporation Method for releasing update locks on rollback to savepoint
IL159582A0 (en) * 2001-07-06 2004-06-01 Computer Ass Think Inc Systems and methods of information backup
CN1302419C (zh) * 2001-09-21 2007-02-28 泛伺服公司 用于具有共享存储器的多节点环境的系统和方法
US7565406B2 (en) 2002-07-24 2009-07-21 Sun Microsystems, Inc. Last thread lock management for multi-threaded process and distributed data systems
US8095657B2 (en) 2002-07-24 2012-01-10 Oracle America, Inc. First thread lock management for distributed data systems
US7093230B2 (en) * 2002-07-24 2006-08-15 Sun Microsystems, Inc. Lock management thread pools for distributed data systems
US20060149696A1 (en) * 2002-09-09 2006-07-06 Thorsten Pferdekaemper Method and systems for controlling access to a data object by means of locks
US7653667B2 (en) 2002-09-09 2010-01-26 Sap Ag Methods and systems for data moving using locks
US7120746B2 (en) * 2002-09-09 2006-10-10 International Business Machines Corporation Technique for data transfer
US7457933B2 (en) 2002-09-09 2008-11-25 Sap Ag Methods and systems for archiving data
US7693881B2 (en) 2002-09-09 2010-04-06 Sap Ag Methods and systems for moving data using locks
US7756813B2 (en) 2002-09-09 2010-07-13 Sap Ag Electronic data structure for controlling access to data objects using locks
ATE450010T1 (de) * 2002-09-09 2009-12-15 Sap Ag Verfahren und gerät zur datenarchivierung
DE10393571T5 (de) * 2002-10-23 2005-12-22 Onaro, Boston Verfahren und System zum Validieren logischer End-to-End-Zugriffspfade in Storage Area Netzwerken
KR100507781B1 (ko) 2002-12-24 2005-08-17 한국전자통신연구원 공유 디스크 기반 다중 데이터베이스 관리시스템에서 검출및 회피 기반 일관성 유지 정책을 동시에 지원하는 버퍼장착방법
US7987209B2 (en) * 2002-12-27 2011-07-26 Honda Motor Co., Ltd. Enhanced trade compliance system: mass amendment
CA2422176C (en) * 2003-03-14 2009-07-21 Ibm Canada Limited - Ibm Canada Limitee Method and apparatus for interrupting updates to a database to provide read-only access
US20040193612A1 (en) * 2003-03-31 2004-09-30 Chang William I. System and method for testing, monitoring, and tracking distributed transactions using a search engine
US7376744B2 (en) * 2003-05-09 2008-05-20 Oracle International Corporation Using local locks for global synchronization in multi-node systems
US7660829B2 (en) * 2003-05-30 2010-02-09 Microsoft Corporation System and method for delegating file system operations
US7047379B2 (en) * 2003-07-11 2006-05-16 International Business Machines Corporation Autonomic link optimization through elimination of unnecessary transfers
US7373640B1 (en) 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US8229932B2 (en) 2003-09-04 2012-07-24 Oracle International Corporation Storing XML documents efficiently in an RDBMS
US8694510B2 (en) 2003-09-04 2014-04-08 Oracle International Corporation Indexing XML documents efficiently
US8171480B2 (en) * 2004-01-27 2012-05-01 Network Appliance, Inc. Method and apparatus for allocating shared resources to process domains according to current processor utilization in a shared resource processor
EP1566744A1 (en) * 2004-02-19 2005-08-24 Sap Ag Optimising lock granularity using range locking
US7627573B2 (en) * 2004-03-27 2009-12-01 Cisco Technology, Inc. Bypassing native storage operations by communicating protected data within locking messages using a lock manager independent of the storage mechanism
US7146386B2 (en) * 2004-03-29 2006-12-05 Microsoft Corporation System and method for a snapshot query during database recovery
US7930277B2 (en) 2004-04-21 2011-04-19 Oracle International Corporation Cost-based optimizer for an XML data repository within a database
GB0409326D0 (en) * 2004-04-27 2004-06-02 Ibm Locker manager for managing access to shared resources
US7383389B1 (en) 2004-04-28 2008-06-03 Sybase, Inc. Cache management system providing improved page latching methodology
US20060020634A1 (en) * 2004-07-20 2006-01-26 International Business Machines Corporation Method, system and program for recording changes made to a database
EP1684194A1 (en) * 2005-01-25 2006-07-26 Sap Ag A central lock service for database applications
US7921076B2 (en) 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event
US7551617B2 (en) 2005-02-08 2009-06-23 Cisco Technology, Inc. Multi-threaded packet processing architecture with global packet memory, packet recirculation, and coprocessor
US7627614B2 (en) * 2005-03-03 2009-12-01 Oracle International Corporation Lost write detection and repair
US20060218200A1 (en) * 2005-03-24 2006-09-28 International Business Machines Corporation Application of log records by storage servers
US7617180B1 (en) * 2005-06-06 2009-11-10 Infoblox Inc. Efficient lock management
JP5060485B2 (ja) * 2005-09-27 2012-10-31 オナロ インコーポレイテッド 複製データの可用性及び最新性を検証するための方法及びシステム。
US20070073985A1 (en) * 2005-09-29 2007-03-29 John Wilkes System for and method of retrieval-based data redundancy
US8073841B2 (en) 2005-10-07 2011-12-06 Oracle International Corporation Optimizing correlated XML extracts
US8347293B2 (en) * 2005-10-20 2013-01-01 Network Appliance, Inc. Mutual exclusion domains to perform file system processes on stripes
US7739426B1 (en) 2005-10-31 2010-06-15 Cisco Technology, Inc. Descriptor transfer logic
US8949455B2 (en) * 2005-11-21 2015-02-03 Oracle International Corporation Path-caching mechanism to improve performance of path-related operations in a repository
CA2652115C (en) * 2006-05-12 2015-11-17 Goldengate Software, Inc. Apparatus and method for read consistency in a log mining system
US7788243B2 (en) * 2006-09-08 2010-08-31 Sybase, Inc. System and methods for optimizing data transfer among various resources in a distributed environment
US7797310B2 (en) 2006-10-16 2010-09-14 Oracle International Corporation Technique to estimate the cost of streaming evaluation of XPaths
US8826032B1 (en) 2006-12-27 2014-09-02 Netapp, Inc. Systems and methods for network change discovery and host name resolution in storage network environments
US8332860B1 (en) 2006-12-30 2012-12-11 Netapp, Inc. Systems and methods for path-based tier-aware dynamic capacity management in storage network environments
US20080208863A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation Compound Item Locking Technologies
US9042263B1 (en) 2007-04-06 2015-05-26 Netapp, Inc. Systems and methods for comparative load analysis in storage networks
US20090006402A1 (en) * 2007-06-28 2009-01-01 Holger Bohle Methods and systems for the dynamic selection of a locking strategy
JP5385545B2 (ja) * 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US7958112B2 (en) 2008-08-08 2011-06-07 Oracle International Corporation Interleaving query transformations for XML indexes
JP4702962B2 (ja) * 2008-11-12 2011-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ制御装置、プログラム及び方法
US8510334B2 (en) 2009-11-05 2013-08-13 Oracle International Corporation Lock manager on disk
US8666958B2 (en) * 2009-11-27 2014-03-04 International Business Machines Corporation Approaches to reducing lock communications in a shared disk database
US8046633B2 (en) * 2009-12-10 2011-10-25 International Business Machines Corporation Improving data availability during failure detection and recovery processing in a shared resource system
US8627331B1 (en) 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
US8392388B2 (en) * 2010-09-08 2013-03-05 Sybase, Inc. Adaptive locking of retained resources in a distributed database processing environment
KR101532397B1 (ko) * 2011-08-31 2015-06-29 후아웨이 테크놀러지 컴퍼니 리미티드 컴퓨터 시스템의 메모리 관리 방법, 메모리 관리 유닛 및 컴퓨터 시스템
CN102722401B (zh) * 2012-04-25 2014-07-09 华中科技大学 一种硬件事务内存系统中的伪相联多版本数据管理方法
US10152500B2 (en) 2013-03-14 2018-12-11 Oracle International Corporation Read mostly instances
US9672237B2 (en) * 2013-03-15 2017-06-06 Amazon Technologies, Inc. System-wide checkpoint avoidance for distributed database systems
US9767178B2 (en) 2013-10-30 2017-09-19 Oracle International Corporation Multi-instance redo apply
US9633070B2 (en) * 2014-03-31 2017-04-25 International Business Machines Corporation Increase database performance by reducing required communications and information transfers
US9892153B2 (en) 2014-12-19 2018-02-13 Oracle International Corporation Detecting lost writes
CN105893386B (zh) * 2015-01-04 2021-08-06 伊姆西Ip控股有限责任公司 用于在同步复制系统中处理事务的方法和装置
US9842153B2 (en) * 2015-03-03 2017-12-12 SwiftStack, Inc. Usage and bandwidth utilization collection mechanism for a distributed storage system
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
US10747752B2 (en) 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US10860568B2 (en) 2016-04-01 2020-12-08 Arista Networks, Inc. External data source linking to queries in memory
US10783144B2 (en) * 2016-04-01 2020-09-22 Arista Networks, Inc. Use of null rows to indicate the end of a one-shot query in network switch
US10817512B2 (en) 2016-04-01 2020-10-27 Arista Networks, Inc. Standing queries in memory
US10642844B2 (en) 2016-04-01 2020-05-05 Arista Networks, Inc. Non-materialized tables with standing queries
US10783147B2 (en) 2016-04-01 2020-09-22 Arista Networks, Inc. Query result flow control in a network switch
US10698771B2 (en) 2016-09-15 2020-06-30 Oracle International Corporation Zero-data-loss with asynchronous redo shipping to a standby database
US10891291B2 (en) 2016-10-31 2021-01-12 Oracle International Corporation Facilitating operations on pluggable databases using separate logical timestamp services
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US10691722B2 (en) 2017-05-31 2020-06-23 Oracle International Corporation Consistent query execution for big data analytics in a hybrid database
CN110716936B (zh) * 2019-10-12 2022-04-05 浪潮云信息技术股份公司 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2721599C2 (de) * 1976-05-17 1983-05-05 Sperry Corp., 10019 New York, N.Y. Schaltungsanordnung zur Verhinderung der Ausgabe von Datenworten aus einer EDV-Anlage ohne Sicherheitsverifizierung
US4399504A (en) * 1980-10-06 1983-08-16 International Business Machines Corporation Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
US4698752A (en) * 1982-11-15 1987-10-06 American Telephone And Telegraph Company At&T Bell Laboratories Data base locking
US4695951A (en) * 1983-07-07 1987-09-22 Honeywell Bull Inc. Computer hierarchy control
US4604694A (en) * 1983-12-14 1986-08-05 International Business Machines Corporation Shared and exclusive access control
US4823261A (en) * 1986-11-24 1989-04-18 International Business Machines Corp. Multiprocessor system for updating status information through flip-flopping read version and write version of checkpoint data
US5202971A (en) * 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US4937733A (en) * 1987-05-01 1990-06-26 Digital Equipment Corporation Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
US4965719A (en) * 1988-02-16 1990-10-23 International Business Machines Corporation Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system
US5089985A (en) * 1988-04-07 1992-02-18 International Business Machines Corporation System and method for performing a sort operation in a relational database manager to pass results directly to a user without writing to disk
US4961139A (en) * 1988-06-30 1990-10-02 Hewlett-Packard Company Data base management system for real-time applications
US5185875A (en) * 1989-01-27 1993-02-09 Digital Equipment Corporation Method and apparatus for reducing memory read latency in a shared memory system with multiple processors

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010026933A (ja) * 2008-07-23 2010-02-04 Toshiba Corp メモリシステム、ホスト装置
US8484430B2 (en) 2008-07-23 2013-07-09 Kabushiki Kaisha Toshiba Memory system and host device

Also Published As

Publication number Publication date
EP0499422A2 (en) 1992-08-19
US5327556A (en) 1994-07-05
EP0499422A3 (en) 1993-07-14
JPH0827755B2 (ja) 1996-03-21

Similar Documents

Publication Publication Date Title
JPH04310148A (ja) データの単位を高速度でアクセスする方法
EP2378420B1 (en) Ownership reassignment in a shared-nothing database system
US4965719A (en) Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system
US7415466B2 (en) Parallel transaction recovery
US6647510B1 (en) Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction
US5574902A (en) Efficient destaging of updated local cache pages for a transaction in a multisystem and multiprocess database management system with a high-speed shared electronic store
US5493668A (en) Multiple processor system having software for selecting shared cache entries of an associated castout class for transfer to a DASD with one I/O operation
US7917596B2 (en) Super master
US5920872A (en) Resource management using resource domains
US9152666B2 (en) Distributed database system providing data and space management methodology
US6711571B2 (en) Partitioning ownership of a database among different database servers to control access to the database
US5546579A (en) Page refreshing procedure using two locking granularities to ensure cache coherency in a multisystem database processing environment having a high-speed shared electronic store
JP4746838B2 (ja) データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化
EP0563622A2 (en) Sysplex shared data coherency method and means
EP1055173A1 (en) Method and apparatus for transferring data from the cache of one node to the cache of another node
JPH0683692A (ja) データベースアクセス方法およびシステム
WO2005013155A1 (en) One-phase commit in a shared-nothing database system
Thomasian et al. A new distributed optimistic concurrency control method and a comparison of its performance with two-phase locking
JP4664931B2 (ja) データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化
CA2534066C (en) One-phase commit in a shared-nothing database system
EP1162539B1 (en) Recovering data from one or more failed caches
JPS62173535A (ja) 共有資源のアクセス制御方式
KR19990005715A (ko) 교환기 디비엠에스의 트랜잭션 구현 방법
AU2004262374A1 (en) One-phase commit in a shared-nothing database system