JPH05233397A - 適用プログラム実行管理方法 - Google Patents
適用プログラム実行管理方法Info
- Publication number
- JPH05233397A JPH05233397A JP4034757A JP3475792A JPH05233397A JP H05233397 A JPH05233397 A JP H05233397A JP 4034757 A JP4034757 A JP 4034757A JP 3475792 A JP3475792 A JP 3475792A JP H05233397 A JPH05233397 A JP H05233397A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- application program
- data operation
- time
- operation procedure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】本発明は、データベースにアクセスするデータ
操作言語で記述されデータ操作手続を含む適用プログラ
ム実行の際の実行時間の短縮を可能にする。 【構成】データベースにアクセスするデータ操作言語で
記述されたデータ操作手続を含む適用プログラムを実行
するもので、適用プログラムよりデータ操作言語で記述
されたデータ操作手続をデータ操作手続抽出手段1より
抽出し、この抽出されたデータ操作手続よりデータ操作
手続の実行において参照あるいは更新される変数を調べ
該変数が適用プログラムの親言語で使用される時点を見
つけ、変数使用時点とデータ操作手続、データ操作手続
と親言語の分岐命令のそれぞれの間の依存関係を依存関
係解析手段2より解析し、この解析結果に基づいてデー
タ操作手続を最も早く実行できる時点を実行確定時点決
定手段3で決定し、コンパイラ4によりオブジェクト・
コードを生成するようにしている。
操作言語で記述されデータ操作手続を含む適用プログラ
ム実行の際の実行時間の短縮を可能にする。 【構成】データベースにアクセスするデータ操作言語で
記述されたデータ操作手続を含む適用プログラムを実行
するもので、適用プログラムよりデータ操作言語で記述
されたデータ操作手続をデータ操作手続抽出手段1より
抽出し、この抽出されたデータ操作手続よりデータ操作
手続の実行において参照あるいは更新される変数を調べ
該変数が適用プログラムの親言語で使用される時点を見
つけ、変数使用時点とデータ操作手続、データ操作手続
と親言語の分岐命令のそれぞれの間の依存関係を依存関
係解析手段2より解析し、この解析結果に基づいてデー
タ操作手続を最も早く実行できる時点を実行確定時点決
定手段3で決定し、コンパイラ4によりオブジェクト・
コードを生成するようにしている。
Description
【0001】
【産業上の利用分野】本発明は、データベースにアクセ
スするデータ操作言語で記述されたデータ操作手続を含
む適用プログラムを実行する適用プログラム実行管理方
法に関するものである。
スするデータ操作言語で記述されたデータ操作手続を含
む適用プログラムを実行する適用プログラム実行管理方
法に関するものである。
【0002】
【従来の技術】従来、適用プログラムの実行管理方法と
して、上林弥彦、最所圭三、仲興国による「実時間デー
タベースに適した2段階2相施錠方式」情報処理学会、
データベース・システム研究会72−17(1989.
7.21)が知られている。
して、上林弥彦、最所圭三、仲興国による「実時間デー
タベースに適した2段階2相施錠方式」情報処理学会、
データベース・システム研究会72−17(1989.
7.21)が知られている。
【0003】図21は、かかる文献で述べる並列トラン
ザクション中の操作の処理の依存関係を示している。こ
の場合、節点はトランザクション中の操作の処理を、有
向枝はその起点に対応する処理の結果を終点に対応する
処理が使用することを示し、また各節点の処理を実行す
る条件は、その節点が終点であるすべての枝の起点に対
応する処理がすべて終了していることを示している。
ザクション中の操作の処理の依存関係を示している。こ
の場合、節点はトランザクション中の操作の処理を、有
向枝はその起点に対応する処理の結果を終点に対応する
処理が使用することを示し、また各節点の処理を実行す
る条件は、その節点が終点であるすべての枝の起点に対
応する処理がすべて終了していることを示している。
【0004】ところが、このような並列トランザクショ
ンは、複数データの操作手続を並列に実行できる可能性
を示しているだけで、与えられた適用プログラムに対し
てデータ操作手続の並列実行性の抽出をどのように行う
かについて示されていない。例えば、適用プログラムの
親言語の分岐命令がデータ操作手続の実行を選択的に決
定する場合、図21に対応する有向グラフをどのように
作り上げ、どのように適用プログラムを実行すればよい
のか明確でない。
ンは、複数データの操作手続を並列に実行できる可能性
を示しているだけで、与えられた適用プログラムに対し
てデータ操作手続の並列実行性の抽出をどのように行う
かについて示されていない。例えば、適用プログラムの
親言語の分岐命令がデータ操作手続の実行を選択的に決
定する場合、図21に対応する有向グラフをどのように
作り上げ、どのように適用プログラムを実行すればよい
のか明確でない。
【0005】
【発明が解決しようとする課題】このように、従来で
は、適用プログラムの実行時に並列性を抽出するために
は、適用プログラムの親言語を含めたデータ操作手続の
依存関係を解析することが必要となり、また、適用プロ
グラムの実行時の並列性をさらに高めるには、データ操
作手続の実行をできるだけ早くしなければならない。し
かし、依存関係の制約が、データ操作手続の実行時点を
制限するため、適用プログラムの実行時間の短縮はそれ
ほど望めなかった。本発明は、上記事情に鑑みてなされ
たもので適用プログラムの実行時間の大幅な短縮を可能
にした適用プログラム実行管理方法を提供することを目
的とする。
は、適用プログラムの実行時に並列性を抽出するために
は、適用プログラムの親言語を含めたデータ操作手続の
依存関係を解析することが必要となり、また、適用プロ
グラムの実行時の並列性をさらに高めるには、データ操
作手続の実行をできるだけ早くしなければならない。し
かし、依存関係の制約が、データ操作手続の実行時点を
制限するため、適用プログラムの実行時間の短縮はそれ
ほど望めなかった。本発明は、上記事情に鑑みてなされ
たもので適用プログラムの実行時間の大幅な短縮を可能
にした適用プログラム実行管理方法を提供することを目
的とする。
【0006】
【課題を解決するための手段】本発明は、データベース
を有するシステムにおいて、データベースにアクセスす
るデータ操作言語で記述されたデータ操作手続を含む適
用プログラムを実行する場合に、データ操作手続の実行
のために値を確定しなければならない変数およびデータ
操作手続の中で確定される変数が適用プログラムの親言
語で参照または更新される時点を見つけ、変数使用時点
と前記データ操作手続、データ操作手続と親言語の分岐
命令のそれぞれの間の依存関係を解析し、この依存関係
の解析の結果に基づいてデータ操作手続を最も早く実行
できる時点を決定するようにしている。
を有するシステムにおいて、データベースにアクセスす
るデータ操作言語で記述されたデータ操作手続を含む適
用プログラムを実行する場合に、データ操作手続の実行
のために値を確定しなければならない変数およびデータ
操作手続の中で確定される変数が適用プログラムの親言
語で参照または更新される時点を見つけ、変数使用時点
と前記データ操作手続、データ操作手続と親言語の分岐
命令のそれぞれの間の依存関係を解析し、この依存関係
の解析の結果に基づいてデータ操作手続を最も早く実行
できる時点を決定するようにしている。
【0007】また、本発明は、適用プログラムの実行が
実行予測と一致するか監視して前記適用プログラムの実
行に関する情報を採取し、採取された情報を収集し適用
プログラムごとに統計を取り該統計情報に基づいて前記
適用プログラムの実行を予測するとともに依存関係の解
析を決定し、この決定により前記適用プログラムの依存
関係を解析するとともに前記予測内容に基づいてデータ
操作手続の実行できる時点を変更し該変更により実行時
間が短縮されるかを判定し実行時間が短縮されれば適用
プログラムの予測実行を決定するようにしている。
実行予測と一致するか監視して前記適用プログラムの実
行に関する情報を採取し、採取された情報を収集し適用
プログラムごとに統計を取り該統計情報に基づいて前記
適用プログラムの実行を予測するとともに依存関係の解
析を決定し、この決定により前記適用プログラムの依存
関係を解析するとともに前記予測内容に基づいてデータ
操作手続の実行できる時点を変更し該変更により実行時
間が短縮されるかを判定し実行時間が短縮されれば適用
プログラムの予測実行を決定するようにしている。
【0008】
【作用】この結果、本発明によれば適用プログラムのコ
ンパイル時に、データ操作手続、データ操作手続内で使
用される変数の使用時点、親言語の分岐命令の間の依存
関係が解析され、この結果からデータ操作手続を最も早
く実行できる時点が決定され、それに基づいてコンパイ
ラがオブジェクト・コードが生成されるようになり、適
用プログラム実行の並列性を引き出すことが可能にな
る。
ンパイル時に、データ操作手続、データ操作手続内で使
用される変数の使用時点、親言語の分岐命令の間の依存
関係が解析され、この結果からデータ操作手続を最も早
く実行できる時点が決定され、それに基づいてコンパイ
ラがオブジェクト・コードが生成されるようになり、適
用プログラム実行の並列性を引き出すことが可能にな
る。
【0009】また、本発明によれば、適用プログラムの
実行情報により適用プログラムの実行が予測されるとと
もに、依存関係再解析が決定され、適用プログラムが実
行される仮定のもとで依存関係が再解析され、この結果
からデータ操作手続の実行できる時点を変更して実行時
間が短縮されれば適用プログラムの再コンパイルが決定
され、新しいオブジェクト・コードが再生成されるよう
になり、適用プログラム実行の並列性をさらに高めるこ
とができる。
実行情報により適用プログラムの実行が予測されるとと
もに、依存関係再解析が決定され、適用プログラムが実
行される仮定のもとで依存関係が再解析され、この結果
からデータ操作手続の実行できる時点を変更して実行時
間が短縮されれば適用プログラムの再コンパイルが決定
され、新しいオブジェクト・コードが再生成されるよう
になり、適用プログラム実行の並列性をさらに高めるこ
とができる。
【0010】
【実施例】以下、本発明の一実施例を図面に従い説明す
る。
る。
【0011】図1は、適用プログラムのコンパイルを説
明するための該略構成を示している。図において、1は
データ操作手続抽出手段で、このデータ操作手続抽出手
段1は、親言語(COBOL,C,FORTRANなど
の一般的な高級言語)に組み込まれているデータ操作言
語で記述されたデータ操作手続を抽出するようにしてい
る。そして、データ操作手続抽出手段1で抽出されるデ
ータ操作手続は、依存関係解析手段2に送られる。
明するための該略構成を示している。図において、1は
データ操作手続抽出手段で、このデータ操作手続抽出手
段1は、親言語(COBOL,C,FORTRANなど
の一般的な高級言語)に組み込まれているデータ操作言
語で記述されたデータ操作手続を抽出するようにしてい
る。そして、データ操作手続抽出手段1で抽出されるデ
ータ操作手続は、依存関係解析手段2に送られる。
【0012】依存関係解析手段2は、抽出されたデータ
操作手続を解析し、それぞれのデータ操作手続の実行に
おいて参照、あるいは更新される変数(以下、これをD
ML(Data Manipulation Language)変数と呼ぶ)を調
べ、それらのDML変数が親言語で使用されている時点
(以下、これをDML変数使用時点と呼ぶ)を見つけ
る。そして、これらのデータ操作手続のDML変数使用
時点の順序関係と、データ操作手続とDML変数使用時
点のそれぞれでDML変数を参照するか更新するかとを
調べて依存関係を整理する。さらに、親言語の分岐命令
とデータ操作手続との依存関係も整理する。この依存関
係解析手段2の依存関係解析結果は、実行確定時点決定
手段3に送られる。
操作手続を解析し、それぞれのデータ操作手続の実行に
おいて参照、あるいは更新される変数(以下、これをD
ML(Data Manipulation Language)変数と呼ぶ)を調
べ、それらのDML変数が親言語で使用されている時点
(以下、これをDML変数使用時点と呼ぶ)を見つけ
る。そして、これらのデータ操作手続のDML変数使用
時点の順序関係と、データ操作手続とDML変数使用時
点のそれぞれでDML変数を参照するか更新するかとを
調べて依存関係を整理する。さらに、親言語の分岐命令
とデータ操作手続との依存関係も整理する。この依存関
係解析手段2の依存関係解析結果は、実行確定時点決定
手段3に送られる。
【0013】実行確定時点決定手段3は、依存関係解析
手段2からの依存関係解析結果をもとに、それぞれのデ
ータ操作手続について、それを実行できる最も早い時点
(以下、これをDML実行確定時点と呼ぶ)を決定す
る。ここで、データ操作手続XのDML実行確定時点と
は、次のような時点である。
手段2からの依存関係解析結果をもとに、それぞれのデ
ータ操作手続について、それを実行できる最も早い時点
(以下、これをDML実行確定時点と呼ぶ)を決定す
る。ここで、データ操作手続XのDML実行確定時点と
は、次のような時点である。
【0014】(1)データ操作手続XがDML変数の値
を参照する場合、DML変数の値が更新され、かつその
値がデータ操作手続Xの実行まで変化しないことが確定
し、かつデータ操作手続Xを実行することが確定する時
点。
を参照する場合、DML変数の値が更新され、かつその
値がデータ操作手続Xの実行まで変化しないことが確定
し、かつデータ操作手続Xを実行することが確定する時
点。
【0015】(2)データ操作手続XがDML変数の値
を更新する場合、DML変数の値が参照または更新さ
れ、かつその値がデータ操作手続Xの実行まで変化しな
いことが確定し、かつデータ操作手続Xを実行すること
が確定する時点。ここでは、データ操作手続が別のデー
タ操作手続のDML実行確定時点になる場合もあれば、
DML変数使用時点がDML実行確定時点になる場合も
ある。
を更新する場合、DML変数の値が参照または更新さ
れ、かつその値がデータ操作手続Xの実行まで変化しな
いことが確定し、かつデータ操作手続Xを実行すること
が確定する時点。ここでは、データ操作手続が別のデー
タ操作手続のDML実行確定時点になる場合もあれば、
DML変数使用時点がDML実行確定時点になる場合も
ある。
【0016】そして、コンパイラ4は、DML実行確定
時点の決定に基づきデータベース・アクセスを要求する
(データ操作手続を実行する)オブジェクトコードを生
成する。また、コンパイラ4は、データ操作手続の終了
を待たずに、処理を先に進めるようにコードを生成し、
さらに、親言語のDML変数使用時点においてDML変
数の値が確定していないならば、確定するまでプロセス
を実行待ち状態にするコードを生成するようにもしてい
る。
時点の決定に基づきデータベース・アクセスを要求する
(データ操作手続を実行する)オブジェクトコードを生
成する。また、コンパイラ4は、データ操作手続の終了
を待たずに、処理を先に進めるようにコードを生成し、
さらに、親言語のDML変数使用時点においてDML変
数の値が確定していないならば、確定するまでプロセス
を実行待ち状態にするコードを生成するようにもしてい
る。
【0017】図2は、コンパイラにより生成されるオブ
ジェクト・モジュールの概要を示している。この場合、
命令コード群A、B、Cは適用プログラムの親言語のコ
ンパイル結果である。そして、命令コード群Aの直後が
DML実行確定時点である。DML実行確定時点には、
対応するデータ操作手続を実行することをメッセージに
より伝える命令コード群aを入れる。
ジェクト・モジュールの概要を示している。この場合、
命令コード群A、B、Cは適用プログラムの親言語のコ
ンパイル結果である。そして、命令コード群Aの直後が
DML実行確定時点である。DML実行確定時点には、
対応するデータ操作手続を実行することをメッセージに
より伝える命令コード群aを入れる。
【0018】データ操作手続実行メッセージの受信側
は、送信側(適用プログラムを実行するプロセス)と独
立にデータ操作手続を処理するプロセスである。命令コ
ード群aの直後に上記のメッセージに対する応答を待つ
機構(命令コード群)は入れない。すなわち、命令コー
ド群aの実行後にはすぐに命令コード群Bを実行する。
は、送信側(適用プログラムを実行するプロセス)と独
立にデータ操作手続を処理するプロセスである。命令コ
ード群aの直後に上記のメッセージに対する応答を待つ
機構(命令コード群)は入れない。すなわち、命令コー
ド群aの実行後にはすぐに命令コード群Bを実行する。
【0019】命令コード群Cの先頭の命令コードはDM
L変数使用時点である。DML変数使用時点の前には、
そこで使用されるDML変数が確定しているかどうか調
べ、その判定結果により分岐する命令コード群bを入れ
る。命令コード群bの直後には、DML変数が確定する
まで待つ命令コード群cを入れる。
L変数使用時点である。DML変数使用時点の前には、
そこで使用されるDML変数が確定しているかどうか調
べ、その判定結果により分岐する命令コード群bを入れ
る。命令コード群bの直後には、DML変数が確定する
まで待つ命令コード群cを入れる。
【0020】また、命令コード群bにおいて、DML変
数使用点で使用されるDML変数が確定していれば、命
令コード群cを飛ばし、命令コード群Cを実行するよう
にする。命令コード群Cは命令コード群cの直後に入れ
る。オブジェクト・モジュールには、データ操作手続を
処理するプロセスからの応答を処理する応答処理ルーチ
ルの命令コード群dを入れる。適用プログラムを実行す
るプロセスが応答を受けると、現在処理中の命令を停止
し、命令コード群dを処理する。命令コード群dの処理
後は、停止した命令から処理を続行する。図3は、適用
プログラムの実行時における概要を示している。
数使用点で使用されるDML変数が確定していれば、命
令コード群cを飛ばし、命令コード群Cを実行するよう
にする。命令コード群Cは命令コード群cの直後に入れ
る。オブジェクト・モジュールには、データ操作手続を
処理するプロセスからの応答を処理する応答処理ルーチ
ルの命令コード群dを入れる。適用プログラムを実行す
るプロセスが応答を受けると、現在処理中の命令を停止
し、命令コード群dを処理する。命令コード群dの処理
後は、停止した命令から処理を続行する。図3は、適用
プログラムの実行時における概要を示している。
【0021】この場合、適用プログラム実行プロセス5
は、コンパイラが生成したコードに従って適用プログラ
ムを実行する。そして、プログラムの実行がDML実行
確定時点まで進むと、DML実行確定時点に対応するデ
ータ操作手続の実行を実行判定手段6に要求し、その応
答を待たずに適用プログラムの実行を進める。また、D
ML変数使用時点まで進むと、対応するDML変数の値
が確定しているかどうか調べる。DML変数の値が確定
していればプログラムの実行を進める。DML変数の値
が確定していなければ、確定するまで実行プロセスは実
行待ち状態に入る。
は、コンパイラが生成したコードに従って適用プログラ
ムを実行する。そして、プログラムの実行がDML実行
確定時点まで進むと、DML実行確定時点に対応するデ
ータ操作手続の実行を実行判定手段6に要求し、その応
答を待たずに適用プログラムの実行を進める。また、D
ML変数使用時点まで進むと、対応するDML変数の値
が確定しているかどうか調べる。DML変数の値が確定
していればプログラムの実行を進める。DML変数の値
が確定していなければ、確定するまで実行プロセスは実
行待ち状態に入る。
【0022】また、データベース管理システム7からデ
ータ操作手続の実行に対する応答があったときは、適用
プログラム実行プロセスの状態により、それぞれ次のよ
うに処理を進める。
ータ操作手続の実行に対する応答があったときは、適用
プログラム実行プロセスの状態により、それぞれ次のよ
うに処理を進める。
【0023】(1)DML変数使用時点の直前において
実行待ち状態である場合、実行プロセスは実行可能状態
になり、応答処理ルーチンを実行する。応答処理ルーチ
ルの実行後、使用されるDML変数の値がすべて確定し
たならば、DML変数使用時点から適用プログラムの実
行を再開する。そうでなければ再び実行待ち状態とな
る。
実行待ち状態である場合、実行プロセスは実行可能状態
になり、応答処理ルーチンを実行する。応答処理ルーチ
ルの実行後、使用されるDML変数の値がすべて確定し
たならば、DML変数使用時点から適用プログラムの実
行を再開する。そうでなければ再び実行待ち状態とな
る。
【0024】(2)上記以外の場合(プロセス実行時の
割込みに相当)、プロセスの現在の処理を停止して応答
処理ルーチンを実行する。応答処理ルーチンの実行後、
停止した時点から処理を再開する。上記のいずれの場合
も、応答処理ルーチンにおいて、応答の中にデータベー
スの値が含まれているならば、それを対応するDML変
数に書き込む。
割込みに相当)、プロセスの現在の処理を停止して応答
処理ルーチンを実行する。応答処理ルーチンの実行後、
停止した時点から処理を再開する。上記のいずれの場合
も、応答処理ルーチンにおいて、応答の中にデータベー
スの値が含まれているならば、それを対応するDML変
数に書き込む。
【0025】一方、実行判定手段6は、適用プログラム
実行プロセス5からデータ操作手続の実行要求を受ける
と、そのデータ操作手続内で使用されるすべてのDML
変数について値が確定しているかどうか調べる。確定し
ていればデータ操作手続の実行をデータベース管理シス
テム7に要求する。確定していなければデータ操作手続
を待ち行列8に入れる。
実行プロセス5からデータ操作手続の実行要求を受ける
と、そのデータ操作手続内で使用されるすべてのDML
変数について値が確定しているかどうか調べる。確定し
ていればデータ操作手続の実行をデータベース管理シス
テム7に要求する。確定していなければデータ操作手続
を待ち行列8に入れる。
【0026】待ち行列8にあるデータ操作手続について
は、そこで使用されるすべてのDML変数の値が確定し
たときに実行を要求する。そのために、適用プログラム
実行プロセス5は、データベース管理システム7からの
応答により確定したDML変数を実行判定手段6に知ら
せる。
は、そこで使用されるすべてのDML変数の値が確定し
たときに実行を要求する。そのために、適用プログラム
実行プロセス5は、データベース管理システム7からの
応答により確定したDML変数を実行判定手段6に知ら
せる。
【0027】DML変数使用時点およびデータ操作手続
の実行時点においては、DML変数が確定しているかど
うかを判定しなければならない。そのために、DML変
数に対して参照フラグと更新フラグを用意し、DML変
数を参照あるいは更新する時に、その手続きの識別子を
対応するフラグにオーバーライトする。これを用いて、
DML変数使用時点、データ操作手続実行時点でDML
変数が確定しているかどうかを次のように判定する。
の実行時点においては、DML変数が確定しているかど
うかを判定しなければならない。そのために、DML変
数に対して参照フラグと更新フラグを用意し、DML変
数を参照あるいは更新する時に、その手続きの識別子を
対応するフラグにオーバーライトする。これを用いて、
DML変数使用時点、データ操作手続実行時点でDML
変数が確定しているかどうかを次のように判定する。
【0028】(1)DML変数を参照するならば、更新
フラグに記憶している手続きが、依存関係解析結果から
得られる直前の更新手続きと一致するかどうかを調べ
る。一致するならば、DML変数は確定している。一致
しないならば、DML変数は確定していない。
フラグに記憶している手続きが、依存関係解析結果から
得られる直前の更新手続きと一致するかどうかを調べ
る。一致するならば、DML変数は確定している。一致
しないならば、DML変数は確定していない。
【0029】(2)DML変数を更新するならば、参照
または更新フラグに記憶している手続きが、依存関係解
析結果から得られる直前の手続きを一致するかどうかを
調べる。一致するならば、DML変数は確定している。
一致しないならば、DML変数は確定していない。次
に、図4は、適用プログラムの一例を示している。図に
示すプログラムは、銀行における預金の引き出しを模擬
した適用プログラムである。
または更新フラグに記憶している手続きが、依存関係解
析結果から得られる直前の手続きを一致するかどうかを
調べる。一致するならば、DML変数は確定している。
一致しないならば、DML変数は確定していない。次
に、図4は、適用プログラムの一例を示している。図に
示すプログラムは、銀行における預金の引き出しを模擬
した適用プログラムである。
【0030】そして、この適用プログラムが使用するデ
ータベースを図5(a)(b)(c)に示している。こ
こで、図5に示すデータベースは、3つのテーブルから
なる関係データベースである。同図(a)に示す預金口
座の情報を保存するACCOUNT_TABLE は、口座番号#ACCO
UNT、名義NAME、残高AMOUNT、支店番号#BRANCH の各属
性を、同図(b)に示す支店の情報を保存するBRANCH T
ABLEは、支店番号#BRANCH 、支店名BRANCH_NAME、総残
高TOTAL _AMOUNTの各属性を、同図(c)に示す借金の
情報を保存するDEBIT _TABLE は、口座番号#ACCOUNT、
借金額DEPTの各属性を有している。
ータベースを図5(a)(b)(c)に示している。こ
こで、図5に示すデータベースは、3つのテーブルから
なる関係データベースである。同図(a)に示す預金口
座の情報を保存するACCOUNT_TABLE は、口座番号#ACCO
UNT、名義NAME、残高AMOUNT、支店番号#BRANCH の各属
性を、同図(b)に示す支店の情報を保存するBRANCH T
ABLEは、支店番号#BRANCH 、支店名BRANCH_NAME、総残
高TOTAL _AMOUNTの各属性を、同図(c)に示す借金の
情報を保存するDEBIT _TABLE は、口座番号#ACCOUNT、
借金額DEPTの各属性を有している。
【0031】図4に示す適用プログラムの親言語は、C
言語、データ操作言語はSQLである。この適用プログ
ラムでは、整数型のDML変数in_account _no、in_
withdrawal、brnch _no、amount、debtを使用する。ま
た、図4においては、DML変数は斜体小文字、テーブ
ル名と属性名は斜体大文字、親言語部分は小文字、SQ
L部分は大文字でそれぞれ表している。なお、DML変
数をデータ操作言語内で用いる場合には変数の先頭に:
を付して表すことにする。
言語、データ操作言語はSQLである。この適用プログ
ラムでは、整数型のDML変数in_account _no、in_
withdrawal、brnch _no、amount、debtを使用する。ま
た、図4においては、DML変数は斜体小文字、テーブ
ル名と属性名は斜体大文字、親言語部分は小文字、SQ
L部分は大文字でそれぞれ表している。なお、DML変
数をデータ操作言語内で用いる場合には変数の先頭に:
を付して表すことにする。
【0032】このような適用プログラムでは、手続き3
1において、入力された預金引き出し口座番号と引き出
し金額をそれぞれDML変数in_ account_ no 、in_
withdrawal に代入する。そして、データ操作手続21
において、テーブルACCOUNT_TABLE から属性#ACCOUNT
の値がin_account _no に等しいダブルを探し、属性
#BRANCH 、AMOUNTの値をそれぞれDML変数branch_ n
o 、amountに代入する。
1において、入力された預金引き出し口座番号と引き出
し金額をそれぞれDML変数in_ account_ no 、in_
withdrawal に代入する。そして、データ操作手続21
において、テーブルACCOUNT_TABLE から属性#ACCOUNT
の値がin_account _no に等しいダブルを探し、属性
#BRANCH 、AMOUNTの値をそれぞれDML変数branch_ n
o 、amountに代入する。
【0033】次に、分岐命令34において、in_ withd
rawal とamountを比較し、in_ withdrawal の方が大き
ければ、データ操作手続22、手続き36、データ操作
手続23を実行し、そうでなければデータ操作手続24
を実行する。
rawal とamountを比較し、in_ withdrawal の方が大き
ければ、データ操作手続22、手続き36、データ操作
手続23を実行し、そうでなければデータ操作手続24
を実行する。
【0034】データ操作手続22では、テーブルACCOUN
T _TABLE から属性#ACCOUNTがin_accountに等しいタ
プルを探し、属性AMOUNTの値を0に更新する。手続き3
6では、DML変数debtにin withdrawal (引き出し金
額)とamount(残高)の差を代入する。データ操作手続
23では、テーブルDEBIT _TABLE に属性#ACCOUNT,DE
BTの値がそれぞれDML変数in_ account、debtである
新しいタプルを挿入する。データ操作手続24では、テ
ーブルACCOUNT _TABLE から属性#ACCOUNTがin_ accou
ntに等しいタプルを探し、属性AMOUNTの値をAMOUNTとin
_ withdrawalの差に変更する。
T _TABLE から属性#ACCOUNTがin_accountに等しいタ
プルを探し、属性AMOUNTの値を0に更新する。手続き3
6では、DML変数debtにin withdrawal (引き出し金
額)とamount(残高)の差を代入する。データ操作手続
23では、テーブルDEBIT _TABLE に属性#ACCOUNT,DE
BTの値がそれぞれDML変数in_ account、debtである
新しいタプルを挿入する。データ操作手続24では、テ
ーブルACCOUNT _TABLE から属性#ACCOUNTがin_ accou
ntに等しいタプルを探し、属性AMOUNTの値をAMOUNTとin
_ withdrawalの差に変更する。
【0035】そして、最後に、データ操作手続25にお
いて、テーブルBRANCH_ TABLEから属性#BRANCH の値が
branch_ no に等しいタプルを探し、属性TOTAL _AMOU
NTの値をTOTAL _AMOUNTとin_ withdrawal の差に更新
する。図6は、このような適用プログラムの処理のフロ
ーチャートを示している。この場合、各ステップの番号
は、上述した各手続きの番号と対応している。そして、
このような適用プログラムのコンパイルは、次のように
行われる。
いて、テーブルBRANCH_ TABLEから属性#BRANCH の値が
branch_ no に等しいタプルを探し、属性TOTAL _AMOU
NTの値をTOTAL _AMOUNTとin_ withdrawal の差に更新
する。図6は、このような適用プログラムの処理のフロ
ーチャートを示している。この場合、各ステップの番号
は、上述した各手続きの番号と対応している。そして、
このような適用プログラムのコンパイルは、次のように
行われる。
【0036】図1において、データ操作手続抽出手段1
は、適用プログラムからデータ操作手続部分を抽出す
る。依存関係解析手段2は、得られたデータ操作手続か
らDML変数in_ account_ no ,in_ withdrawal ,
branch_ no ,amount,debtを見つける。そして、適用
プログラムのC言語部分を調べて、DML変数が使用さ
れている時点を探す。さらに、データ操作手続、DML
変数使用時点でそれぞれDML変数が参照されている
か、更新されているかを調べ、依存関係を解析する。さ
らに、C言語の分岐命令とデータ操作手続の依存関係と
解析する。以上の処理により、データ操作手続、DML
変数使用時点、分岐命令を節点とした図7に示すような
有向グラフが得られる。
は、適用プログラムからデータ操作手続部分を抽出す
る。依存関係解析手段2は、得られたデータ操作手続か
らDML変数in_ account_ no ,in_ withdrawal ,
branch_ no ,amount,debtを見つける。そして、適用
プログラムのC言語部分を調べて、DML変数が使用さ
れている時点を探す。さらに、データ操作手続、DML
変数使用時点でそれぞれDML変数が参照されている
か、更新されているかを調べ、依存関係を解析する。さ
らに、C言語の分岐命令とデータ操作手続の依存関係と
解析する。以上の処理により、データ操作手続、DML
変数使用時点、分岐命令を節点とした図7に示すような
有向グラフが得られる。
【0037】図7に示す有向グラフは、データ操作手続
に対応する節点を長方形、DML変数使用時点に対応す
る節点を楕円、分岐命令に対応する節点を菱型でそれぞ
れ表している。ここで、分岐命令34はDML変数使用
時点でもあることに注意する。また、節点n1から節点
n2への有向枝は、次のいずれかの条件が成り立つ場合
に存在する。
に対応する節点を長方形、DML変数使用時点に対応す
る節点を楕円、分岐命令に対応する節点を菱型でそれぞ
れ表している。ここで、分岐命令34はDML変数使用
時点でもあることに注意する。また、節点n1から節点
n2への有向枝は、次のいずれかの条件が成り立つ場合
に存在する。
【0038】(1)n1とn2は共通のDML変数を使
用する節点であり(1.1)n1が更新したDML変数
の値をn2が参照する(1.2)n1がDML変数の値
を参照した後n2がその値を更新する (2)n1は分岐命令に対応する節点で、n2は分岐に
よって実行が確定する節点である。
用する節点であり(1.1)n1が更新したDML変数
の値をn2が参照する(1.2)n1がDML変数の値
を参照した後n2がその値を更新する (2)n1は分岐命令に対応する節点で、n2は分岐に
よって実行が確定する節点である。
【0039】例えば、図4に示す適用プログラムにおい
て手続き31(節点31)で更新されたDML変数in_
account_ no はデータ操作手続21(節点21)、2
2(節点22)、23(節点23)、24(節点(2
4)で参照されるので、上記の(1.1)に従い、図7
において有向枝41、42、43、44が付与される。
また、分岐命令34(節点34)に依存して、データ操
作手続22(節点22)、手続き36(節点36)、デ
ータ操作手続23(節点23)か、あるいはデータ操作
手続24(節点24)が実行されるので、上記の(2)
に従い図7において有向枝45、46、47、48が付
与される。
て手続き31(節点31)で更新されたDML変数in_
account_ no はデータ操作手続21(節点21)、2
2(節点22)、23(節点23)、24(節点(2
4)で参照されるので、上記の(1.1)に従い、図7
において有向枝41、42、43、44が付与される。
また、分岐命令34(節点34)に依存して、データ操
作手続22(節点22)、手続き36(節点36)、デ
ータ操作手続23(節点23)か、あるいはデータ操作
手続24(節点24)が実行されるので、上記の(2)
に従い図7において有向枝45、46、47、48が付
与される。
【0040】実行確定時点決定手段3は、有向グラフの
データ操作手続に対応する節点のすべてについて、その
節点に入るすべての枝のもう一方の節点の中から、最も
遅く実行される節点を見つけ、その節点の直後をそれぞ
れDML実行確定時点とする。例えば、図7の有向グラ
フにおいて、データ操作手続に対応する節点は21、2
2、23、24、25であり、それらに入るもう一方の
節点の中で最も遅く実行される節点はそれぞれ節点3
1、34、34、34、21であり、その直後がDML
実行確定時点となる。C言語のコンパイラは、DML実
行確定時点、DML変数使用時点に対応するコードを生
成する。
データ操作手続に対応する節点のすべてについて、その
節点に入るすべての枝のもう一方の節点の中から、最も
遅く実行される節点を見つけ、その節点の直後をそれぞ
れDML実行確定時点とする。例えば、図7の有向グラ
フにおいて、データ操作手続に対応する節点は21、2
2、23、24、25であり、それらに入るもう一方の
節点の中で最も遅く実行される節点はそれぞれ節点3
1、34、34、34、21であり、その直後がDML
実行確定時点となる。C言語のコンパイラは、DML実
行確定時点、DML変数使用時点に対応するコードを生
成する。
【0041】図4の適用プログラムの実行時は、適用プ
ログラム実行プロセスは手続き31までを処理し、DM
L変数in_ account_ no 、in_ withdrawal に値を代
入する。そして、in_ account no ,in_ withdrawal
の更新フラグに手続き31に識別子を入れる。
ログラム実行プロセスは手続き31までを処理し、DM
L変数in_ account_ no 、in_ withdrawal に値を代
入する。そして、in_ account no ,in_ withdrawal
の更新フラグに手続き31に識別子を入れる。
【0042】この場合、手続き31の直後にデータ操作
手続21に対するDML実行確定時点となるので、デー
タ操作手続21の実行を要求する。すると、in_ accou
nt no の更新フラグには手続き31の識別子があり、こ
れは図7に示す有向グラフの依存関係(有向枝41)に
一致しているので、in_ account_ no の値は確定して
いると判定する。
手続21に対するDML実行確定時点となるので、デー
タ操作手続21の実行を要求する。すると、in_ accou
nt no の更新フラグには手続き31の識別子があり、こ
れは図7に示す有向グラフの依存関係(有向枝41)に
一致しているので、in_ account_ no の値は確定して
いると判定する。
【0043】これにより実行判定手段6は、データ操作
手続21の実行をデータベース管理システムに関求す
る。データ操作手続21の実行を要求した直後に、デー
タ操作手続25に対するDML実行確定時点となるの
で、データ操作手続25の実行を要求する。このときま
でにデータ操作手続21のデータベース・アクセスが終
了していれば、branch_ no の値は確定する(branch_
no の更新フラグには手続き21の識別子があり、依存
関係と一致する)。ここでは既にin_ withdrawalの値
も確定しているので、このとき実行判定手段はデータ操
作手続25の実行をデータベース管理システムに要求す
る。しかし、データ操作手続21のデータベース・アク
セスが終了していなければ、データ操作手続25を待ち
行列に入れる。
手続21の実行をデータベース管理システムに関求す
る。データ操作手続21の実行を要求した直後に、デー
タ操作手続25に対するDML実行確定時点となるの
で、データ操作手続25の実行を要求する。このときま
でにデータ操作手続21のデータベース・アクセスが終
了していれば、branch_ no の値は確定する(branch_
no の更新フラグには手続き21の識別子があり、依存
関係と一致する)。ここでは既にin_ withdrawalの値
も確定しているので、このとき実行判定手段はデータ操
作手続25の実行をデータベース管理システムに要求す
る。しかし、データ操作手続21のデータベース・アク
セスが終了していなければ、データ操作手続25を待ち
行列に入れる。
【0044】適用プログラム実行プロセスは、データ操
作手続21の応答を受けると応答処理ルーチンを実行
し、DML変数branch no ,amountの値を更新し、それ
らの更新フラグを手続き21の識別子に更新する。そし
て、DML変数のフラグに変更があったことを実行判定
手段6に知らせる。実行判定手段6は、データ操作手続
25に対してin_ withdrawal とbranch_ no の値が確
定した(in_ withdrawal ,bradnch _noの更新フラグ
にそれぞれ手続き31、21の識別子があり、依存関係
と一致する)ことを確認し、データ操作手続25を待ち
行列から取り出して、データベース管理システムに実行
を要求する。
作手続21の応答を受けると応答処理ルーチンを実行
し、DML変数branch no ,amountの値を更新し、それ
らの更新フラグを手続き21の識別子に更新する。そし
て、DML変数のフラグに変更があったことを実行判定
手段6に知らせる。実行判定手段6は、データ操作手続
25に対してin_ withdrawal とbranch_ no の値が確
定した(in_ withdrawal ,bradnch _noの更新フラグ
にそれぞれ手続き31、21の識別子があり、依存関係
と一致する)ことを確認し、データ操作手続25を待ち
行列から取り出して、データベース管理システムに実行
を要求する。
【0045】データ操作手続25の実行要求と並行して
適用プログラム実行プロセスも処理を進めるので、やが
て分岐命令34を処理することになる。このとき、デー
タ操作手続21のデータベース・アクセスが終了してい
れば、amountの値は確定している(amountの更新フラグ
に手続き21の識別子があり、依存関係と一致する)の
で、分岐命令34を処理することができる。しかし、デ
ータ操作手続21のデータベース・アクセスが終了して
いなければ、分岐命令34の時点で適用プログラム実行
プロセスは待ち状態になる。
適用プログラム実行プロセスも処理を進めるので、やが
て分岐命令34を処理することになる。このとき、デー
タ操作手続21のデータベース・アクセスが終了してい
れば、amountの値は確定している(amountの更新フラグ
に手続き21の識別子があり、依存関係と一致する)の
で、分岐命令34を処理することができる。しかし、デ
ータ操作手続21のデータベース・アクセスが終了して
いなければ、分岐命令34の時点で適用プログラム実行
プロセスは待ち状態になる。
【0046】データ操作手続21のデータベース・アク
セスが終了すれば、データベース管理システムからの応
答を受け、適用プログラム実行プロセスは実行可能状態
になり、branch_ no とamountの値を更新するととも
に、それらの更新フラグを更新する。そして、in_ wit
hdrawal とamountの値が確定するので、分岐命令34を
処理する。分岐命令34の実行直後に、条件が真である
か偽であるかにより、データ操作手続22、あるいはデ
ータ操作手続24のいずれかのDML実行確定時点にな
る。
セスが終了すれば、データベース管理システムからの応
答を受け、適用プログラム実行プロセスは実行可能状態
になり、branch_ no とamountの値を更新するととも
に、それらの更新フラグを更新する。そして、in_ wit
hdrawal とamountの値が確定するので、分岐命令34を
処理する。分岐命令34の実行直後に、条件が真である
か偽であるかにより、データ操作手続22、あるいはデ
ータ操作手続24のいずれかのDML実行確定時点にな
る。
【0047】前者の場合には、データ操作手続22の要
求を、手続き35の実行を同時に行う。さらに、適用プ
ログラム実行プロセスは処理を進めて手続き36を処理
すると、データ操作手続23の実行が確定する。後者の
場合には、データ操作手続24の要求と手続き37の実
行を同時に行う。
求を、手続き35の実行を同時に行う。さらに、適用プ
ログラム実行プロセスは処理を進めて手続き36を処理
すると、データ操作手続23の実行が確定する。後者の
場合には、データ操作手続24の要求と手続き37の実
行を同時に行う。
【0048】ここで、図4の適用プログラムを逐次実行
した場合と、本発明のように並列実行した場合の実行時
間を比較する。図4に示す手続きおよびデータ操作手続
の実行にそれぞれ図8に示すような時間がかかるとす
る。ただし、図8の値には、それぞれの処理を実行する
ときの、ハードウェア・ソフトウェア資源やデータなど
の競合による待ち時間も含まれていると仮定する。
した場合と、本発明のように並列実行した場合の実行時
間を比較する。図4に示す手続きおよびデータ操作手続
の実行にそれぞれ図8に示すような時間がかかるとす
る。ただし、図8の値には、それぞれの処理を実行する
ときの、ハードウェア・ソフトウェア資源やデータなど
の競合による待ち時間も含まれていると仮定する。
【0049】分岐命令34が真であるとき、適用プログ
ラムを逐次実行した場合の実行時間は185となり、本
発明により並列実行した場合の実行時間は図9に示すタ
イムチャートから90となる。また、分岐命令34が偽
であるとき、逐次実行した場合の実行時間は140とな
り、並列実行した場合の実行時間は図10に示すタイム
チャートから80となる。このように本発明によれば、
適用プログラムの実行時間(応答時間)を小さくするこ
とができる。
ラムを逐次実行した場合の実行時間は185となり、本
発明により並列実行した場合の実行時間は図9に示すタ
イムチャートから90となる。また、分岐命令34が偽
であるとき、逐次実行した場合の実行時間は140とな
り、並列実行した場合の実行時間は図10に示すタイム
チャートから80となる。このように本発明によれば、
適用プログラムの実行時間(応答時間)を小さくするこ
とができる。
【0050】ところで、以上に述べた適用プログラムの
並列実行管理方式では、適用プログラムの並列性の解析
をコンパイル時に行ったが、それを実行時に行うことも
できる。例えば、適用プログラムが繰り返し文(C言語
の場合forやwhile文)を含んでいて、その繰り
返しループの中にデータ操作手続が含まれている場合、
その繰り返し回数が確定した時点でデータ操作手続の実
行回数が確定する。実行回数が確定した時点で、それら
のデータ操作手続の依存関係を解析し、並列性を抽出す
る。
並列実行管理方式では、適用プログラムの並列性の解析
をコンパイル時に行ったが、それを実行時に行うことも
できる。例えば、適用プログラムが繰り返し文(C言語
の場合forやwhile文)を含んでいて、その繰り
返しループの中にデータ操作手続が含まれている場合、
その繰り返し回数が確定した時点でデータ操作手続の実
行回数が確定する。実行回数が確定した時点で、それら
のデータ操作手続の依存関係を解析し、並列性を抽出す
る。
【0051】上記の実施例では、DML変数の参照、更
新を基本にした適用プログラムの依存関係解析を示し
た。しかし、適用プログラムによっては、DML変数を
基本とした依存関係解析だけでは不十分なことがある。
そのような適用プログラムの例を図11に示す。図11
の適用プログラムでは、まずデータ操作手続51におい
て、ACCOUNT _TABLE から指定された#ACCOUNTの値を持
つタプルを選び、そのタプルの属性AMOUNTの値を参照す
る。次にデータ操作手続52において、そのタプルの属
性AMONUTの値を更新する。そして、データ操作手続53
において、更新後の値を参照し、手続き62において更
新が正しく行われたかどうかを確認する。
新を基本にした適用プログラムの依存関係解析を示し
た。しかし、適用プログラムによっては、DML変数を
基本とした依存関係解析だけでは不十分なことがある。
そのような適用プログラムの例を図11に示す。図11
の適用プログラムでは、まずデータ操作手続51におい
て、ACCOUNT _TABLE から指定された#ACCOUNTの値を持
つタプルを選び、そのタプルの属性AMOUNTの値を参照す
る。次にデータ操作手続52において、そのタプルの属
性AMONUTの値を更新する。そして、データ操作手続53
において、更新後の値を参照し、手続き62において更
新が正しく行われたかどうかを確認する。
【0052】図11においてDML変数はin_ account
no ,in_ withdrawal 、amount、amount2 である。こ
れらの依存関係を解析すると、図12に示す有向グラフ
が得られる。
no ,in_ withdrawal 、amount、amount2 である。こ
れらの依存関係を解析すると、図12に示す有向グラフ
が得られる。
【0053】図12では、データ操作手続52と53の
間に依存関係はない(有向枝がない)ので、データ操作
手続53がデータ操作手続52より先に実行される可能
性がある。しかし、これではデータ操作手続53が更新
後の値を参照することにはならない。明らかに、適用プ
ログラムの意図に反する。この原因は、変数による依存
関係がないデータ操作手続同士の間に、暗黙の順序関係
が存在することにある。
間に依存関係はない(有向枝がない)ので、データ操作
手続53がデータ操作手続52より先に実行される可能
性がある。しかし、これではデータ操作手続53が更新
後の値を参照することにはならない。明らかに、適用プ
ログラムの意図に反する。この原因は、変数による依存
関係がないデータ操作手続同士の間に、暗黙の順序関係
が存在することにある。
【0054】そして、このような暗黙の順序関係は、同
じデータ項目(タプル)にアクセスするデータ操作手続
同士に起こる。そこで本発明では、適用プログラムの依
存関係解析時に作成した有向グラフに対して、同じデー
タ項目にアクセスする参照系のデータ操作手続と更新系
のデータ操作手続の順序関係を保存するように有向枝を
加える。
じデータ項目(タプル)にアクセスするデータ操作手続
同士に起こる。そこで本発明では、適用プログラムの依
存関係解析時に作成した有向グラフに対して、同じデー
タ項目にアクセスする参照系のデータ操作手続と更新系
のデータ操作手続の順序関係を保存するように有向枝を
加える。
【0055】次に、データ操作手続の実行が確定する前
にデータベース・アクセスを要求することにより、並列
性をさらに高めることができる適用プログラムの実行管
理方法の実施例を述べる。
にデータベース・アクセスを要求することにより、並列
性をさらに高めることができる適用プログラムの実行管
理方法の実施例を述べる。
【0056】図13は、このような方法を説明するため
の概略構成を示している。図において、実行監視手段9
は、適用プログラムの実行をモニタリングして、DML
変数が更新されたときの値、分岐命令における分岐方向
などの適用プログラムの実行に関する情報を採取すると
ともに、プログラムの実行が後述する予測実行と一致す
るかどうか管理する。
の概略構成を示している。図において、実行監視手段9
は、適用プログラムの実行をモニタリングして、DML
変数が更新されたときの値、分岐命令における分岐方向
などの適用プログラムの実行に関する情報を採取すると
ともに、プログラムの実行が後述する予測実行と一致す
るかどうか管理する。
【0057】回復手段10は、プログラムの実行が予測
実行と一致しないとき、予測実行により既に実行された
データ操作手続の中で実際には実行されないものについ
て、その実行がなかったものとしてデータベースの回復
を行う。
実行と一致しないとき、予測実行により既に実行された
データ操作手続の中で実際には実行されないものについ
て、その実行がなかったものとしてデータベースの回復
を行う。
【0058】実行情報収集手段11は、実行監視手段9
が採取した適用プログラムの実行に関する情報を収集
し、適用プログラムごとに統計を取る。再解析決定手段
12は、上記の統計情報から、適用プログラムの実行予
測を行い、適用プログラムの依存関係を再度解析するこ
とを決定する。
が採取した適用プログラムの実行に関する情報を収集
し、適用プログラムごとに統計を取る。再解析決定手段
12は、上記の統計情報から、適用プログラムの実行予
測を行い、適用プログラムの依存関係を再度解析するこ
とを決定する。
【0059】再度依存関係を解析することが決定する
と、図1に示した依存関係解析手段2は、再解析決定手
段12の予測内容に基づき、依存関係解析結果の変更を
行う。実行確定時点決定手段3は、変更された依存関係
解析結果から、新しいDML実行確定時点を見つけ、そ
れに基づく予測実行の利得計算を次のように行う。適用
プログラムを再コンパイル前の状態で実行した時の平均
実行時間をTm 、適用プログラムを再コンパイルして予
測実行を行う時、予測通り実行された場合の実行時間の
見積もりをTt 、予測とは異なる流れで実行された場合
の実行時間の見積もりをTf 、予測が当たる確率(統計
情報の中で予測通り実行された場合)をPt とすると、
利得は Tm −{Tt Pt +Tf (1−Tf )} と計算される。ここで、Tm 、Tt 、Tf 、Pt は実行
情報処理収集手段11から得ることができる。
と、図1に示した依存関係解析手段2は、再解析決定手
段12の予測内容に基づき、依存関係解析結果の変更を
行う。実行確定時点決定手段3は、変更された依存関係
解析結果から、新しいDML実行確定時点を見つけ、そ
れに基づく予測実行の利得計算を次のように行う。適用
プログラムを再コンパイル前の状態で実行した時の平均
実行時間をTm 、適用プログラムを再コンパイルして予
測実行を行う時、予測通り実行された場合の実行時間の
見積もりをTt 、予測とは異なる流れで実行された場合
の実行時間の見積もりをTf 、予測が当たる確率(統計
情報の中で予測通り実行された場合)をPt とすると、
利得は Tm −{Tt Pt +Tf (1−Tf )} と計算される。ここで、Tm 、Tt 、Tf 、Pt は実行
情報処理収集手段11から得ることができる。
【0060】実行確定時点決定手段3は、利得が0以上
の場合に再コンパイルを決定する。再コンパイル後、新
しくできたオブジェクト・コードは、それ以後の実行さ
れる適用プログラム実行プロセスで使用する。こうする
ことにより、やがて古いオブジェクト・コードを使用し
ている実行プロセスはなくなることになる。
の場合に再コンパイルを決定する。再コンパイル後、新
しくできたオブジェクト・コードは、それ以後の実行さ
れる適用プログラム実行プロセスで使用する。こうする
ことにより、やがて古いオブジェクト・コードを使用し
ている実行プロセスはなくなることになる。
【0061】図14は、適用プログラムの一例を示して
いる。この適用プログラムは、上述の図4に示した適用
プログラムから手続き38とデータ操作手続25を取り
除いたものである。
いる。この適用プログラムは、上述の図4に示した適用
プログラムから手続き38とデータ操作手続25を取り
除いたものである。
【0062】依存関係解析手段2は、図14の適用プロ
グラムに対して、図15に示すような依存関係解析結果
(有向グラフ)を作り出す。実行確定時点決定手段3
は、図15に示す依存関係解析結果からDML実行確定
時点を見つけ、それをもとにコンパイラはオブジェクト
・コードを生成する。
グラムに対して、図15に示すような依存関係解析結果
(有向グラフ)を作り出す。実行確定時点決定手段3
は、図15に示す依存関係解析結果からDML実行確定
時点を見つけ、それをもとにコンパイラはオブジェクト
・コードを生成する。
【0063】適用プログラム実行プロセスは、オブジェ
クト・コードに従い、適用プログラムを実行する。実行
監視手段9はこれを監視して、実行情報を採取する。実
行情報収集手段11は、採取された実行情報を収集し、
統計処理を行う。いま、分岐命令34が偽である割合が
90%であるとする。このとき再解析決定手段12は、
この適用プログラムの実行では、分岐命令34が偽であ
るという予測を立て、再解析の実行を決定する。再解析
の実行が決定されると、依存関係解析手段2は、上記の
予測に基づき依存関係を再解析する。図16に再解析結
果(有向グラフ)を示す。
クト・コードに従い、適用プログラムを実行する。実行
監視手段9はこれを監視して、実行情報を採取する。実
行情報収集手段11は、採取された実行情報を収集し、
統計処理を行う。いま、分岐命令34が偽である割合が
90%であるとする。このとき再解析決定手段12は、
この適用プログラムの実行では、分岐命令34が偽であ
るという予測を立て、再解析の実行を決定する。再解析
の実行が決定されると、依存関係解析手段2は、上記の
予測に基づき依存関係を再解析する。図16に再解析結
果(有向グラフ)を示す。
【0064】図16は図15から次のようにして作成さ
れる。この予測実行では分岐命令34は偽であると予測
するので、データ操作手続22、23と手続き36は実
行されない。そこで、それらに対応する節点を取り除
き、それらの節点に出入りする枝を取り除く。また、分
岐命令は偽になると確定している(予測している)か
ら、節点34は単なるDML変数使用時点になり、有向
枝48は取り除く。実行確定時点決定手段3は、新しい
依存関係解析結果からDML実行確定時点を見つけ、予
測実行の利得を次のように計算する。
れる。この予測実行では分岐命令34は偽であると予測
するので、データ操作手続22、23と手続き36は実
行されない。そこで、それらに対応する節点を取り除
き、それらの節点に出入りする枝を取り除く。また、分
岐命令は偽になると確定している(予測している)か
ら、節点34は単なるDML変数使用時点になり、有向
枝48は取り除く。実行確定時点決定手段3は、新しい
依存関係解析結果からDML実行確定時点を見つけ、予
測実行の利得を次のように計算する。
【0065】まず、予測実行しない場合の平均実行時間
は次のとおりである。分岐命令34が真である場合に
は、図17に示すタイムチャートが得られ、実行時間は
90となり、偽である場合には、図18に示すタイムチ
ャートが得られ、実行は80となる。いま分岐命令34
は偽である割合が90%であるので、適用プログラムの
平均実行時間は 80×0.9+90×0.1=81
は次のとおりである。分岐命令34が真である場合に
は、図17に示すタイムチャートが得られ、実行時間は
90となり、偽である場合には、図18に示すタイムチ
ャートが得られ、実行は80となる。いま分岐命令34
は偽である割合が90%であるので、適用プログラムの
平均実行時間は 80×0.9+90×0.1=81
【0066】となる。一方、予測実行した場合には、図
16の依存関係解析結果から次のように実行時間を見積
ることができる。予測実行が当たった場合には、図19
に示すタイムチャートが得られ、実行時間は45と見積
もることができ、予測実行がはずれた場合には、図20
に示すタイムチャートが得られ、実行時間は90と見積
もることができる。ただし、データ操作手続24の回復
には45単位時間かかると考えている。以上から、利得
は 81−(45×0.9+90×0.1)=31.5 と計算できる。この場合には利得が見込めるので、実行
確定時点決定手段3は、再コンパイルを決定し、コンパ
イラは新しいオブジェクト・コードを生成する。
16の依存関係解析結果から次のように実行時間を見積
ることができる。予測実行が当たった場合には、図19
に示すタイムチャートが得られ、実行時間は45と見積
もることができ、予測実行がはずれた場合には、図20
に示すタイムチャートが得られ、実行時間は90と見積
もることができる。ただし、データ操作手続24の回復
には45単位時間かかると考えている。以上から、利得
は 81−(45×0.9+90×0.1)=31.5 と計算できる。この場合には利得が見込めるので、実行
確定時点決定手段3は、再コンパイルを決定し、コンパ
イラは新しいオブジェクト・コードを生成する。
【0067】実行監視手段9は、適用プログラムの予測
実行を監視し、もし上記の予測がはずれる場合、すなわ
ち、分岐手段34が真になる場合には、既に予測実行さ
れてしまっているデータ操作手続24の回復を回復手段
10に要求する。回復手段10は、データ操作手続24
によって更新されたACCOUNT TABLE の対応するレコード
の値を元に戻し、このトランザクションによるACCOUNT
TABLE の対応するレコードに対する排他制御を解放す
る。回復手段10の処理は、適用プログラムの実行と並
行に行うことができる。なお、回復手段10によるデー
タ項目の排他制御の解放が該当する適用プログラムの実
行終了を待たずに行われても、トランザクション処理の
直列化可能性は保証される。なお、本発明は、上述した
実施例にのみ限定されるものではなく、その要旨を変更
しない範囲で適宜変更して実施できる。
実行を監視し、もし上記の予測がはずれる場合、すなわ
ち、分岐手段34が真になる場合には、既に予測実行さ
れてしまっているデータ操作手続24の回復を回復手段
10に要求する。回復手段10は、データ操作手続24
によって更新されたACCOUNT TABLE の対応するレコード
の値を元に戻し、このトランザクションによるACCOUNT
TABLE の対応するレコードに対する排他制御を解放す
る。回復手段10の処理は、適用プログラムの実行と並
行に行うことができる。なお、回復手段10によるデー
タ項目の排他制御の解放が該当する適用プログラムの実
行終了を待たずに行われても、トランザクション処理の
直列化可能性は保証される。なお、本発明は、上述した
実施例にのみ限定されるものではなく、その要旨を変更
しない範囲で適宜変更して実施できる。
【0068】
【発明の効果】本発明によれば、適用プログラムの実行
の並列性を引き出すことができるので、適用プログラム
の実行時間( 応答時間) の大幅な短縮を図ることができ
る。そして、このように適用プログラムの実行時間が短
縮されることにより、 (1)実時間制御に対応できるようになる。 (2)データへのアクセスの競合により性能が決定する
状況において、データの排他的利用時間を短くでき、性
能を向上させることができる。 (3)トランザクションに時刻印を付与して排他制御を
行う場合に、性能の向上が見込める。 などの効果が期待できる。
の並列性を引き出すことができるので、適用プログラム
の実行時間( 応答時間) の大幅な短縮を図ることができ
る。そして、このように適用プログラムの実行時間が短
縮されることにより、 (1)実時間制御に対応できるようになる。 (2)データへのアクセスの競合により性能が決定する
状況において、データの排他的利用時間を短くでき、性
能を向上させることができる。 (3)トランザクションに時刻印を付与して排他制御を
行う場合に、性能の向上が見込める。 などの効果が期待できる。
【図1】本発明の一実施例の適用プログラムのコンパイ
ルを説明するための該略構成を示す図。
ルを説明するための該略構成を示す図。
【図2】コンパイラにより生成されるオブジェクト・モ
ジュールの概要を示す図。
ジュールの概要を示す図。
【図3】適用プログラムの実行時における概要を示す
図。
図。
【図4】適用プログラムの一例を示す図。
【図5】適用プログラムが使用するデータベースを示す
図。
図。
【図6】適用プログラムの処理のフローチャートを示す
図。
図。
【図7】依存関係解析結果の有向グラフを示す図。
【図8】手続きおよびデータ操作手続の実行にかかる時
間を説明するための図。
間を説明するための図。
【図9】適用プログラムを並列実行した場合のタイムチ
ャートを示す図。
ャートを示す図。
【図10】適用プログラムを並列実行した場合のタイム
チャートを示す図。
チャートを示す図。
【図11】適用プログラムの他の例を示す図。
【図12】依存関係解析結果の有向グラフを示す図。
【図13】本発明の他の実施例を説明するための概略構
成を示す図。
成を示す図。
【図14】図13に示す他の実施例に用いられる適用プ
ログラムの一例を示す図。
ログラムの一例を示す図。
【図15】依存関係解析結果の有向グラフを示す図。
【図16】再度依存関係解析した結果の有向グラフを示
す図。
す図。
【図17】適用プログラムを並列実行した場合のタイム
チャートを示す図。
チャートを示す図。
【図18】適用プログラムを並列実行した場合のタイム
チャートを示す図。
チャートを示す図。
【図19】適用プログラムを予測実行した場合のタイム
チャートを示す図。
チャートを示す図。
【図20】適用プログラムを予測実行した場合のタイム
チャートを示す図。
チャートを示す図。
【図21】従来の並列トランザクションを説明するため
の図。
の図。
1…データ操作言語抽出手段、2…依存関係解析手段、
3…実行確定時点決定手段、4…コンパイラ、5…適用
プログラム実行プロセス、6…実行判定手段、7…デー
タベース管理システム、8…待ち行列、9…実行監視手
段、10…回復手段、11…実行情報収集手段、12…
再解析決定手段、21、22、23、24、25、5
1、52、53…データ操作手続、31、32、33、
35、36、37、38、61、62…手続き、34…
分岐命令、41、42、43、44、45、46、4
7、48…有向枝、A、B、C、a、b、c、d…命令
コード群。
3…実行確定時点決定手段、4…コンパイラ、5…適用
プログラム実行プロセス、6…実行判定手段、7…デー
タベース管理システム、8…待ち行列、9…実行監視手
段、10…回復手段、11…実行情報収集手段、12…
再解析決定手段、21、22、23、24、25、5
1、52、53…データ操作手続、31、32、33、
35、36、37、38、61、62…手続き、34…
分岐命令、41、42、43、44、45、46、4
7、48…有向枝、A、B、C、a、b、c、d…命令
コード群。
Claims (3)
- 【請求項1】 データベースにアクセスするデータ操作
言語で記述されたデータ操作手続を含む適用プログラム
を実行する適用プログラム実行管理方法において、 前記適用プログラムよりデータ操作言語で記述されたデ
ータ操作手続を抽出し、 この抽出されたデータ操作手続より該データ操作手続の
実行において参照あるいは更新される変数を調べるとと
もに該変数が前記適用プログラムの親言語で使用される
時点を見つけ該変数使用時点と前記データ操作手続、該
データ操作手続と前記親言語の分岐命令のそれぞれの間
の依存関係を解析し、 この依存関係の解析の結果に基づいてデータ操作手続を
最も早く実行できる時点を決定することを特徴とする適
用プログラム実行管理方法。 - 【請求項2】 適用プログラムの実行が実行予測と一致
するか監視して前記適用プログラムの実行に関する情報
を採取し、 この採取された情報を収集し適用プログラムごとに統計
を取り該統計情報に基づいて前記適用プログラムの実行
を予測するとともに依存関係の解析を決定し、 この決定により前記適用プログラムの依存関係を解析す
るとともに前記予測内容に基づいてデータ操作手続の実
行できる時点を変更し該変更により実行時間が短縮され
るかを判定し実行時間が短縮されれば適用プログラムの
予測実行を決定することを特徴とする請求項1記載の適
用プログラム実行管理方法。 - 【請求項3】 適用プログラムの実行が実行予測と一致
しないと既に実行しかつ実行されるべきでないデータ操
作手続の実行を無効にすることを特徴とする請求項2記
載の適用プログラム実行管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4034757A JPH05233397A (ja) | 1992-02-21 | 1992-02-21 | 適用プログラム実行管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4034757A JPH05233397A (ja) | 1992-02-21 | 1992-02-21 | 適用プログラム実行管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05233397A true JPH05233397A (ja) | 1993-09-10 |
Family
ID=12423193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4034757A Pending JPH05233397A (ja) | 1992-02-21 | 1992-02-21 | 適用プログラム実行管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH05233397A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493361B2 (en) | 2003-12-26 | 2009-02-17 | International Business Machines Corporation | Computer operation analysis |
JP2012527806A (ja) * | 2009-05-18 | 2012-11-08 | アマデウス エス.エイ.エス | メッセージの順序を管理する方法およびシステム |
JP2019503534A (ja) * | 2015-12-21 | 2019-02-07 | アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited | データベース操作方法及び装置 |
WO2019176011A1 (ja) * | 2018-03-14 | 2019-09-19 | 日本電気株式会社 | 検索文活用装置および検索文活用方法 |
-
1992
- 1992-02-21 JP JP4034757A patent/JPH05233397A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493361B2 (en) | 2003-12-26 | 2009-02-17 | International Business Machines Corporation | Computer operation analysis |
JP2012527806A (ja) * | 2009-05-18 | 2012-11-08 | アマデウス エス.エイ.エス | メッセージの順序を管理する方法およびシステム |
JP2019503534A (ja) * | 2015-12-21 | 2019-02-07 | アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited | データベース操作方法及び装置 |
WO2019176011A1 (ja) * | 2018-03-14 | 2019-09-19 | 日本電気株式会社 | 検索文活用装置および検索文活用方法 |
JPWO2019176011A1 (ja) * | 2018-03-14 | 2021-02-04 | 日本電気株式会社 | 検索文活用装置および検索文活用方法 |
US11727059B2 (en) | 2018-03-14 | 2023-08-15 | Nec Corporation | Retrieval sentence utilization device and retrieval sentence utilization method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7899799B2 (en) | Transaction processing system of database using multi-operation processing providing concurrency control of transactions | |
JP7438603B2 (ja) | トランザクション処理方法、装置、コンピュータデバイス及びコンピュータプログラム | |
US7324985B2 (en) | Methods and systems for database statement execution plan optimization | |
US20090064160A1 (en) | Transparent lazy maintenance of indexes and materialized views | |
Agrawal et al. | Distributed optimistic concurrency control with reduced rollback | |
CN110196856B (zh) | 一种分布式数据读取方法及装置 | |
US20060294058A1 (en) | System and method for an asynchronous queue in a database management system | |
US20070288537A1 (en) | Method and apparatus for replicating data across multiple copies of a table in a database system | |
JP2008508582A (ja) | 部分的に順序付けられたトランザクションをスケジューリングしてイベントを関連付けるための方法およびシステム | |
US6434710B1 (en) | Commit controlling scheme for transaction processing in system utilizing check point/roll back scheme | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN112559473B (zh) | 一种基于优先级的双路同步方法和同步系统 | |
CN111581234A (zh) | Rac多节点数据库查询方法、装置及系统 | |
CN111209093B (zh) | 一种分布式数据库系统中分布式事务的处理方法 | |
US7958083B2 (en) | Interacting methods of data summarization | |
CN113946628A (zh) | 一种基于拦截器的数据同步方法及装置 | |
JPH05233397A (ja) | 適用プログラム実行管理方法 | |
JPH1040146A (ja) | 並列データベースシステム通信回数削減方法 | |
US8285755B2 (en) | Partial updating in a database proxy driver | |
JPH09212385A (ja) | 並列プログラムデバッグ装置 | |
Oyamada et al. | Continuous query processing with concurrency control: Reading updatable resources consistently | |
CN114461454A (zh) | 数据恢复方法、装置、存储介质及电子设备 | |
Fan et al. | 2PC+: A High Performance Protocol for Distributed Transactions of Micro-service Architecture | |
US10810188B2 (en) | Load committed isolation processing | |
Buckley et al. | Obtaining Progressive Protocols for a Simple Multiversion Database Model. |