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

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

Info

Publication number
JPH0827755B2
JPH0827755B2 JP4031264A JP3126492A JPH0827755B2 JP H0827755 B2 JPH0827755 B2 JP H0827755B2 JP 4031264 A JP4031264 A JP 4031264A JP 3126492 A JP3126492 A JP 3126492A JP H0827755 B2 JPH0827755 B2 JP H0827755B2
Authority
JP
Japan
Prior art keywords
page
lock
data
dbms
version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP4031264A
Other languages
English (en)
Other versions
JPH04310148A (ja
Inventor
チャンドラセカラン・モハン
インデルパル・エス・ナラング
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 OR CALCULATING; 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 OR CALCULATING; 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)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データベース管理シス
テムの複数のインスタンスが1つ、または、それ以上の
不揮発性のデータ・ストレージ中のデータのリソースへ
アクセスし、かつ、データを共有する環境において、デ
ータのリソースへのアクセスを制御し、そして、データ
のリソースの完全性(integrity)を維持することに関
する。
【0002】
【従来の技術】共通のアクセスを与えるデータベース管
理システムは、アクセスされたデータの完全性を維持す
るばかりでなく、アクセスを高速度で行なう必要があ
る。
【0003】単一のデータベース管理システム(DBM
S)において、データの容量を増加し、そしてデータの
入手の容易性(データの可用性)(availability)を改
良するために提案されたアプローチは、複数のデータベ
ース管理システムを使用することである。複数のデータ
ベース管理システムの環境において使用される原理的な
アーキテクチヤは、「データ・シエアリング(data sha
ring)(データの共有)」と呼ばれており、デイスクの
ような不揮発性データ・ストレージのデータのリソース
へのアクセスを共有することを含んでいる。また、この
アーキテクチヤは、「共有デイスク」環境と呼ばれてい
る。デイスクが共有されている環境において、データベ
ースを含むすべてのデイスク装置は、異なつた幾つかの
セントラル・エレクトロニクス・コンプレツクス、即ち
CEC(central electronics 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】トランザクシヨンの処理において、トラン
ザクシヨンがデータの単位を更新する目的で、データの
単位に対するロツクを処理している時、その更新が「コ
ミツト」されるまでか、または「ロールバツク(roll b
ack)」されるまで、ロツクは放棄されない。これに関
連して、トランザクシヨンがページを更新しようとした
場合、その更新は、トランザクシヨンが特定の段階
(「同期した時点」)に達した時か、または、試みられ
たすべての更新が行なわれない時にコミツトされる。こ
のプロシージヤの目的は、処理の完全性(integrity)
に影響を与える可能性がある更新処理をしているときに
システムに異常が生じた場合、ページの一貫性を維持す
ることにある。若し、更新処理が中止の状態を表示する
ことなく完了したならば、その更新は「コミツト」さ
れ、若し、異常状態が表示されたならば、その更新は
「ロールバツク」(復旧)される。
【0010】トランザクシヨンが更新処理を完了し、そ
の更新がコミツトされた時、そのトランザクシヨンは更
新されたデータの単位に対するロツクを解放して、その
データの単位が利用可能であることを他の要求者側に知
らせ、そして、そのデータの単位中のデータが完全性を
維持していることを保証する。
【0011】更新処理の可逆性(更新処理の経過を遡求
すること)は、DBMSがデイスクのような信頼性のあ
るストレージ・リソース中に維持されている「ログ」に
よつてサポートされる。ログは、トランザクシヨンの更
新動作の経歴を示す記録、つまり、更新動作の経過記録
のことであつて、更新されるデータの単位のトランザク
シヨン、更新される前のデータの単位の状態及び更新処
理の日時を識別するものである。ロールバツク(以下、
「復旧(recovery)」ともいう)動作は、誤動作を起し
た更新動作が開始される前のデータの単位を元の形に復
帰するためにログのエントリ(記入項目)を使用する。
【0012】トランザクシヨンの完全性、復旧、発生セ
グメント及びロツキングについては、1986年にアデ
イソン・ウエズレイ社(Addison Wesley)で出版された
デート(C.J.Date)著の「データベース・システム入
門」(AN INTRODUCTION 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のDBMSのバ
ッフアへディスクからデータの単位に関して最初のバー
ジョンを与えるステップと、第1のDBMSに対してデータ
の単位を更新するためにPロックを発生するステップ
と、前記大域ロック・テーブルにそのPロックに関する
エントリを載録するステップと、前記第1のDBMSにおい
て、前記データの単位に関して最初のバージョンを更新
することにより、前記バッフアにおける前記データの単
位に関して更新されたバージョンを発生するステップ
と、前記データの単位に関して最初のバージョンを更新
することに応答して、前記第1のDBMSのバッフアにおい
て、前記データの単位に関して更新されたバージョンに
対して、単調に増加する数であるバージョン番号を発生
するステップと、前記第1のDBMSのバッフアにおいて、
前記データの単位に関して更新されたバージョンに対し
て、前記バージョン番号を付加するステップと、前記大
域ロック・テーブルにおいて、Pロックに関するエント
リ中に前記バージョン番号を記憶するステップと、デー
タの単位の中のレコードを読み出すために、第2のDBMS
からLロックに関する要求を発生するステップと、前記
Lロックに関する要求に応答して、大域ロック・テーブ
ルに記憶されているバージョン番号を前記第2のDBMSに
与えると共にLロックを付与するステップと、もしも第
2のDBMSのバッフア中に既にデータの単位についてのバ
ージョンが存在しているならば、当該データの単位につ
いてのバッフア中のバージョンに含まれるバージョン番
号と前記大域ロック・テーブルから得たバージョン番号
とを比較し、当該データの単位についてのバッフア中の
バージョンに含まれるバージョン番号が前記大域ロック
・テーブルから得たバージョン番号より小さい場合に
は、大域ロック・マネージャから第1のDBMSに対してデ
ータの単位を転送するよう要求するステップと、そうで
なくて、もしも第2のDBMSのバッフア中に未だデータの
単位についてのバージョンが存在していないのならば、
データの単位を読み出すために第2のDBMSからPロック
に関する要求を発生するステップと、そのPロック要求
に応答して第2のDBMSにデータの単位を転送するため
に、前記大域ロック・マネージャから第1のDBMSに対し
て要求を出すステップと、第1のDBMSから第2DBMSへデ
ータの単位に関して更新されたバージョンを転送すると
共に第1のDBMSから前記大域ロック・マネージャへデー
タの単位に関して更新されたバージョンに含まれるバー
ジョン番号を与えるステップと、第1のDBMSから受け取
ったバージョン番号を前記大域ロック・マネージャによ
って第2のDBMSに転送するステップと、もしも第2のDB
MSに与えられたバージョン番号が第2のDBMSによって受
け取られたデータの単位に関して更新されたバージョン
に含まれるバージョン番号よりも大きい場合には、或い
は、もしもバージョン番号が到着したときにデータの転
送に関して更新されたバージョンが第2のDBMSで受け取
られていない場合には、第1のDBMSからデータの単位に
関して更新されたバージョンをディスクに書き込み、そ
して前記ディスクから第2のDBMSにデータの単位に関し
て更新されたバージョンを与えると共にそこからレコー
ドを読み取るステップと、前記二つの場合に相当しない
ときは、第1のDBMSから第2のDBMSに転送されたデータ
の単位に関して更新されたバージョンからレコードを読
み取るステップと、を含むデータの単位をアクセスする
方法である。
【0019】
【実施例】IBM社のDB2データベース・システムに
おいて、更新されたページは、トランザクシヨンの応答
時間と同時処理性(concurrency)とを向上させるため
に、トランザクシヨンをコミツトする時に、デイスクに
は書き込まれない。デイスクから取り出されたページで
あつて、更新処理を受け更新されたページは「汚れたペ
ージ」と呼ばれる。更新システムのバツフア中に汚れた
ページを保持することは、汚れたページの「キヤツシン
グ(caching)」と呼ばれる。DBMSが誤動作した場
合、復旧が適正に完了したことを保証するために、汚れ
たページ中に含まれたレド(再度-redo)更新をやり直
すためのチエツクポイントにおける更新システムのログ
の中に充分な情報が記録される。データを共有する環境
において、各DBMSのインスタンスはページをキヤツ
シユする、即ち、貯蔵するために、それ自身のバツフア
貯蔵位置を持ち、かつ、ローカル・ログも持つている。
若し、汚れたページが1方のシステム(「所有者側」の
システムと呼ばれる)に貯蔵されたならば、そのページ
を要求した他方のシステムは、所有者側からのページの
現在のバージヨン(改訂版)を獲得しなければならな
い。所有者側は、(a)データベース管理システム(D
BMS)の間のメモリからメモリへの転送(以下、「ペ
ージ転送」という)によつて要求者側にページを転送す
るか、または(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、バツフ
ア・マネージヤ、BM34、バツフア・プール、BP3
6及びログ37を有するデータベース管理システムDB
MS30を含んでいる。この明細書において、各DBM
Sは同じであり、相互に「インスタンス」と称される。
【0026】データベース10中にストアされたデータ
単位へのアクセスは、ローカル・ロツク・マネージヤ
(LLM)18及び31と、大域ロツク・マネージヤ
(GLM)40とを含むロツキング・システムによつて
管理される。
【0027】ロツキング、つまりロツク動作は、ローカ
ル・ロツク・マネージヤと関連した大域ロツク・マネー
ジヤによつて管理される。これに関連して、トランザク
シヨンは識別されたデータ単位へのアクセスを要求す
る。この要求は、トランザクシヨンを実行するDBMS
を通るメツセージによつて送られる。この要求で暗に求
められているものは、DBMS16がそのローカル・ロ
ツク・マネージヤ18に転送されるロツクを求める要求
である。ローカル・ロツク・マネージヤ(LLM)18
は大域ロツク・マネージヤ(GLM)40にそのロツク
要求を送る。GLM40は、そのLLM18から与えら
れた要求を受け取つて処理し、そして、要求者側のLL
Mに戻されたメツセージによつて、要求を処理し、ロツ
クを与える。
【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-ahea
d logging-WAL)に基づいて、ページの復旧が行なわ
れるものと仮定する。このWALのプロトコルは、変更
されるページがDASD中のその変更ページの前のバー
ジヨンに置換する前に、ページの変更を表わすログ記録
が、不揮発性ストレージ装置中に既に存在しなければな
らないことを規定している。本発明において、データベ
ース中のすべてのページは、そのページに対する最新の
更新を記載したログ記録のLSN(ログの連続番号)を
含むPage_LSNフイールドを持つている。このフ
イールド中のこの値は、ページの「バージヨン番号(V
RSN)」と呼ばれる。このことは、ページの正確な復
旧を行なうために、そのページのために書き込まれたロ
グ記録に関して、ページの状態を正確に関連付けるのを
可能にする。更に、後で説明されるように、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へ要求を送り、DBM
S16において、データ・マネージヤ20は、Lロツク
のための要求をローカル・ロツク・マネージヤ(LL
M)18に送る。要求されたレコードは、バツフア・マ
ネージヤ22によつて、バツフア・プール24(図1)
中に既に存在するページか、または、他のDBMSから
バツフア・プールに転送されたページの何れかを持つバ
ツフア・プール24から取り出されるか、あるいは、デ
ータベース(DB)10から取り出される。バツフア・
プール24の中の各ページはバツフア制御ブロツク(B
CB)を持つており、図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ロツクがその
ページに保持されているか否かを表示する。フイールド
85h(U_Lock_Req)(Uモードのロツク要
求)は、UモードのPロツクがそのページのために要求
されたか否かを表示する。フイールド85j(Wait
_Queue)(待ち行列)は、DBMSによつて遂行
されるトランザクシヨンがページにアクセスするのを待
つているか否かを表示する。フイールド85kは、ペー
ジを復旧するための走査が開始されなければならない最
も初期のログのポイントである復旧ログの連続番号(R
LSN)をストアする。フイールド85l(Page_
Dirty)(汚れたページ)は、ページがデイスクか
ら読み取られた後に、ページが更新されたか否かを表わ
す。フイールド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のモード(MO
DE)で示されている。Lロツクのエントリは参照数字
102で示されており、少なくとも、ロツク名、モード
及びホルダのフイールドを含んでいる。
【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
値よりも大きければ、所有者側のバツフア・マネージヤ
のPage_Transfer処理が、通知メツセージ
を介して呼び出され、そして、そのページは要求者側の
バツフア・プールに転送される。
【0049】ロツク要求とPage_Transfer
の呼び出しとが、所有者側のバツフアから要求者側のバ
ツフアに汚れたページを転送するものと仮定して、以下
に、従来のプロシージヤを説明するが、本発明に従つ
て、ページ転送を、より効果的に行なうために、更に3
つのプロシージヤが考えられている。
【0050】[単純なページ転送プロシージヤ]単純な
ページ転送プロシージヤにおいて、所有者側のバツフア
・マネージヤはページをデイスクに書き込む。書き込み
が完了した後、所有者側のバツフア・マネージヤは、要
求されたロツクのモードに従つてそのPロツクを変換す
る。次に、ロツクの機構は要求者側にロツクを付与し、
要求者側のシステム中のバツフア・マネージヤはデイス
クからページを読み取る。
【0051】この従来の方法は本発明には好適ではない
が、条件が満たされた時には、利用することのできる単
純な転送方法を与える。この方法は、ロツク管理機構
ら、所有者側へのロツク・メツセージを必要とし、そし
て、ページをデイスクに書き込むために所有者側による
DASDのI/O動作を必要とするので、好ましい方法
ではない。WALのプロトコルが用いられている場合に
は、書き込みのI/O動作はログの処理を行なわねばな
らない。また、ページ転送に応答するために、所有者側
からロツク管理機構(lock management)ヘのメツセー
ジと、デイ スクからページを読み取るために要求者側
のバツフア・マネージヤによる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 ownership)も転
送されるならば、転送側のバツフア・マネージヤは汚れ
たページの待ち行列からそのページを除去することがで
きる。ページは、複数のシステムからのコミツトされ、
または、コミツトされない更新ページを含むことができ
る。汚れたページを更新するために他のシステムに更新
するページが転送された時、ページの所有権は受け取り
側のシステムに移転する。高速度転送方式において、ペ
ージをデイスクに書き込むことは受け取り側のシステム
の責任である。また、ページをデイスクに書き込む前
に、書き込みが誤動作した場合には、所有者側は、その
ページを復旧する責任がある。勿論、所有権は、復旧処
理の呼び出しを行なつたり、あるいは、ページをデイス
クに書き込む処理を行なつたりすることなく移転するこ
とができる。
【0061】汚れたページは、複数の所有者から、具体
化されていない(non-externalized)変更(即ち、ペー
ジのバージヨンがデイスクの中に入れられていない変
更)を含んでいるかもしれないから、最初にページを汚
すトランザクシヨン・システムは、大域ロツク・マネー
ジヤ40によつて維持されているロツク記録の対応する
フイールドの中に、復旧ログの連続番号(recover-log
sequence number-RLSN)を記録する。このRLSN
の値は、併合されたログ中の最も初期のログのポイント
(地点)であつて、ページの現在の所有者が、デイスク
にページを書き込む前に、デイスクへの書き込みを失敗
した場合、関連したページに対してログされた変更を再
試行するために、上述の最も初期のログのポイントか
ら、ログは走査されねばならない。復旧ログの連続番号
RLSNを維持し、追跡することについての説明は以下
に細述される。
【0062】高速転送方式の下ではページの所有権を移
転する間で、前の所有者側のシステムは、前の所有者側
の汚れたページの待ち行列から汚れたページを除去する
ので、適用されない(ページのデイスクのバージヨンに
対して)昔のログ記録のログの連続番号は、前の所有者
によつてチエツクポイントにされていた再開始の復旧ポ
イントの計算には使用されない。例えば、若し、システ
ムS1にただ1つの汚れたページがあり、その所有権が
システムS2に移転するとすれば、S1の次のチエツク
ポイントは、その汚れたページのRLSNではなく、S
1のチエツクポイントの開始点である再開の復旧ポイン
トの記録となる。然しながら、復旧システムによつて所
有されているすべてのページのRLSNは復旧ポイント
の計算に使用されなければならない。
【0063】ページの所有権の移転の間で、転送する方
の所有者側のシステムは、所有者側の汚れたページの待
ち行列からページを除去するので、若し、復旧ログの連
続番号RLSNが失われたならば、ページの復旧が困難
に晒される場合がある。例えば、ページがシステムS1
によつてUモードに保持されており、そして、システム
S2がUモードにページを要求している場合を想定す
る。システムS1はシステムS2にページを送り、その
汚れたページの待ち行列からページを除去し、そして、
ロツクのグレードを下げる。次に、システムS1の次の
チエツクポイントが始動し、そして、送出された汚れた
ページの適用されない昔のログ記録よりも新しい再開始
ポイントを記録する。ここで、システムS1を含むCE
Cが誤動作をしたものと仮定する。従つて、RLSNが
失われ、そして、S1及びS2のチエツクポイントの情
報は、汚れたページが関連するログの記録の位置を表示
するために利用することはできない。本発明において、
この問題は、RLSNを含む大域ロツク・テーブル10
0を周期的にチエツクポイント処理をすることによつて
取り扱うことができる。これは、汚れたページのリスト
を効果的にした環境規模のチエツクポイントである。こ
のチエツクポイントは、環境規模の誤動作、即ちCEC
規模の誤動作が発生した時に、復旧の再開始のポイント
を決定するのに使用される。このチエツクポイントは、
大域ロツク・テーブル100を定期的に問合せ、そし
て、Uモードのロツクが保持されているページの識別子
及びRLSNを記録する1つのトランザクシヨン・シス
テムを低優先度の処理で動作させることによつて実行す
ることができる。従つて、環境規模の復旧の再開始の間
において、復旧の再開始のポイントを計算するために、
最低位の優先度で記録されているRLSNが用いられ
る。
【0064】高速度転送方式についての最後の説明は、
通信リンク50を経たページ転送に関する。所有者側に
汚れたページが存在することを知らせるshort_m
essage(短いメツセージ)、ロツク付与に付随
して要求者側に送られる。ページの古いバージヨンを使
用することは、中間速度の転送方式と同じように回避さ
れる。然しながら、高速度転送方式においては、若し、
ページの古いバージヨンが貯蔵されていたり、あるい
は、ロツクが与えられる時までに、ページが受け取られ
なければ、要求者側はデイスクから、ページを読み取る
ことはできず、現状のままのページを使用する。若し、
要求者側のシステムがPロツクを獲得した時に、まだ現
在の所有者になつていなければ、要求者側のシステム
は、先ず、Uモードのロツクを獲得しなければならな
い。これに関連して、要求者側のデータベース管理シス
テムは、前の所有者により、そのページがデイスクに書
き込まれるべきであることを、要求者のロツク要求の中
に委託する。若し、所有者側のシステムが誤動作を起さ
なければ、所有者側はデイスクにページを書き込み、そ
して、要求者側はデイスクに書き込まれたページを獲得
することができる。若し、現在の所有者側が誤動作を起
したならば、システムは、要求者側にページを復旧させ
る。この場合の復旧は、ページを現状に戻すために、デ
イスクから、ページの、より古いバージヨンを読み取る
ことと、併合ログからのログ記録を適用することとを含
む。所有者側のシステムが誤動作を起した時、ログは、
RLSNからLSNへ走査される。LSNの上限は、新
しい所有者がそのページの所有者になつた時点におい
て、その特定の時点で新しいログ記録が書き込まれたと
したならば、どんなLSNの値であるかを知ることによ
つて、新しい所有者によつて獲得することができる。
【0065】[超高速度のページ転送方式]超高速度の
ページ転送方式において、所有者側のバツフア・マネー
ジヤは、ページを転送する前に、そのページのLSN
(ログの連続番号)値を取るようにログを強制するよう
要求されない。この方式によりページ転送に与える影響
は、3つのメツセージを持つことと、デイスクのI/O
処理動作がないことと、ログ記録の値を強制しないこと
とである。然しながら、WALプロトコルが順守される
のを保証するために、この方式は、デイスクからページ
が取り出されて以来、システムのページが更新されたす
べてのシステムに対して、1システム毎にページに関連
したLSNを追跡することを必要とする。更新するシス
テムに対して記憶されるべきLSNは、ページがそのシ
ステムによつて他のシステムに転送された時のページの
LSNである。すべての更新するシステムが、追跡され
るLSNに夫々の関連ログを強制した後にだけ、そのペ
ージをデイスクに書き込むことができる。各システム
は、他のシステムのログとは独立して、各システムのロ
グに強制させるシステム自身のログを持つているので、
上述のことが要求される。
【0066】一連のシステムのログ記録を追跡すること
は、以下のプロシージヤに従つて達成することができ
る。汚れたページのために、或る数のスロツトをバッフ
ア制御ブロツク(BCB)に割り当てることができ、各
スロツトは、ページを更新した各々のシステムによつて
書き込まれた最後のログ記録にあるLSNを追跡するの
に使用される。スロツトが入手可能である間では、更新
するシステムは、ページに対して今書き込まれたばかり
のログ記録のLSNを書き込む。このスロツトが入手可
能でなければ、システムは、上述の第1の方法に従う。
つまり、更新するシステムは、システムがページを転送
する前に、ログを強制すると言うことである。若し、汚
れたページの所有権が、必要なポイントに強制された更
新システムのログなしで転送されたならば、スロツトの
中の情報はページと一緒に、新しい所有者に送られる。
【0067】汚れたページをデイスクに書き込む前に、
その汚れたページの現在の所有者は、そのページを前に
更新したすべてのシステムが、対応するスロツトに記入
されたLSNに、夫々のログを強制することを保証す
る。デイスクのような安定したストレージに転送するこ
とによつて、システムのログが具体化されている最大の
LSNを、大域ロツク・マネージヤ40に周期的に登録
することが、本発明の一実施例において、能率を増す目
的で考慮されている。この最大のLSNは、Hi_LS
N(高い_ログの連続番号)と呼ばれる。大域ロツク・
マネージヤ40が特定のシステムにメツセージを送る時
に、大域ロツク・マネージヤは、周期的に、他のシステ
ムのHi_LSNを送る。若し、他のシステムに必要と
されるLSNに強制されるべきであることを、そのログ
が現在知らなければ、現在の所有者側のシステムは上述
の他のシステムにメツセージを送り、そして、上述のよ
うにログを強制するようそのシステムに要求する。以前
のシステムの1つが誤動作をして、ログを強制する要求
に応答しない場合、現在の所有者側のバツフア・プール
中には、安定したストレージ、例えば、デイスク装置中
にログ記録がない幾つかの更新された汚れたページがあ
るはずである。従つて、そのページは以下に説明する態
様で復旧されねばならない。以下に説明されるページ復
旧を行なう前に、必要とするLSNに対するそれらのロ
グ記録を具体化するために、前にページを更新したすべ
ての生き残りのシステムが必要とされる。これは、他の
システムによつて行なわれ、後でコミツトされる更新の
ために、未だ具体化されていないログ記録の喪失を防
ぐ。現在の所有者側のシステムは直接アクセス・ストレ
ージ装置からのページを読み取り、そして、併合された
ログを使用してそのページを復旧する。この復旧は、そ
のページのRLSNからページの復旧が開始された時点
のLSNまで、併合されたログの走査して、関連するロ
グ記録を取り出し、処理することによつて行なわれる。
ページの復旧が開始された上述の時点は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_
message中の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の処理に使用される。貯蔵されたページが現在のバー
ジヨンでなく、そして、要求者側がページの新しいバー
ジヨンを必要とするならば、そのバツフア・マネージヤ
は、ページの新しいバージヨンを得ることが必要であ
る。ロツク管理機構、或るモードにロツクを保持して
いるシステムへメツセージを送るための通知オプシヨン
を与える。バツフア・マネージヤは、若し、新しいバー
ジヨンがあれば、ページの新しいバージヨンを、所有者
から得るために、上述の通知オプシヨンを使用する。バ
ツフア・マネージヤは、ページの新しいバージヨンがN
EW_Page_Reqフイールド(図2の85a)へ
のエントリによつて要求されたことをバツフア制御ブロ
ツクを必要とする要求側のトランザクションに知らせる
ので、貯蔵されたページのバージヨンよりも、より新し
いバージヨンは、新しいバージヨンが到着するまで保留
される。L_Short_message中のVRSN
が、貯蔵されたページのVRSNよりも小さいか、また
は等しいトランザクシヨンは、貯蔵されたページのバー
ジヨンを使用するように続行することができる。若し、
そのページについての所有者がいないことを、ロツク管
理機構が表示したならば、デイスクのページのバージヨ
ンは最新のバージヨンであることが想定される。この場
合には、バツフア・マネージヤはデータベース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は、このページのため
のエントリを既に持つている。この場合、ページが更新
され、更新システムによつてUモードのロツクが放棄さ
れている結果、更新システムが、大域ロツク・マネージ
ヤ40によつて、大域ロツク・テーブル100の中のV
RSN値を更新させているので、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_U
nusable)にマークし、フイールド85fをオフ
にセツトし、そして、ページのPロツクを要求する。P
age_Unusableのマークは、このページの使
用可能なバージヨンが存在しないことを知らせる次のf
ix_pageを発生させる。Data_Move(デ
ータの移動)フラグは、処理の後の点において、Dat
a_Rcv(データの受け取り)処理が、ページのコピ
ーを受け取り、貯蔵したか否かを表示する。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_Sho
rt_messageが、バツフア制御ブロツクに貯蔵
されたページのVRSN値よりも小さいか、または等し
い値であれば、バツフア・マネージヤ22は、Page
_Usableフイールド85eをオンに転じ、そし
て、ページの到着を持つている待ち状態にあるすべての
トランザクシヨンを活動させる。若し、(1)ページは
転送されていない(Owner_Exisits=N
O)か、(2)ページは受け取られておらず(Owne
r_Exisits=YES)、そしてData_Mo
ved=OFFであるか、(3)Data_Moved
=ONであり、そしてBCBに貯蔵されたVRSNがP
_Short_message中のVRSN値よりも小
さい時、ページの古いバージヨンが受け取られたなら
ば、バツフア制御ブロツクは、DASDからのページを
得るための処理が進行していることを表示するために、
Page_Unusable(使用不能ページ)及びD
oing_I/Oにマーク付けをする。このマーク付け
は、I/Oが処理中の間で、Data_Rcvプロシー
ジヤがページを修正するのを阻止する。この場合、バツ
フア・マネージヤ22は、Page_Recovery
(ページの復旧)のルーチンを呼び出して、ページの復
旧ルーチンにMust_Recovery(復旧が必須
である)フラグを送る。このフラグは、若し、Owne
r_Exists=YESならばYESにセツトされ、
そうでなければ、NOにセツトされる。Page_Re
coveryルーチンからの復帰するときに、バツフア
・マネージヤ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動作が完了した後、P
age_Usableフイールドはバツフア制御ブロツ
ク中でYESにセツトされ、Doing_I/Oフイー
ルドはNOにセツトされ、そして、New_Page_
RequestedフラグはNOにセツトされ、待ち状
態のすべてのトランザクシヨンは再度開始され、呼び出
しは復帰する。
【0085】第2の場合、即ち、要求ページのためのバ
ツフア制御ブロツク(BCB)が存在する場合におい
て、バツフア・マネージヤ22はBCB_Page_U
nusableフイールドを検査する。若し、ページが
使用不能であることを、このフイールドが表示したなら
ば、これは、ページの使用可能なバージヨンは現在貯蔵
されていないことと、他のトランザクシヨンが、ページ
の使用可能なバージヨンを得るための処理を既に行なつ
ていることとを意味する。この場合には、現在のトラン
ザクシヨンはWait_Queue(待ち行列)にそれ
自身を待ち行列に入れて、実行を保留する。このトラン
ザクシヨンは、ページが使用可能になつた時に再度開始
される。Fix_Page処理は、保留されたロツクが
ページを更新するためのものか、またはページを読み取
るためのものかに依存する。
【0086】トランザクシヨンがページを更新する要求
を発生したものと仮定する。この場合、バツフア・マネ
ージヤは、ローカルCEC中のXモードにラツチをセツ
トすることによつてXモードにページをラツチする。更
新の要求に応答した読み取り要求の場合(以下に説明す
る)とは異なつて、ページの更新が許される前に、ペー
ジの最新のバージヨンがローカル・バツフア・プール中
にあるのを保証することを必要とするまで、バツフア・
マネージヤは、L_Short_messageに注意
を払わない。若し、Uモードのロツクがページに対して
既に保持されているならば、Fix_Pageの処理
は、直ちに呼び出し側に戻る。若し、Uモードのロツク
は現在保持されていないが、しかし、他のトランザクシ
ヨンのFix_Page要求に応答して既に要求されて
いれば、現在のトランザクシヨンはそれ自身保留され、
前のトランザクシヨン要求の付与を待つ。そうでなけれ
ば、Xモードのラツチは解放され、そして、バツフア制
御ブロツクのU_Lock_Reqフイールド及びNe
w_Page_Reqフイールドをマークした後に、U
モードのPロツクが要求され、これにより、Uモードの
ロツク及びページの新しいバージヨンが要求されている
ことを他のシステムに知らせる。Uモードのロツク要求
は、バツフア・マネージヤによるメツセージとしてロツ
ク・マネージヤに送られる。Uモードのロツク要求によ
つて、最適化するために、貯蔵されたページのVRSN
値を送ることができる。若し、貯蔵されたページのVR
SNが、現在の所有者を助けるならば、要求者側がペー
ジの最新のバージヨンを既に持つていることを見い出す
ために、上述のことは有用である。若し、要求者側のバ
ージヨンが現在のバージヨンであれば、所有者側は、V
RSN値を比較することができ、そして、ページ転送を
しない選択をする。
【0087】Uモードのロツクを与えたロツク管理機構
からメツセージを与えた時、バツフア・マネージヤはU
_Lock_Reqフイールドを消去し、そしてU_L
ock_Heldフイールドをセツトすることによつ
て、バツフア制御ブロツクを更新する。この時点で、ペ
ージはXモードにラツチされ(Xモードのラツチをセツ
トするバツフア・マネージヤによつて)、ページの最新
のバージヨンがバツフア・プール中に既に存在している
ことを保証するために、チエツクが行なわれる。Uモー
ドのロツクを与えるために、大域ロツク・マネージヤ4
0によつて送られたメツセージは、大域ロツク・テーブ
ル100中のVRSN値を含むP_Short_mes
sageを伴つている。バツフア・マネージヤがこのメ
ツセージを受け取つた時、バツフア・マネージヤはXモ
ードのラツチをセツトして、受け取つたVRSN値と、
バツフア・プール中のページのバージヨンのVRSN値
とを比較する。若し、ローカル・ページのバージヨンの
VRSN値が受け取つたVRSN値よりも小さければ、
Page_Unusableフイールド及びDoing
_I/Oフイールドがバツフア制御ブロツクにセツトさ
れ、そして、Page_Recoveryルーチンがに
用いられ、直接アクセス・ストレージ装置からページを
読み取る。
【0088】読み取り要求がトランザクシヨンから受け
取られたものと仮定する。ページはページのSラツチを
セツトすることによつてSモードにラツチされる。読み
取り要求の場合、トランザクシヨンに対して使用可能に
されたページのバージヨンは、常に、最新のバージヨン
でなければならないというわけではないから、バツフア
・マネージヤは、常に、最新のバージヨンではない。L
_Short_message中にあるページのVRS
N値によつて表示されているバージヨンと少なくとも同
じ新しさのバージヨンであることが、必要とされるだけ
である。バツフア制御ブロツク中のVRSN値と、この
メツセージで受け取られたVRSN値とを比較する前
に、Sモードのラツチがセツトされる。若し、このメツ
セージに含まれたVLSNの値がバツフア制御ブロツク
のVLSNの値よりも小さいか、または等しいならば、
Fix_Page処理は呼び出し側のトランザクシヨン
に戻る。メツセージに含まれたVLSNがBCBのVL
SNよりも大きい場合には、ページの新しいバージヨン
のための要求が他のトランザクシヨンによつて既に発生
されていなければ、ページの新しいバージヨンのための
要求が発生される。その要求は所有者側のDBMSにN
otify_Message(通知メツセージ)を発生
することによつて行なわれる。Pロツク要求の場合のよ
うに、Notify_Messageは、所有者側によ
つて、ローカル・ロツク・マネージヤ(LLM)と、大
域ロツク・マネージヤ(GLM)と、ローカル・ロツク
・マネージヤ(LLM)とを通つて送られるP_Sho
rt_messageを送らせる。若し、所有者がなけ
れば、大域ロツク・マネージヤはメツセージを発生し
て、GLMと、LLMとを経てP_Short_mes
sageを転送する。トランザクシヨンは、P_Sho
rt_messageの到着を待つている間、中断して
いる。中間速度のページ転送方式の影響下にあるとして
も、トランザクシヨンが読み取り要求を発生するまで、
所有者側のDBMSは、ページをデイスクに書き込ま
ず、また、要求者側にもページを転送しない。ロツク管
理機構からP_Short_messageを受け取つ
た後に、再開始されたトランザクシヨンは、ページに対
するSモードのラツチを獲得し、そして、そのページの
VRSN値と、L_Short_message中のV
RSN値とを比較することによつて、ページの所望のバ
ージヨンが到着したか否かを見るためにチエツクを行な
う。若し、所望のバージヨンが到着していれば、呼び出
しは復帰する。若し、所望のバージヨンが到着していな
ければ、Must_Recoverフイールドは、P_
Short_message中のOwner_Exis
tsフラグと同じ値にセツトされる。この時点で、ペー
ジの要求されたバージヨンを得るために、Page_R
ecoveryルーチンが呼び出される。
【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_Receiv
eプロシージヤが呼び出された時に、若し、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_Sho
rt_Message中のOwner_Existsフ
ラグがYESにセツトされ、そうでなければ、0wne
r_ExistsはNOにセツトされる。*/ 3.要求のタイプに応じて、ページはSモードか、また
はXモードにラツチされる。 /*受け取られたデータを直列化する。*/ 4.IF(若し)、 BCBのData_Movedフ
イールドが「ON」にマークされているならば(THE
N)、 以下の動作を行なえ。 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_message
中のOwみer−Exists=NOである)か、
/*ページは送られない。*/ または、(BCBは
「Data_Moved=OFF」にマークされてい
る)か、/*Data_Rcvはデータを移動しない。
*/ または、((BCBは「Data_Moved
=ON」にマークされ、 /*古いData_Rcv
は移動した。*/ そして、P_Short_mes
sage中のOwner_Exists=YESであ
り) そして、 /*古いページ。*/(Page
_Version_numberがP_Short_m
essage中のバージヨン番号よりも小さい))なら
ば(THEN)、以下の動作を行なえ。 a.BCBの「Page_Unusable、及びDo
ing_I/O」をマークする。 /*これは、Sラ
ツチが解放された後に、受け取つたデータの出口からデ
ータが移動するのを阻止する。ロツク要求及びI/O動
作を通してラツチを保持しない。*/ b.ラツチを解放する。 c.若し(IF)、 P_Short_message
の中のOwner_Exists=YESならば(TH
EN)、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_Unusabl
e」にマークされているならば(THEN)、 a.このトランザクシヨンをWaiter_Q(BCB
に固定されている)に待機させる。 b.トランザクシヨンを保留する(ページが使用可能に
なつた時に、トランザクシヨンは再開始される)。 /*==================*/ /*更新の要求の処理は以下の通りである。*/ /*==================*/ 2.若し(IF)、要求のタイプ=更新であれば(TH
EN)、以下の動作を行なえ。 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_Sh
ort_message中のOwner_Exists
は、YESであり、そうでなければ、NOである。*/ i.若し(IF)、(P_Short_message
中のOwner_Exists=YES)であれば(T
HEN)、以下の動作を行なえ。/*転送されたページ
が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)インス
トラクシヨンによつてWaiter_Qの中にこのトラ
ンザクシヨンを待機させる。 b)若し(IF)、妨害が起きたなら(THEN)、C
hk−U−Againに行く。 /*CDSが誤動作
したならば、再駆動する。*/ c)トランザクシヨンを保留する。 d)Chk−U−Againに行く。 /*再始動の
後、再駆動する。*/ e)それ以外(ELSE)は、復帰せよ。 /*Uモ
ードのロツクは既に保持されており、Xモードのラツチ
を保持して復帰する。*/ /*===================*/ /*以下の記述は読み取り要求の処理である。*/ /*===================*/ 3.Check−Again:ページがSモードにラツ
チされているか再度チエツクする。 /*(Uモードのロツクの要求のためか、または、ペー
ジの新しいバージヨンが要求されているという理由のた
めに処理することのできるData_Rcvの出力に対
して直列化するためにラツチが獲得される。)*/ 4.若し(IF)、L_Short_message中
のバージヨン番号がPage_Version_Num
berよりも小さいか、または等しければ(THE
N)、復帰せよ。 /*この貯蔵されたバージヨンは使用することができ
る。*/ 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=O
FF」にマークされているならば、ページは貯蔵されな
い。 .たとえ、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モードにラツチする。 /*Fix_
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_R
equested=NO」にマークされている)か、
/*これは、汚れたページの書き込みI/O動作か、
または、ページ復旧が古いバージヨンであるという理由
のための読み取りI/O動作である。*/ または、
(BCBは「New_Page_Requested=
NO」にマークされている)か、 /*新しいページ
は既に受け取られている。*/または、(受け取られた
ページのバージヨン番号が、貯蔵されたページのバージ
ヨン番号/*古いバージヨン番号*/よりも小さいか、
または等しい)ければ(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_mess
ageがデータ・マネージヤ20によつて受け取られた
時、データ・マネージヤ20はバツフア・マネージヤ2
2に対するページの要求によつてFix_Page処理
を開始する。ステツプ209において、バツフア・マネ
ージヤ22は表Iの第1の場合に従つてFix_Pag
e処理を開始して、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の
VRSN値は依然として98であることは注意を要す
る。図4を参照すると、ステツプ225において、トラ
ンザクシヨンTX1は、レコードR1を更新し、更新の
ログ処理から生じたLSNのログ値を獲得し、そして、
BCBの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_
messageをデータ・マネージヤ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_S
hort_messageが送られるまで中断する。通
知メツセージはステツプ239において、ロツク管理機
構を通してBM34に送られ、そして、表IIに記載さ
れたページ転送処理を開始する。図5を参照する。ステ
ツプ241において、バツフア・マネージヤ(BM)3
4に送られた通知に応答して、BM34はバツフア・プ
ールの中にページを位置付け、ページをSモードにラツ
チし、そして、ステツプ3に移動する。この場合、ペー
ジは汚れたページであるが、しかし、要求はSモードの
ロツクなので、ステツプ3はスキツプされる。ステツプ
4において、Comm_Link_Transferの
デフオルトの設定は「YES」である。デフオルトの設
定によつて、ページP1はコピーされ、必要な制御情報
は設定され、そして、ページ及びその情報はステツプ2
45において通信リンク50を介してCEC12に送ら
れる。この例において、表IIのステツプ5及び6はス
キツプされ、表Iのステツプ7において、ページのラツ
チは解放され、ステツプ8において、ページは解放さ
れ、ステツプ9において、P_Short_messa
geはロツク・マネージヤを通つてCEC12に送られ
る。このことは、図5のステツプ247及び248に対
応している。P_Short_messageと転送さ
れるページの間には競争があることは明らかである。ロ
ツク・マネージヤを通るメツセージの時間は、通信リン
ク50を直接に通るメツセージの転送の時間よりも長い
ものとすると、通常の動作において、ページは、P_S
hort_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 Fin
e Granularity Locking and Partial Rollbacks Using
Write-Ahead Logging)と題する1989年1月に刊行
されたIBM社の刊行物IBMリサーチ・リポート番号
RJ6649に記載されているアプローチを参照する時
に、以下の点に注意すべきである。元へ戻す(undo)パ
スの間で、若し、Uモードのロツクが現在保持されてい
なければ、Uモードのロツクは影響されたページに対し
て再度獲得されなければならない。このUロツクの獲得
は、通常の処理の間でさえも、Uモードのロツクは行き
詰まりには含まれていないから、行き詰まりを生じな
い。レド(redo)復旧に含まれたページ(即ち、システ
ムが誤動作した時に、Uモードのロツクが保持されてい
たページ)は、レド復旧パスが完了した後に、そのペー
ジを必要とする他の任意のシステムに転送可能である。
若し、誤動作したシステムが復旧処理中にあれば、ロツ
ク・マネージヤは、誤動作したシステムのページ転送プ
ロシージヤが実行可能であることを、誤動作したシステ
ムが表示するまで、入力した他のシステムのロツク要求
を待機させる。トランザクシヨン・システムはレド復旧
パスの終りでページ転送プロシージヤを動作する(即
ち、失われたすべての更新ページの「経過記録の繰り返
し」を行なつた後において)。
【0112】[高速度ページ転送方式]高速度ページ転
送方式については、汚れたページの所有権は、そのペー
ジをデイスクに最初に書き込むことなく転送されるの
で、ページがデイスクに書き込まれる前に新しい所有者
が誤動作した場合、ページのRLSNは、ページを正し
く復旧するためにGLMにおいて追跡されねばならな
い。これを達成するために、RLSNの値は、Uモード
のロツクがページに要求された時に与えられる。
【0113】[RLSNの割り当て及び追跡]RLSN
はDBMSによつて割り当てられ、そして、ロツク管理
機構によつて追跡される。バツフア・マネージヤ(B
M)は、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ロツ
クが要求された時に、条件付きでセツトされる。RLS
Nは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から除去されたなら
ば、要求者側のシステムに送られる制御情報中に、Pa
ge_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モードのロツクを持ち、そして、その
RLSNはHi_Valueと等しくない。Uモードの
ロツクが復旧システムによつて維持されているすべての
ページのRLSNは、レド・パスのログ走査のための開
始点を計算するのに考慮に入れられる。併合されたログ
は、ページから失われたすべての更新を再度行なうため
のレド・パスの間で、走査される。ログ記録の更新は、
Uモードのロツクが保持され、かつ、ページのLSNが
ログ記録のLSNよりも小さい時にのみ、再度行なわれ
る。ログは最後のLSN(更新システムが誤動作する前
に、復旧システムによつて書き込まれた最後のログ記
録)まで走査される。
【0121】若し、システムがUモードに維持されたペ
ージのロツクを要求し、そして、誤動作をしたシステム
がその復旧処理を開始しなければ、GLMは、「あなた
がページを復旧して下さい。」というメツセージと共
に、他のシステムにそのロツクを与えることができる。
これは、データの可用性(availability)を高める。G
LMは、要求者側に送られるP_Short_mess
ageを通して用いられる前に、ページを復旧するため
の必要性を表示することができる。この改良によつて、
若し、Sモードのロツクだけが要求されたとしても、G
LMは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の最小値が決められなければならない。G
LMのロツク・テーブルのチエツクポイントが取られた
時に、若し、Hi_Valueよりも小さいRLSNを
持つたページがなければ、上述の最小値はBegin_
GLM_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の値まで
ログを強制することを要求する適当なシステムに対する
Ackを持つ「通知」を発生する。若し、システムが誤
動作したために、そのシステムが応答しなかつたなら
ば、ページの復旧が開始された時に、ページは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は、復旧するためにログが必要
とされるシステム識別子のために、ロツク名のエントリ
中に付加的なフイールドを持つている。然しながら、G
LMが「あなたがページを復旧して下さい。」というメ
ツセージを要求者側に通知した時、ロツクの所有者のシ
ステム識別子は復旧ログのためのシステムの識別子とは
異なる。要求者側のシステムがページを復旧して、その
ページをデイスクに書き込んだ後、要求者側のシステム
は、復旧ログのシステム識別子をセツトするために、ロ
ツク・マネージヤに要求を発生する。要求者側のシステ
ム中のバツフア・マネージヤは、システム「a」のログ
のRLSN「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、34 バツフア・マネージヤ(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 Doing_I/Oフイールド 85d New_Page_Req(新しいページの要
求)フイールド 85e Page_Usableフイールド 85f Data_Movedフイールド 85g U_Lock_Heldフイールド 85h U_Lock_Reqフイールド 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 データの受け取り
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平4−268649(JP,A) 特開 平4−310148(JP,A)

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】データは、転送の単位(データの単位)で、
    データベース管理システム(DBMS)のバッフア中に保持さ
    れるか、或いは、複数のデータベース管理システム(DBM
    S)のすべてに結合される1以上のディスクから前記DBMS
    バッフアにコピーされるものであり、 ロックは、それぞれ通信リンクを介して各データベース
    管理システム(DBMS)に接続される大域ロック・マネージ
    ャによつて発生され、管理されており、かつ前記ロック
    は、データの単位の中で、データの単位に関する物理的
    ロック(Pロック)とレコードに関する論理的ロック(L
    ロック)を含み、 複数のデータベース管理システム(DBMS)の中において実
    行する処理に対してロックを発生することによって、複
    数のデータベース管理システム(DBMS)の間で、前記デー
    タについて共有してアクセスをするためのシステムであ
    って、前記システムは、データの転送のために各データ
    ベース管理システム(DBMS)と他のすべてのデータベース
    管理システム(DBMS)とを結合する手段を含むシステムに
    おいて、データの単位を高速度でアクセスする方法にお
    いて、前記第1のDBMSのバッフアへディスクからデータの単位
    に関して最初のバージョンを与えるステップと、 第1のDBMSに対してデータの単位を更新するためにPロ
    ックを発生するステップと、 前記大域ロック・テーブルにそのPロックに関するエン
    トリを載録するステップと、 前記第1のDBMSにおいて、前記データの単位に関して最
    初のバージョンを更新することにより、前記バッフアに
    おける前記データの単位に関して更新されたバージョン
    を発生するステップと、 前記データの単位に関して最初のバージョンを更新する
    ことに応答して、 前記第1のDBMSのバッフアにおいて、前記データの単位
    に関して更新されたバージョンに対して、単調に増加す
    る数であるバージョン番号を発生するステップと、 前記第1のDBMSのバッフアにおいて、前記データの単位
    に関して更新されたバージョンに対して、前記バージョ
    ン番号を付加するステップと、 前記大域ロック・テーブルにおいて、Pロックに関する
    エントリ中に前記バージョン番号を記憶するステップ
    と、 データの単位の中のレコードを読み出すために、第2の
    DBMSからLロックに関する要求を発生するステップと、 前記Lロックに関する要求に応答して、大域ロック・テ
    ーブルに記憶されているバージョン番号を前記第2のDB
    MSに与えると共にLロックを付与するステップと、 もしも第2のDBMSのバッフア中に既にデータの単位につ
    いてのバージョンが存在しているならば、当該データの
    単位についてのバッフア中のバージョンに含まれるバー
    ジョン番号と前記大域ロック・テーブルから得たバージ
    ョン番号とを比較し、当該データの単位についてのバッ
    フア中のバージョンに含まれるバージョン番号が前記大
    域ロック・テーブルから得たバージョン番号より小さい
    場合には、大域ロック・マネージャから第1のDBMSに対
    してデータの単位を転送するよう要求するステップと、
    そうでなくて、 もしも第2のDBMSのバッフア中に未だデータの単位につ
    いてのバージョンが存在していないのならば、データの
    単位を読み出すために第2のDBMSからPロックに関する
    要求を発生するステップと、 そのPロック要求に応答して第2のDBMSにデータの単位
    を転送するために、前記大域ロック・マネージャから第
    1のDBMSに対して要求を出すステップと、 第1のDBMSから第2DBMSへデータの単位に関して更新さ
    れたバージョンを転送すると共に第1のDBMSから前記大
    域ロック・マネージャへデータの単位に関して更新され
    たバージョンに含まれるバージョン番号を与えるステッ
    プと、 第1のDBMSから受け取ったバージョン番号を前記大域ロ
    ック・マネージャによって第2のDBMSに転送するステッ
    プと、 もしも第2のDBMSに与えられたバージョン番号が第2の
    DBMSによって受け取られたデータの単位に関して更新さ
    れたバージョンに含まれるバージョン番号よりも大きい
    場合には、或いは、もしもバージョン番号が到着したと
    きにデータの転送に関して更新されたバージョンが第2
    のDBMSで受け取られていない場合には、第1のDBMSから
    データの単位に関して更新されたバージョンをディスク
    に書き込み、そして前記ディスクから第2のDBMSにデー
    タの単位に関して更新されたバージョンを与えると共に
    そこからレコードを読み取るステップと、前記二つの場
    合に相当しないときは、 第1のDBMSから第2のDBMSに転送されたデータの単位に
    関して更新されたバージョンからレコードを読み取るス
    テップと、 を含むデータの単位を高速度でアクセスする方法。
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 JPH04310148A (ja) 1992-11-02
JPH0827755B2 true 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)

Families Citing this family (140)

* 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
FI102788B (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 양승택 다중 사용자 환경의 저장시스템에서 버퍼 잠금기법을 이용한 버퍼 관리방법
US6574654B1 (en) * 1996-06-24 2003-06-03 Oracle Corporation Method and apparatus for lock caching
JP3524270B2 (ja) * 1996-06-24 2004-05-10 株式会社日立製作所 並列処理システム
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
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
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
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 日本電気株式会社 データ共有システム
US6981061B1 (en) * 1997-11-14 2005-12-27 Mitsubishi Denki Kabushiki Kaisha Method and system for updating a data system in conjunction with synchronized clock modules
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
EP1162539B1 (en) * 1998-02-13 2008-07-30 Oracle International Corporation Recovering data from one or more failed caches
EP1408408B8 (en) * 1998-02-13 2006-03-29 Oracle International Corporation Managing a resource used by a plurality of nodes
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
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
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
US7421541B2 (en) 2000-05-12 2008-09-02 Oracle International Corporation Version management of cached permissions metadata
US7725878B1 (en) 2000-05-12 2010-05-25 Oracle International Corporation Property bundles on a per instance basis
US7987217B2 (en) * 2000-05-12 2011-07-26 Oracle International Corporation Transaction-aware caching for document metadata
US7389493B1 (en) 2000-05-12 2008-06-17 Oracle International Corporation Categories on a per instance basis
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
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
WO2002073416A2 (en) * 2001-03-07 2002-09-19 Oracle International Corporation Managing checkpoint queues in a multiple node system
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
US7178137B1 (en) 2001-04-05 2007-02-13 Network Appliance, Inc. Automatic verification of scheduling domain consistency
US7694302B1 (en) * 2001-04-05 2010-04-06 Network Appliance, Inc. Symmetric multiprocessor synchronization using migrating scheduling domains
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
WO2003005245A2 (en) * 2001-07-06 2003-01-16 Computer Associates Think, Inc. Systems and methods of information backup
CA2461015A1 (en) * 2001-09-21 2003-04-03 Polyserve, Inc. A system and method for a multi-node environment with shared storage
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
US7565406B2 (en) 2002-07-24 2009-07-21 Sun Microsystems, Inc. Last thread lock management for multi-threaded process and distributed data systems
US7120746B2 (en) * 2002-09-09 2006-10-10 International Business Machines Corporation Technique for data transfer
US7653667B2 (en) 2002-09-09 2010-01-26 Sap Ag Methods and systems for data moving using locks
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
US20060149696A1 (en) * 2002-09-09 2006-07-06 Thorsten Pferdekaemper Method and systems for controlling access to a data object by means of locks
ATE371903T1 (de) * 2002-09-09 2007-09-15 Sap Ag Verfahren und vorrichtung zur datenbewegung mittels sperren
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
WO2007038617A2 (en) 2005-09-27 2007-04-05 Onaro Methods and systems for validating accessibility and currency of replicated data
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
WO2007134251A2 (en) * 2006-05-12 2007-11-22 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 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
JP2010026933A (ja) 2008-07-23 2010-02-04 Toshiba Corp メモリシステム、ホスト装置
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
AU2011348864B2 (en) * 2011-08-31 2017-05-25 Huawei Technologies Co., Ltd. Method for managing a memory of a computer system, memory management unit and computer system
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
US10747752B2 (en) 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
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
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
US10817512B2 (en) 2016-04-01 2020-10-27 Arista Networks, Inc. Standing queries in memory
US10860568B2 (en) 2016-04-01 2020-12-08 Arista Networks, Inc. External data source linking to queries in memory
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的数据库乐观锁实现方法及系统
CN112286947B (zh) * 2020-09-29 2022-10-04 阿里云计算有限公司 保持不同存储系统的数据一致的方法以及装置
CN119938234B (zh) * 2024-12-30 2026-01-06 西北工业大学 一种基于天脉操作系统的嵌入式数据库事务并发控制方法

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

Also Published As

Publication number Publication date
US5327556A (en) 1994-07-05
JPH04310148A (ja) 1992-11-02
EP0499422A3 (en) 1993-07-14
EP0499422A2 (en) 1992-08-19

Similar Documents

Publication Publication Date Title
JPH0827755B2 (ja) データの単位を高速度でアクセスする方法
US8051046B2 (en) Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US7296039B2 (en) Managing checkpoint queues in a multiple node system
US7543181B2 (en) Recovery from failures within data processing systems
US6564230B2 (en) Transferring a resource between caches of different nodes
EP1652082B1 (en) Ownership reassignment in a shared-nothing database system
US5546582A (en) Extension of two phase commit protocol to distributed participants
US20070174541A1 (en) Methods to perform disk writes in a distributed shared disk system needing consistency across failures
JP4746838B2 (ja) データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化
CN100449539C (zh) 无共享数据库系统中的单相提交
JP2007188518A (ja) データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化
EP1162538B1 (en) Transferring a resource from a first cache to a second cache
CA2448050C (en) Method and apparatus for transferring data from the cache of one node to the cache of another node
EP1408408B1 (en) Managing a resource used by a plurality of nodes