JP4612710B2 - トランザクション並行制御方法、データベース管理システム、およびプログラム - Google Patents

トランザクション並行制御方法、データベース管理システム、およびプログラム Download PDF

Info

Publication number
JP4612710B2
JP4612710B2 JP2008144670A JP2008144670A JP4612710B2 JP 4612710 B2 JP4612710 B2 JP 4612710B2 JP 2008144670 A JP2008144670 A JP 2008144670A JP 2008144670 A JP2008144670 A JP 2008144670A JP 4612710 B2 JP4612710 B2 JP 4612710B2
Authority
JP
Japan
Prior art keywords
transaction
database
application
transaction processing
processing
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 - Fee Related
Application number
JP2008144670A
Other languages
English (en)
Other versions
JP2009294695A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008144670A priority Critical patent/JP4612710B2/ja
Priority to US12/429,702 priority patent/US20090300017A1/en
Publication of JP2009294695A publication Critical patent/JP2009294695A/ja
Application granted granted Critical
Publication of JP4612710B2 publication Critical patent/JP4612710B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details

Landscapes

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

Description

本発明は、トランザクション並行制御方法、データベース管理システム、およびプログラムに関し、優先度付きのトランザクション処理が発生した場合にデータの消失を防ぐための技術に関する。
一般に携帯電話機、カーナビゲーションシステム、デジタル家電などの情報処理装置のアプリケーションに用いられるデータベース管理システム(DBMS(Database Management System))は、複数のアプリケーションから要求されたトランザクションを並行処理することができる。例えば携帯電話機は、音楽アプリケーションが要求する音楽コンテンツの追加や再生などのトランザクションの処理中に電話帳の検索などの電話帳アプリケーションが要求するトランザクションを並行して処理する。またカーナビゲーションシステムは、GPSアプリケーション(GPS : Global Positioning System)が要求する緯度経度データの地図表示などのトランザクションの処理中に走行データの記録など車両管理アプリケーションが要求するトランザクションを並行して処理する。
ここでトランザクション処理とは、順序付けられた1つ以上の問い合わせに対応する処理を逐次実行することである。一般的なリレーショナルデータベース管理システム(RDBMS:Relational Database Management System)では、上記の問い合わせはSQL(Structured Query Language)を用いて行われる。例えば、データベースからの特定の条件に一致するデータの検索、データベースへのデータを追加(挿入)、特定の条件に一致するデータの削除、データの更新、テーブルの生成等である。
トランザクション処理は、その完了時において、全ての問い合わせ処理が実行されたか、または、全ての問い合わせ処理が実行されなかったか、のどちらかの結果となることが保証されている(トランザクションの原子性)。またトランザクション処理は、データベースの内容がアプリケーションから見て正当な状態から処理を開始した場合には、その完了時にアプリケーションから見てデータベースの内容が正当な状態であることが保証されている(トランザクションの一貫性)。なお、トランザクションの一貫性を保証する手段として、共有ロック(参照ロック)と排他ロックによる排他制御がある。この排他制御のために、DBMSは、共有ロックと排他ロックの状態を管理するデータ構造である排他資源管理情報を保持する。非特許文献1には、トランザクションの原始性、トランザクションの一貫性、共有ロック、排他ロック、および排他資源管理情報(同文献中の"lock manager data structure")等が開示されている。
前述した並行処理の仕組みには、TSS方式(TSS : Time Sharing System)(例えば非特許文献2を参照)、優先度付きプリエンプティブ方式等がある。携帯電話機、カーナビゲーションシステム、デジタル家電等の情報処理装置にはスループットの向上よりも応答時間の短縮が求められる。このため、通常は優先度付きプリエンプティブ方式が採用される。
優先度付きプリエンプティブ方式では、各トランザクション処理に実行順序を表す値である優先度を付与した上で、次のルールに従って処理が行われる。
(a)その時点で最も優先度の高いトランザクション処理にCPU使用権を与える。
(b)同じ優先度のトランザクション処理は、先に処理要求されたトランザクション処理から順にCPU使用権を与える。
(c)より高い優先度のトランザクション処理が発生した場合は、より低い優先度のトランザクション処理がCPUを使用して処理実行中であっても、より高い優先度のトランザクション処理にCPU使用権を切り替える。
Gray,J. and Reuter,A. : "Transaction Processing : Concepts and Techniques", Morgan Kaufmann Publishers, 1993. Tanenbaum,A,S. and Woodhull,A. : "Operating Systems : Design and Implementation 2nd Edition", Chapter.2 "Process", Prentice Hall, 1997.
ところで、優先度付きプリエンプティブ方式によるトランザクションの並行制御において、緊急性や重要性が高いトランザクション処理に高い優先度を付与する方法がある。この方法では、トランザクション処理の実行中により優先度の高いトランザクション処理の要求が発生した場合、優先度の低いトランザクション処理が取得している資源を解放し、優先度の高いトランザクション処理が必要な資源を取得できるようにし、より高い優先度のトランザクション処理にCPU使用権を切り替える。これによれば緊急性や重要性の高い処理の応答時間を短くすることができる。例えば、携帯電話機では、通話アプリケーションが要求するトランザクション処理(音声着信の表示など)の方が音楽アプリケーションや電話帳アプリケーションが要求するトランザクション処理よりも高い優先度が付与され、音楽アプリケーションが要求したトランザクション処理の実行中に通話(音声着信)が起こった場合でも、通話アプリケーションが要求するトランザクション処理が実行される。これによれば音声着信への応答時間を短くすることができる。
しかしこの方法には次のような問題がある。すなわち、例えば音声着信の処理を行う通話アプリケーションと電話帳の参照や更新を行う電話帳アプリケーションを有する携帯電話において、電話帳アプリケーションが電話帳のデータを更新するトランザクション処理の実行中に音声着信が発生した場合には、電話帳アプリケーションが取得している資源を通話アプリケーションから要求されたトランザクション処理で使用できるようにするために電話帳アプリケーションのトランザクション処理を中止(ロールバック)する必要があり、これにより更新中の電話帳のデータが消失してしまうこととなる。
本発明はこのような課題に鑑みてなされたもので、優先度付きのトランザクション処理が発生した場合にデータの消失を防ぐことが可能なトランザクション並行制御方法、データベース管理システム、およびプログラムを提供することを目的とする。
上記目的を達成するための本発明のうちの一つは、アプリケーションにより使用されるデータベース管理システムにおけるトランザクションの並行制御方法であって、
データベース管理システムが、
第1のアプリケーションからトランザクション処理要求の指示を受けるとともに、トランザクション処理の識別子を含むトランザクション識別子情報前記データベース管理システムがトランザクション処理の実行中にデータを一時的に格納するメモリ領域であるデータベースキャッシュメモリのサイズを含むデータベース資源取得予定情報と、を受け取るステップと、
前記第1のアプリケーションと異なる第2のアプリケーションから指示されたトランザクション処理が実行中または中断中であるならば、前記第1のアプリケーションから入力されたトランザクション処理の優先度と、前記第2のアプリケーションから指示されたトランザクション処理の優先度とを比較するステップと、
前記比較の結果、前記第1のアプリケーションから指示されたトランザクション処理の優先度が、前記第2のアプリケーションから指示されたトランザクション処理の優先度よりも高い場合、前記第1のアプリケーションから指示されたトランザクション処理と実行中または中断中のトランザクション処理との間で、トランザクション処理の実行中に取得するデータベースオブジェクトの共有ロックおよび排他ロックの獲得要求、前記データベース資源取得予定情報に設定されたサイズの前記データベースキャッシュメモリの獲得要求、ならびに、トランザクション処理中にデータの書き込み及び読み出しを行うデータベースが格納されたI/Oデバイスの使用権の獲得要求のうち、いずれかの獲得要求の競合が発生するか否かを判定するステップと、
前記競合が発生するか否かの判定結果に基づいて、中断又は中止するトランザクション処理を決定するステップと、
前記中断または中止する対象のトランザクション処理の中断または中止がそれぞれ完了した後、前記データベース資源取得予定情報に設定されたサイズのデータベースキャッシュメモリ、リソースに対する共有ロック及び排他ロック、及びI/Oデバイスの使用権の取得を行い、前記第1のアプリケーションから指示されたトランザクション処理を実行するステップと、
前記第1のアプリケーションから指示されたトランザクション処理の実行が完了した後、中断しているトランザクション処理の実行を再開するステップと
を含むこととする。
その他、本願が開示する課題、およびその解決手段は、発明を実施するための最良の形態の欄、および図面により明らかとなる。
本発明によれば、優先度付きのトランザクション処理が発生した場合にデータの消失を防ぐことができる。
以下、図面を参照しつつ実施形態について説明する。図1は実施形態として説明するトランザクション並行制御方法の概要を説明する図である。同図に示すように、DBMS100のトランザクション処理要求受付部107は、アプリケーション102(第1のアプリケーション)からDBMS100に対するトランザクション処理の開始要求であるトランザクション処理要求を受け取る。なお、トランザクション処理要求は、例えばDBMS100が提供するトランザクション処理を開始させるコマンドや関数等のインタフェースを介して実行される。
トランザクション処理要求受付部107は、トランザクション処理要求とともにトランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および利用可能メモリ領域情報106を受け取る。トランザクション識別子情報103は、アプリケーション102から要求されたトランザクション処理をDBMS100内で一意に特定する情報である。優先度定義情報104は、アプリケーション102から要求されたトランザクション処理の優先度を記述した情報である。データベース資源取得予定情報105は、アプリケーション102から要求されたトランザクション処理の実行中に取得するデータベース資源の種類と値(所要量)を記述した情報である。利用可能メモリ領域情報106は、アプリケーション102から要求されたトランザクション処理を実行するために使用可能な、共有ヒープメモリ112内の一連のメモリ領域の先頭アドレスとサイズを記述した情報である。
DBMS100は、上記トランザクション処理要求を受け取った際、別のアプリケーション101(第2のアプリケーション)から要求されたトランザクション処理が実行中または中断中であった場合、受け付けた優先度定義情報104に記述されている、アプリケーション102から要求されたトランザクション処理の優先度と、アプリケーション101から要求されたトランザクション処理の優先度とを比較する。比較の結果、アプリケーション102から要求されたトランザクション処理の優先度の方が高い場合には、DBMS100のデータベース資源競合制御部108が、実行中および中断中のトランザクション処理が取得中のデータベース資源の種類および値と、アプリケーション102から要求されたトランザクション処理の実行時に取得するデータベース資源の種類および値に基づき、アプリケーション102から要求されたトランザクション処理とDBMS100において実行中および中断中のトランザクション処理との間のデータベース資源の競合を判定することにより、中断および中止するトランザクション処理を決定する。
なお、データベース資源の競合とは、DBMS100の複数の異なるトランザクション処理が同じデータベース資源の取得を要求することであり、一方のトランザクション処理がデータベース資源を取得しているため、別のトランザクション処理がデータベース資源を取得することができない状態をいう。
図1に示すデータベースタスク制御部109は、データベースタスク111に対し、トランザクション処理の中断および中止を指示する。データベースタスク111は指定されたトランザクション処理の中断および中止を完了する。トランザクション処理を割り当て可能なデータベースタスク111が存在する場合、データベースタスク制御部109はアプリケーション102から要求されたトランザクション処理の実行を開始する。トランザクション処理を割り当て可能なデータベースタスク111が存在しない場合、データベースタスク制御部109は利用可能メモリ領域情報106に共有ヒープメモリ112内のメモリ領域に関する記述があるか否かを確認する。記述がある場合、データベースタスク制御部109は記述されたメモリ領域にデータベースタスクを一時的に生成し、生成されたデータベースタスクがアプリケーション102から要求されたトランザクション処理の実行を開始する。記述がない場合、データベースタスク制御部109は中断中のトランザクション処理に割り当てられているデータベースタスク111のレジスタ情報、実行時スタック情報、および大域変数領域情報からなるコンテキスト117をコンテキスト退避領域113に退避する。退避が完了した後、データベースタスク111はアプリケーション102から要求されたトランザクション処理の実行を開始する。アプリケーション102から要求されたトランザクション処理の実行が完了した後、データベースタスク111は中断中のトランザクション処理の実行を再開する。
前述のデータベース資源は、DBMS100がトランザクション処理を実行する目的で使用するメモリ領域や、プログラム、ハードウェアデバイスなどの一般的な情報処理装置(計算機)のリソースであり、より具体的には、DBMS100がトランザクション処理中にデータを一時的に格納するメモリ領域であるデータベースキャッシュメモリ、DBMS100で複数のトランザクション処理を並行実行するために必要となるロック(共有ロックおよび排他ロック)を取得する対象となるデータベース116内のデータベースオブジェクトの排他、データベース116が存在するI/Oデバイスへのデータの書き込みと読み出しを行うためのI/Oデバイス使用権などがある。
データベースオブジェクトとは、データベース116に生成された各テーブルや、テーブルを構成する各行(row)などのデータベース116の構成要素である。データベースオブジェクトの排他とは、データベースオブジェクトをトランザクション処理で占有して使用するための権利(使用権)であり、共有ロックと排他ロックの2種類の排他が存在する。排他、共有ロック、および、排他ロックは、一般的なDBMSにおけるものと同じである。
DBMS100が使用できるデータベースキャッシュメモリのサイズの総量はDBMS100の開始時に予め決められている(例えばDBMS100が使用できるデータベースキャッシュメモリのサイズの総量が2MByteと決められている場合には、DBMS100で実行中および中断中のトランザクション処理が取得できるベースキャッシュメモリのサイズの合計値は2MByteを超えない)。
I/Oデバイス使用権とは、I/Oデバイスを使用してデータの書き込みと読み出しを行うために取得することが必要な権利である。
DBMS100において、トランザクション処理が実行中とは、トランザクション処理に含まれる問い合わせ処理を逐次実行している状態であることをいう。実行中のトランザクション処理は、データベース資源を取得している。
DBMS100において、トランザクション処理が中断中であるとは、トランザクション処理に含まれる問い合わせ処理の逐次実行を一時的に停止している状態であることをいう。中断中のトランザクション処理は、一部のデータベース資源を取得したままの状態であり、残りのデータベース資源は解放した状態である。中断中のトランザクション処理が取得したままのデータベース資源には、データベースキャッシュメモリやデータベースオブジェクトの排他などがある。中断中のトランザクション処理が解放するデータベース資源の一例としてI/Oデバイスがある。
中断中のトランザクション処理は、再開されるまで問い合わせ処理の逐次実行を停止する。トランザクション処理の再開とは、中断中のトランザクション処理に含まれる問い合わせ処理の逐次実行を、中断した時点のトランザクション処理の状態のままで開始することである。
トランザクション処理の中止とは、トランザクション処理に含まれる全ての問い合わせ処理が実行されなった状態に戻すことである。トランザクション処理の中止は、一般的なDBMSにおけるトランザクションのロールバック(rollback)と同様である。
図1に示すトランザクションプロファイル情報114は、アプリケーション102から要求されたトランザクション処理の内容を記述した情報である。トランザクション処理の内容には、トランザクション処理中にアクセスするテーブルの名称とトランザクション処理中に共有ロックまたは排他ロックを取得するデータベースオブジェクトの名称などが含まれる。また同図に示すデータベース構成情報115は、データベースの構成を記述した情報である。データベース116の構成には、データベース116が生成されているストレージデバイスの名称とデータベース内に生成されているテーブルの名称などが含まれる。
トランザクションプロファイル情報114およびデータベース構成情報115は、トランザクション処理の実行中に取得する予定のデータベース資源を決定する為に使用する。
なお、テーブルの名称、データベースオブジェクトの名称、および、ストレージデバイスの名称は、DBMS100内でそれぞれ、テーブル、データベースオブジェクト、ストレージデバイスを一意に識別できるものである。
データベースタスク111のレジスタ情報とは、データベースタスク111の動作中におけるレジスタの値のスナップショットである。レジスタは、情報処理装置(コンピュータ)が有するCPU(Central Processing Unit)の構成要素であり、CPUが処理中の計算の結果やCPUの状態を表す情報を一時的に格納するメモリである。
データベースタスク111の実行時スタック情報とは、データベースタスク111の動作中における実行時スタックのスナップショットである。実行時スタックとは、プログラム実行中の関数呼び出しの前後関係(順番)や、関数呼び出しのパラメータおよび戻り値などを記憶するメモリ領域である。
データベースタスク111の大域変数領域情報とは、データベースタスク111の動作中における大域変数領域のスナップショットである。大域変数領域とは、プログラム実行中の大域変数の値を記憶するメモリ領域である。
トランザクション処理の優先度とは、DBMS100において同時に複数のトランザクション処理の実行を要求された場合に、トランザクション処理を実行する順番を決めるための値である。全てのトランザクション処理は、必ず1つの優先度を持つ。優先度の値は優先度同士で比較できる値であれば、数値や文字列などの表現形式やデータ構造は問わない。
トランザクション処理の優先度の値の範囲は、DBMS100において予め決められている(例えば1から200までの間など)。トランザクション処理の優先度として取り得る値の総数は有限個である(例えば1から200までの間の整数値200個など)。
トランザクション処理の優先度は、以下の性質を持つ。
(a)同じ優先度のトランザクション処理は、先にトランザクション処理要求を受け付けた方から実行する。
(b)より高い優先度のトランザクション処理の実行を要求された場合は、より低い優先度のトランザクション処理の実行中であっても、より高い優先度のトランザクション処理の実行に切り替える。
なお、トランザクション処理の優先度の値は、トランザクション処理を要求するアプリケーション毎に固定されていてもよいし、アプリケーションの状態に基づいて、アプリケーションが優先度の値を変更して、DBMS100に処理を要求してもよい。またDBMS100がトランザクション処理を実行中に状態に基づいて優先度の値を変更してもよい。その場合、トランザクション処理の優先度の値は、トランザクション処理を要求したアプリケーションからの指示を受けて、DBMS100が行うものとする。
《システム構成》
図2に本実施形態のトランザクション並行制御方法の実施に用いられる情報処理装置226(コンピュータ)の一例を示している。同図に示すように、この情報処理装置226は、CPU200(CPU : Central Processing Unit、中央処理装置)、入力デバイス201、ディスプレイデバイス202、通信制御装置203、主記憶装置206、ストレージデバイス207、およびシステムバス205を備えている。なお、情報処理装置226の具体例として、携帯電話機、カーナビゲーションシステム、デジタル家電などがある。
CPU200は、本実施形態で使用する各プログラムを実行する。入力デバイス201は、キーボード、タッチパッド、タッチパネルなどのデバイスであり、アプリケーションプログラム211やデータベース管理システムプログラム212の実行などを指示するコマンドなどを入力する目的で使用する。入力デバイス201のハードウェアや構成は問わない。ディスプレイデバイス202は、例えばアプリケーションプログラム211やデータベース管理システムプログラム212の実行結果などを表示する目的で使用する。
通信制御装置203は、ネットワーク204を介した通信を行う目的で使用する。ネットワーク204は、通信制御装置203を介した通信を行うことが可能ならば、有線ネットワークや無線ネットワークなどのネットワークの物理的な媒体、スター型ネットワークやP2P(Peer-to-Peer)型ネットワークなどのネットワークの構成、およびSCSI(Small Computer System Interface)、Bluetooth、TCP/IP(Transmission Control Protocol/Internet Protocol)、CSMA/CD(Carrier Sense Multiple Access with Collision Detection)、GSM(Global System for Mobile Communications)などのプロトコルは問わない。
主記憶装置206は、各種プログラムと一時的なデータ格納を行う。ストレージデバイス207は、磁気ディスク装置やフラッシュメモリデバイスなどの記憶デバイスであり、データベースやデータベースに関する情報を格納する目的で使用する。ストレージデバイス207のハードウェアや構成は問わない。
主記憶装置206には、共有ヒープメモリ112、制御プログラム209、アプリケーションプログラム群210、データベース管理システムプログラム212、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および利用可能メモリ領域情報106が、保持される。
本実施形態で使用されるプログラムは、ネットワーク204から通信制御装置203を介して、主記憶装置206に設定される。
共有ヒープメモリ112は、本実施形態で使用する各プログラムの実行時に一時的に必要となるデータやプログラムを記憶する目的で使用する。
制御プログラム209は、本実施形態で使用される各プログラムを実行するための基本的な機能を提供する。
アプリケーションプログラム群210は、1つ以上のアプリケーションプログラム211の集まりである。アプリケーションプログラム211は、データベース管理システムプログラム212が提供する機能を利用することによって、ユーザにサービスを提供する。また、アプリケーションプログラム211は、データベース管理システムプログラム212に対して、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および利用可能メモリ領域情報106を入力し、トランザクション処理の実行を要求する。
データベース管理システムプログラム212は、トランザクション処理要求受付プログラム217、データベース資源競合制御プログラム218、データベースタスク制御プログラム219、データベースタスクプログラム221、データベース構成プログラム222、トランザクション処理要求キューリスト213、トランザクション状態管理情報214、および排他資源管理情報225を有する。データベース管理システムプログラム212は、アプリケーションプログラム211から、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および利用可能メモリ領域情報106を受け取る機能を実現する。
またデータベース管理システムプログラム212は、その実行に際し、トランザクション処理を実行する目的で、トランザクション処理の実行中に必要なデータを一時的に格納するメモリ領域であるデータベースキャッシュメモリを使用する。データベース管理システムプログラム212が使用可能なデータベースキャッシュメモリのサイズは、データベース管理システムプログラム212の処理を開始時に予め決まっている。データベース管理システムプログラム212が使用可能なデータベースキャッシュメモリのサイズは、データベース管理システムプログラム212から参照できる。
トランザクション処理要求受付プログラム217は、図1に示したトランザクション処理要求受付部107を実現するプログラムである。トランザクション処理要求受付部107は、アプリケーションプログラム211から入力されたトランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および利用可能メモリ領域情報106を受け取り、優先度定義情報104に記述された優先度の方がデータベース管理システムプログラム212で実行中または中断中のトランザクションの優先度よりも高い場合にデータベース資源競合制御部108に処理の開始を指示する。トランザクション処理要求受付部107によって行われる処理の詳細については図9で説明する。
データベース資源競合制御プログラム218は、図1に示したデータベース資源競合制御部108を実現するプログラムである。データベース資源競合制御部108は、トランザクション処理要求受付部107からデータベース資源取得予定情報105を受け取り、トランザクション状態管理情報224、排他資源管理情報225、およびデータベース構成情報115を参照し、アプリケーションプログラム211から処理を要求されたトランザクションと実行中および中断中のトランザクションとの間のデータベース資源の競合を判定し、中断および中止するトランザクションを決定し、データベースタスク制御部109に処理の開始を指示する。
データベース資源競合制御部108は、図1に示したデータベースタスク制御部109に対して、中断する対象のトランザクションと、中止する対象のトランザクションを指定する。また、データベース資源競合制御部108は、データベースタスク制御部109に対して、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および利用可能メモリ領域情報106を入力する。データベース資源競合制御部108によって行われる処理の詳細については図12とともに後述する。
データベースタスク制御プログラム219は、図1に示したデータベースタスク制御部109を実現する。データベースタスク制御部109は、データベース資源競合制御部108から、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、利用可能メモリ領域情報106、および、中断する対象のトランザクションと中止する対象のトランザクションの指定を受け取り、データベースタスク111に対して、指定されたトランザクションの中断と中止を指示し、アプリケーションプログラム211から要求されたトランザクション処理の開始を指示する。
また、データベースタスク制御部109は、アプリケーションプログラム211から要求されたトランザクション処理の完了メッセージを受信した後、図1に示したデータベースタスク111に対して、中断中のトランザクション処理の再開を指示する。データベースタスク制御部109によって行われる処理の詳細については、図13A、図13B、図13C、および、図13Dとともに後述する。
データベースタスクプログラム群220は、1つ以上のデータベースタスクプログラム221の集まりである。データベースタスクプログラム群220に含まれるデータベースタスクプログラム221の数は、データベース管理システムプログラム212の処理開始時に予め決められている。データベースタスクプログラム221の数は、アプリケーションプログラム群210の要件などに基づいて、情報処理装置226の開発者や運用者などが決定する。
データベースタスクプログラム221は、図1に示したデータベースタスク111を実現する。データベースタスク111は、データベースタスク制御部109からのトランザクション処理要求を受け、トランザクション処理を実行し、実行結果をアプリケーションプログラム211に送信する。またデータベースタスク111は、データベースタスク制御部109から、トランザクション処理の中止要求、中断要求、および再開要求を受け、それぞれ、トランザクション処理の中止、トランザクション処理の中断、およびトランザクション処理の再開を行う。データベースタスク111によって行われる処理(以下、データベースタスク処理と称する。)の詳細については図14A、図14Bとともに後述する。
データベース構成プログラム222は、アプリケーションプログラム211からデータベース構築の指示を受け、データベース116とデータベース構成情報115を生成する機能(以下、データベース構築部と称する。)を実現するプログラムである。この機能の詳細については図5とともに後述する。
トランザクション処理要求キューリスト223は、アプリケーションプログラム211からのトランザクション処理要求を、トランザクション処理要求の到着順に保持するデータ構造である。本実施形態におけるトランザクション処理要求キューリスト223の一例については図6とともに後述する。
トランザクション状態管理情報224は、データベース管理システムプログラム212で実行中または中断中のトランザクションに関する状態と、データベースタスク111に関する状態の情報を保持するデータ構造である。本実施形態におけるトランザクション状態管理情報224については図7とともに後述する。
排他資源管理情報225は、データベース116内のデータベースオブジェクトの共有ロックまたは排他ロックを取得しているトランザクションに関する情報を保持するデータ構造である。排他資源管理情報225は、トランザクション処理がデータベースオブジェクトの共有ロックまたは排他ロックを取得した時、および、データベースオブジェクトの共有ロックまたは排他ロックを解放した時に、データベースタスク111によって更新される。排他資源管理情報225は、ロックによって排他制御を行う一般的なDBMSが有する共有ロックまたは排他ロックの状態を管理する目的のデータ構造と同様である。
トランザクション識別子情報103は、トランザクションを一意に識別するためのトランザクション識別子を記述した定義情報であり、アプリケーションプログラム211からデータベース管理システムプログラム212に対して与えられる。
優先度定義情報104は、トランザクションの優先度を記述した定義情報であり、アプリケーションプログラム211からデータベース管理システムプログラム212に対して与えられる。
データベース資源取得予定情報105は、トランザクション処理を実行するため必要なデータベース資源の種類と値(所要量)を記述した定義情報であり、アプリケーションプログラム211からデータベース管理システムプログラム212に対して与えられる。本実施形態におけるデータベース資源取得予定情報105については図7とともに後述する。
利用可能メモリ領域情報106は、共有ヒープメモリ112内の一連のメモリ領域の先頭アドレスとサイズを記述した定義情報である。利用可能メモリ領域情報106により指定されたメモリ領域は、アプリケーションプログラム211からのトランザクション処理要求をデータベースタスク111に割り当てることができない場合に、データベースタスク制御部109が、データベースタスク111を一時的に生成する目的で使用される。本実施形態における利用可能メモリ領域情報106については図8A、図8Bとともに後述する。
ストレージデバイス207には、データベース116、コンテキスト退避領域113、トランザクションプロファイル情報114、およびデータベース構成情報115が保持される。
データベース116は、アプリケーションプログラム群210が使用するデータとデータベースに関する定義情報を格納する。
コンテキスト退避領域113は、データベースタスクプログラム221の実行時のレジスタ情報、実行時スタック情報、および、大域変数領域の情報からなるデータベースタスクコンテキストをトランザクション別に格納する領域である。データベースタスク制御部109が、コンテキスト退避領域113へのデータベースタスクコンテキストの格納、データベースタスクコンテキストの読み出し、および、データベースタスクコンテキストの削除を行う。
トランザクションプロファイル情報114は、トランザクション処理中にアクセスしたデータベース116内のテーブルの名称と、トランザクション処理中に共有ロックおよび排他ロックを取得したデータベース116内のデータベースオブジェクトの名称を、トランザクション毎に保持するデータ構造である。データベースタスク111は、トランザクションプロファイル情報114への情報の書き込みを行う。データベース資源競合制御部108は、トランザクションプロファイル情報114から情報を参照する。本実施形態におけるトランザクションプロファイル情報114については図11とともに後述する。
データベース構成情報115は、データベース116が生成されたストレージデバイス207の名称と、データベース116内に生成されているテーブルの名称を記述した定義情報である。データベース構成情報115は、データベース構築部とデータベースタスク111によって生成される。本実施形態におけるデータベース構成情報115については図4とともに後述する。
なお、以上のように、DBMS100が備える機能(トランザクション処理要求受付部107、データベース資源競合制御部108、データベースタスク制御部109等)は、いずれもCPU200がプログラムを実行することにより実現されるとして説明するが、これらの機能は必ずしもソフトウエアによって実現されなくてもよく、例えば各機能の全部または一部がハードウェアによって実現されるように構成してもよい。
《トランザクション並行制御処理》
図3はトランザクション並行制御処理の概要を説明するフローチャートである。以下、同図とともにトランザクション並行制御処理の概要について説明する。
まずアプリケーションプログラム211からの指示を受けると(ステップ300)、データベース構築部は、自身が利用可能なI/Oデバイス(例えば、ストレージデバイス207)にデータベース116を生成し、データベース構成情報115を生成する。なお、この処理(以下、データベース構築処理と称する。)の詳細については図5とともに後述する。
ステップ301では、トランザクション処理要求受付部107がアプリケーションプログラム211からトランザクション処理の受付の開始を指示するメッセージを受信したか否かを確認する。メッセージを受信している場合には(ステップ301のYES)、トランザクション処理要求受付部107は、アプリケーションプログラム211からトランザクション処理要求を受け付け、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および利用可能メモリ領域情報106を受け取り(ステップ302)、ステップ303に進む。メッセージを受信していない場合には(ステップ301のNO)、ステップ301を繰り返し行う。なお、S302の処理(以下、トランザクション処理要求受付処理と称する。)の詳細については図9とともに後述する。
ステップ303では、データベース資源競合制御部108が、データベース管理システムプログラム212で実行中および中断中のトランザクション処理が取得中のデータベース資源と、アプリケーション102から処理要求を受けたトランザクションを実行中に取得する予定のデータベース資源との間で、競合が発生するか否かを判定する。競合が発生すると判定した場合は、データベースタスク111で実行されているトランザクション処理を中止するか、または、中断するかを決定し、データベースタスク制御部109にデータベースタスクの制御の開始を指示する。なお、この処理(以下、データベース資源競合制御処理と称する。)の詳細については図12とともに後述する。
ステップ304では、データベースタスク制御部109が、データベースタスク111の制御を行う。このデータベースタスク111の制御には、トランザクション処理の開始、中断、中止、および、再開が含まれる。なお、この処理(以下、データベースタスク制御処理と称する。)の詳細については図13A、図13B、図13C、および、図13Dとともに後述する。
ステップ305では、トランザクション処理要求受付部107が、トランザクション処理の受付の停止を指示するメッセージを受信したか否かを確認する。メッセージを受信した場合には(ステップ305のYES)、処理を終了する。メッセージを受信していない場合には(ステップ305のNO)、ステップ304に戻る。
《データベース構成情報》
図4は、本実施形態におけるデータベース構成情報の一例である。データベース構成情報115は、データベース116が生成されているストレージデバイス207の名称と、データベース116内に生成されたテーブルの名称を記述した定義情報である。
図4で示したデータベース構成情報115は、データベース管理システムプログラム212が管理するデータベース116の名称を記述するフィールド(401)、データベースが生成されているI/Oデバイスの名称を記述するフィールド(402)、および、データベース内に生成されているテーブルの名称を記述するフィールド(403)を有する。
データベースの名称を記述するフィールド(401)には、データベース管理システムプログラム212が管理する全てのデータベースの名称を記述する。データベース管理システムプログラム212が管理するデータベースが1つの場合は、データベースの名称を1つだけ記述し、データベース管理システムプログラム212が複数個のデータベースを管理する場合は、複数個のデータベースの名称を全て記述する。
I/Oデバイスの名称を記述するフィールド(402)には、データベース116の名称を記述するフィールド(401)に記述されたデータベースが存在するI/Oデバイスの名称を記述する。
テーブルの名称を記述するフィールド(403)には、データベース116の名称を記述するフィールド(401)に記述されたデータベース内に生成された全てのテーブルの名称を記述する。
データベースの名称を記述するフィールド(401)、I/Oデバイスの名称を記述するフィールド(402)、および、テーブルの名称を記述するフィールド(403)は、データベースの名称を記述するフィールド(401)に記述されたデータベースの名称毎に三つ組を構成している。
すなわち、I/Oデバイスの名称を記述するフィールド(402)に記述されたI/Oデバイスの名称と、テーブルの名称を記述するフィールド(403)に記述されたテーブルの名称は、データベースの名称を記述するフィールド(401)に記述されたデータベースの名称と対応付けられており、何れのデータベース名称と対応付いているかが判定できるようになっている。
なお、データベース構成情報115は、データベース構成プログラム222によって生成される。データベース構成情報115のデータベースの名称を記述するフィールド(401)とI/Oデバイスの名称を記述するフィールド(402)は、データベース構成プログラム222によって情報が記述される。データベース構成情報115のデータベースの名称を記述するフィールド(401)は、データベースタスクプログラム221によって情報が記述される。
例えば、図4で示したデータベース構成情報には、以下のことが記述されている。すなわち、データベース管理システムプログラム212が管理するデータベースには、「電話帳データベース」と「音楽データベース」の2つが含まれる。「電話帳データベース」は、名称が「内部フラッシュメモリデバイスA」のI/Oデバイス内に生成されており、「音楽データベース」は、名称が「内部フラッシュメモリデバイスB」のI/Oデバイス内に生成されている。また、「電話帳データベース」には、「電話帳テーブル」と「発信履歴テーブル」の2つのテーブルが含まれる。「音楽データベース」には、「楽曲管理テーブル」が含まれる。
なお、図4には本実施形態の説明で最低限必要な情報のみを示している。データベース構成情報115にはその他の情報があってもよいし、データベースが生成されているストレージデバイス207の情報とデータベース内に生成されているテーブルの情報を記述できるならば、他の形式の情報で表現してもよい。また、図4に示すデータベース構成情報115は、入力デバイス201とディスプレイデバイス202を用いて、アプリケーションプログラム群210を介して、対話的に生成することもできる。
《データベース構築処理》
図5は図3で説明したデータベース構築処理の詳細を説明するフローチャートである。以下、同図とともにデータベース構築処理の詳細を説明する。
データベース構築部は、アプリケーションからの指示を受けると、自身が利用可能なI/Oデバイス(例えば、ストレージデバイス207)にデータベース116を構築する(ステップ500)。ここで、データベースの構築とは、アプリケーションプログラム211がデータベース116を使用して動作できるように、I/Oデバイス内にデータベース用の領域を確保し、データベース116に関する定義情報をデータベース用の領域内に生成することをいう。
次にデータベース構築部は、構築したデータベースの構成に関する情報に基づき、データベース構成情報115を生成する(ステップ501)。
《トランザクション処理要求キューリスト》
図6にトランザクション処理要求キューリスト223の一例を示している。トランザクション処理要求キューリスト223は、アプリケーションプログラム211からのトランザクション処理要求を、トランザクション処理要求の到着順に保持するデータ構造である。
同図に示すトランザクション処理要求キューリスト223は、トランザクション処理要求キューヘッダテーブル(601)とトランザクション処理要求キュー(604A、604B、604C)からなる。
トランザクション処理要求キューヘッダテーブル(601)は、優先度の値を記述するフィールド(602)とトランザクション処理要求キュー(604A、604B、および、604C)の先頭へのポインタを登録するフィールド(603)の2つの組からなるデータ構造の配列である。
トランザクション処理要求キューヘッダテーブル(601)は、データベース管理システムプログラム212が扱うトランザクション処理の優先度として取り得る値の総数と同じ数の配列要素を持つ。トランザクション処理要求キューヘッダテーブル(601)において、別々の配列要素の優先度の値を記述するフィールド(602)には、別々の優先度の値が登録される。
トランザクション処理要求キューの先頭へのポインタを登録するフィールド(603)には、トランザクション処理要求キューヘッダテーブル(601)の配列要素毎に対応する優先度の値を記述するフィールド(602)に登録された優先度の値を持つトランザクション処理のトランザクション処理要求キュー(604A、604B、および、604C)の先頭へのポインタを登録する。
トランザクション処理要求キューは、トランザクションキュー構造体(605A、605B)、トランザクション処理要求キューの先頭へのポインタを登録するフィールド(603)からトランザクション処理要求キュー(604A)の先頭のトランザクションキュー構造体(605A)へのポインタ(610)、トランザクションキュー構造体(605A、605B)間のポインタ(611)、および、トランザクション処理要求キュー(604A)の末尾のトランザクションキュー構造体(605B)からトランザクション処理要求キューの先頭へのポインタを登録するフィールド(603)へのポインタ(612)からなる。
トランザクション処理要求キューは、トランザクション処理要求キューを構成する全てのトランザクションキュー構造体が一方向のポインタによって接続されており、トランザクション処理要求キュー(604A)の先頭のトランザクションキュー構造体(605A)へのポインタ(610)から開始して、全てのトランザクションキュー構造体を辿ることができるようになっている。
トランザクション処理要求キューの先頭へのポインタを登録するフィールド(603)からポインタ(610)によって接続されるトランザクションキュー構造体を先頭のトランザクションキュー構造体(605A)という。ポインタ(612)により、トランザクション処理要求キューの先頭へのポインタを登録するフィールド(603)を参照しているトランザクションキュー構造体を末尾のトランザクションキュー構造体(605B)という。
トランザクション処理要求キューは、先頭のトランザクションキュー構造体(605A)に近いほど、アプリケーションプログラム211からのトランザクション処理要求の到着が早いことを表し、末尾のトランザクションキュー構造体(605B)に近いほど、アプリケーションプログラム211からのトランザクション処理要求の到着が遅いことを表す。
トランザクションキュー構造体は、トランザクション識別子情報を保持する領域(606A、606B)、優先度定義情報を保持する領域(607A、606B)、データベース資源取得予定情報を保持する領域(608A、608B)、および、利用可能メモリ領域情報(609A、609B)を保持する領域からなる。
トランザクション識別子情報を保持する領域(606A、606B)には、アプリケーションプログラム211からデータベース管理システムプログラム212に入力されたトランザクション識別子情報103が保持される。
優先度定義情報を保持する領域(607A、606B)には、アプリケーションプログラム211からデータベース管理システムプログラム212に入力された優先度定義情報104が保持される。
データベース資源取得予定情報を保持する領域(608A、608B)には、アプリケーションプログラム211からデータベース管理システムプログラム212に入力されたデータベース資源取得予定情報105が保持される。
利用可能メモリ領域情報(609A、609B)には、アプリケーションプログラム211からデータベース管理システムプログラム212に入力された利用可能メモリ領域情報106が保持される。
トランザクション処理要求キューリスト223は、トランザクション処理要求受付部107によって操作される。
例えば、図6で示したトランザクション処理要求キューリストは以下のことを表している。
データベース管理システムプログラム212が扱うトランザクション処理の優先度の値は、「1」から「200」までの範囲である。優先度の値が「100」のトランザクション処理が、アプリケーションプログラム群210からデータベース管理システムプログラム212に2個到着している。
優先度の値が「100」のトランザクション処理に関して、トランザクション識別子情報TID1(606A)を含むトランザクションキュー構造体に対応するトランザクション処理要求の方が、トランザクション識別子情報TID2(606B)を含むトランザクションキュー構造体(605B)に対応するトランザクション処理要求よりも先に到着した。
なお、トランザクション処理要求キューリスト223には、図6に示した以外の情報が含まれていてもよいし、アプリケーションプログラム211からデータベース管理システムプログラム212へのトランザクション処理要求を、トランザクション処理の優先度毎に到着順に保持できるならば他の形式の情報で表現してもよい。
《データベース資源取得予定情報》
図7にデータベース資源取得予定情報105の一例を示している。データベース資源取得予定情報105は、トランザクション処理を実行するため必要なデータベース資源の種類と値(所要量)を記述した定義情報である。
同図に示すデータベース資源取得予定情報105は、データベース資源の種類を記述するフィールド(701)と、データベース資源の値(所要量)を記述するフィールド(702)からなる。
データベース資源の種類を記述するフィールド(701)には、トランザクション処理を実行するために取得する必要があるデータベース資源の種類が記述される。データベース資源の種類を記述するフィールド(701)に記述されるデータベース資源の種類は、データベースキャッシュメモリなどである。
データベース資源の値(所要量)を記述するフィールド(702)には、データベース資源の種類を記述するフィールド(701)に記述されたデータベース資源の種類毎に、その値(所要量)を記述する。
例えば、図7で示したデータベース資源取得予定情報105は、アプリケーションプログラム211からデータベース管理システムプログラム212に対して要求されたトランザクション処理を実行するために、500KByteのデータベースキャッシュメモリを取得する必要があることを示す。
なお、図7のデータベース資源取得予定情報105には他の情報が含まれていてもよいし、トランザクション処理を実行するために取得する必要があるデータベース資源の種類と値(所要量)が記述できるならば、他の形式の情報で表現してもよい。データベース資源取得予定情報105は、アプリケーションプログラム211から与えられる。またデータベース資源取得予定情報105は、入力デバイス201とディスプレイデバイス202を用いて、アプリケーションプログラム群210を介して対話的に生成することもできる。
《利用可能メモリ領域情報》
図8A、図8Bに利用可能メモリ領域情報106の一例を示している。利用可能メモリ領域情報106は、共有ヒープメモリ112内の一連のメモリ領域の先頭アドレスとサイズを記述した定義情報である。
利用可能メモリ領域情報106は、共有ヒープメモリ112内のメモリアドレスを記述するフィールド(801A、801B)と、共有ヒープメモリ112内のメモリ領域のサイズを記述するフィールド(802A、802B)からなる。
メモリアドレスを記述するフィールド(801A、801B)には、共有ヒープメモリ112内の一連のメモリ領域の先頭アドレスを記述する。メモリ領域のサイズを記述するフィールド(802A、802B)には、共有ヒープメモリ112内の一連のメモリ領域のサイズを記述する。
例えば、図8Aで示した利用可能メモリ領域情報106は、アプリケーションプログラム211からDBMS100(データベース管理システムプログラム212)に対して要求されたトランザクション処理を実行するために、共有ヒープメモリ112内のアドレス0x12340000から始まる1024KByteの一連のメモリ領域を使用できることを示す。
また、図8Bで示した利用可能メモリ領域情報106は、アプリケーションプログラム211からDBMS100(データベース管理システムプログラム212)に対して要求されたトランザクション処理を実行するために、共有ヒープメモリ112内のメモリ領域を使用できないことを示す。図8B中の「n/a」は、使用不能(n/a : not available)の意味であり、メモリ領域を使用できないことを示す。利用可能メモリ領域情報106は、アプリケーションプログラム211から与えられる。
なお、図8A、図8Bには本実施形態の説明で最低限必要な情報を示している。利用可能メモリ領域情報106にはその他の情報が含まれていてもよいし、共有ヒープメモリ112内の一連のメモリ領域の先頭アドレスとサイズが記述できるならば、他の形式の情報で表現してもよい。また、図8A、図8Bに示す利用可能メモリ領域情報106は、入力デバイス201とディスプレイデバイス202を用いて、アプリケーションプログラム群210によって実現されるアプリケーションを介して、対話的に作成することもできる。
《トランザクション処理要求受付処理》
図9は図3で説明したトランザクション処理要求受付処理(ステップ302の処理)の詳細を説明するフローチャートである。
まずトランザクション処理要求受付部107は、トランザクション処理要求受付プログラム217が参照する変数である処理フェーズに「0」を設定する(ステップ900)。
ステップ901では、トランザクション処理要求受付部107は、アプリケーションプログラム211からトランザクション処理の実行を要求するメッセージを受信したか否かを確認する。トランザクション処理の実行を要求するメッセージを受信した場合には(ステップ901のYES)、ステップ902へ進む。トランザクション処理の実行を要求するメッセージを受信していない場合には(ステップ901のNO)、ステップ905に進む。
ステップ902では、トランザクション処理要求受付部107は、アプリケーションプログラム211から、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および、利用可能メモリ領域情報106を受け取る。
ステップ903では、トランザクション処理要求受付部107が、アプリケーションプログラム211から受け取ったトランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および、利用可能メモリ領域情報106を保持するトランザクションキュー構造体(TQ1とする)を生成する。
ステップ904では、トランザクション処理要求受付部107が、トランザクション処理要求キューリスト223の優先度定義情報104に記述された優先度の値に対応するトランザクション処理要求キューの末尾にトランザクションキュー構造体TQ1を追加する。ステップ904の後はステップ905に進む。
ステップ905では、トランザクション処理要求受付部107が、トランザクション処理要求受付プログラム217の処理フェーズが「0」であるか否かを確認する。「処理フェーズ」が「0」である場合は(ステップ905のYES)、ステップ906へ進む。処理フェーズが「0」でない場合は(ステップ905のNO)、ステップ913へ進む。
ステップ906では、トランザクション処理要求受付部107が、トランザクション処理要求キューリスト223の何れのトランザクション処理要求キューにもトランザクションキュー構造体が存在しないか(空か)否かを確認する。存在しない(空)の場合は(ステップ906のYES)、ステップ901へ戻る。存在する(空でない)場合は(ステップ906のNO)、ステップ907へ進む。
ステップ907では、トランザクション処理要求受付部107は、トランザクション処理要求受付プログラム217の処理フェーズに「1」を設定する。
ステップ908では、トランザクション処理要求受付部107は、トランザクションキュー構造体を1つ以上持つトランザクション処理要求キューのうち、最も高い優先度のトランザクション処理のトランザクション処理要求キューの先頭から、トランザクションキュー構造体(TQ2とする)を1つ取り外す。
ステップ909では、トランザクション処理要求受付部107は、トランザクション状態管理情報224を参照し、データベース管理システムプログラム212で実行中のトランザクション処理のうち、トランザクションキュー構造体TQ2が保持する優先度定義情報に記述された優先度よりも、優先度が低いトランザクション処理が存在するか否かを確認する。優先度が低いトランザクション処理が存在する場合には(ステップ909のYES)、ステップ912へ進む。優先度が低いトランザクション処理が存在しない場合は(ステップ909のNO)、ステップ910へ進む。
ステップ910では、トランザクション処理要求受付部107は、トランザクションキュー構造体TQ2を、トランザクションキュー構造体TQ2が保持する優先度定義情報に記述された優先度に対応するトランザクション処理要求キューの末尾に追加する。
ステップ911では、トランザクション処理要求受付部107は、トランザクション処理要求受付プログラム217の処理フェーズに「0」を設定し、ステップ901へ戻る。
ステップ912では、トランザクション処理要求受付部107は、データベース資源競合制御部108に、データベース資源の競合判定と中断又は中止するトランザクション処理の決定を指示し、ステップ901へ戻る。
ステップ913では、トランザクション処理要求受付部107は、トランザクション処理要求受付プログラム217の処理フェーズが「1」であるか否かを確認する。処理フェーズが「1」である場合は(ステップ913のYES)、ステップ914へ進む。処理フェーズが「1」でない場合は(ステップ913のNO)、ステップ919へ進む。
ステップ914では、トランザクション処理要求受付部107は、データベース資源競合制御部108から処理の実行が完了したことを通知するメッセージを受信したか否かを確認する。処理の実行が完了したことを通知するメッセージを受信した場合は(ステップ914のYES)、ステップ915へ進む。処理の実行が完了したことを通知するメッセージを受信していない場合は(ステップ914のNO)、ステップ916へ進む。
ステップ915では、トランザクション処理要求受付部107は、トランザクション処理要求受付プログラム217の処理フェーズを「0」と設定し、その後はステップ901へ戻る。
ステップ916では、トランザクション処理要求受付部107は、データベース資源競合制御部108からデータベース資源の競合の解決に失敗したことを通知するメッセージを受信したか否かを確認する。競合の解決に失敗したことを通知するメッセージを受信した場合は(ステップ916のYES)、ステップ917へ進む。競合の解決に失敗したことを通知するメッセージを受信していない場合は(ステップ916のNO)、ステップ919へ進む。
ステップ917では、トランザクション処理要求受付部107は、トランザクションキュー構造体TQ2を、トランザクションキュー構造体TQ2が保持する優先度定義情報に記述された優先度に対応するトランザクション処理要求キューの末尾に追加する。
ステップ918では、トランザクション処理要求受付部107は、トランザクション処理要求受付プログラム217の処理フェーズを「0」と設定し、ステップ901へ戻る。
ステップ919では、トランザクション処理要求受付部107は、トランザクション処理要求受付プログラム217の処理を停止する指示を受信したか否かを確認する。処理を停止する指示を受信した場合は(ステップ919のYES)、トランザクション処理要求受付プログラム217の処理を終了する。処理を停止する指示を受信していない場合はステップ919のNO)、ステップ901へ戻る。
なお、以上の説明において、トランザクション処理要求キューの末尾にトランザクションキュー構造体を追加するとは、次のことを意味する。すなわち、トランザクションキュー構造体を追加する前にトランザクション処理要求キューの末尾であったトランザクションキュー構造体からトランザクション処理要求キューヘッダテーブルへのポインタを取り除き、トランザクションキュー構造体を追加する前にトランザクション処理要求キューの末尾であったトランザクションキュー構造体から新たに追加するトランザクションキュー構造体へのポインタを生成し、新たに追加したトランザクションキュー構造体からトランザクション処理要求キューヘッダテーブルのフィールド603へのポインタを生成する。
またトランザクション処理要求キューの先頭からトランザクションキュー構造体TQ2を取り外すとは、次のことを意味する。すなわち、先頭のトランザクションキュー構造体からポインタで参照されているトランザクションキュー構造体をTQNとして、トランザクション処理要求キューヘッダテーブルのフィールド603からトランザクションキュー構造体TQ2へのポインタを削除し、トランザクションキュー構造体TQ2からトランザクションキュー構造体をTQNへのポインタを削除し、トランザクション処理要求キューヘッダテーブルのフィールド603からトランザクションキュー構造体TQNへのポインタを生成する。
《トランザクション状態管理情報》
図10にトランザクション状態管理情報224の一例を示している。トランザクション状態管理情報224は、実行中および中断中のトランザクションの状態を表す情報と、データベースタスク111の状態を表す情報を保持するデータ構造である。
同図に示すトランザクション状態管理情報224は、実行中トランザクション管理リスト(1001)、中断中トランザクション管理リスト(1002)、および、データベースタスク管理テーブル(1003)からなる。
実行中トランザクション管理リスト(1001)は、データベース管理システムプログラム212で実行中のトランザクション処理の状態に関する情報を保持するデータ構造である。
実行中トランザクション管理リスト(1001)は、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)、トランザクション状態管理構造体(1005、1006)、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)からトランザクション状態管理構造体へのポインタ(1017)、トランザクション状態管理構造体(1005、1006)間のポインタ(1018)、および、トランザクション状態管理構造体から実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)へのポインタ(1019)からなる。
実行中トランザクション管理リスト(1001)は、実行中トランザクション管理リストを構成する全てのトランザクション状態管理構造体が一方向のポインタによって接続されており、実行中トランザクション管理リストの先頭を参照するポインタ(1017)から開始して、全てのトランザクション状態管理構造体を辿ることができるようになっている。
中断中トランザクション管理リスト(1002)は、データベース管理システムプログラム212で中断中のトランザクション処理の状態に関する情報を保持するデータ構造である。
中断中トランザクション管理リスト(1002)は、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)、トランザクション状態管理構造体(1008)、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)からトランザクション状態管理構造体へのポインタ(1020)、トランザクション状態管理構造体間のポインタ、および、トランザクション状態管理構造体から中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)へのポインタ(1021)からなる。
中断中トランザクション管理リスト(1002)は、中断中トランザクション管理リストを構成する全てのトランザクション状態管理構造体が一方向のポインタによって接続されており、中断中トランザクション管理リストの先頭を参照するポインタ(1020)から開始して、全てのトランザクション状態管理構造体を辿ることができるようになっている。
トランザクション状態管理構造体(1005、1006、1008)は、トランザクション識別子を登録するフィールド1011、優先度の値を登録するフィールド1012、データベースキャッシュサイズを登録するフィールド1013、データベースタスク番号を登録するフィールド1014、中断要求元トランザクション識別子を登録するフィールド1015、および、再開可能フラグを登録するフィールド1016からなる。
トランザクション識別子を登録するフィールド(1011)には、実行中または中断中のトランザクション処理のトランザクション識別子を登録する。
優先度の値を登録するフィールド(1012)には、トランザクション識別子を登録するフィールド(1011)に登録されたトランザクション識別子のトランザクション処理の優先度の値を登録する。
データベースキャッシュサイズを登録するフィールド(1013)には、トランザクション識別子を登録するフィールド(1011)に登録されたトランザクション識別子のトランザクション処理が取得しているデータベースキャッシュメモリのサイズを登録する。
データベースタスク番号を登録するフィールド(1014)には、トランザクション識別子を登録するフィールド(1011)に登録されたトランザクション識別子のトランザクション処理が割り当てられているデータベースタスクのデータベースタスク番号を登録する。
データベースタスク番号を登録するフィールド(1014)に「0」が登録されている場合、実行中のトランザクション処理ならば、共有ヒープメモリ112内の一連のメモリ領域に生成されたデータベースタスクに割り当てられていることを表し、中断中のトランザクション処理ならば、トランザクション処理が何れのデータベースタスクにも割り当てられていないことを表す。
中断要求元トランザクション識別子を登録するフィールド(1015)には、トランザクション識別子を登録するフィールド(1011)に登録されたトランザクション識別子のトランザクション処理を中断させる原因となったトランザクション処理のトランザクション識別子が登録される。トランザクション処理が実行中の場合は、「0」を登録する。
再開可能フラグを登録するフィールド(1016)には、中断中のトランザクション処理を再開することができるか否かを表すフラグ(「再開可能」または「再開不可」)を登録する。トランザクション処理が実行中の場合は、「0」を登録する。
データベースタスク管理テーブル(1003)は、データベースタスクに付与された番号であるデータベースタスク番号を登録するフィールド(1009A、1009B、1009C)とトランザクション識別子を登録するフィールド(1010A、1010B、1010C)の2つの組からなるデータ構造の配列である。
データベースタスク管理テーブル(1003)は、データベースタスクプログラム群220に含まれるデータベースタスクプログラム221の数と同じ数の配列要素を持つ。データベースタスクプログラム群220に含まれるデータベースタスクプログラム221の数はデータベース管理システムプログラム212の処理開始時に予め決められているので、データベースタスク管理テーブル(1003)が持つ配列要素の数は、データベース管理システムプログラム212の処理開始時に予め決められている。
データベースタスク番号を登録するフィールド(1009A、1009B、1009C)には、データベース管理システムプログラム212内でデータベースタスクを一意に識別するデータベースタスク番号が登録される。データベースタスク管理テーブル(1003)において、別々の配列要素のデータベースタスク番号を記述するフィールドには、別々のデータベースタスク番号が登録される。
トランザクション識別子を登録するフィールド(1010A、1010B、1010C)には、各配列要素内のデータベースタスク番号を登録するフィールドに登録されたデータベースタスク番号に該当するデータベースタスク111に割り当てられたトランザクション処理のトランザクション識別子を登録する。
データベースタスク番号は、「0」を除いた値(文字列や数値など)であり、データベース管理システムプログラム212内でデータベースタスクを一意に識別することができるならば、表現形態やデータ構造は問わない。データベース管理システムプログラム212の各データベースタスクに対応するデータベースタスク番号は、データベース管理システムプログラム212の処理開始時に予め決められている。
例えば、図10で示したトランザクション処理状態管理情報224は、以下のことを表している。
データベースタスク群110には、データベースタスク番号が「1」、「2」、および、「3」で表される3つのデータベースタスク111がある。データベースタスク番号が「1」のデータベースタスク111は、トランザクション識別子が「telephone_transaction_1」で表されるトランザクション処理に割り当てられており、データベースタスク番号が「2」のデータベースタスク111は、トランザクション識別子が「musicapp_transaction_2」で表されるトランザクション処理に割り当てられており、データベースタスク番号が「2」のデータベースタスク111には、トランザクション処理が割り当てられていない。
現在実行中のトランザクション処理が2つある。実行中のトランザクション処理は、トランザクション識別子が「telephone_transaction_1」で表されるトランザクション処理とトランザクション識別子が「telephone_transaction_1」で表されるトランザクション処理である。
トランザクション識別子が「telephone_transaction_1」で表されるトランザクション処理は、優先度の値が「100」であり、50KByteのデータベースキャッシュメモリを取得しており、データベースタスク番号が「1」で表されるデータベースタスク111に割り当てられている。
トランザクション識別子が「musicapp_transaction_2」で表されるトランザクション処理は、優先度の値が「80」であり、1024KByteのデータベースキャッシュメモリを取得しており、データベースタスク番号が「2」で表されるデータベースタスク111に割り当てられている。
現在中断中のトランザクション処理が1つある。中断中のトランザクション処理は、トランザクション識別子が「gameapp_transaction_1」で表されるトランザクション処理である。
トランザクション識別子が「gameapp_transaction_1」で表されるトランザクション処理は、優先度の値が「80」であり、50KByteのデータベースキャッシュメモリを取得しており、データベースタスク111には割り当てられていない。また、トランザクション識別子が「gameapp_transaction_1」で表されるトランザクション処理は、トランザクション識別子が「telephone_transaction_1」で表されるトランザクション処理によって中断されている。トランザクション識別子が「gameapp_transaction_1」で表されるトランザクション処理は、再開できる状態でない。
なお、図10に示すトランザクション状態管理情報224は、本実施形態の説明で最低限必要な情報を示したものに過ぎない。トランザクション状態管理情報224にはその他の情報が含まれていてもよいし、実行中および中断中のトランザクション処理の状態に関する情報と、データベースタスク111の状態に関する情報を保持できるならば、他の形式の情報で表現してもよい。
《トランザクションプロファイル情報》
図11にトランザクションプロファイル情報114の一例を示している。同図に示すトランザクションプロファイル情報114は、トランザクション処理中にアクセスしたデータベース116内のテーブルの名称と、トランザクション処理中に共有ロックおよび排他ロックを取得したデータベース116内のデータベースオブジェクトの名称を、トランザクション毎に保持する。
同図に示すトランザクションプロファイル情報114は、トランザクション識別子を記述するフィールド(1101)、トランザクション処理の実行時にアクセスする対象のテーブルを記述するフィールド(1102)、および、トランザクション処理の実行時に排他を取得するデータベースオブジェクトを記述するフィールド(1103)からなる。
トランザクション識別子を記述するフィールド(1101)には、データベースタスク群110に含まれるデータベースタスク111から要求されたトランザクション処理のトランザクション識別子を記述する。
アクセスする対象のテーブルを記述するフィールド(1102)には、トランザクション識別子を記述するフィールド(1101)に記述されたトランザクション識別子に対応するトランザクション処理の実行中にアクセスする対象のテーブルの名称を記述する。
排他を取得するデータベースオブジェクトを記述するフィールド(1103)は、共有ロックを取得するデータベースオブジェクトを記述するフィールド(1104)と排他ロックを取得するデータベースオブジェクトを記述するフィールド(1105)からなる。
共有ロックを取得するデータベースオブジェクトを記述するフィールド(1104)には、トランザクション識別子を記述するフィールド(1101)に記述されたトランザクション識別子に対応するトランザクション処理の実行中に共有ロックを取得するデータベースオブジェクトを記述する。
排他ロックを取得するデータベースオブジェクトを記述するフィールド(1105)は、トランザクション識別子を記述するフィールド(1101)に記述されたトランザクション識別子に対応するトランザクション処理の実行中に排他ロックを取得するデータベースオブジェクトを記述する。
トランザクション識別子を記述するフィールド(1101)、トランザクション処理の実行時にアクセスする対象のテーブルを記述するフィールド(1102)、共有ロックを取得するデータベースオブジェクトを記述するフィールド(1104)、および、排他ロックを取得するデータベースオブジェクトを記述するフィールド(1105)は、トランザクション識別子を記述するフィールド(1101)に記述されたトランザクション識別子毎に四つ組を構成している。
すなわち、トランザクション処理の実行時にアクセスする対象のテーブルを記述するフィールド(1102)に記述されたテーブルの名称、共有ロックを取得するデータベースオブジェクトを記述するフィールド(1104)に記述されたデータベースオブジェクトの名称、および、排他ロックを取得するデータベースオブジェクトを記述するフィールド(1105)に記述されたデータベースオブジェクトの名称は、トランザクション識別子を記述するフィールド(1101)に記述されたトランザクション識別子と対応付けられており、何れのトランザクション識別子と対応付いているかが判定できるようになっている。
なお、トランザクションプロファイル情報114は、データベースタスク111により、各フィールドの情報が記述される。
図11で示したトランザクションプロファイル情報には、以下のことが記述されている。トランザクション識別子が「telephone_tranasaction_1」で表されるトランザクション処理は、トランザクション処理の実行中に、「電話帳テーブル」と「発信履歴テーブル」へのアクセスを行い、「電話帳テーブル」に対して共有ロックを取得し、「発信履歴テーブル」に対して排他ロックを取得する。
トランザクション識別子が「telephone_tranasaction_2」で表されるトランザクション処理は、トランザクション処理の実行中に、「電話帳テーブル」へのアクセスを行い、「電話帳テーブル」に対して共有ロックを取得する。
図11のトランザクションプロファイル情報114には本実施形態の説明で最低限必要な情報を示したが、その他の情報が含まれていてもよい。またトランザクション処理中にアクセスしたテーブルの情報とトランザクション処理中に共有ロックおよび排他ロックを取得したデータベースオブジェクトの情報をトランザクション毎に保持できるならば、他の形式の情報で表現してもよい。
《データベース資源競合制御処理》
図12はデータベース資源競合制御処理ステップ303の詳細を説明するフローチャートである。
まずステップ1200において、データベース資源競合制御部108は、トランザクション処理要求受付部107から処理開始の指示を受け、中止する対象となるトランザクション処理を保持する中止対象トランザクションリスト(LCとする)と、中断する対象となるトランザクション処理を保持する中断対象トランザクションリスト(Lステップとする)を夫々初期化する。なお、LCとLSは、トランザクション処理を要素とする空の集合である。
続くステップ1201では、データベース資源競合制御部108は、トランザクション処理要求受付部107から、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および、利用可能メモリ領域情報106を受け取る。
ステップ1202では、データベース資源競合制御部108は、トランザクション識別子情報103に記述されたトランザクション識別子をTとする。
ステップ1203では、データベース資源競合制御部108は、トランザクションプロファイル情報114のトランザクション識別子を記述するフィールド(1101)に、トランザクション識別子Tが存在するか否かを確認する。トランザクション識別子Tが存在する場合は(ステップ1203のYES)、ステップ1204へ進む。トランザクション識別子Tが存在しない場合はステップ1203のNO)、ステップ1205へ進む。
ステップ1204では、データベース資源競合制御部108は、トランザクション識別子Tのトランザクション処理を実行中に取得するデータベーオブジェクトの共有ロックと、実行中または中断中のトランザクション処理が取得中のデータベースオブジェクトのロックとの間で、競合が発生するか否かを判定し、競合が発生する場合は競合を解決するために中断または中止する必要があるトランザクション処理を決定する。なお、この処理(以下、共有ロック競合制御処理と称する。)の詳細については図15とともに後述する。その後、ステップ1206に進む。
ステップ1205では、データベース資源競合制御部108は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)と中断中トランザクション管理リスト(1002)が保持するトランザクション状態管理構造体のうち、優先度の値(1012)が、優先度定義情報104に記述された優先度よりも小さい(優先度が低い)トランザクション状態管理構造体のトランザクション識別子(1011)に対応するトランザクション処理を、全てLCに追加し、ステップ1213へ進む。
ステップ1206では、データベース資源競合制御部108は、トランザクション識別子Tのトランザクション処理を実行中に取得するデータベーオブジェクトの排他ロックと、実行中または中断中のトランザクション処理が取得中のデータベースオブジェクトのロックとの間で、競合が発生するか否かを判定し、競合が発生する場合は競合を解決するために中断または中止する必要があるトランザクション処理を決定する。なお、この処理(以下、排他ロック競合制御処理と称する。)の詳細については図16とともに後述する。
ステップ1207では、データベース資源競合制御部108は、トランザクション識別子Tのトランザクション処理と、実行中および中断中のトランザクション処理との間で、データベースキャッシュメモリの競合が発生するか否かを判定し、競合が発生する場合は競合を解決するために中止する必要があるトランザクション処理を決定する。なお、この処理(以下、データベースキャッシュメモリ競合制御処理と称する。)の詳細については図17とともに後述する。
ステップ1208では、データベース資源競合制御部108は、データベースキャッシュメモリの競合解決に失敗したことを示すフラグがONであるか否かを確認する。データベースキャッシュメモリの競合解決に失敗したことを示すフラグがONである場合は(ステップ1208のYES)、ステップ1215へ進む。フラグがONでない(OFFである)場合は(ステップ1208のNO)、ステップ1209へ進む。
ステップ1215では、データベース資源競合制御部108は、トランザクション処理要求受付部107に対して、データベース資源の競合の解決に失敗したことを通知するメッセージを送信し、処理を終了する。
ステップ1209では、データベース資源競合制御部108は、トランザクション識別子Tのトランザクション処理と、実行中および中断中のトランザクション処理との間で、I/Oデバイス使用権の競合が発生するか否かを判定し、競合が発生する場合は競合を解決するために中断または中止する必要があるトランザクション処理を決定する。なお、この処理(以下、I/Oデバイス競合制御処理と称する。)の詳細については図18とともに後述する。
ステップ1210では、データベース資源競合制御部108は、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)に、トランザクション識別子を登録するフィールドに「0」が登録されている配列要素が存在するか(トランザクションを未割り当てのデータベースタスクがあるか)否かを確認する。該当する配列要素が存在する(トランザクションを未割り当てのデータベースタスクがある)場合は(ステップ1210のYES)、ステップ1213へ進む。該当する配列要素が存在しない(トランザクションを未割り当てのデータベースタスクがない)場合は(ステップ1210のNO)、ステップ1211へ進む。
ステップ1211では、データベース資源競合制御部108は、集合LCとLSが共に空集合(要素が存在しない)か否かを確認する。共に空集合の場合は(ステップ1211でYES)、S1212へ進む。どちらかの集合が空集合でない場合は(ステップ1211でNO)、ステップ1213へ進む。
ステップ1212では、データベース資源競合制御部108は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)が保持するトランザクション状態管理構造体のうち、優先度の値が最も小さい(優先度が低い)トランザクション状態管理構造体に登録されているトランザクション識別子に対応するトランザクション処理を、LSに追加する。
ステップ1213では、データベース資源競合制御部108は、中止対象トランザクションリストLC、中断対象トランザクションリストLS、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および、利用可能メモリ領域情報106をデータベースタスク制御部109に入力し、データベースタスク制御部109に処理の開始を指示する。
ステップ1214では、データベース資源競合制御部108は、データベース資源競合制御プログラムの処理の完了を通知するメッセージを、トランザクション処理要求受付部107に送信し、処理を終了する。
《データベースタスク制御処理》
図13A、図13B、図13C、および、図13Dは、図3で説明したデータベースタスク制御処理(ステップ304の処理)の詳細を説明するフローチャートである。
まずステップ1300において、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「0」を設定する。
ステップ1301では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズが「0」であるか否かを確認する。処理フェーズが「0」である場合は(ステップ1301のYES)、ステップ1302へ進む。処理フェーズが「0」でない場合は(ステップ1301のNO)、図13Bのステップ1323へ進む。
ステップ1302では、データベースタスク制御部109は、データベース資源競合制御部108から、データベースタスク制御部109の処理の開始を指示するメッセージを受信したか否かを確認する。処理の開始を指示するメッセージを受信した場合は(ステップ1302のYES)、ステップ1303へ進む。処理の開始を指示するメッセージを受信していない場合は(ステップ1302のNO)、ステップ1305へ進む。
ステップ1303では、データベースタスク制御部109は、中止する対象となるトランザクション処理を保持する中止対象トランザクションリスト(LC)、中断する対象となるトランザクション処理を保持する中断対象トランザクションリスト(LS)、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および、利用可能メモリ領域情報106を、データベース資源競合制御部108から受け取る。
ステップ1304では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「1」を設定し、ステップ1301へ戻る。
ステップ1305では、データベースタスク制御部109は、データベースタスク111からトランザクション処理(TEとする)の完了を通知するメッセージを受信したか否かを確認する。該当メッセージを受信した場合は(ステップ1305のYES)、ステップ1306へ進む。該当メッセージを受信していない場合は(ステップ1305のNO)、ステップ1310へ進む。
ステップ1306では、データベースタスク制御部109は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)から、トランザクション処理TEに対応するトランザクション状態管理構造体(STEとする)を取り除く。
ステップ1307では、データベースタスク制御部109は、トランザクション状態管理構造体STEに登録されているデータベースタスク番号の値をDBN1とする。
ステップ1308では、データベースタスク制御部109は、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)のデータベースタスク番号に登録されている値がDBN1と一致する二つ組のトランザクション識別子を登録するフィールド(1010)に「0」を登録する。
ステップ1309では、データベースタスク制御部109は、トランザクション状態管理情報224の中断中トランザクション管理リスト(1002)が保持するトランザクション状態管理構造体のうち、中断要求元トランザクション識別子に登録された値が、トランザクション処理TEのトランザクション識別子と一致するもの全て検出し、それらのトランザクション状態管理構造体の再開可能フラグに「再開可能」を設定し、ステップ1301へ戻る。
ステップ1310では、データベースタスク制御部109は、トランザクション状態管理情報224の中断中トランザクション管理リスト(1002)が保持するトランザクション状態管理構造体のうち、再開可能フラグが「再開可能」のトランザクション状態管理構造体が存在するか否かを確認する。該当するトランザクション状態管理構造体が存在する場合は(ステップ1310のYES)、ステップ1311へ進む。該当するトランザクション状態管理構造体が存在しない場合は(ステップ1310のNO)、ステップ1301へ戻る。
ステップ1311では、データベースタスク制御部109は、トランザクション状態管理情報224の中断中トランザクション管理リスト(1002)が保持する、再開可能フラグが「再開可能」のトランザクション状態管理構造体のうち、優先度の値が最も大きい(優先度が高い)トランザクション状態管理構造体(STHとする)を検出する。
ステップ1312では、データベースタスク制御部109は、トランザクション状態管理構造体STHのデータベースタスク番号を登録するフィールド(1014)に「0」が登録されているか否かを確認する。「0」が登録されている場合は(ステップ1312でYES)、ステップ1313へ進む。「0」が登録されていない場合は(ステップ1312でNO)、ステップ1314へ進む。
ステップ1313では、データベースタスク制御部109は、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)に、トランザクション識別子を登録するフィールドに「0」が登録されている配列要素が存在するか(トランザクションを未割り当てのデータベースタスクがあるか)否かを確認する。該当する配列要素が存在する(トランザクションを未割り当てのデータベースタスクがある)場合は(ステップ1313のYES)、ステップ1316へ進む。該当する配列要素が存在しない(トランザクションを未割り当てのデータベースタスクがない)場合は(ステップ1313のNO)、ステップ1301へ戻る。
ステップ1314では、データベースタスク制御部109は、トランザクション状態管理構造体STHに登録されているデータベースタスク番号に対応するデータベースタスクに対して、トランザクション状態管理構造体STHに登録されているトランザクション識別子に対応するトランザクション処理の再開を指示する。
ステップ1315では、データベースタスク制御部109は、トランザクション状態管理構造体STHを中断中トランザクション管理リスト(1002)から取り除き、実行中トランザクション管理リスト(1001)に追加し、ステップ1301へ戻る。
ステップ1316では、データベースタスク制御部109は、トランザクション状態管理構造体STHに登録されているトランザクション識別子に対応するトランザクション処理をTRとする。
ステップ1317では、データベースタスク制御部109は、コンテキスト退避領域113からトランザクション処理TRと対応するデータベースタスクコンテキストを読み出し、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)でトランザクション識別子を登録するフィールドに「0」が登録されている配列要素のデータベースタスク番号に対応するデータベースタスクに、読み出したデータベースタスクコンテキストを復旧する。
ステップ1318では、データベースタスク制御部109は、トランザクション処理TRと対応するデータベースタスクコンテキストをコンテキスト退避領域113から削除する。
ステップ1319では、データベースタスク制御部109は、トランザクション処理TRと対応するデータベースタスクコンテキストを復旧したデータベースタスクに対して、トランザクション処理TRの再開を指示する。
ステップ1320では、データベースタスク制御部109は、トランザクション状態管理構造体STHを中断中トランザクション管理リスト(1002)から取り除き、実行中トランザクション管理リスト(1001)に追加する。
ステップ1321では、データベースタスク制御部109は、トランザクション状態管理構造体STHのデータベースタスク番号を登録するフィールド(1014)に、トランザクション処理TRと対応するデータベースタスクコンテキストを復旧したデータベースタスクのデータベースタスク番号(DBN2とする)を登録する。
ステップ1322では、データベースタスク制御部109は、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)のデータベースタスク番号を登録するフィールド(1009)に登録された値がDBN2と一致する配列要素のトランザクション識別子を登録するフィールド(1010)に、トランザクション処理TRのトランザクション識別子を登録し、ステップ1301へ戻る。
ステップ1323では、データベースタスク制御部109の処理フェーズが「1」であるか否かを確認する。処理フェーズが「1」である場合は(ステップ1323のYES)、ステップ1324へ進む。処理フェーズが「1」でない場合は(ステップ1323のNO)、図13Dのステップ1367へ進む。
図13Bのステップ1324では、データベースタスク制御部109は、データベース資源競合制御部108から受け取った中止する対象となるトランザクション処理を保持する中止対象トランザクションリストLCが空(トランザクション処理が含まれていない)か否かを確認する。空の(トランザクション処理が含まれていない)場合は(ステップ1324のYES)、図13Cのステップ1348へ進む。空でない(トランザクション処理が含まれている)場合は(ステップ1324のNO)、ステップ1325へ進む。
ステップ1325では、データベースタスク制御部109は、中止対象トランザクションリストLCから、中止する対象となるトランザクション処理(TCとする)を一つ選択する。
ステップ1326では、データベースタスク制御部109は、トランザクション状態管理情報224を参照し、トランザクション処理TCのトランザクション識別子を、トランザクション識別子を記述するフィールド(1011)に登録されているトランザクション状態管理構造体が中断中トランザクション管理リスト(1002)に存在するか(トランザクション処理TCが中断中か)否かを確認する。該当するトランザクション状態管理構造体が存在する(トランザクション処理TCが中断中の)場合は(ステップ1326のYES)、ステップ1329へ進む。該当するトランザクション状態管理構造体が存在しない(トランザクション処理TCが中断中でない)場合は(ステップ1326のNO)、ステップ1327へ進む。
ステップ1327では、データベースタスク制御部109は、トランザクション処理TCのトランザクション識別子を持つトランザクション状態管理構造体のデータベースタスク番号を登録するフィールドに登録されているデータベース番号に対応するデータベースタスクに対して、トランザクション処理TCの中止を指示する。
ステップ1328では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「2」を設定し、ステップ1301へ戻る。
ステップ1329では、データベースタスク制御部109は、トランザクション処理TCのトランザクション識別子を持つトランザクション状態管理構造体のデータベースタスク番号を登録するフィールド(1014)に「0」が登録されているか否かを確認する。フィールド(1014)に「0」が登録されている場合は(ステップ1329のYES)、ステップ1330へ進む。フィールド(1014)に「0」が登録されていない場合は(ステップ1329のNO)、ステップ1331へ進む。
ステップ1330では、データベースタスク制御部109は、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)に、トランザクション識別子を登録するフィールドに「0」が登録されている配列要素が存在するか否かを確認する。該当する配列要素が存在する場合は(ステップ1330のYES)、ステップ1332へ進む。該当する配列要素が存在しない場合は(ステップ1330のNO)、ステップ1331へ進む。
ステップ1331では、データベースタスク制御部109は、トランザクション状態管理情報224を参照し、データベースタスク管理テーブル(1003)の各配列要素のトランザクション識別子を登録するフィールド(1010)に登録されているトランザクション識別子を、トランザクション識別子を登録するフィールド(1011)に持つトランザクション状態管理構造体の中で、優先度の値(1012)が最も小さい(優先度が低い)トランザクション状態管理構造体を検出し、そのトランザクション状態管理構造体に登録されているトランザクション識別子に対応するトランザクション処理をTLとし、ステップ1337へ進む。
ステップ1337では、データベースタスク制御部109は、トランザクション状態管理情報224を参照し、トランザクション処理TLのトランザクション識別子を持つトランザクション状態管理構造体が、中断中トランザクション管理リストに含まれているか(トランザクション処理TLが中断中か)否かを確認する。該当するトランザクション状態管理構造体が存在する(トランザクション処理TLが中断中の)場合は(ステップ1337のYES)、ステップ1338へ進む。該当するトランザクション状態管理構造体が存在しない(トランザクション処理TLが中断中でない)場合は(ステップ1337のNO)、ステップ1345へ進む。
ステップ1332では、データベースタスク制御部109は、コンテキスト退避領域113からトランザクション処理TCと対応するデータベースタスクコンテキストを読み出し、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)でトランザクション識別子を登録するフィールドに「0」が登録されている配列要素のデータベースタスク番号に対応するデータベースタスクに、読み出したデータベースタスクコンテキストを復旧する。
ステップ1333では、データベースタスク制御部109は、トランザクション処理TCと対応するデータベースタスクコンテキストをコンテキスト退避領域113から削除する。
ステップ1335では、データベースタスク制御部109は、トランザクション処理TCと対応するデータベースタスクコンテキストを復旧したデータベースタスクに対して、トランザクション処理TRの再開を指示する。
ステップ1335では、データベースタスク制御部109は、トランザクション処理TRの再開を指示したデータベースタスクに対して、トランザクション処理TRの中止を指示する。
ステップ1336では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「2」を設定し、ステップ1301へ戻る。
ステップ1338では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「3」を設定する。
ステップ1339では、データベースタスク制御部109は、トランザクション処理TLのトランザクション識別子を持つトランザクション状態管理構造体のデータベースタスク番号を登録するフィールド(1014)に登録されたデータベースタスク番号に対応するデータベースタスク(DBとする)のデータベースタスクコンテキストを、コンテキスト待機領域227に退避する。
ステップ1340では、データベースタスク制御部109は、データベースタスクDBを初期化する。
ステップ1341では、データベースタスク制御部109は、コンテキスト退避領域113からトランザクション処理TCと対応するデータベースタスクコンテキストを読み出し、データベースタスクDBにデータベースタスクコンテキストを復旧する。
ステップ1342では、データベースタスク制御部109は、トランザクション処理TCと対応するデータベースタスクコンテキストをコンテキスト退避領域113から削除する。
ステップ1343では、データベースタスク制御部109は、データベースタスクDBに対して、トランザクション処理TRの再開を指示する。
ステップ1344では、データベースタスク制御部109は、データベースタスク制御部109は、データベースタスクDBに対して、トランザクション処理TRの中止を指示し、ステップ1301へ戻る。
ステップ1345では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「4」を設定する。
ステップ1346では、データベースタスク制御部109は、トランザクション処理TLのトランザクション識別子を持つトランザクション状態管理構造体のデータベースタスク番号を登録するフィールド(1014)に登録されたデータベースタスク番号に対応するデータベースタスクに対して、トランザクション処理TLの中断を指示する。
ステップ1347では、データベースタスク制御部109は、データベースタスク111から、トランザクション処理TLの中断完了を通知するメッセージを受信したか確認する。メッセージを受信した場合は(ステップ1347のYES)、ステップ1339へ進む。メッセージを受信していない場合はステップ1347のNO)、ステップ1347へ戻って繰り返す。
図13Cのステップ1348では、データベースタスク制御部109は、データベース資源競合制御部108から受け取った中断する対象となるトランザクション処理を保持する中断対象トランザクションリストLSが空(トランザクション処理が含まれていない)か否かを確認する。空の(トランザクション処理が含まれていない)場合は(ステップ1348のYES)、ステップ1351へ進む。空でない(トランザクション処理が含まれている)場合は(ステップ1348のNO)、ステップ1349へ進む。
ステップ1349では、データベースタスク制御部109は、中断対象トランザクションリストLSから中断する対象となるトランザクション処理(TSとする)を1つ選択し、トランザクション状態管理情報224を参照し、トランザクション処理TSのトランザクション識別子を持つトランザクション状態管理構造体のデータベースタスク番号を登録するフィールドに登録されているデータベース番号に対応するデータベースタスクに対して、トランザクション処理TSの中断を指示する。
ステップ1350では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「2」を設定し、ステップ1301へ戻る。
ステップ1351では、データベースタスク制御部109は、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)に、トランザクション識別子を登録するフィールドに「0」が登録されている配列要素が存在するか否かを確認する。該当する配列要素が存在する場合は(ステップ1351のYES)、ステップ1352へ進む。該当する配列要素が存在しない場合は(ステップ1351のNO)、ステップ1353へ進む。
ステップ1352では、データベースタスク制御部109は、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)にあるトランザクション識別子を登録するフィールドに「0」を登録している配列要素を1つ選び、その配列要素のデータベースタスク番号を登録するフィールド(1009)に登録されているデータベースタスク番号に対応するデータベースタスクに、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および、利用可能メモリ領域情報106によるトランザクション処理を割り当て、ステップ1363へ進む。
ステップ1353では、データベースタスク制御部109は、利用可能メモリ領域情報106に有効なメモリアドレスとメモリ領域サイズの記述があるか否かを確認する。有効な記述がある場合は(ステップ1353のYES)、ステップ1354へ進む。有効な記述がない場合は(ステップ1353のNO)、ステップ1357へ進む。
ステップ1354では、データベースタスク制御部109は、利用可能メモリ領域情報106のメモリアドレスを記述するフィールド(801)に記述されたメモリアドレスから始まる共用ヒープメモリ208内のメモリ領域に、新たにデータベースタスク(DBTとする)を生成する。
ステップ1355では、データベースタスク制御部109は、共用ヒープメモリ208内のメモリ領域に生成したデータベースタスクDBTに、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および、利用可能メモリ領域情報106によるトランザクション処理を割り当てる。
ステップ1356では、データベースタスク制御部109は、トランザクション識別子情報103に記述されたトランザクション識別子、優先度定義情報104に記述された優先度の値、データベース資源取得予定情報105に記述されたデータベースキャッシュメモリの値(所領量)を、それぞれ、トランザクション識別子を登録するフィールド(1011)、優先度の値を登録するフィールド(1012)、データベースキャッシュサイズを登録するフィールド(1013)に持つトランザクション状態管理構造体(STNとする)を生成し、トランザクション状態管理構造体STNのデータベースタスク番号を登録するフィールド(1014)、中断要求元トランザクション識別子を登録するフィールド(1015)、および、再開可能フラグを登録するフィールド(1016)に全て「0」を登録し、トランザクション状態管理構造体STNを実行中トランザクション管理リストに追加し、ステップ1366へ進む。
このように、利用可能メモリ領域情報106に有効なメモリアドレスが記述されているか否かを判断し、記述されている場合には積極的に主記憶装置206を利用してアプリケーションプログラム211から指示されたトランザクション処理を実行するデータベースタスク111を生成するので、処理を高速に実行することができる。
ステップ1357では、データベースタスク制御部109は、トランザクション状態管理情報224の中断中トランザクション管理リスト(1002)にある、データベースタスク番号が「0」でないトランザクション状態管理構造体のうち、優先度の値が最も小さい(優先度が低い)トランザクション状態管理構造体(STSとする)を検出する。
ステップ1358では、データベースタスク制御部109は、トランザクション状態管理構造体STSのデータベースタスク番号を登録するフィールド(1014)に登録されたデータベースタスク番号(DBN3とする)に対応するデータベースタスクのデータベースタスクコンテキストを、コンテキスト待機領域227に退避する。
ステップ1359では、データベースタスク制御部109は、データベースタスク番号DBN3に対応するデータベースタスクを初期化する。
ステップ1360では、データベースタスク制御部109は、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)のデータベースタスク番号に登録されている値がDBN3と一致する二つ組のトランザクション識別子を登録するフィールド(1010)に「0」を登録する。
ステップ1361では、データベースタスク制御部109は、トランザクション状態管理構造体STSのデータベースタスク番号を登録するフィールド(1014)に「0」を登録する。
ステップ1362では、データベースタスク制御部109は、データベース番号がDBN3に対応するデータベースタスクに、トランザクション識別子情報103、優先度定義情報104、データベース資源取得予定情報105、および、利用可能メモリ領域情報106によるトランザクション処理を割り当てる。
ステップ1363では、データベースタスク制御部109は、トランザクション識別子情報103に記述されたトランザクション識別子、優先度定義情報104に記述された優先度の値、データベース資源取得予定情報105に記述されたデータベースキャッシュメモリの値(所領量)を、それぞれ、トランザクション識別子を登録するフィールド(1011)、優先度の値を登録するフィールド(1012)、データベースキャッシュサイズを登録するフィールド(1013)に持つトランザクション状態管理構造体(STNとする)を生成し、トランザクション状態管理構造体STNの中断要求元トランザクション識別子を登録するフィールド(1015)、および、再開可能フラグを登録するフィールド(1016)に全て「0」を登録し、トランザクション状態管理構造体STNを実行中トランザクション管理リストに追加する。
ステップ1364では、データベースタスク制御部109は、トランザクション状態管理構造体STNのデータベースタスク番号を登録するフィールド(1014)に、データベース番号DBN3を登録する。
ステップ1365では、データベースタスク制御部109は、トランザクション状態管理情報224のデータベースタスク管理テーブル(1003)のデータベースタスク番号を登録するフィールド(1009)に登録された値がDBN3と一致する配列要素のトランザクション識別子を登録するフィールド(1010)に、トランザクション識別子情報103に記述されたトランザクション識別子を登録する。
ステップ1366では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「0」を設定し、ステップ1301へ戻る。
図3Dのステップ1367では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズが「2」であるか否かを確認する。処理フェーズが「2」である場合は(ステップ1367のYES)、ステップ1368へ進む。処理フェーズが「2」でない場合は(ステップ1367のNO)、ステップ1376へ進む。
ステップ1368では、データベースタスク制御部109は、データベースタスク111からトランザクション処理(TCFとする)の中止完了を通知するメッセージを受信したか否かを確認する。該当メッセージを受信した場合は(ステップ1368のYES)、ステップ1369へ進む。該当メッセージを受信していない場合は(ステップ1368のNO)、ステップ1372へ進む。
ステップ1369では、データベースタスク制御部109は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)から、トランザクション処理TCFに対応するトランザクション状態管理構造体を取り除く。
ステップ1370では、データベースタスク制御部109は、中止対象トランザクションリストLCから、トランザクション処理TCFを削除する。
ステップ1371では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「1」を設定し、ステップ1301へ戻る。
ステップ1372では、データベースタスク制御部109は、データベースタスク111からトランザクション処理(TSFとする)の中断完了を通知するメッセージを受信したか否かを確認する。該当メッセージを受信した場合は(ステップ1372のYES)、ステップ1373へ進む。該当メッセージを受信していない場合は(ステップ1372のNO)、ステップ1301へ戻る。
ステップ1373では、データベースタスク制御部109は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)から、トランザクション処理TSFに対応するトランザクション状態管理構造体を取り除き、中断中トランザクション管理リスト(1002)に追加する。
ステップ1374では、データベースタスク制御部109は、中断対象トランザクションリストLSから、トランザクション処理TSFを削除する。
ステップ1375では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「1」を設定し、ステップ1301へ戻る。
ステップ1376では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズが「3」または「4」であるか否かを確認する。処理フェーズが「3」または「4」である場合は(ステップ1376のYES)、ステップ1377へ進む。処理フェーズが「3」または「4」でない場合は(ステップ1376のNO)、ステップ1385へ進む。
ステップ1377では、データベースタスク制御部109は、データベースタスク111からトランザクション処理(TFとする)の中止完了を通知するメッセージを受信したか否かを確認する。該当メッセージを受信した場合は(ステップ1377のYES)、ステップ1378へ進む。該当メッセージを受信していない場合は(ステップ1377のNO)、ステップ1301へ戻る。
ステップ1378では、データベースタスク制御部109は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)から、トランザクション処理TFに対応するトランザクション状態管理構造体を取り除く。
ステップ1379では、データベースタスク制御部109は、コンテキスト退避領域113からトランザクション処理TLと対応するデータベースタスクコンテキストを読み出し、トランザクション処理TFに対応するトランザクション状態管理構造体のデータベースタスク番号を登録するフィールド(1014)に登録されていたデータベースタスク番号に対応するデータベースタスクに復旧する。
ステップ1380では、データベースタスク制御部109は、トランザクション処理TLに対応するデータベースタスクコンテキストをコンテキスト退避領域113から削除する。
ステップ1381では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズが「4」であるか否かを確認する。処理フェーズが「4」である場合は(ステップ1381のYES)、ステップ1382へ進む。処理フェーズが「4」でない場合は(ステップ1381のNO)、ステップ1383へ進む。
ステップ1382では、データベースタスク制御部109は、トランザクション処理TLのトランザクション識別子を持つトランザクション状態管理構造体のデータベースタスク番号を登録するフィールド(1014)に登録されたデータベースタスク番号に対応するデータベースタスクに対して、トランザクション処理TLの再開を指示する。
ステップ1383では、データベースタスク制御部109は、中断対象トランザクションリストLSから、トランザクション処理TFを削除する。
ステップ1384では、データベースタスク制御部109は、データベースタスク制御部109の処理フェーズに「1」を設定し、ステップ1301へ戻る。
ステップ1385では、データベースタスク制御部109は、データベースタスク制御部109の処理を停止する指示を受信したか否かを確認する。処理停止の指示を受信した場合は(ステップ1385のYES)、データベースタスク制御部109の処理を終了する。処理停止の指示を受信していない場合は(ステップ1385のYES)、ステップ1301へ戻る。
以上の説明において、実行中トランザクション管理リストからトランザクション状態管理構造体を取り除くとは、以下のことを表す。
(a)取り除く対象のトランザクション状態管理構造体が実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)からポインタ(1017)で参照されており、かつ、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)をポインタ(1019)で参照している場合、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)から取り除く対象のトランザクション状態管理構造体へのポインタ(1017)と、取り除く対象のトランザクション状態管理構造体から実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)へのポインタ(1019)を削除する。
(b)取り除く対象のトランザクション状態管理構造体が実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)からポインタ(1017)で参照されており、かつ、別のトランザクション状態管理構造体をポインタ(1018)で参照している場合、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)から取り除く対象のトランザクション状態管理構造体へのポインタ(1017)と、取り除く対象のトランザクション状態管理構造体から別のトランザクション状態管理構造体へのポインタ(1018)を削除し、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)から、取り除く対象のトランザクション状態管理構造体を取り除く前に取り除く対象のトランザクション状態管理構造体からポインタで参照されていた別のトランザクション状態管理構造体へのポインタ(1017)を生成する。
(c)取り除く対象のトランザクション状態管理構造体が別のトランザクション状態管理構造体からポインタ(1018)で参照され、かつ、別のトランザクション状態管理構造体をポインタ(1018)で参照している場合、別のトランザクション状態管理構造体から取り除く対象のトランザクション状態管理構造体へのポインタと、取り除く対象のトランザクション状態管理構造体から別のトランザクション状態管理構造体へのポインタを削除し、取り除く対象のトランザクション状態管理構造体をポインタで参照していた別のトランザクション状態管理構造体から、取り除く対象のトランザクション状態管理構造体がポインタで参照していた別のトランザクション状態管理構造体へのポインタを生成する。
(d)取り除く対象のトランザクション状態管理構造体が別のトランザクション状態管理構造体からポインタ(1018)で参照され、かつ、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)をポインタ(1019)で参照している場合、別のトランザクション状態管理構造体から取り除く対象のトランザクション状態管理構造体へのポインタと、取り除く対象のトランザクション状態管理構造体から実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)へのポインタ(1019)を削除し、取り除く対象のトランザクション状態管理構造体を取り除く前に取り除く対象のトランザクション状態管理構造体をポインタで参照していた別のトランザクション状態管理構造体から、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)へのポインタを生成する。
また中断中トランザクション管理リストからトランザクション状態管理構造体を取り除くとは、以下のことを表す。
(a)取り除く対象のトランザクション状態管理構造体が中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)からポインタ(1020)で参照されており、かつ、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)をポインタ(1021)で参照している場合、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)から取り除く対象のトランザクション状態管理構造体へのポインタ(1020)と、取り除く対象のトランザクション状態管理構造体から中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)へのポインタ(1021)を削除する。
(b)取り除く対象のトランザクション状態管理構造体が中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)からポインタ(1020)で参照されており、かつ、別のトランザクション状態管理構造体をポインタで参照している場合、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)から取り除く対象のトランザクション状態管理構造体へのポインタ(1020)と、取り除く対象のトランザクション状態管理構造体から別のトランザクション状態管理構造体へのポインタを削除し、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)から、取り除く対象のトランザクション状態管理構造体を取り除く前に取り除く対象のトランザクション状態管理構造体からポインタで参照されていた別のトランザクション状態管理構造体へのポインタ(1020)を生成する。
(c)取り除く対象のトランザクション状態管理構造体が別のトランザクション状態管理構造体からポインタで参照され、かつ、別のトランザクション状態管理構造体をポインタで参照している場合、別のトランザクション状態管理構造体から取り除く対象のトランザクション状態管理構造体へのポインタと、取り除く対象のトランザクション状態管理構造体から別のトランザクション状態管理構造体へのポインタを削除し、取り除く対象のトランザクション状態管理構造体をポインタで参照していた別のトランザクション状態管理構造体から、取り除く対象のトランザクション状態管理構造体がポインタで参照していた別のトランザクション状態管理構造体へのポインタを生成する。
(d)取り除く対象のトランザクション状態管理構造体が別のトランザクション状態管理構造体からポインタで参照され、かつ、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)をポインタ(1021)で参照している場合、別のトランザクション状態管理構造体から取り除く対象のトランザクション状態管理構造体へのポインタと、取り除く対象のトランザクション状態管理構造体から中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)へのポインタ(1021)を削除し、取り除く対象のトランザクション状態管理構造体を取り除く前に取り除く対象のトランザクション状態管理構造体をポインタで参照していた別のトランザクション状態管理構造体から、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)へのポインタを生成する。
また実行中トランザクション管理リストにトランザクション状態管理構造体を追加するとは、以下のことを表す。
追加対象のトランザクション状態管理構造体を追加する前に、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)からトランザクション状態管理構造体へのポインタ(1017)を削除し、実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)から追加対象のトランザクション状態管理構造体へのポインタと、追加対象のトランザクション状態管理構造体から、追加対象のトランザクション状態管理構造体を追加する前に実行中トランザクション管理リストの先頭を参照するポインタを保持する領域(1004)からポインタ(1017)で参照されていたトランザクション状態管理構造体へのポインタを生成する。
また中断中トランザクション管理リストにトランザクション状態管理構造体を追加するとは、以下のことを表す。
追加対象のトランザクション状態管理構造体を追加する前に、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)からトランザクション状態管理構造体へのポインタ(1020)を削除し、中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)から追加対象のトランザクション状態管理構造体へのポインタと、追加対象のトランザクション状態管理構造体から、追加対象のトランザクション状態管理構造体を追加する前に中断中トランザクション管理リストの先頭を参照するポインタを保持する領域(1007)からポインタ(1020)で参照されていたトランザクション状態管理構造体へのポインタを生成する。
またデータベースタスクコンテキストを退避するとは、データベースタスクのレジスタ情報、実行時スタック情報、および、大域変数領域情報からなるデータベースタスクコンテキストを生成し、ストレージデバイス207内に格納することである。
またデータベースタスクコンテキストを復旧するとは、ストレージデバイス207内からデータベースタスクコンテキストを読み込み、データベースタスクコンテキストのレジスタ情報が保持する各レジスタの値を対応するレジスタに設定し、実行時スタック情報に含まれる実行時スタックのスナップショットをデータベースタスクの実行時スタックを保持するメモリ領域に複製し、および、大域変数領域情報に含まれる大域変数領域のスナップショットをデータベースタスクの大域変数領域を保持するメモリ領域に複製することである。
またデータベースタスクの初期化とは、データベースタスクの実行時スタックと大域変数領域を保持するメモリ領域の内容を、データベースタスクの処理開始時と同じ内容に戻すことである。
またデータベースタスクにトランザクション処理を割り当てるとは、アプリケーションプログラム211から入力されたトランザクション識別子情報103に記述されたトランザクション識別子と、優先度定義情報104に記述された優先度の値を持ち、データベース資源取得予定情報105に記述されたデータベース資源を取得することができるトランザクション処理の実行開始を、データベースタスクに対して指示することである。
また利用可能メモリ情報に記述されたメモリアドレスとメモリ領域サイズが有効であるとは、利用可能メモリ情報216のメモリ領域の先頭アドレスを記述するフィールド(801)の記述が「n/a」でなく、かつ、メモリ領域のサイズを記述するフィールド(802)の記述が「0」でないことを表す。
《データベースタスク処理》
図14A、および、図14Bは、図2で説明したデータベースタスク処理の処理手順を示すフローチャートである。
まずステップ1400において、データベースタスク111は、データベースタスク111の処理フェーズに「0」を設定する。
次にステップ1401において、データベースタスク111は、データベースタスク制御部109からトランザクション処理の実行を要求するメッセージを受信したか否かを確認する。該当メッセージを受信した場合は(ステップ1401のYES)、ステップ1402へ進む。該当メッセージを受信していない場合は(ステップ1401のNO)、ステップ1409へ進む。
ステップ1402では、データベースタスク111は、データベースタスク111の処理フェーズが「0」である否かを確認する。処理フェーズが「0」である場合は(ステップ1402のYES)、ステップ1404へ進む。処理フェーズが「0」でない場合は(ステップ1402のNO)、ステップ1403へ進む。
ステップ1403では、データベースタスク111は、トランザクション処理中であるため、新たなトランザクション処理を受け付けられないことを通知するメッセージを、データベースタスク制御部109に送信し、ステップ1401へ戻る。
ステップ1404では、データベースタスク111は、データベースタスク制御部109から、トランザクション識別子情報103に記述されたトランザクション識別子(Tとする)を入力として、トランザクション処理要求を受け付ける。
ステップ1405では、データベースタスク111は、トランザクションプロファイル情報114のトランザクション識別子を記述するフィールド(1101)に、トランザクション識別子Tが存在するか否かを確認する。トランザクション識別子Tが存在する場合は(ステップ1405のYES)、ステップ1406へ進む。トランザクション識別子Tが存在しない場合は(ステップ1405のNO)、ステップ1407へ進む。
ステップ1406では、データベースタスク111は、データベースタスク111の処理フェーズに「1A」を設定し、ステップ1401へ戻る。
ステップ1407では、データベースタスク111は、トランザクションプロファイル情報114のトランザクション識別子を記述するフィールド(1101)にトランザクション識別子Tを追加し、トランザクション識別子を記述するフィールド(1101)がトランザクション識別子Tの四つ組を生成する。
ステップ1408では、データベースタスク111は、データベースタスク111の処理フェーズに「1B」を設定し、ステップ1401へ戻る。
ステップ1409では、データベースタスク111は、データベースタスク111の処理フェーズが「1A」または「1B」であるか否かを確認する。処理フェーズが「1A」または「1B」である場合は(ステップ1409のYES)、ステップ1410へ進む。処理フェーズが「1A」または「1B」でない場合は(ステップ1409のNO)、ステップ1421へ進む。
ステップ1410では、データベースタスク111は、アプリケーションプログラム211から要求されたトランザクション処理に含まれる問い合わせ処理のうち、未処理の問い合わせ処理が存在するか否かを確認する。未処理の問い合わせ処理が存在する場合は(ステップ1410のYES)、ステップ1412へ進む。未処理の問い合わせ処理が存在しない場合は(ステップ1410のNO)、ステップ1411へ進む。
ステップ1411では、データベースタスク111は、データベースタスク111の処理フェーズに「2」を設定し、ステップ1401へ戻る。
ステップ1412では、データベースタスク111は、アプリケーションプログラム211から要求されたトランザクション処理に含まれる未処理の問い合わせ処理のうち、問い合わせ処理を行う順番に従って一番先に行う問い合わせ処理(Qとする)を取得する。
ステップ1413では、データベースタスク111は、問い合わせ処理Qの内容がデータベース116内にテーブルの生成であるか否かを確認する(ステップ1413)。問い合わせ処理Qの内容がテーブルの生成である場合は(ステップ1413のYES)、ステップ1414へ進む。問い合わせ処理Qの内容がテーブルの生成でない場合は(ステップ1413のNO)、ステップ1415へ進む。
ステップ1414では、データベースタスク111は、データベース構成情報115において、問い合わせ処理Qによるテーブルが生成されるデータベースの名称が記述されたデータベースの名称を記述するフィールド(401)に対応するテーブルの名称を記述するフィールド(403)に、問い合わせ処理Qにより生成されるテーブルの名称を記述する。
ステップ1415では、データベースタスク111は、問い合わせ処理Qを実行する。
問い合わせ処理Qの実行の結果をアプリケーションプログラム211に送信する(ステップ1416)。
ステップ1417では、データベースタスク111は、データベースタスク111の処理フェーズが「1A」であるか否かを確認する。処理フェーズが「1A」である場合は(ステップ1417のYES)、ステップ1420へ進む。処理フェーズが「1A」でない場合は(ステップ1417のNO)、ステップ1418へ進む。
ステップ1418では、データベースタスク111は、トランザクションプロファイル情報114のトランザクション識別子を記述するフィールド(1101)がトランザクション識別子Tの四つ組のアクセスする対象のテーブルを記述するフィールド(1102)に、問い合せ処理Qの実行中にアクセスしたテーブルの名称を追加して記述する。
ステップ1419では、データベースタスク111は、トランザクションプロファイル情報114のトランザクション識別子を記述するフィールド(1101)がトランザクション識別子Tの四つ組の共有ロックを取得したデータベースオブジェクトを記述するフィールド(1104)と排他ロックを取得したデータベースオブジェクトを記述するフィールド(1105)に、問い合せ処理Qの実行中に共有ロックおよび排他ロックを取得したデータベースオブジェクトの名称を、それぞれ追加して記述する。
ステップ1420では、データベースタスク111は、データベースタスク111の処理フェーズに「0」を設定し、1401へ戻る。
ステップ1421では、データベースタスク111は、データベースタスク111の処理フェーズが「2」であるか否かを確認する。処理フェーズが「2」である場合は(ステップ1421のYES)、ステップ1422へ進む。処理フェーズが「2」でない場合は(ステップ1421のNO)、ステップ1423へ進む。
ステップ1422では、データベースタスク111は、トランザクション処理の実行完了を通知するメッセージを、データベースタスク制御部109に送信し、データベースタスク111の処理を終了する。
ステップ1423では、データベースタスク111は、データベースタスク制御部109からトランザクション処理の中止を要求するメッセージを受信したか否かを確認する。該当メッセージを受信した場合は(ステップ1423のYES)、ステップ1424へ進む。該当メッセージを受信していない場合は(ステップ1423のNO)、図14Bのステップ1427へ進む。
ステップ1424では、データベースタスク111は、データベースタスク111の処理フェーズが「0」でないか否かを確認する。処理フェーズが「0」でない場合は(ステップ1424のYES)、ステップ1425へ進む。処理フェーズが「0」である場合は(ステップ1424のNO)、ステップ1426へ進む。
ステップ1425では、データベースタスク111は、トランザクション処理のロールバック(Rollback)を行う。
ステップ1426では、データベースタスク111は、トランザクション処理の中止完了を通知するメッセージを、データベースタスク制御部109に送信し、データベースタスク111の処理を終了する。
図14Bのステップ1427では、データベースタスク111は、データベースタスク制御部109からトランザクション処理の中断を要求するメッセージを受信したか否かを確認する。該当メッセージを受信した場合は(ステップ1427のYES)、ステップ1428へ進む。該当メッセージを受信していない場合は(ステップ1427のNO)、ステップ1436へ進む。
ステップ1428では、データベースタスク111は、データベースタスク111の処理フェーズが「1A」であるか否かを確認する。処理フェーズが「1A」である場合は(ステップ1428のYES)、ステップ1429へ進む。処理フェーズが「1A」でない場合は(ステップ1428のNO)、ステップ1430へ進む。
ステップ1429では、データベースタスク111は、データベースタスク111の処理フェーズに「1AS」を設定し、ステップ1435へ進む。
ステップ1430では、データベースタスク111は、データベースタスク111の処理フェーズが「1B」であるか否かを確認する。処理フェーズが「1B」である場合は(ステップ1430のYES)、ステップ1431へ進む。処理フェーズが「1B」でない場合は(ステップ1430のNO)、ステップ1432へ進む。
ステップ1431では、データベースタスク111は、データベースタスク111の処理フェーズに「1BS」を設定し、ステップ1435へ進む。
ステップ1432では、データベースタスク111は、データベースタスク111の処理フェーズが「2」であるか否かを確認する。処理フェーズが「2」である場合は(ステップ1432のYES)、ステップ1433へ進む。処理フェーズが「2」でない場合は(ステップ1432のNO)、ステップ1434へ進む。
ステップ1433では、データベースタスク111は、データベースタスク111の処理フェーズに「2S」を設定し、ステップ1435へ進む。
ステップ1434では、データベースタスク111は、データベースタスク111の処理フェーズに「0S」を設定する。
ステップ1435では、データベースタスク111は、トランザクション処理の中断の完了を通知するメッセージを、データベースタスク制御部109に送信し、1401へ戻る。
ステップ1436では、データベースタスク111は、データベースタスク制御部109からトランザクション処理の再会を要求するメッセージを受信したか否かを確認する。該当メッセージを受信した場合は(ステップ1436のYES)、ステップ1437へ進む。該当メッセージを受信していない場合は(ステップ1436のYES)、ステップ1439へ戻る。
ステップ1437では、データベースタスク111は、データベースタスク111の処理フェーズが「1AS」であるか否かを確認する。処理フェーズが「1AS」である場合は(ステップ1437のYES)、ステップ1438へ進む。処理フェーズが「1AS」でない場合は(ステップ1437のNO)、ステップ1439へ進む。
ステップ1438では、データベースタスク111は、データベースタスク111の処理フェーズに「1A」を設定し、1401へ戻る。
ステップ1439では、データベースタスク111は、データベースタスク111の処理フェーズが「1BS」であるか否かを確認する。処理フェーズが「1BS」である場合は(ステップ1439のYES)、ステップ1440へ進む。処理フェーズが「1BS」でない場合は(ステップ1439のNO)、ステップ1441へ進む。
ステップ1440では、データベースタスク111は、データベースタスク111の処理フェーズに「1B」を設定し、ステップ1401へ戻る。
ステップ1441では、データベースタスク111は、データベースタスク111の処理フェーズが「2S」であるか否かを確認する。処理フェーズが「2S」である場合は(ステップ1441のYES)、ステップ1442へ進む。処理フェーズが「2S」でない場合は(ステップ1441のNO)、ステップ1442へ進む。
ステップ1442では、データベースタスク111は、データベースタスク111の処理フェーズに「2」を設定し、ステップ1401へ戻る。
ステップ1443では、データベースタスク111は、データベースタスク111の処理フェーズに「0」を設定し、ステップ1401へ戻る。
なお、データベースタスク111がトランザクション処理要求を受け付けるとは、アプリケーションプログラム211に対してトランザクション処理の実行を開始することが可能であることを通知するメッセージを送信し、アプリケーションプログラム211から要求されたトランザクション処理に含まれる問い合わせ処理を、処理の順番に従って受け取ることを表す。
《共有ロック競合制御処理》
図15は、図12の共有ロック競合制御処理(ステップ1204の処理)の詳細を説明するフローチャートである。
まずステップ1500において、データベース資源競合制御部108は、データベース資源競合制御部108から、中止対象トランザクションリスト(LC)と、中断対象トランザクションリスト(LS)を受け取る。
次のステップ1501では、データベース資源競合制御部108は、トランザクションプロファイル情報114のトランザクション識別子Tに対応する四つ組の共有ロックを取得するデータベースオブジェクトを記述するフィールド(1104)に記述された全てのデータベースオブジェクトを要素とする集合(KSとする)を生成する。
ステップ1502では、データベース資源競合制御部108は、集合KSに含まれるデータベースオブジェクトの中から1つ選び(DSとする)、そのデータベースオブジェクトを集合KSから取り除く。
ステップ1503では、データベース資源競合制御部108は、排他資源管理情報225を参照し、データベースオブジェクトDSに排他ロックを取得しているトランザクション処理を検出し、検出したトランザクション処理のうち、優先度の値が、優先度定義情報104に記述された優先度よりも小さい(優先度が低い)トランザクション処理が存在するか否かを確認する。該当するトランザクション処理が存在する場合は(ステップ1503のYES)、ステップ1504へ進む。該当するトランザクション処理が存在しない場合は(ステップ1503のNO)、ステップ1505へ進む。
ステップ1504では、データベース資源競合制御部108は、データベースオブジェクトDSに排他ロックを取得しているトランザクション処理のうち、優先度定義情報104に記述された優先度よりも小さい(優先度が低い)トランザクション処理を全てLCに追加する。
ステップ1505では、データベース資源競合制御部108は、集合KSが空か否かを確認する。集合KSが空の場合は(ステップ1505のYES)、ステップ1506へ進む。集合KSが空でない場合は(ステップ1505のNO)、ステップ1502へ戻る。
ステップ1506では、データベース資源競合制御部108は、中止対象トランザクションリスト(LC)と中断対象トランザクションリスト(LS)をデータベース資源競合制御部108に戻り値として返す。
《排他ロック競合制御処理》
図16は、図12の排他ロック競合制御処理(ステップ1206の処理)の詳細を説明するフローチャートである。
まずステップ1600において、データベース資源競合制御部108は、データベース資源競合制御部108から、中止対象トランザクションリスト(LC)と、中断対象トランザクションリスト(LS)を受け取る。
次にステップ1601では、データベース資源競合制御部108は、トランザクションプロファイル情報114のトランザクション識別子Tに対応する四つ組の排他ロックを取得するデータベースオブジェクトを記述するフィールド(1105)に記述された全てのデータベースオブジェクトを要素とする集合(KXとする)を生成し、ステップ1207へ進む。
ステップ1602では、データベース資源競合制御部108は、集合KXに含まれるデータベースオブジェクトの中から1つ選び(DXとする)、そのデータベースオブジェクトを集合KXから取り除く。
ステップ1603では、データベース資源競合制御部108は、排他資源管理情報225を参照し、データベースオブジェクトDXに共有ロックまたは排他ロックを取得しているトランザクション処理を検出し、検出したトランザクション処理のうち、優先度の値が、優先度定義情報104に記述された優先度よりも小さい(優先度が低い)トランザクション処理が存在するか否かを確認する。該当するトランザクション処理が存在する場合は(ステップ1603のYES)、ステップ1604へ進む。該当するトランザクション処理が存在しない場合は(ステップ1603のNO)、ステップ1605に進む。
ステップ1604では、データベース資源競合制御部108は、データベースオブジェクトDXに共有ロックまたは排他ロックを取得しているトランザクション処理のうち、優先度定義情報104に記述された優先度よりも小さい(優先度が低い)トランザクション処理を全てLCに追加する。
ステップ1605では、データベース資源競合制御部108は、集合KXが空か否かを確認する。集合KXが空の場合は(ステップ1605のYES)、ステップ1606へ進む。集合KXが空でない場合は(ステップ1605のNO)、ステップ1602へ戻る。
ステップ1606では、データベース資源競合制御部108は、中止対象トランザクションリスト(LC)と中断対象トランザクションリスト(LS)をデータベース資源競合制御部108に戻り値として返す。
《データベースキャッシュメモリ競合制御処理》
図17は、図12のデータベースキャッシュメモリ競合制御処理(ステップ1207の処理)の詳細を説明するフローチャートである。
まずステップ700において、データベース資源競合制御部108は、データベース資源競合制御部108から、中止対象トランザクションリスト(LC)を受け取る。
次のステップ1701では、データベース資源競合制御部108は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)と中断中トランザクション管理リスト(1002)が保持する全てのトランザクション状態管理構造体に登録されているデータベースキャッシュメモリのサイズの合計値(MAとする)を計算する。
ステップ1702では、データベース資源競合制御部108は、中断対象トランザクションリストLCに含まれる全てのトランザクション処理に対応するトランザクション状態管理情報224のトランザクション状態管理構造体に登録されているデータベースキャッシュメモリのサイズの合計値(MBとする)を計算する。
ステップ1703では、データベース資源競合制御部108は、データベース管理システムプログラム212が使用可能なデータベースキャッシュメモリのサイズ(容量)をCとし、Cから(MA−MB)の値を引いた値(C−(MA−MB))が、データベース資源取得予定情報105のデータベース資源の値(所要量)を記述するフィールド(702)に記述されたデータベースキャッシュメモリの値よりも小さいか否かを確認する。値が小さい場合は(ステップ1703のYES)、ステップ1704へ進む。値が小さくない場合は(ステップ1703のNO)、ステップ1706へ進む。
ステップ1704では、データベース資源競合制御部108は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)と中断中トランザクション管理リスト(1002)が保持するトランザクション状態管理構造体に登録されたトランザクション識別子に対応するトランザクション処理から、集合LCに含まれるトランザクション処理を除いたもののうち、優先度の値(1012)が、優先度定義情報104に記述された優先度の値よりも小さいトランザクション状態管理構造体が存在するか否かを確認する。該当するトランザクション状態管理構造体が存在する場合は(ステップ1704のYES)、ステップ1705へ進む。該当するトランザクション状態管理構造体が存在しない場合は(ステップ1704のNO)、ステップ1707へ進む。
ステップ1705では、データベース資源競合制御部108は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)と中断中トランザクション管理リスト(1002)が保持するトランザクション状態管理構造体に登録されたトランザクション識別子に対応するトランザクション処理から、集合LCに含まれるトランザクション処理を除いたもののうち、優先度の値(1012)が最も小さいトランザクション状態管理構造体に対応するトランザクション処理をLCに追加し、ステップ1702に戻る。
ステップ1706では、データベース資源競合制御部108は、データベースキャッシュメモリの競合解決に失敗したことを示すフラグにOFFを設定し、ステップ1708へ進む。
ステップ1707では、データベース資源競合制御部108は、データベースキャッシュメモリの競合解決に失敗したことを示すフラグにONを設定し、ステップ1708へ進む。
ステップ1708では、データベース資源競合制御部108は、中止対象トランザクションリスト(LC)とデータベースキャッシュメモリの競合解決に失敗したことを示すフラグの値をデータベース資源競合制御部108に戻り値として返す。
《I/Oデバイス競合制御処理》
図18は、図12のI/Oデバイス競合制御処理(1209の処理)の詳細を説明するフローチャートである。
まずステップ1800では、データベース資源競合制御部108は、データベース資源競合制御部108から、中止対象トランザクションリスト(LC)と、中断対象トランザクションリスト(LS)を受け取る。
次のステップ1801では、データベース資源競合制御部108は、トランザクションプロファイル情報114のトランザクション識別子Tの四つ組のアクセスする対象のテーブルを記述するフィールド(1102)に記述されたテーブルの名称を全て取得し、データベース構成情報115を参照し、取得した各テーブルが生成されているデータベースの名称を全て取得し、さらに、取得したデータベースが生成されている全てのI/Oデバイスの名称を取得し、取得した全てのI/Oデバイスを要素とする集合(Dとする)を生成する。
ステップ1802では、データベース資源競合制御部108は、トランザクション状態管理情報224の実行中トランザクション管理リスト(1001)が保持するトランザクション状態管理構造体に登録されたトランザクション識別子に対応するトランザクション処理から、LCに含まれるトランザクション処理を除いたもののうち、優先度の値(1012)が、優先度定義情報104に記述された優先度の値よりも小さいトランザクション状態管理構造体に登録されたトランザクション識別子に対応するトランザクション処理を、全てLSに追加する。
ステップ1803では、データベース資源競合制御部108は、トランザクション処理を要素とする新たな集合TLSを生成し、LSに含まれる全てのトランザクション処理をTLSに追加する。
ステップ1804では、データベース資源競合制御部108は、TLSに含まれるトランザクション処理のうち1つ(Tiとする)を選び、TLSからTiを削除する。
ステップ1805では、データベース資源競合制御部108は、トランザクションプロファイル情報114のトランザクション処理Tiのトランザクション識別子の四つ組のアクセスする対象のテーブルを記述するフィールド(1102)に記述されたテーブルの名称を全て取得し、データベース構成情報115を参照し、取得した各テーブルが生成されているデータベースの名称を全て取得し、さらに、取得したデータベースが生成されている全てのI/Oデバイスの名称を取得し、取得した全てのI/Oデバイスを要素とする集合(Diとする)を生成する。
ステップ1806では、データベース資源競合制御部108は、集合Dと集合Diの間に共通の要素(I/Oデバイス)が存在するか否かを確認する。共通の要素が存在する場合は(ステップ1806のYES)、ステップ1808へ進む。共通の要素が存在しない場合は(ステップ1806のNO)、ステップ1807へ進む。
ステップ1807では、データベース資源競合制御部108は、集合LSから、トランザクション処理Tiを削除する。
ステップ1808では、データベース資源競合制御部108は、集合TLSに要素が存在しないか(空か)否かを確認する。要素が存在しない(空の)場合は(ステップ1808のYES)、ステップ1809へ進む。要素が存在する(空でない)場合は(ステップ1808のNO)、ステップ1804へ戻る。
ステップ1809では、データベース資源競合制御部108は、中止対象トランザクションリスト(LC)と中断対象トランザクションリスト(LS)をデータベース資源競合制御部108に戻り値として返す。
以上に説明したように、本実施形態のトランザクション並行制御方法によれば、DBMS100が他のトランザクション処理を実行中または中断中に当該実行中または中断中のトランザクション処理よりも高い優先度を有するトランザクション処理の指示を受けた場合、DBMS100は実行中または中断中のトランザクション処理と要求されたトランザクション処理との間のデータベース資源の競合の状況を判定し、中止または中断するトランザクション処理を適切に決定する。このため、更新データの消失を最小限度に抑えることができる。
また機器やアプリケーションの開発者が、並行制御されるトランザクション処理の組み合わせや順番を考慮することなく複数のトランザクション処理を並行に実行することができるため、機器やアプリケーション開発の煩雑さが軽減される。またこれにより機器やアプリケーションの開発に掛かる人件費などの費用を削減することができる。
なお、以上の実施形態の説明は本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明はその趣旨を逸脱することなく、変更、改良され得ると共に本発明にはその等価物が含まれることは勿論である。
トランザクション並行制御方法の概要を示す図である。 トランザクション並行制御が行われる情報処理装置226の一例を示す図である。 トランザクション並行制御処理を説明するフローチャートである。 データベース構成情報の一例を示す図である。 データベース構築処理を説明するフローチャートである。 トランザクション処理キューリストの一例を示す図である。 データベース資源取得予定情報の一例を示す図である。 利用可能メモリ情報の一例を示す図である。 利用可能メモリ情報の別の例を示す図である。 トランザクション処理要求受付処理を説明するフローチャートである。 トランザクション状態管理情報の一例を示す図である。 トランザクションプロファイル情報の一例を示す図である。 データベース資源競合制御処理を説明するフローチャートである。 データベースタスク制御処理を説明するフローチャートである。 データベースタスク制御処理を説明するフローチャートである。 データベースタスク制御処理を説明するフローチャートである。 データベースタスク制御処理を説明するフローチャートである。 データベースタスク処理を説明するフローチャートである。 データベースタスク処理を説明するフローチャートである。 共有ロック競合制御処理を説明するフローチャートである。 排他ロック競合制御処理を説明するフローチャートである。 データベースキャッシュメモリ競合制御処理を説明するフローチャートである。 I/Oデバイス競合制御処理を説明するフローチャートである。
符号の説明
100 DBMS
101 アプリケーション
102 アプリケーション
103 トランザクション識別子情報
104 優先度定義情報
105 データベース資源取得予定情報
106 利用可能メモリ領域情報
107 トランザクション処理要求受付部
108 データベース資源競合制御部
109 データベースタスク制御部
110 データベースタスク群
111 データベースタスク
112 共有ヒープメモリ
113 コンテキスト退避領域
114 トランザクションプロファイル情報
115 データベース構成情報
116 データベース
200 CPU
201 入力デバイス
202 ディスプレイデバイス
203 通信制御装置
204 ネットワーク
206 主記憶装置
207 ストレージデバイス
210 アプリケーションプログラム群
211 アプリケーションプログラム
217 トランザクション処理要求受付プログラム
218 データベース資源競合制御プログラム
219 データベースタスク制御プログラム
220 データベースタスクプログラム群
221 データベースタスクプログラム
222 データベース構成プログラム
226 情報処理装置

Claims (15)

  1. アプリケーションにより使用されるデータベース管理システムにおけるトランザクションの並行制御方法であって、
    データベース管理システムが、
    第1のアプリケーションからトランザクション処理要求の指示を受けるとともに、トランザクション処理の識別子を含むトランザクション識別子情報前記データベース管理システムがトランザクション処理の実行中にデータを一時的に格納するメモリ領域であるデータベースキャッシュメモリのサイズを含むデータベース資源取得予定情報と、を受け取るステップと、
    前記第1のアプリケーションと異なる第2のアプリケーションから指示されたトランザクション処理が実行中または中断中であるならば、前記第1のアプリケーションから入力されたトランザクション処理の優先度と、前記第2のアプリケーションから指示されたトランザクション処理の優先度とを比較するステップと、
    前記比較の結果、前記第1のアプリケーションから指示されたトランザクション処理の優先度が、前記第2のアプリケーションから指示されたトランザクション処理の優先度よりも高い場合、前記第1のアプリケーションから指示されたトランザクション処理と実行中または中断中のトランザクション処理との間で、トランザクション処理の実行中に取得するデータベースオブジェクトの共有ロックおよび排他ロックの獲得要求、前記データベース資源取得予定情報に設定されたサイズの前記データベースキャッシュメモリの獲得要求、ならびに、トランザクション処理中にデータの書き込み及び読み出しを行うデータベースが格納されたI/Oデバイスの使用権の獲得要求のうち、いずれかの獲得要求の競合が発生するか否かを判定するステップと、
    前記競合が発生するか否かの判定結果に基づいて、中断又は中止するトランザクション処理を決定するステップと、
    前記中断または中止する対象のトランザクション処理の中断または中止がそれぞれ完了した後、前記データベース資源取得予定情報に設定されたサイズのデータベースキャッシュメモリ、リソースに対する共有ロック及び排他ロック、及びI/Oデバイスの使用権の取得を行い、前記第1のアプリケーションから指示されたトランザクション処理を実行するステップと、
    前記第1のアプリケーションから指示されたトランザクション処理の実行が完了した後、中断しているトランザクション処理の実行を再開するステップと
    を含むことを特徴とするトランザクション並行制御方法。
  2. 請求項に記載のトランザクション並行制御方法であって
    記データベース管理システムは、前記実行中または中断中のトランザクション処理が取得している前記データベースキャッシュメモリのサイズを保持するデータ構造を有し、
    前記データベース管理システムは、前記データベースキャッシュメモリの獲得要求の競合を判定するステップにおいて、前記データベース管理システムが使用できる前記データベースキャッシュメモリの総容量から前記実行中および中断中のトランザクション処理が取得中の前記データベースキャッシュメモリの合計サイズを引いた値が、前記データベース資源取得予定情報に含まれる前記データベースキャッシュメモリの所要量よりも少ない場合に前記データベースキャッシュメモリの競合が発生したと判定し、
    前記データベース管理システムは、前記中止するトランザクション処理を決定するステップにおいて、前記判定により、前記データベースキャッシュメモリの競合が発生した場合、前記データベース管理システムが使用できる前記データベースキャッシュメモリの総容量から、前記実行中または中断中のトランザクション処理が取得中の前記データベースキャッシュメモリの合計サイズを引いて、中止対象のトランザクション処理が取得中の前記データベースキャッシュメモリの合計サイズを足した値が、前記データベース資源取得予定情報に含まれる前記データベースキャッシュメモリの所要量と同じかもしくは大きくなるよう、実行中または中断中で、かつ、前記優先度定義情報に含まれる優先度よりも低い優先度のトランザクション処理のなかから、優先度が低い順に最小個のトランザクション処理を選択することにより、中止対象のトランザクション処理と決定すること
    を特徴とするトランザクション並行制御方法。
  3. 請求項に記載のトランザクション並行制御方法であって
    記データベース管理システムは、前記実行中または中断中のトランザクション処理が共有ロックおよび排他ロックを取得しているデータベースオブジェクトの一覧を保持するデータ構造と、
    トランザクション処理の実行中に共有ロックおよび排他ロックを取得したデータベースオブジェクトを、トランザクション処理の識別子に対応付けて保持するデータ構造であるトランザクションプロファイル情報を有し、
    前記データベース管理システムは、前記排他の獲得要求の競合を判定するステップにおいて、前記第1のアプリケーションから要求されたトランザクション処理が共有ロックまたは排他ロックを取得する対象のデータベースオブジェクトであるか否かを判断し、前記第1のアプリケーションから要求されたトランザクション処理が共有ロックを取得するデータベースオブジェクトに対して、前記実行中または中断中のトランザクション処理が排他ロックを取得している場合、または、前記第1のアプリケーションから要求されたトランザクション処理が排他ロックを取得するデータベースオブジェクトに対して、前記実行中または中断中のトランザクション処理が共有ロックもしくは排他ロックを取得している場合に、排他競合が発生したと判定し、
    前記データベース管理システムは、前記中止するトランザクション処理を決定するステップにおいて、前記判定により、排他競合が発生した場合、実行中または中断中で、かつ、優先度定義情報に含まれる優先度よりも低い優先度のトランザクション処理のうち、前記第1のアプリケーションから要求されたトランザクション処理が共有ロックを取得するデータベースオブジェクトに対して排他ロックを取得中のトランザクション処理と、前記第1のアプリケーションから要求されたトランザクション処理が排他ロックを取得するデータベースオブジェクトに対して共有ロックまたは排他ロックを取得中のトランザクション処理を、中止対象のトランザクション処理と決定すること
    を特徴とするトランザクション並行制御方法。
  4. 請求項に記載のトランザクション並行制御方法であって
    記データベース管理システムは、前記第1のアプリケーションから要求されたトランザクション処理、実行中のトランザクション処理、および、中断中のトランザクション処理が使用する対象のI/Oデバイスの一覧を保持するデータ構造を有し、
    前記データベース管理システムは、前記データベース資源の競合を判定するステップにおいて、前記第1のアプリケーションから要求されたトランザクション処理が使用するI/Oデバイスを、実行中または中断中のトランザクション処理が使用中の場合、I/Oデバイス使用権の競合が発生したと判定し、
    前記データベース管理システムは、前記I/Oデバイス使用権の獲得要求の競合を判定するステップにおいて、前記判定により、I/Oデバイス使用権の競合が発生した場合、実行中および中断中で、かつ、優先度定義情報に含まれる優先度よりも低い優先度のトランザクション処理のうち、前記第1のアプリケーションから要求されたトランザクション処理が使用するI/Oデバイスを使用中のトランザクション処理を、中断対象のトランザクション処理と決定すること
    を特徴とするトランザクション並行制御方法。
  5. 請求項1に記載のトランザクション並行制御方法であって、
    前記データベース管理システムは、
    前記第1のアプリケーションからトランザクション処理要求の指示を受けるとともに、トランザクション処理を実行するデータベースタスクを生成する目的で使用可能なメモリ領域が存在するか否かを表す利用可能メモリ領域情報を受け取ること
    を特徴とするトランザクション並行制御方法。
  6. 請求項に記載のトランザクション並行制御方法であって、
    前記利用可能メモリ領域情報が、データベースタスクを生成する目的で使用可能なメモリ領域が存在することを表す設定を含む場合、
    前記データベース管理システムが、
    前記中断または中止する対象のトランザクション処理の中断と中止がそれぞれ完了した後、前記第1のアプリケーションから指示されたトランザクション処理を、トランザクション処理を実行するデータベースタスクに割り当てることができるか否かを確認するステップと、
    前記確認の結果、トランザクション処理をデータベースタスクに割り当てることができる場合、前記第1のアプリケーションから指示されたトランザクション処理を実行するステップと、
    前記確認の結果、トランザクション処理をデータベースタスクに割り当てることができない場合、前記利用可能メモリ領域情報に含まれるメモリ領域のアドレスにトランザクション処理を実行するデータベースタスクを生成し、前記第1のアプリケーションから指示されたトランザクション処理を実行するステップと
    をさらに含むことを特徴とするトランザクション並行制御方法。
  7. 請求項に記載のトランザクション並行制御方法であって、
    前記利用可能メモリ領域情報が、データベースタスクを生成する目的で使用可能なメモリ領域が存在しないことを表す設定を含む場合、
    前記データベース管理システムが、
    前記中断または中止する対象のトランザクション処理の中断と中止とがそれぞれ完了した後、前記第1のアプリケーションから指示されたトランザクション処理を、トランザクション処理を実行するデータベースタスクに割り当てることができるか否かを確認するステップと、
    前記確認の結果、トランザクション処理をデータベースタスクに割り当てることができる場合、前記第1のアプリケーションから指示されたトランザクション処理を実行するステップと、
    前記確認の結果、トランザクション処理をデータベースタスクに割り当てることができない場合、中断中のトランザクション処理に割り当てられているデータベースタスクのレジスタ値のスナップショットであるレジスタ情報、実行時スタックを保持するメモリ領域のスナップショットである実行時スタック情報、および、大域変数を保持するメモリ領域のスナップショットである大域変数領域情報からなるコンテキストをコンテキスト退避領域に退避するステップと、
    前記コンテキストの退避を行ったデータベースタスクに、前記第1のアプリケーションから指示されたトランザクション処理を割り当てて、前記第1のアプリケーションから指示されたトランザクション処理を実行するステップと、
    前記第1のアプリケーションから指示されたトランザクション処理の実行が完了した後、前記コンテキスト退避領域から前記コンテキストを復旧するステップと
    をさらに含むこと特徴とする請求項7に記載のトランザクション並行制御方法。
  8. データベース管理システムであって、
    第1のアプリケーションからトランザクション処理要求の指示を受けるとともに、トランザクション処理の識別子を含むトランザクション識別子情報前記データベース管理システムがトランザクション処理の実行中にデータを一時的に格納するメモリ領域であるデータベースキャッシュメモリのサイズを含むデータベース資源取得予定情報と、を受け取り、第1のアプリケーションと異なる第2のアプリケーションから指示されたトランザクション処理が実行中または中断中であるならば、前記第1のアプリケーションから入力されたトランザクション処理の優先度と、前記第2のアプリケーションから指示されたトランザクション処理の優先度とを比較するトランザクション処理要求受付部と、
    前記比較の結果、前記第1のアプリケーションから指示されたトランザクション処理の優先度が、前記第2のアプリケーションから指示されたトランザクション処理の優先度よりも高い場合、前記第1のアプリケーションから指示されたトランザクション処理と実行中または中断中のトランザクション処理との間で、トランザクション処理の実行中に取得するデータベースオブジェクトの共有ロックおよび排他ロックの獲得要求、前記データベース資源取得予定情報に設定されたサイズの前記データベースキャッシュメモリの獲得要求、ならびに、トランザクション処理中にデータの書き込み及び読み出しを行うデータベースが格納されたI/Oデバイスの使用権の獲得要求のうち、いずれかの獲得要求の競合が発生するか否かを判定し、前記競合が発生するか否かの判定結果に基づいて、中断又は中止するトランザクション処理を決定するデータベース資源競合制御部と、
    前記中断または中止する対象のトランザクション処理の中断または中止がそれぞれ完了した後、前記データベース資源取得予定情報に設定されたサイズのデータベースキャッシュメモリ、リソースに対する共有ロック及び排他ロック、及びI/Oデバイスの使用権の取得を行い、前記第1のアプリケーションから指示されたトランザクション処理を実行し、前記第1のアプリケーションから指示されたトランザクション処理の実行が完了した後、中断しているトランザクション処理の実行を再開するデータベースタスク制御処理部と
    を備えることを特徴とするデータベース管理システム。
  9. 請求項に記載のデータベース管理システムであって
    記実行中または中断中のトランザクション処理が取得している前記データベースキャッシュメモリのサイズを保持するデータ構造を有し、
    前記データベース資源競合制御部は、前記データベースキャッシュメモリの獲得要求の競合を判定するにあたり、前記データベース管理システムが使用できる前記データベースキャッシュメモリの総容量から前記実行中および中断中のトランザクション処理が取得中の前記データベースキャッシュメモリの合計サイズを引いた値が、前記データベース資源取得予定情報に含まれる前記データベースキャッシュメモリの所要量よりも少ない場合に前記データベースキャッシュメモリの競合が発生したと判定し、
    データベース資源競合制御部は、前記中止するトランザクション処理を決定するにあたり、前記判定により、前記データベースキャッシュメモリの競合が発生した場合、前記データベース管理システムが使用できる前記データベースキャッシュメモリの総容量から、前記実行中および中断中のトランザクション処理が取得中の前記データベースキャッシュメモリの合計サイズを引いて、中止対象のトランザクション処理が取得中の前記データベースキャッシュメモリの合計サイズを足した値が、前記データベース資源取得予定情報に含まれる前記データベースキャッシュメモリの所要量と同じかもしくは大きくなるよう、実行中または中断中で、かつ、前記優先度定義情報に含まれる優先度よりも低い優先度のトランザクション処理のなかから、優先度が低い順に最小個のトランザクション処理を選択することにより、中止対象のトランザクション処理と決定すること
    を特徴とするデータベース管理システム。
  10. 請求項に記載のデータベース管理システムであって
    記実行中または中断中のトランザクション処理が共有ロックおよび排他ロックを取得しているデータベースオブジェクトの一覧を保持するデータ構造と、
    トランザクション処理の実行中に共有ロックおよび排他ロックを取得したデータベースオブジェクトを、トランザクション処理の識別子に対応付けて保持するデータ構造であるトランザクションプロファイル情報を有し、
    前記データベース資源競合制御部は、前記排他の獲得要求の競合を判定するにあたり、前記第1のアプリケーションから要求されたトランザクション処理が共有ロックまたは排他ロックを取得する対象のデータベースオブジェクトであるか否かを判断し、前記第1のアプリケーションから要求されたトランザクション処理が共有ロックを取得するデータベースオブジェクトに対して、前記実行中または中断中のトランザクション処理が排他ロックを取得している場合、または、前記第1のアプリケーションから要求されたトランザクション処理が排他ロックを取得するデータベースオブジェクトに対して、前記実行中または中断中のトランザクション処理が共有ロックもしくは排他ロックを取得している場合に、排他競合が発生したと判定し、
    前記データベース資源競合制御部は、前記中止するトランザクション処理を決定するにあたり、前記判定により、排他競合が発生した場合、実行中または中断中で、かつ、優先度定義情報に含まれる優先度よりも低い優先度のトランザクション処理のうち、前記第1のアプリケーションから要求されたトランザクション処理が共有ロックを取得するデータベースオブジェクトに対して排他ロックを取得中のトランザクション処理と、前記第1のアプリケーションから要求されたトランザクション処理が排他ロックを取得するデータベースオブジェクトに対して共有ロックまたは排他ロックを取得中のトランザクション処理を、中止対象のトランザクション処理と決定すること
    を特徴とするデータベース管理システム。
  11. 請求項に記載のデータベース管理システムであって
    記第1のアプリケーションから要求されたトランザクション処理、実行中のトランザクション処理、および、中断中のトランザクション処理が使用する対象のI/Oデバイスの一覧を保持するデータ構造を有し、
    前記データベース資源競合制御部は、前記I/Oデバイス使用権の獲得要求の競合を判定するにあたり、前記第1のアプリケーションから要求されたトランザクション処理が使用するI/Oデバイスを、実行中または中断中のトランザクション処理が使用中の場合、I/Oデバイス使用権の競合が発生したと判定し、
    前記データベース資源競合制御部は、前記中止するトランザクション処理を決定するにあたり、前記判定により、I/Oデバイス使用権の競合が発生した場合、実行中および中断中で、かつ、優先度定義情報に含まれる優先度よりも低い優先度のトランザクション処理のうち、前記第1のアプリケーションから要求されたトランザクション処理が使用するI/Oデバイスを使用中のトランザクション処理を、中断対象のトランザクション処理と決定すること
    を特徴とするデータベース管理システム。
  12. 請求項に記載のデータベース管理システムであって、
    前記第1のアプリケーションからトランザクション処理要求の指示を受けるとともに、トランザクション処理を実行するデータベースタスクを生成する目的で使用可能なメモリ領域が存在するか否かを表す利用可能メモリ領域情報を受け取ること
    を特徴とするデータベース管理システム。
  13. 請求項12に記載のデータベース管理システムであって、
    前記利用可能メモリ領域情報が、データベースタスクを生成する目的で使用可能なメモリ領域が存在することを表す設定を含む場合、
    前記中断または中止する対象のトランザクション処理の中断と中止がそれぞれ完了した後、前記第1のアプリケーションから指示されたトランザクション処理を、トランザクション処理を実行するデータベースタスクに割り当てることができるか否かを確認し、
    前記確認の結果、トランザクション処理をデータベースタスクに割り当てることができる場合、前記第1のアプリケーションから指示されたトランザクション処理を実行し、
    前記確認の結果、トランザクション処理をデータベースタスクに割り当てることができない場合、前記利用可能メモリ領域情報に含まれるメモリ領域のアドレスにトランザクション処理を実行するデータベースタスクを生成し、前記第1のアプリケーションから指示されたトランザクション処理を実行すること
    を特徴とするデータベース管理システム。
  14. 請求項12に記載のデータベース管理システムであって、
    前記利用可能メモリ領域情報が、データベースタスクを生成する目的で使用可能なメモリ領域が存在しないことを表す設定を含む場合、
    前記中断または中止する対象のトランザクション処理の中断と中止とがそれぞれ完了した後、前記第1のアプリケーションから指示されたトランザクション処理を、トランザクション処理を実行するデータベースタスクに割り当てることができるか否かを確認し、
    前記確認の結果、トランザクション処理をデータベースタスクに割り当てることができる場合、前記第1のアプリケーションから指示されたトランザクション処理を実行し、
    前記確認の結果、トランザクション処理をデータベースタスクに割り当てることができない場合、中断中のトランザクション処理に割り当てられているデータベースタスクのレジスタ値のスナップショットであるレジスタ情報、実行時スタックを保持するメモリ領域のスナップショットである実行時スタック情報、および、大域変数を保持するメモリ領域のスナップショットである大域変数領域情報からなるコンテキストをコンテキスト退避領域に退避し、
    前記コンテキストの退避を行ったデータベースタスクに、前記第1のアプリケーションから指示されたトランザクション処理を割り当てて、前記第1のアプリケーションから指示されたトランザクション処理を実行し、
    前記第1のアプリケーションから指示されたトランザクション処理の実行が完了した後、前記コンテキスト退避領域から前記コンテキストを復旧すること
    を特徴とするデータベース管理システム。
  15. 情報処理装置に、
    第1のアプリケーションからトランザクション処理要求の指示を受けるとともに、トランザクション処理の識別子を含むトランザクション識別子情報前記データベース管理システムがトランザクション処理の実行中にデータを一時的に格納するメモリ領域であるデータベースキャッシュメモリのサイズを含むデータベース資源取得予定情報と、を受け取る機能と、
    前記第1のアプリケーションと異なる第2のアプリケーションから指示されたトランザクション処理が実行中または中断中であるならば、前記第1のアプリケーションから入力されたトランザクション処理の優先度と、前記第2のアプリケーションから指示されたトランザクション処理の優先度とを比較する機能と、
    前記比較の結果、前記第1のアプリケーションから指示されたトランザクション処理の優先度が、前記第2のアプリケーションから指示されたトランザクション処理の優先度よりも高い場合、前記第1のアプリケーションから指示されたトランザクション処理と実行中または中断中のトランザクション処理との間で、トランザクション処理の実行中に取得するデータベースオブジェクトの共有ロックおよび排他ロックの獲得要求、前記データベース資源取得予定情報に設定されたサイズの前記データベースキャッシュメモリの獲得要求、ならびに、トランザクション処理中にデータの書き込み及び読み出しを行うデータベースが格納されたI/Oデバイスの使用権の獲得要求のうち、いずれかの獲得要求の競合が発生するか否かを判定する機能と、
    前記競合が発生するか否かの判定結果に基づいて、中断又は中止するトランザクション処理を決定する機能と、
    前記中断または中止する対象のトランザクション処理の中断または中止がそれぞれ完了した後、前記データベース資源取得予定情報に設定されたサイズのデータベースキャッシュメモリ、リソースに対する共有ロック及び排他ロック、及びI/Oデバイスの使用権の取得を行い、前記第1のアプリケーションから指示されたトランザクション処理を実行する機能と、
    前記第1のアプリケーションから指示されたトランザクション処理の実行が完了した後、中断しているトランザクション処理の実行を再開する機能と
    を実現するためのプログラム。
JP2008144670A 2008-06-02 2008-06-02 トランザクション並行制御方法、データベース管理システム、およびプログラム Expired - Fee Related JP4612710B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008144670A JP4612710B2 (ja) 2008-06-02 2008-06-02 トランザクション並行制御方法、データベース管理システム、およびプログラム
US12/429,702 US20090300017A1 (en) 2008-06-02 2009-04-24 Transaction Parallel Control Method, and Database Managemet System

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008144670A JP4612710B2 (ja) 2008-06-02 2008-06-02 トランザクション並行制御方法、データベース管理システム、およびプログラム

Publications (2)

Publication Number Publication Date
JP2009294695A JP2009294695A (ja) 2009-12-17
JP4612710B2 true JP4612710B2 (ja) 2011-01-12

Family

ID=41381058

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008144670A Expired - Fee Related JP4612710B2 (ja) 2008-06-02 2008-06-02 トランザクション並行制御方法、データベース管理システム、およびプログラム

Country Status (2)

Country Link
US (1) US20090300017A1 (ja)
JP (1) JP4612710B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113110949A (zh) * 2021-04-29 2021-07-13 中科院计算所南京研究院 单终端多流程并存处理方法和装置

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364481B2 (en) 2008-07-02 2013-01-29 Google Inc. Speech recognition with parallel recognition tasks
CN103853610B (zh) * 2012-12-07 2018-11-16 腾讯科技(深圳)有限公司 资源优化方法及装置
CN103049334B (zh) * 2012-12-14 2015-09-30 华为技术有限公司 一种任务处理的方法和虚拟机
US9674715B2 (en) * 2013-08-16 2017-06-06 Nokia Solutions And Networks Oy System and method for managing multi-process priority and parameter conflict in a self organizing network controller
WO2016155008A1 (en) * 2015-04-03 2016-10-06 Yahoo! Inc. Method and system for scheduling transactions in a data system
US10346196B2 (en) * 2015-08-11 2019-07-09 Oracle International Corporation Techniques for enhancing progress for hardware transactional memory
US10387198B2 (en) 2016-08-11 2019-08-20 Rescale, Inc. Integrated multi-provider compute platform
US10193762B2 (en) * 2016-08-11 2019-01-29 Rescale, Inc. Dynamic optimization of simulation resources
IT201700034731A1 (it) 2017-03-29 2018-09-29 St Microelectronics Srl Modulo e metodo di gestione dell'accesso ad una memoria
JP6783812B2 (ja) * 2018-03-13 2020-11-11 株式会社東芝 情報処理装置、情報処理方法およびプログラム
US11790361B2 (en) 2018-04-05 2023-10-17 Visa International Service Association Smart device system and method of use
WO2020108783A1 (en) * 2018-11-27 2020-06-04 Telefonaktiebolaget Lm Ericsson (Publ) Technique for concurrency control
WO2020126106A1 (en) * 2018-12-17 2020-06-25 Telefonaktiebolaget Lm Ericsson (Publ) Technique for concurrency control
KR101985905B1 (ko) * 2019-03-05 2019-06-04 디지테크정보 주식회사 시스템 연동 방법 및 이를 이용하는 연동형 시스템
US11567923B2 (en) 2019-06-05 2023-01-31 Oracle International Corporation Application driven data change conflict handling system
CN112149070B (zh) * 2019-06-27 2024-04-23 杭州海康威视数字技术股份有限公司 权限控制方法及装置
US11461486B2 (en) 2019-10-25 2022-10-04 Oracle International Corporation Partial page approval model
US11645265B2 (en) * 2019-11-04 2023-05-09 Oracle International Corporation Model for handling object-level database transactions in scalable computing applications
CN112465466B (zh) * 2020-12-10 2024-05-03 金蝶软件(中国)有限公司 流程任务执行方法、装置、计算机设备和存储介质
US11757733B2 (en) * 2021-12-08 2023-09-12 Cisco Technology, Inc. Parallel service invocation in a network

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03235130A (ja) * 1990-02-13 1991-10-21 Hitachi Ltd 排他優先制御方式
JPH05120041A (ja) * 1991-10-25 1993-05-18 Nec Corp 資源割り当て管理方式
JPH0651980A (ja) * 1992-07-28 1994-02-25 Fuji Xerox Co Ltd 情報処理装置のスタックの配置方式
JP2004348439A (ja) * 2003-05-22 2004-12-09 Ntt Docomo Inc コンピュータ及びプログラム
JP2006107197A (ja) * 2004-10-06 2006-04-20 Nec Corp メモリ制御方法およびプログラムならびに端末装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6769004B2 (en) * 2000-04-27 2004-07-27 Irobot Corporation Method and system for incremental stack scanning
JP4611830B2 (ja) * 2005-07-22 2011-01-12 優 喜連川 データベース管理システム及び方法
US7716249B2 (en) * 2005-09-16 2010-05-11 Microsoft Corporation Transaction and task scheduler
US8024714B2 (en) * 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03235130A (ja) * 1990-02-13 1991-10-21 Hitachi Ltd 排他優先制御方式
JPH05120041A (ja) * 1991-10-25 1993-05-18 Nec Corp 資源割り当て管理方式
JPH0651980A (ja) * 1992-07-28 1994-02-25 Fuji Xerox Co Ltd 情報処理装置のスタックの配置方式
JP2004348439A (ja) * 2003-05-22 2004-12-09 Ntt Docomo Inc コンピュータ及びプログラム
JP2006107197A (ja) * 2004-10-06 2006-04-20 Nec Corp メモリ制御方法およびプログラムならびに端末装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113110949A (zh) * 2021-04-29 2021-07-13 中科院计算所南京研究院 单终端多流程并存处理方法和装置
CN113110949B (zh) * 2021-04-29 2023-10-13 中科南京信息高铁研究院 单终端多流程并存处理方法和装置

Also Published As

Publication number Publication date
US20090300017A1 (en) 2009-12-03
JP2009294695A (ja) 2009-12-17

Similar Documents

Publication Publication Date Title
JP4612710B2 (ja) トランザクション並行制御方法、データベース管理システム、およびプログラム
US9959313B2 (en) Database management system and method capable of dynamically issuing inputs/outputs and executing operations in parallel
US5946711A (en) System for locking data in a shared cache
US20050172083A1 (en) Selection of a resource in a distributed computer system
US20080168103A1 (en) Database management methodology
EP0747832A2 (en) Customer information control system and method in a loosely coupled parallel processing environment
KR101634403B1 (ko) 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들
US11709818B2 (en) Managing concurrent transactions in database systems
EP0747813A2 (en) Customer information control system and method with temporary storage queuing functions in a loosely coupled parallel processing environment
CN104239134A (zh) 一种众核系统的任务管理方法和装置
US5790868A (en) Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment
CN104731722B (zh) 一种针对缓存页面的页面管理方法及装置
JPH0944461A (ja) 疎結合並列処理環境においてapiスタート及びキャンセルトランザクション機能を有する顧客情報制御システム及び方法
US20110302377A1 (en) Automatic Reallocation of Structured External Storage Structures
CN116303661B (zh) 一种分布式数据库中针对序列的处理方法、装置及系统
JP5674850B2 (ja) データベース管理システム及び方法
JP2787107B2 (ja) バッファ制御方式及び装置
JP5283675B2 (ja) データベース管理システム及び方法
CN117573027A (zh) 数据处理方法及设备
CN111737298A (zh) 基于分布式存储的缓存数据管控方法及装置
CN116226081A (zh) 数据库弹性伸缩方法、装置、电子设备及存储介质
JPH1049387A (ja) バッファ管理方法および装置
JP2000242511A (ja) 資源管理方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100906

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101005

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101015

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4612710

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees