(57)【要約】【課題】ＤＢＭＳが稼動する計算機システムにおいて、同じ形のＳＱＬ文による処理が多数回、繰り返し実行される場合にデータの先読みを実施し、データのアクセス性能を向上させる。【解決手段】先読みプログラムが、繰り返し実行されるＳＱＬ文と、その処理の実行開始情報を取得し、それを基にデータの先読み指示を記憶装置に対して発行する。第一の方法では、繰り返し実行ＳＱＬ文の取得と、処理内容の解析を先読みプログラムが事前に実施し、処理開始の通知を受け、事前解析を基に先読み指示を発行する。第二の方法では、繰り返し実行ＳＱＬ文を処理開始時に先読みプログラムに与え、その解析結果を基に先読み指示を発行する。第三の方法では、先読みプログラムはＤＢＭＳのフロントエンドプログラム的に振舞う。与えられたＳＱＬ文が繰り返し実行されるとして解析後、先読み指示を発行し、その後にＤＢＭＳに対してＳＱＬ文を転送する。【選択図】  図８
2004295458.tif 000002
【特許請求の範囲】
【請求項１】
データベース管理システムが動作する第一の計算機、前記第一の計算機に接続され、前記データベース管理システムが管理するデータベースのデータを格納し、キャッシュメモリを有する記憶装置及び前記第一の計算機に接続され、前記データベースのデータを使用する第二の計算機とを有する計算機システムにおけるデータの先読みの方法であって、
前記データベース管理システムで実行される処理の内容から所定の条件を満たす処理内容を抽出し、
前記抽出された内容に基づいてデータの先読み方法を決定し、
前記処理の内容が実施される際に、前記記憶装置に前記データの先読み方法に基づくデータの先読みを指示し、
前記処理の内容の実施が終了する際に、前記記憶装置に前記データの先読みの終了を指示することを特徴とするデータ先読み方法。
【請求項２】
前記所定の条件とは、前記処理の内容に繰り返し実行される部分が含まれているという条件であることを特徴とする請求項１記載のデータ先読み方法。
【請求項３】
前記データの先読みを指示するステップには、前記記憶装置が有するキャッシュメモリで確保される記憶容量を指示するステップが含まれることを特徴とする請求項２記載のデータ先読み方法。
【請求項４】
前記記憶装置に前記データの先読み方法に基づくデータの先読みを指示する際に、前記データベース管理システムに対しても前記データの先読み方法に基づくデータの先読みを指示し、
前記記憶装置に前記データの先読みの終了を指示する際に、前記データベース管理システムに対しても前記データの先読みの終了を指示し、
前記データの先読みを指示するステップには、前記データベース管理システムが有するキャッシュメモリで確保される記憶容量を指示するステップが含まれることを特徴とする請求項３記載のデータ先読み方法。
【請求項５】
前記データの先読み方法を決定するステップでは、データベースの構成に関する情報及び該計算機システムにおける記憶領域のマッピングに関する情報が使用されることを特徴とする請求項３記載のデータ先読み方法。
【請求項６】
前記データ先読み方法を決定するステップでは、前記処理の繰り返し回数の情報を利用してデータ先読み方法を決定することを特徴とする請求項４記載のデータ先読み方法。
【請求項７】
前記第一の計算機と前記第二の計算機が同一の計算機であることを特徴とする請求項１記載のデータ先読み方法。
【請求項８】
データベース管理システムが動作する第一の計算機、前記第一の計算機に接続され、前記データベース管理システムが管理するデータベースのデータを格納し、キャッシュメモリを有する記憶装置及び前記第一の計算機に接続され、前記データベースのデータを使用する第二の計算機とを有する計算機システムにおけるデータの先読みの方法であって、
前記データベース管理システムで処理が実行される際に、前記処理の内容から所定の条件を満たす処理内容を抽出し、
前記抽出された内容に基づいてデータの先読み方法を決定し、
前記記憶装置に前記データの先読み方法に基づくデータの先読みを指示し、
前記処理の内容の実施が終了する際に、前記記憶装置に前記データの先読みの終了を指示することを特徴とするデータ先読み方法。
【請求項９】
前記第一の計算機と前記第二の計算機が同一の計算機であることを特徴とする請求項８記載のデータ先読み方法。
【請求項１０】
前記処理内容の抽出ステップ、前記先読み方法の決定ステップ、前記データの先読み指示ステップ及び前記データの先読みの終了を指示するステップが前記第一の計算機で行われることを特徴とする請求項１及び８に記載されたうちいずれか一つの方法。
【請求項１１】
前記処理内容の抽出ステップ、前記先読み方法の決定ステップ、前記データの先読み指示ステップ及び前記データの先読みの終了を指示するステップが前記第二の計算機で行われることを特徴とする請求項１及び８に記載されたうちいずれか一つの方法。
【請求項１２】
前記処理内容の抽出ステップ、前記先読み方法の決定ステップ、前記データの先読み指示ステップ及び前記データの先読みの終了を指示するステップが前記記憶装置で行われることを特徴とする請求項１及び８に記載されたうちいずれか一つの方法。
【請求項１３】
前記処理内容の抽出ステップが前記第二の計算機で行われ、前記先読み方法の決定ステップ、前記データの先読み指示ステップ及び前記データの先読みの終了を指示するステップが前記第一の計算機で行われることを特徴とする請求項１及び８に記載されたうちいずれか一つの方法。
【請求項１４】
データベース管理システムが動作する計算機、
前記データベース管理システムが管理するデータベースのデータを格納し、かつ、キャッシュを有する記憶装置を有する計算機システムで実行されるデータ先読みプログラムであって、
前記データベース管理システムで実行される処理の内容に関する情報を取得するステップと、
前記データベース管理システム、前記計算機、前記記憶装置のそれぞれからデータのマッピングに関する情報を取得するステップと、
処理の開始を示す情報を取得するステップと、
前記取得情報を用いてデータ先読み方法を決定するステップと、
前記記憶装置に対して前記データ先読み方法を与えるステップと、
処理の終了を示す情報を取得するステップと、
記記憶装置に対して前記データ先読み方法の解除を指示するステップとを有することを特徴とするデータ先読みプログラム。
【請求項１５】
請求項１４記載のデータ先読みプログラムを記憶する記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶装置へのアクセス性能向上方法、特に、データベース管理システム（ＤＢＭＳ）が稼動する計算機システムの記憶装置におけるデータの先読みによるアクセス性能向上方法に関する。
【０００２】
【従来の技術】
近年、システムで扱われるデータ量の増大とともに、これらのデータを管理するためのデータベース管理システム（ＤＢＭＳ）は極めて重要なものとなっている。ＤＢＭＳの性能は、計算機から記憶装置に格納されたデータへのアクセス性能と密接に関係するため、ＤＢＭＳの性能向上のためには、計算機から記憶装置へのアクセス性能の向上が極めて重要となる。
【０００３】
一般的に、記憶装置においては、記憶装置内でデータを一時的に保管する高速アクセス可能なデータキャッシュを用意し、データリード時にデータがキャッシュに存在している状態（以下「ヒット」）を作り出すことによりアクセス性能を向上させる手法が用いられる。そのため、使用が予測されるデータを、実際のアクセス要求が来る前に如何にしてキャッシュに予め読み出しておくか（以下「先読み」）が、記憶装置のアクセス性能を向上させる上で重要となる。
【０００４】
非特許文献１では、オペレーティングシステム（以下「ＯＳ」）が、プログラムにより発行されたヒントを用いて計算機上のファイルキャッシュにデータを先読みする機能と、その制御方法について論じられている。非特許文献１では、今後アクセスが行われるファイルとアクセス先領域に関するヒントをプログラムが発行するよう、管理者等によってプログラムが修正される。
【０００５】
非特許文献２では、非特許文献１の技術を更に進めた技術が開示されている。ここでは、ヒントを発行するために、Ｉ／Ｏ処理待ち時に今後実行すると予想される処理を投機的に実行させるようにプログラムに修正を加え、その処理結果を元にヒントが発行される。また、そのプログラムの修正を自動で行うツールに関しても開示されている。
【０００６】
非特許文献３では、ＤＢＭＳがこれから行う問い合わせ処理の実行計画を記憶装置が取得し、それを利用したデータ先読み方法に関する技術が開示されている。処理の実行計画を受け取った記憶装置は、ＤＢＭＳがある表に対する索引を読んだ後、対応する表のデータを記憶するどのブロックにアクセスされるかが判断できるようになる。そこで、記憶装置は、索引のデータを連続的に読み出し、その索引によりアクセス先が定まる表のデータを保持するブロック群を把握し、それらに対するアクセスをスケジューリングし、効果的に先読みを実施する。特に、記憶装置は、この処理をＤＢＭＳが実行される計算機とは独立に実施することができる。
【０００７】
【非特許文献１】
Ｒ．  Ｈｕｇｏ  Ｐａｔｔｅｒｓｏｎ  他著、”Ｉｎｆｏｒｍｅｄ  Ｐｒｅｆｅｔｃｈｉｎｇ  ａｎｄ  Ｃａｃｈｉｎｇ、”    Ｉｎ  Ｐｒｏｃ．  ｏｆ  ｔｈｅ  １５ｔｈ  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｐｒｉｎｃｉｐｌｅｓ、  ｐｐ．  ７９−９５、  Ｄｅｃ．  １９９５．
【非特許文献２】
Ｆａｙ  Ｃｈａｎｇ  他著、”Ａｕｔｏｍｉｔｉｃ  Ｉ／Ｏ  Ｈｉｎｔ  Ｇｅｎｅｒａｔｉｏｎ  ｔｈｒｏｕｇｈ  Ｓｐｅｃｕｌａｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ、”    ｔｈｅ  ３ｒｄ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｄｅｓｉｇｎ  ａｎｄ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ、  Ｆｅｂ．  １９９９、
【非特許文献３】
向井  他著、「高機能ディスクにおけるアクセスプランを用いたプリフェッチ機構に関する評価」、第１１回データ工学ワークショップ（ＤＥＷＳ２０００）論文集講演番号３Ｂ−３、２０００年７月発行ＣＤ−ＲＯＭ、主催：電子情報通信学会データ工学研究専門委員会
【０００８】
【発明が解決しようとする課題】
ＤＢＭＳ上で実施される処理の中には、同じ形の構造化照会言語（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ。以下「ＳＱＬ」）で記述された処理文（以下「ＳＱＬ文」）で与えられる処理を多数回、繰り返し実行するものが存在する。この場合、１つの処理に対応する先読みすべきデータを特定することは困難である。しかし、同じ形の処理が多数回実施されることを前提にしたとき、多数回実施される処理でアクセスされる確率が高いデータの記憶領域を判別し、それらを先読みすることができると考えられる。
【０００９】
しかし、非特許文献１では、ＤＢＭＳによる効果の評価を行っているが、繰り返し同じ形のＳＱＬ文による処理を行うことまでは述べられていない。また、非特許文献２では、入力データによりアクセスされるデータが変わるときにも効果が出るように、処理の投機的実行結果を利用することが開示されているが、その入力データの特徴（つまり、ＤＢＭＳにおけるＳＱＬ文の特徴）は考慮されていない。
【００１０】
さらに、非特許文献３では、記憶装置に与えられる情報は、実行計画以外は述べられていない。従って、同じ形のＳＱＬ文が繰り返されることを識別する情報は送られず、同じ形のＳＱＬ文が繰り返し実行されることを前提としたデータの先読みを実施することができない。
【００１１】
本発明の目的は、ＤＢＭＳが稼動する計算機システムにおいて、同じ形のＳＱＬ文で与えられる処理が多数回、繰り返し実行される際の記憶装置のアクセス性能を向上させることである。
【００１２】
【課題を解決するための手段】
本発明では、データの先読みを管理する先読みプログラムが、繰り返し実行されるＳＱＬ文に関する情報と、その処理の実行開始情報を取得し、それを基にデータの先読み指示を記憶装置に対して発行する。
【００１３】
第一の方法では、繰り返し実行されるＳＱＬ文の取得と、その処理内容の解析を先読みプログラムが事前に実施し、先読みすべきデータを事前に把握する。その処理を実行する直前に、処理開始を先読みプログラムに対して通知する。先読みプログラムは、事前解析結果や与えられたキャッシュ量を基に、ＤＢＭＳや記憶装置に対してキャッシュ量の設定やデータの先読み方法の指示を発行する。先読みプログラムは処理の完了報告を受け、その後に、処理のために割り当てたキャッシュの解放要求をＤＢＭＳや記憶装置に発行する。
【００１４】
第二の方法では、繰り返し実行されるＳＱＬ文を、処理開始時に処理プログラムから先読みプログラムに与える。先読みプログラムは、与えられたＳＱＬ文の解析を行い、それと与えられたキャッシュ量の設定を基にＤＢＭＳや記憶装置に対してキャッシュ量の設定とデータの先読み方法の指示を発行する。先読みプログラムは繰り返し処理の完了報告を受け、その後に、処理のために割り当てたキャッシュの解放要求をＤＢＭＳや記憶装置に発行する。
【００１５】
第三の方法では、先読みプログラムはＤＢＭＳのフロントエンドプログラム的に振舞う。先読みプログラムは通常、処理プログラムからＳＱＬ文を受領し、それをＤＢＭＳに転送、ＤＢＭＳから処理結果を受け取り、それを処理プログラムに返す。先読みプログラムに、これから与えられるＳＱＬ文が繰り返し処理が実施されることを通知された場合、ＳＱＬ文の受領後、その解析を行い、それと与えられたキャッシュ量の設定を基にＤＢＭＳや記憶装置に対してキャッシュ量の設定とデータの先読み方法の指示を発行、その後にＤＢＭＳに対してＳＱＬ文を転送するようにする。先読みプログラムが繰り返し処理の完了報告を受た場合は、処理のために割り当てたキャッシュの解放要求をＤＢＭＳや記憶装置に発行する。
【００１６】
同じ形の処理が多数回実施されることを前提にしたとき、アクセスされる確率が高いデータの記憶領域は、その処理で利用されるＳＱＬ文の実行計画をＤＢＭＳから取得し、それから把握されるデータアクセス先とアクセス方法、アクセス順序から求める。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態を説明する。なお、これにより本発明が限定されるものではない。
【００１８】
まず、第一の実施形態について説明する。第一の実施形態における計算機システムは、繰り返し実行されるＳＱＬ文の取得と、処理内容の解析を計算機が先読みプログラムを実施することで事前に行う。その後、繰り返し実行されるＳＱＬ文に基づく処理の処理開始通知を契機に、計算機は事前解析の結果を基に先読み指示を記憶装置に発行する。
【００１９】
図１は、第一の実施形態の計算機システムの構成を示す図である。計算機システムは、記憶装置４０、記憶装置４０を使用する計算機（以下「サーバ」）７０、  Ｊｏｂプログラム１００の実行管理を行う計算機（以下「Ｊｏｂ管理サーバ」）１２０、プログラムの開発に使用される計算機（以下「開発サーバ」）１４０、先読みプログラム１６０の実行に利用される計算機（以下「先読み制御装置」）１７０、及び記憶領域の仮想化処理を行う仮想化スイッチ６０を有する。各々の装置はネットワークＩ／Ｆ  ２２を有し、それを介してネットワーク２４に接続され、相互に通信可能である。
【００２０】
サーバ７０、仮想化スイッチ６０、及び記憶装置４０は各々Ｉ／ＯパスＩ／Ｆ  ３２を有し、それを介して通信線（以下「Ｉ／Ｏパス」）３４により接続される。サーバ７０と記憶装置４０間のＩ／Ｏ処理はＩ／Ｏパス３４を用いて行われる。尚、Ｉ／Ｏパス３４は、装置間で異なる物理媒体や異なるプロトコルでデータ転送を行う通信線が用いられてもよい。また、ネットワーク２４とＩ／Ｏパス３４が同一の通信線でもよい。
【００２１】
記憶装置４０は、ＣＰＵ１２、メモリ１４、ディスク装置（以下「ＨＤＤ」）１６、ネットワークＩ／Ｆ２２、Ｉ／ＯパスＩ／Ｆ３２を有し、それらは内部バス１８で接続される。なお、ＨＤＤ１６は単数でも複数でもよい。メモリ１４の記憶領域は不揮発領域と高性能領域とに物理的に分割されている。
【００２２】
記憶装置４０を制御するプログラムである制御プログラム４４や先読みプログラム１６０ａは、メモリ１４の不揮発領域に記憶され、起動時にメモリ１４の高性能領域へ移された後にＣＰＵ１２により実行される。記憶装置４０が有する機能は、後述する先読みプログラム１６０ａによるもの以外は、全て制御プログラム４４により制御される。また、記憶装置４０は、制御プログラム４４を実行することで、ネットワークＩ／Ｆ  ２２やＩ／ＯパスＩ／Ｆ  ３２を利用して外部装置と通信し、それを利用してを先読みプログラム１６０ａも外部と通信可能である。
【００２３】
メモリ１４には制御プログラム４４が記憶装置４０を制御・管理するために利用する管理情報４６が記憶される。更に、メモリ１４の高性能領域の一部は外部装置からアクセス要求のあったデータを一時的に記憶しておく領域であるデータキャッシュ４２に割り当てられる。このとき、ＨＤＤ１６に未書き込みなデータ等、高信頼性を必要とするデータをメモリ１４の不揮発領域に記憶してもよい。
【００２４】
記憶装置４０は、ＨＤＤ１６が有する物理記憶領域を仮想化して１又は複数の論理ディスク装置（以下、「ＬＵ」と称す）２０８を外部装置に対して提供する。ＬＵ２０８は、ＨＤＤ１６と一対一に対応してもよいし、複数のＨＤＤ１６から構成される記憶領域と対応してもよい。また、１つのＨＤＤ１６が複数のＬＵ２０８に対応してもよい。その対応関係は、管理情報４６中に領域マッピング情報３１０の形で保持される。
【００２５】
記憶装置４０は、キャッシュ指示７３０中のデータ領域、キャッシュ量の情報に基づいて、ＬＵ２０８の指定された領域に関して、指定された量のデータキャッシュ４２内の記憶領域の割り当て設定・解除を行う。このキャッシュの設定・解除は動的（以下「他の処理を停止させることなく実施される」の意味で利用）に行える。記憶装置４０は、キャッシュ指示７３０に含まれるグループ化に関する値が同じものに関しては、１つの領域として管理する。
【００２６】
また、計算機システムの使用者等は、キャッシュ指示７３０に含まれるキャッシュ方法の指示により、それらのデータキャッシュ４２の領域に対してデータを即時に先読みすること（以下「即時先読み」）、あるいは、その領域に関しては、全てのアクセス要求が連続的に続くとして先読みすること（以下「シーケンシャル」）、あるいは、現在の設定設定の解除（以下「設定解除」）を外部装置から記憶装置４０に指示することができる。また、記憶装置４０は、キャッシュ指示７３０中のアクセス順の情報に基づいて、先読みする順番を判断する。なお、キャッシュ指示７３０は、先読みプログラム１６０ａから与えられる。
【００２７】
仮想化スイッチ６０は、ＣＰＵ１２、メモリ１４、ネットワークＩ／Ｆ２２、Ｉ／ＯパスＩ／Ｆ３２を有し、それらは内部バス１８で接続される。メモリ１４の記憶領域は不揮発領域と高性能領域とに物理的に分割されている。
【００２８】
仮想化スイッチ６０を制御するプログラムである制御プログラム６４や先読みプログラム１６０ｂは、メモリ１４の不揮発領域に記憶され、起動時にメモリ１４の高性能領域へ移された後にＣＰＵ１２により実行される。仮想化スイッチ６０が提供する機能は、制御プログラム６４により制御される。また、仮想化スイッチ６０は、制御プログラム６４を実行して、ネットワークＩ／Ｆ  ２２やＩ／ＯパスＩ／Ｆ  ３２を利用して外部装置と通信し、それを利用してを先読みプログラム１６０ｂも外部と通信可能である。
【００２９】
また、メモリ１４には制御プログラム６４が仮想化スイッチ６０を制御・管理するために利用する管理情報６６が記憶される。
【００３０】
仮想化スイッチ６０は、本装置に接続された記憶装置４０から提供されるＬＵ  ２０８を認識し、その記憶領域を仮想化して仮想ボリューム２０６を外部装置に提供する。尚、仮想化スイッチ６０が多段接続された場合には、仮想化スイッチ６０は、他の仮想化スイッチ６０が提供する仮想ボリューム２０６を記憶装置４０から提供されるＬＵ  ２０８と等価に扱い、その記憶領域を仮想化して仮想ボリューム２０６を外部装置に提供する。ＬＵ２０８と仮想ボリューム２０６との対応関係は、管理情報６６中に領域マッピング情報３１０の形で保持される。
【００３１】
サーバ７０は、ＣＰＵ１２、メモリ１４、ＨＤＤ１６、ネットワークＩ／Ｆ  ２２及びＩ／ＯパスＩ／Ｆ  ３２を有し、それらは内部バス１８で接続される。メモリ１４には、ＯＳ７２及び先読みプログラム１６０ｃがＨＤＤ１６から読み込まれ、ＣＰＵ１２により実行される。先読みプログラム１６０ｃの詳細に関しては後述する。
【００３２】
ＯＳ７２は、サーバ７０上で実行されるプログラム対して、ネットワークＩ／Ｆ  ２２、Ｉ／ＯパスＩ／Ｆ  ３２等のハードウェア制御や、ネットワーク２４を介した他の装置との通信、Ｉ／Ｏパス３４を通してのデータ転送処理、複数プログラム間の実行制御、外部装置で実行されるプログラムを含む複数プログラム間でのメッセージ交換、外部装置からのプログラムの起動要求受付等、基本的な処理を提供するためにＣＰＵ１２で実行されるプログラム群であり、ボリュームマネージャ７８、ファイルシステム８０を含む。メモリ１４に読み込まれたＯＳ７２には、そのＯＳ７２や他のＯＳ７２を構成するプログラムが利用する管理情報であるＯＳ管理情報７４が含まれる。ＯＳ管理情報７４は、サーバ７０のハードウェア構成の情報を含む。ＯＳ７２は、ＯＳ管理情報７４中に記憶されている情報を外部プログラムが読むためのソフトウェアインターフェイスを有する。なお、本図では、サーバ７０は１つのファイルシステム８０しか有していないが、複数のファイルシステム８０を有してもよい。
【００３３】
ボリュームマネージャ７８は、記憶装置４０から提供されるＬＵ２０８や仮想化スイッチ６０から提供される仮想ボリューム２０６の記憶領域をさらに仮想化した論理ボリューム２０４をファイルシステム８０に提供するためにサーバ７０で実行されるプログラムである。仮想ボリューム２０６と論理ボリューム２０４との対応関係は、ＯＳ管理情報７４中に領域マッピング情報３１０の形で保持される。
【００３４】
ファイルシステム８０は、記憶装置４０から提供されるＬＵ２０８や仮想化スイッチ６０から提供される仮想ボリューム２０６、ボリュームマネージャ７８から提供される論理ボリューム２０４の記憶領域を仮想化し、ファイル２０２を他のプログラムに提供するためにサーバ７０で実行されるプログラムである。ファイル２０２と論理ボリューム２０４等との対応関係は、ＯＳ管理情報７４中に領域マッピング情報３１０の形で保持される。なお、ファイル２０２と同じソフトウェアインターフェイスで、論理ボリューム２０４、仮想ボリューム２０６、ＬＵ  ２０８の記憶領域に直接アクセスするローデバイス機能もファイルシステム８０により提供されるとする。
【００３５】
ＤＢＭＳ９０は、ＤＢに関する一連の処理・管理を実行するためにサーバ７０で実行されるプログラムである。本プログラムは、ＨＤＤ１６もしくは記憶装置４０からメモリ１４に読み出されてＣＰＵ１２により実行される。メモリ１４上に読み込まれたＤＢＭＳ９０は、ＤＢＭＳ９０の管理情報であるＤＢＭＳ管理情報９２を有し、その中に、ＤＢＭＳ９０が利用・管理する表・索引・ログ等（以下、まとめて「データ構造」と称する）の記憶領域の管理情報であるデータ記憶領域情報５１０を含む。また、サーバ７０は、ＤＢＭＳ９０を実行することで、メモリ１４の領域をキャッシュ９４として利用し、その最低利用量をデータ構造毎に管理する。ＤＢＭＳ９０は、ＤＢＭＳ管理情報９２を外部プログラムが読むためのソフトウェアインターフェイスを有する。また、ＤＢＭＳ９０は、与えられたＳＱＬ文７００による処理の実行計画５７０を出力するソフトウェアインターフェイスを有する。
【００３６】
尚、一般的に、一つの計算機においては複数のプログラムが並行して実行され、これらのプログラム間でメッセージの遣り取りを行うことで協調して処理が行われる。したがって、実際には一つのＣＰＵ（あるいは複数）で複数のプログラムが実行され、メッセージの遣り取りはＯＳ７２により管理されたメモリ１４上の領域等を介して行われる。しかし、説明の簡略の為、本明細書においては、上記のようなメッセージの遣り取り等を、ＣＰＵで実行されるプログラムを主語（又は目的語）にして説明する。
【００３７】
Ｊｏｂプログラム１００は、ユーザが行う業務のためにサーバ７０上で実行されるプログラムである。Ｊｏｂプログラム１００は、ＤＢＭＳ９０に対して処理要求を発行する。Ｊｏｂプログラム１００は、Ｊｏｂ管理プログラム１３０がネットワークを通してＯＳ７２に起動要求を発行し、ＨＤＤ１６もしくは記憶装置４０からメモリ１４に読み出されてＣＰＵ１２により実行される。
【００３８】
なお、Ｊｏｂプログラム１００は記憶装置４０に記憶されるデータを扱う際に常にＤＢＭＳ９０に処理要求を発行してもよく、この場合には、Ｊｏｂプログラム１００が実行されるサーバ７０はＩ／ＯパスＩ／Ｆ３２を有さなくてもよい。なお、Ｊｏｂプログラム１００には、ソースコードから実行形式に変換したものを用いてもよいし、ＳＱＬ文をベースとした処理言語（以下「ＳＱＬスクリプト」）を用いて記述されたものを実行時にスクリプト実行プログラムに与えて、スクリプト実行プログラムがそれを解釈しながら実行する形式を採用しても良い。
【００３９】
ＤＢＭＳ９０やＪｏｂプログラム１００は、１台のサーバ７０上で複数同時に実行することができる。また、ＤＢＭＳ９０とＪｏｂプログラム１００が異なるサーバ７０上で実行されてもよく、その場合には、Ｊｏｂプログラム１００はＤＢＭＳ９０に処理要求をネットワーク２４を経由して伝達する。
【００４０】
Ｊｏｂ管理サーバ１２０は、ＣＰＵ１２、メモリ１４、ＨＤＤ１６、ＣＤ−ＲＯＭドライブ２０及びネットワークＩ／Ｆ  ２２を有し、それらは内部バス１８で接続される。メモリ１４には、ＯＳ７２、Ｊｏｂ管理プログラム１３０及び先読みプログラム１６０ｄがＨＤＤ１６から読み込まれ、ＣＰＵ１２により実行される。先読みプログラム１６０ｄの詳細に関しては後述する。
【００４１】
Ｊｏｂ管理プログラム１３０は、Ｊｏｂ管理サーバ１２０が有するＪｏｂ管理機能を実現するプログラムであり、その機能を実現するために必要な管理情報であるＪｏｂ管理情報１３２をメモリ１４に有する。
【００４２】
開発サーバ１４０は、ＣＰＵ１２、メモリ１４、ＨＤＤ１６、及びネットワークＩ／Ｆ  ２２を有し、それらは内部バス１８で接続される。メモリ１４には、ＯＳ７２、開発管理プログラム１５０、及び先読みプログラム１６０ｅがＨＤＤ１６から読み込まれ、ＣＰＵ１２により実行される。先読みプログラム１６０ｅの詳細に関しては後述する。
【００４３】
開発プログラム１５０は、Ｊｏｂプログラム１００を開発するためのシステムの管理者等が使用するプログラムである。開発プログラム１５０は、Ｊｏｂプログラム１００のソースコードやその他のプログラム開発に必要な情報を含む開発コード１５２を開発サーバ１４０内のＨＤＤ１６中に記憶する。
【００４４】
先読み制御装置１７０は、ＣＰＵ１２、メモリ１４、ＨＤＤ１６及びネットワークＩ／Ｆ  ２２を有し、それらは内部バス１８で接続される。メモリ１４には、ＯＳ７２及び先読みプログラム１６０ｆがＨＤＤ１６から読み込まれ、ＣＰＵ１２により実行される。先読みプログラム１６０ｆの詳細に関しては後述する。なお、先読み制御装置１７０は必ずしも存在しなくともよい。
【００４５】
キーボード・マウス等の入力装置１１２および表示画面１１４を有する管理端末１１０がネットワーク２４を介して接続される。この接続は、ネットワーク２４とは異なる通信線を用いてもよい。管理者は、原則、管理端末１１０を介して各種計算機に各種指示を発行したり、その他の処理を行う。
【００４６】
ＯＳ７２、ＤＢＭＳ９０、Ｊｏｂプログラム１００、開発プログラム１５０及び先読みプログラム１６０ｃ、１６０ｄ、１６０ｅ、１６０ｆは、それらを記憶したＣＤ−ＲＯＭ（記憶媒体）から管理サーバ１２０が有するＣＤ−ＲＯＭドライブ２０を用いて読み出され、ネットワーク２４を介してサーバ７０、管理サーバ１２０、開発サーバ１５０、先読み制御装置１７０内のＨＤＤ１６もしくは記憶装置４０にインストールされる。
【００４７】
なお、本図においては、Ｊｏｂ管理プログラム１３０、開発プログラム１５０がサーバ７０とは異なる計算機で実行されるとしているが、これらのプログラムがサーバ７０上で実行されてもよい。Ｊｏｂ管理プログラム１３０がサーバ７０で実行される場合、ＣＤ−ＲＯＭドライブ２０は、いずれかのサーバ７０が保持し、各種プログラムのインストールに利用されるものとする。
【００４８】
図２は、第一の実施形態におけるＤＢＭＳ９０が管理するデータのデータマッピングの階層構成を示す図である。本図では、サーバ７０と記憶装置４０との間に１つの仮想化スイッチ６０が存在する場合を説明する。以下、ある２つの階層について、ＤＢＭＳ９０に近い方を上位、ＨＤＤ１６に近い方を下位の階層と称する。ファイル２０２、論理ボリューム２０４、仮想ボリューム２０６、ＬＵ  ２０８をまとめて「仮想構造」と称し、更に、仮想構造にＨＤＤ１６を加えたものをまとめて「管理構造」と称する。また、仮想構造を提供する、記憶装置４０、仮想化スイッチ６０、ボリュームマネージャ７８及びファイルシステム８０をまとめて「仮想化機構」と称する。
【００４９】
図２では、ＤＢＭＳ９０は、それが管理しているデータ構造２００を記憶しているファイル２０２に対してアクセスを行う。ファイル２０２はファイルシステム８０により提供され、ファイルシステム８０は、ファイル２０２に対するアクセスを対応する論理ボリューム２０４の領域へのアクセスに変換する。ボリュームマネージャ７８は、論理ボリューム２０４に対するアクセスを対応する仮想ボリューム２０６の領域へのアクセスに変換する。仮想化スイッチ６０は、仮想ボリューム２０６に対するアクセスを対応するＬＵ  ２０８の領域へのアクセスに変換する。記憶装置４０は、ＬＵ２０８に対するアクセスを、対応するＨＤＤ１６に対するアクセスに変換する。このように、仮想化機構は、それが上位階層に提供する仮想構造のデータを下位階層に存在する１つ以上の管理構造の記憶領域にマッピングする。
【００５０】
ある仮想構造のデータがＨＤＤ１６にマッピングされる経路が複数存在してもよい。あるいは、ある仮想構造のデータの同一部分が複数の下位階層の管理構造にマッピングされてもよい。これらの場合には、仮想化機構がそのようなマッピングであることが領域マッピング情報３１０中に保持される。
【００５１】
また、ある管理構造が複数のサーバ７０に共有されるマッピングを有してもよい。これは、フェイルオーバ構成をとるサーバ７０とそのサーバ７０で実行されるＤＢＭＳ９０において利用される。
【００５２】
本実施形態では、論理層２１２における管理構造間のデータの対応関係が明確化されればよく、サーバ７０でボリュームマネージャ７８が使用されなくてもよい。仮想化スイッチ６０は複数段存在してもよいし、仮想化スイッチ６０が存在せずにサーバ７０と記憶装置４０がＩ／Ｏパス３４により直結されてもよい。仮想化スイッチ６０に相当するスイッチが記憶領域の仮想化機能を有しない場合、サーバ７０と記憶装置４０が直結されているのと等価である。仮想化スイッチ６０が存在しない、もしくは、仮想化スイッチ６０に相当するスイッチが記憶領域の仮想化機能を有しない場合、先読みプログラム１６０ｂは存在しなくてもよい。
【００５３】
以下、各装置やプログラムが保持するデータ構造に関して説明する。
【００５４】
図３は、領域マッピング情報３１０のデータ構造を示す図である。領域マッピング情報３１０は、仮想化機構が提供する仮想構造の領域と、それが利用する管理構造の領域の対応関係を保持するものであり、エントリ３１２及び３１４を有する。エントリ３１２には、仮想化機構が上位階層に提供する仮想構造の領域に関する情報が登録される。具体的には、エントリ３１２は、仮想構造の識別子である仮想構造ＩＤを保持するエントリ及びその構造内の領域を示すエントリの組を有する。エントリ３１４には、エントリ３１２に対応する下位階層の管理構造の領域に関する情報が登録される。具体的には、エントリ３１４は、管理構造を提供する仮想化機構の識別子である仮想化機構ＩＤを保持するエントリ、管理構造の識別子である管理構造ＩＤを保持するエントリ及びその構造内領域を示すエントリの組を有する。なお、記憶装置４０においては、仮想化機構ＩＤを有するエントリを保持しない。
【００５５】
前述のように、異なる仮想構造が同一の管理構造の記憶領域を利用することが許される。また、仮想化機構ＩＤ、仮想構造ＩＤ及び管理構造ＩＤはシステム内で一意に定まる識別子であるとする。そうでない場合でも、装置の識別子を付加することによりシステム内で一意に定まるようにすることができる。
【００５６】
図４は、ＤＢＭＳ管理情報９２中に保持されるデータ記憶領域情報５１０のデータ構造を示す図である。データ記憶領域情報５１０は、ＤＢＭＳ９０が管理するデータの記憶領域管理に用いられる。データ記憶領域情報５１０は、データ構造の名前であるデータ構造名を保持するエントリ５１２及び対応するデータ構造がファイル２０２のどの位置に記憶されているかの情報であるデータ記憶位置を保持するエントリ５１４の組からなる。なお、データ構造名は、ＤＢＭＳ９０内で一意に定まる名前であるとし、ＤＢＭＳ９０内でＤＢ毎に同じ名前が許される場合には、ＤＢの識別子も含めたものをデータ構造名として利用する。
【００５７】
図５は、ＤＢＭＳ管理情報９２中に保持される表データ量情報５２０のデータ構造を示す図である。表データ量情報５２０は、表のデータ量管理に用いられる情報である。表データ量情報５２０は、表のデータ構造名を保持するエントリ５２１、その表におけるデータページの大きさに関する情報であるデータページサイズを保持するエントリ５２２、その表が利用しているデータページ数を保持するエントリ５２４及びそのデータが利用可能なキャッシュ９４の最低量に関する情報であるキャッシュ量を保持するエントリ５２６を有する。
【００５８】
図６は、ＤＢＭＳ管理情報９２中に保持される索引情報５３０のデータ構造を示す図である。検索情報５３０は、ＤＢＭＳ９０の索引の管理に用いられる情報である。索引情報５３０は、索引のデータ構造名を保持するエントリ５３１、その索引が付加された表のデータ構造名である対応表名を保持するエントリ５３２、索引種別を保持するエントリ５３４、データページサイズを保持するエントリ５３３、データページ数を保持するエントリ５３５、データページのうち、Ｂ−Ｔｒｅｅ索引の場合にリーフノードのデータを保持しているデータページ数であるＬｅａｆノードページ数を保持するエントリ５３６、その索引の最低限利用可能なキャッシュ量を保持するエントリ５３７、その索引を利用して検索が行われる属性の属性名の組である検索属性を保持するエントリ５３８及び検索属性における１回の検索で得られると期待されるタプル数の情報である期待タプル数を保持するエントリ５４２の組からなる。なお、１つの索引に複数の検索属性とそれに対応する期待タプル数が存在することがある。また、期待タプル数は、対応する表のデータ解析により得られる値で、平均値や最頻値、あるいは各種指標から計算した値が用いられる。
【００５９】
図７は、Ｊｏｂ管理情報１３２中に保持されるＪｏｂ実行管理情報３６０のデータ構造を示す図である。Ｊｏｂ実行管理情報３６０は、Ｊｏｂ管理プログラム１３０がＪｏｂプログラム１００の実行を管理する際に利用される。Ｊｏｂ実行管理情報３６０は、実行されるＪｏｂ毎に保持される。
【００６０】
Ｊｏｂ実行管理情報３６０は、Ｊｏｂの識別子であるＪｏｂ  ＩＤを保持するエントリ３６２、Ｊｏｂとして実行されるＪｏｂプログラム１００の識別子であるプログラムＩＤを保持するエントリ３３８、Ｊｏｂの実行開始の条件である実行条件を保持するエントリ３６４、Ｊｏｂを実行するサーバ７０の識別子であるサーバＩＤを保持するエントリ３３２及びそのサーバ７０で実行されるコマンドを保持するエントリ３６８の組、Ｊｏｂ依存入力情報を保持するエントリ３７０、Ｊｏｂ依存出力データ情報を保持するエントリ３８０並びにキャッシュ量情報を保持するエントリ３４０を含む。
【００６１】
Ｊｏｂ依存入力情報は、そのＪｏｂを実行する際に利用されるデータに関する情報である。エントリ３７０はさらに、利用されるデータを出力する前段のＪｏｂのＪｏｂ  ＩＤを保持するエントリ３７２及びその入力データの識別子であるデータＩＤを保持するエントリ３７４の組を有する。
【００６２】
Ｊｏｂ依存出力データ情報は、他のＪｏｂ実行に利用される本Ｊｏｂの出力データに関する情報である。エントリ３８０はさらに、出力データを利用するＪｏｂのＪｏｂ  ＩＤを保持するエントリ３８２及びその出力データの識別子であるデータＩＤを保持するエントリ３７４の組を有する。
【００６３】
キャッシュ量情報は、Ｊｏｂ開始時にＪｏｂプログラム１００の実行に際し、ＤＢＭＳ９０や記憶装置４０において本処理でアクセスされるデータ向けに最低限利用可能なキャッシュ量に関する情報である。エントリ３４０は更に、処理が実施されるＤＢＭＳ９０の識別子であるＤＢＭＳ  ＩＤを保持するエントリ３３４及びそのＤＢＭＳ９０で利用可能なキャッシュ９４の量に関する情報であるキャッシュ量を保持するエントリ３４２の組並びに処理に利用されるデータを保持する記憶装置４０の識別子である装置ＩＤを保持するエントリ３３６及びそこで利用可能なデータキャッシュ４２の量であるキャッシュ量を保持するエントリ３４２の組を含む。なお、キャッシュ量情報３４０は必ずしも保持しなくともよい。
【００６４】
以下、本実施の形態で利用する先読みプログラム１６０について説明する。先読みプログラム１６０は、各装置で実行される先読みプログラム１６０ａ、１６０ｂ、１６０ｃ、１６０ｄ、１６０ｅ、１６０ｆを構成要素として実現されるものである。複数装置間に存在する先読みプログラム１６０の構成要素の間では、ネットワーク２４を通して必要な情報が交換される。以下で説明する各機能モジュールの処理に関しては、原則、どの装置で実現されてもよく、それら自体が複数の装置に分割して実現されてもよい。
【００６５】
ただし、他のプログラムからの情報・処理状態の取得や、処理の指示・依頼を行う部分に関しては、記憶装置４０の制御プログラム４４に対しては先読みプログラム１６０ａが、仮想化スイッチ６０の制御プログラム６４に対しては先読みプログラム１６０ｂが、サーバ７０のＯＳ７２、ボリュームマネージャ７８、ファイルシステム８０及びＤＢＭＳ９０に対しては先読みプログラム１６０ｃが、Ｊｏｂ管理サーバ１２０のＪｏｂ管理プログラム１３０に対しては先読みプログラム１６０ｄが、開発サーバ１４０の開発プログラム１５０に対しては先読みプログラム１６０ｅが行う。
【００６６】
ただし、これらの機能は、ＯＳ７２等が提供するより汎用的なプログラム機能により代行させることが可能であり、その場合には、対応する先読みプログラム１６０ａ、１６０ｂ、１６０ｃ、１６０ｄ、１６０ｅが実行されなくともよい。また、先読みプログラム１６０ａ、１６０ｂ、１６０ｃ、１６０ｄ、１６０ｅ、１６０ｆは、他のプログラムの機能、特に、ＤＢＭＳ９０やＪｏｂ管理プログラム１３０の一部として実現されてもよい。
【００６７】
図８は、本実施形態における、先読み処理に関係する先読みプログラム１６０やその他プログラム、及びこれらのプログラム間で交換される情報の流れを示した図である。先読みプログラム１６０は、機能モジュールとして、ＳＱＬ解析モジュール２５２、先読み方法決定モジュール２５４、先読み指示モジュール２５６、及び情報取得モジュール２５８を含む。尚、機能モジュールとは、一つのプログラムにおいて、ある処理に特化したサブプログラムやルーチン等を指す。
【００６８】
また、先読みプログラム１６０は、処理情報として、システム情報３００及びＳＱＬ解析情報２８０を有し、それらは任意の先読みプログラム１６０ａ、１６０ｂ、１６０ｃ、１６０ｄ、１６０ｅ、１６０ｆが実行されている装置のメモリ１４上に保持される。先読み方法７２０は、先読みプログラム１６０内の機能モジュール間で交換される情報である。以下、利用する情報やその利用法等の詳細を説明していく。尚、以下の説明で、図８に記載した番号を使用する。
【００６９】
図９は、先読みプログラム１６０が事前に実施する情報収集処理の手順を示す図である。なお、本処理の実施前に、先読みプログラム１６０に先読み指示を発行するＪｏｂプログラム１００が利用するＤＢに関しては、その定義が完了し、実際にデータが存在しているものとする。（ステップ２１０１）
まず、先読みプログラム１６０の情報取得モジュール２５８は、先読み指示を発行するＪｏｂプログラム１００及びそのＪｏｂプログラム１００が利用するＤＢに関する情報である先読みＪｏｂ情報３５０を管理端末１１０を介して管理者から受領し、それをシステム情報３００中に保存する。
【００７０】
図１０は、先読みＪｏｂ情報３５０のデータ構造を示す図である。先読みＪｏｂ情報３５０は、先読み指示を行うＪｏｂプログラム１００に関する情報として、そのプログラムのプログラムＩＤを保持するエントリ４２１を含む。また、Ｊｏｂプログラム１００が利用するＤＢの情報として、そのＤＢ管理するＤＢＭＳ９０が実行されるサーバ７０のサーバＩＤ保持するエントリ４２２、そのＤＢＭＳ９０のＤＢＭＳ  ＩＤを保持するエントリ４２３、表データ順情報を登録するエントリ４２０及び入力相関情報を登録するエントリ４３０を含む。なお、エントリ４２０や４３０は先読みＪｏｂ情報３５０に含まれなくともよい。
【００７１】
また、本図は、Ｊｏｂプログラム１００が１つのＤＢＭＳ９０により管理されるＤＢのデータのみを利用する場合を示している。Ｊｏｂプログラム１００が複数のＤＢＭＳ９０により管理されるＤＢのデータを利用する場合には、先読みＪｏｂ情報３５０にはエントリ４２２及び４２３が組にして保持され、更に、エントリ４２０及び４３０では、データ構造名に対応するＤＢＭＳ  ＩＤを保持するエントリが付加される。
【００７２】
表データ順情報は、Ｊｏｂプログラム１００が利用するデータのＤＢＭＳ９０からみたデータ順に関する情報である。エントリ４２０には、利用されるデータ（表）のデータ構造名を保持するエントリ４２５及びそのデータの並び方に関する情報であるデータ順を保持するエントリ４２４の組が含まれる。ここで、エントリ４２４には、“表のある属性によりソートされている”あるいは“挿入（Ｉｎｓｅｒｔ）処理順に記憶される”等の情報が登録される。
【００７３】
入力相関情報は、Ｊｏｂプログラム１００への入力データが、特定のデータ構造のデータ順と同じ順序にソートされていることを示す情報である。エントリ４３０には、入力データのデータＩＤを登録するエントリ４３１及びその入力データと同じ並び順のデータ構造名を登録するエントリ４３２の組が含まれている（ステップ２１０２）。
【００７４】
続いて、情報取得モジュール２５８は、アクセスされるデータの情報や、そのデータのマッピングに関する情報を収集する。まず、ステップ２１０２で取得した先読みＪｏｂ情報３５０中に示されるＤＢＭＳ  ＩＤにより識別されるＤＢＭＳ９０から、データ記憶領域情報５１０、表データ量情報５２０、索引情報５３０からなるＤＢＭＳ構成情報５００を取得し、ＤＢＭＳ  ＩＤと共にシステム情報３００中に保存する。
【００７５】
続いて、情報取得モジュール２５８は、ＤＢＭＳ−ＩＤに対応するＤＢＭＳ９０が実行されているサーバ７０のファイルシステム８０及びボリュームマネージャ７８がＯＳ管理情報７２中に保持している領域マッピング情報３１０を取得し、その管理元がわかる識別子とともにシステム情報３００中に保存する。また情報取得モジュール２５８は、順次取得した領域マッピング情報３１０を判別して、対応する記憶領域を提供する仮想化スイッチ６０や記憶装置４０から領域マッピング情報３１０を取得してその管理元がわかる識別子とともにシステム情報３００中に保存する（ステップ２１０３）。
【００７６】
続いて、ＳＱＬ解析モジュール２５２は、先読みＪｏｂ情報３５０で指定されるＪｏｂプログラム１００が発行するＳＱＬ文に関する情報である抽出ＳＱＬ情報８２０を開発プログラム１５０から取得する。抽出ＳＱＬ情報８２０は開発プログラム１５０中のＳＱＬ文抽出モジュール２７０が、開発コード１５２を元に作成するものであり、対応するＪｏｂプログラム１００のプログラムＩＤとＳＱＬ情報から構成される。
【００７７】
なお、プログラムＩＤを指定して抽出ＳＱＬ情報８２０の作成を開発プログラム１５０に依頼し、それを先読みプログラム１６０に与える処理は、管理者が行っても良いし先読みプログラム１６０中のＳＱＬ解析モジュール２５２が直接行っても良い。
【００７８】
ＳＱＬ文抽出モジュール２７０は、与えられたプログラムＩＤで識別されるプログラムに対応する開発コード１５２に含まれるプログラムのソースコードを元に以下のような処理を行う。
【００７９】
図１１は、本実施形態におけるＳＱＬ文抽出モジュール２７０の処理例として、Ｃ言語で書かれたソースコードに埋め込みＳＱＬ文が含まれている場合の抽出処理の例を示す図である。ソースコードの範囲５００２で示される部分においては、ｆｏｒ文により繰り返し処理が行われ、その中で幾つかのＳＱＬ文が実行される。ＳＱＬ文抽出モジュール２７０はこの繰り返し構造を識別し、その中にＳＱＬが存在していることから、そのＳＱＬ文が繰り返し実行されると判断し、それに対応するＳＱＬ情報として、情報５０００を作成する。情報５０００には、繰り返し開始を示す情報５０１２、範囲５００２中の繰り返し実行される埋め込みＳＱＬ文を抜き出した情報５０１０及び繰り返し終了を示す情報５０１８が含まれる。
【００８０】
なお、情報５０１２中には、”ＬＡＢＥＬ”という指示子の後に、それぞれの繰り返し処理を識別するための情報５０１４が付加される。ソースコードの他の部分に関しても同様に繰り返し構文とその中に存在するＳＱＬ文を判別し、情報５０００と同様なＳＱＬ情報を作成する。
【００８１】
図１２は、本実施形態におけるＳＱＬ文抽出モジュール２７０の処理例として、ソースコードがＳＱＬスクリプトで記述された場合の抽出処理の例を示す図である。この例では、範囲５１０２でカーソルの定義が行われ、範囲５１０４でカーソルを用いて読み出されたデータ毎に、範囲５１０６の処理が繰り返し実行される。ＳＱＬ文抽出モジュール２７０は範囲５１０４の繰り返し構造を判別し、対応するＳＱＬ情報として情報５１００を作成する。情報５１００には、繰り返し開始を示す情報５０１２、範囲５１０４中の実際に繰り返し実行されるＳＱＬ文を抜き出した情報５１１０及び繰り返し終了を示す情報５０１８が含まれる。
【００８２】
その他にも独自の処理フローを示すデータ構造を示すものを用いた場合でも、ＳＱＬ文抽出モジュール２７０は処理の繰り返し構造を把握し、同様なＳＱＬ情報を作成する。
【００８３】
尚、ＳＱＬ文抽出モジュール２７０は、繰り返し構造が入れ子状態になっている場合には、最も外側のもののみを繰り返し構造として把握する。また、複数の独立した繰り返し構造が存在する場合には、実行される順にその繰り返し構造に対応するＳＱＬ情報を作成する。また、繰り返し構造外にあるＳＱＬ文に関しても、情報５０１２、５０１８と同様な形式でその旨を示す領域を明示し、繰り返し構造内にある場合と同様にＳＱＬ情報を作成してもよい。
【００８４】
なお、繰り返し処理を識別するための情報５０１４は、プログラム実行時に繰り返し回数を判別するための識別子として利用することができる。そのため、必要に応じて、開発プログラム１５０や管理者が、抽出ＳＱＬ文８２０に含まれる情報５０１４を、それにより識別される繰り返し処理を駆動するデータのデータＩＤに更新しても良い。（ステップ２１０４）
続いて、ＳＱＬ解析モジュール２５２が、取得した抽出ＳＱＬ情報８２０から、ステップ２５０１から始まる処理を実行してＳＱＬ解析詳細情報２９０を作成し、ＳＱＬ解析情報２８０中に記憶する（ステップ２１０５）。その後、処理を完了する（ステップ２１０６）。
【００８５】
図１３は、ＳＱＬ解析モジュール２５２が、抽出ＳＱＬ情報８２０からＳＱＬ解析詳細情報２９０を作成する処理の手順を示す図である。まず、処理開始時、先読みＪｏｂ情報３５０に対応する抽出ＳＱＬ情報８２０がＳＱＬ解析モジュール２５２に与えられる（ステップ２５０１）。
【００８６】
抽出ＳＱＬ情報８２０が与えられたＳＱＬ解析モジュールは、ＳＱＬ解析詳細情報２９０を初期化する。図１４は、ＳＱＬ解析詳細情報２９０のデータ構造を示す図である。ＳＱＬ解析詳細情報２９０には、対応するＪｏｂプログラム１００の識別子であるプログラムＩＤを保持するエントリ２８１、処理が利用するＤＢを管理するＤＢＭＳ９０のＤＢＭＳ  ＩＤを保持するエントリ２９１、繰り返し実行されるＳＱＬ文のグループの識別子である繰り返しグループＩＤを保持するエントリ２８２、そのグループ間での処理の実行順序を示す実行順を保持するエントリ２８４、その繰り返し処理を駆動するデータのデータＩＤである駆動データＩＤを保持するエントリ２８６、アクセスを行うデータのデータ構造名を保持するエントリ２８７、そのデータへのアクセス方法を示すアクセス方法を保持するエントリ２８８、アクセス方法にランダムアクセスを実行する方法が指定された場合に、１回の処理でアクセスされると期待されるデータページ数を示す期待アクセスページ数を保持するエントリ２９２、及びシーケンシャルにアクセスされることが期待される場合にその値が“Ｙ”に設定されるシーケンシャルヒントを保持するエントリ２９４の組が含まれる。
【００８７】
なお、本図では、Ｊｏｂプログラム１００が１つのＤＢＭＳ９０により管理されるＤＢのデータのみを利用する場合を示している。複数のＤＢＭＳ９０により管理されるＤＢのデータを利用する場合には、ＳＱＬ解析詳細情報２９０には、ＤＢＭＳ  ＩＤを保持するエントリが全体で１つ保持されるのではなく、ＤＢＭＳ  ＩＤとデータ構造名との組が保持されるようにする。
【００８８】
ＳＱＬ解析モジュール２５２は、プログラムＩＤをエントリ２８１に設定し、その他のデータを保持するエントリをクリアすることでＳＱＬ解析詳細情報２９０を初期化する（ステップ２５０２）。
【００８９】
次に、ＳＱＬ解析モジュール２５２は、抽出ＳＱＬ情報８２０中のＳＱＬ情報から、繰り返しグループを把握する。繰り返しグループは、繰り返し開始を示す情報５０１２とそれに対応する繰り返し終了を示す情報５０１８により囲まれた部分として把握される。
【００９０】
尚、繰り返しグループは複数存在する可能性があるが、その場合、複数のグループは、処理が実施される順に並んでいる。そこで、ＳＱＬ解析モジュール２５２は、それぞれのグループに独立した識別子である繰り返しグループＩＤを付加し、その出現順に実行順を設定し、各々をエントリ２８２、２８４に登録する。また、情報５０１４により指示されるラベルを駆動データＩＤとしてエントリ２８６に設定する。なお、抽出ＳＱＬ情報８２０中のＳＱＬ情報に、繰り返し構造外であることが情報５０１２、５０１８と同様な形式で示され含まれている場合には、それらも繰り返しグループとして設定されてもよい（ステップ２５０３）。
【００９１】
その後、ＳＱＬ解析モジュール２５２は、それぞれの繰り返しグループ中で、繰り返し開始／終了を示す情報５０１４／情報５０１８に挟まれた部分に存在する、繰り返しグループ中で実行されるＳＱＬ文７００を、本処理に対応するＤＢＭＳ９０に与え、ＤＢＭＳ９０から実行計画５７０を取得する。
【００９２】
図１５は、本実施形態においてＳＱＬ解析モジュール２５２が取得する実行計画５７０のデータ構造を示す図である。実行計画５７０の内容は、幾つかの詳細な処理手順に分割され、分割された処理手順を個々のノードとした木構造で表現される。この木構造では、個々の処理手順で行われる処理に利用されるデータの依存関係が枝となり、先に実行される処理ほど末端に位置する。また、ノードで複数のデータが利用される場合、そのノードは複数の枝を保持する。
【００９３】
実行計画５７０には、個々の処理手順を表すノードのノード名を保持するエントリ５７２、そのノードの親ノードのノード名を保持するエントリ５７４、そのノードで行われる処理内容を保持するエントリ５７６、そのノードでデータへのアクセスを行う場合に、そのアクセス先となるデータのデータ構造名を保持するエントリ５７８及びノードで実施される選択処理の条件等を保持するエントリ５８２の組が保持される。
【００９４】
ノードで行われる処理としては、表データの全走査、索引へのアクセス、索引参照結果を利用した表へのアクセス、データの選択処理、結合・ソート・総和等の演算等があり、これらを指定する情報がエントリ５７６に保持される。例えばハッシュ結合演算を行うノードの場合、ビルドフェーズに利用されるデータとプローブフェーズで利用されるデータに対応する枝が存在することになる。ここで、大小関係が存在するようにノード名が付加され、その大小関係を利用してその情報が保持される。
【００９５】
ＳＱＬ解析モジュール２５２は、取得した実行計画５７０中のエントリ５７６及び５７８に登録されたノード処理内容及びアクセスデータ構造名から、繰り返しグループ中のＳＱＬ文７００によりアクセスされるデータ構造とそのアクセス方法を把握し、ＳＱＬ解析詳細情報２９０の対応するエントリ２８７及び２８８にデータ構造名及びアクセス方法の情報を設定する。ＳＱＬ解析モジュール２５２は、これらの処理をステップ２５０３で把握した全ての繰り返しグループに関して実施する（ステップ２５０４）。
【００９６】
更に、ＳＱＬ解析モジュール２５２は、ステップ２５０４で把握したアクセスされるデータ構造で、Ｂ−Ｔｒｅｅ索引、もしくは、Ｂ−Ｔｒｅｅ索引を利用してアクセスされる表データに関して、ＳＱＬ解析詳細情報２９０中の対応するエントリ２９２に期待アクセスページ数を設定する。
【００９７】
具体的にはまず、ＳＱＬ解析モジュール２５２は、実行計画５７０から、処理手順を表す木構造のリーフに位置するノードで、Ｂ−Ｔｒｅｅ索引をアクセスする処理を行うものを把握してそのノードのエントリ５８２を参照し、そのノードの検索条件を求める。まず、ＳＱＬ解析モジュール２５２は、その選択すべき値が他の処理の結果ではなく、ＳＱＬ文７００により一意に指定されているものに関し、システム情報３００中に保存されている索引情報５３０のエントリ５４２を参照してその検索条件における期待タプル数を求める。その値が、その索引を用いてアクセスされるデータの期待タプル数となる。また、この索引アクセスの基となるデータの期待タプル数は１と定義する。
【００９８】
その後、ＳＱＬ解析モジュール２５２は、再度、Ｂ−Ｔｒｅｅ索引をアクセスする処理を行うノードにおける検索条件を調べ、これまでアクセスされる期待タプル数が求まったデータを用いて検索処理を行うものに関して、駆動データ１タプルあたりに検索される期待タプル数を索引情報５３０のエントリ５４２から求める。索引参照を駆動するデータの期待タプル数と、索引参照結果による期待タプル数の積が、その索引を利用してアクセスされるデータのアクセスされる期待タプル数となる。以下繰り返しこの確認を行う。
【００９９】
Ｂ−Ｔｒｅｅ索引を用いた検索処理によりアクセスされるデータの期待タプル数を前述の方法により可能な範囲で求めた後、ＳＱＬ解析モジュール２５２は、基本的に各タプルは異なるデータページに存在すると考え、アクセスされるデータページ数求める。ただし、あるＢ−Ｔｒｅｅ索引により検索されるタプルがどのようにデータページに分散されるかの情報を索引情報５３０中に含めておき、それを利用してアクセスされるデータページ数をより詳細に求めてもよい。
【０１００】
この処理の全部又は一部として、ＳＱＬ解析モジュール２５２は、ＤＢＭＳ９０で実行計画５７０を作成するときに内部的に見積られた値を実行計画５７０と同時に出力させ、その値を利用してもよい。求めた値を対応するエントリ２９２に設定する。ＳＱＬ解析モジュール２５２は、これらの処理をステップ２５０３で把握した全ての繰り返しグループに関して実施する（ステップ２５０５）。
【０１０１】
最後に、ＳＱＬ解析モジュール２５２は、シーケンシャルヒントの設定を行う。まず、ＳＱＬ解析詳細情報のエントリ２８８を参照して、その方法が“全走査”“ＢｉｔＭａｐ索引へのアクセス”  “ＢｉｔＭａｐ索引を利用した表へのアクセス”であるものに対応するシーケンシャルヒントのエントリ２９４の値を“Ｙ”に設定する。続いて、ＳＱＬ解析モジュール２５２は、先読みＪｏｂ情報３５０中の入力相関情報のエントリ４３０を参照し、その中に登録されているデータＩＤがエントリ２８６に登録されている駆動データＩＤと一致し、データ構造名が一致するエントリに対応するシーケンシャルヒントのエントリ２９４の値を“Ｙ”に設定する。
【０１０２】
その後、ＳＱＬ解析モジュール２５２は、シーケンシャルヒントのエントリ２９４に“Ｙ”が設定されたデータを駆動データとしてネストループ結合が行われるデータが存在するかを、既に取得した実行計画５７０から把握する。そのようなデータが存在する場合には、先読みＪｏｂ情報３５０中の表データ順情報のエントリ４２０を参照して、駆動データと結合データのデータ順を調べ、同様のデータ順である場合には、結合データに関しても対応するシーケンシャルヒントのエントリ２９４の値を“Ｙ”に設定する（ステップ２５０６）。その後、ＳＱＬ解析モジュール２５２は処理を完了する（ステップ２５０７）。
【０１０３】
上述した処理により、事前の情報収集処理が行われる。
【０１０４】
以下、Ｊｏｂプログラム１００が実行される際の、先読みプログラム１６０による先読み指示処理に関して説明する。
【０１０５】
図１６は、先読み指示処理の処理手順を示す図である。本処理は、先読み方法決定モジュール２５４が、Ｊｏｂ状態情報８００としてＪｏｂプログラム１００の開始をＪｏｂ管理プログラム１３０から受け取ることにより開始され、Ｊｏｂ状態情報８００としてＪｏｂプログラム１００の完了を受信した後に後処理が実施され、処理が完了する。なお、Ｊｏｂ状態情報８００は、常に状態が示されるＪｏｂプログラム１００の識別子であるプログラムＩＤと共に送られる。また、Ｊｏｂプログラム１００の開始を示すＪｏｂ状態情報８００は、必要に応じてキャッシュ量情報を含む（ステップ１１０１）。
【０１０６】
次に、先読み方法決定モジュール２５４は、繰り返し情報８０５として入力データ量をＪｏｂ管理プログラム１３０から受信する。この入力データ量は、Ｊｏｂプログラム１００に対して入力として与えられるデータの件数であり、入力データのデータＩＤとその件数を表すデータの組として与えられる。本実施形態においては、入力データは、これから実施されるＪｏｂプログラム１００の前に実施された他のＪｏｂプログラム１００の出力データを利用する。その件数を先に実施されたＪｏｂプログラム１００にデータ量８１０としてＪｏｂ管理プログラム１３０に対して出力させ、その値を元にこれから実施するＪｏｂプログラム１００のデータ件数をＪｏｂ管理プログラム１３０が計算し、繰り返し情報８０５の入力データ量として与える。なお、本ステップは必ずしも実施される必要はない（ステップ１１０２）。
【０１０７】
次に、先読み方法決定モジュール２５４は、ステップ１１０２で取得した入力データ量、Ｊｏｂ状態情報８００中のキャッシュ量情報、ＳＱＬ解析情報２８０中のＳＱＬ解析詳細情報２９０からＤＢＭＳ９０に対して指示するキャッシュ量設定７１０と先読み方法７２０を決定する。
【０１０８】
図１７は、先読み方法決定モジュール２５４がＤＢＭＳ９０に対して指示するキャッシュ量設定７１０のデータ構造を示す図である。キャッシュ量設定７１０には、キャッシュ量の設定が指示されるデータ構造のデータ構造名を保持するエントリ７１１及び最低限利用すべきキャッシュ量を保持するエントリ７１２の組が含まれる。複数のＤＢＭＳ９０が関与する場合には、先読み方法決定モジュール２５４は、これらのエントリをＤＢＭＳ９０毎に用意する。
【０１０９】
図１８は、先読みプログラム１６０内で利用される、先読み方法７２０のデータ構造を示す図である。先読み方法７２０には、先読みやキャッシュ指示を行うデータ構造のデータ構造名を保持するエントリ７２１、先読み方法・キャッシュ方法を保持するエントリ７２２、対応する記憶装置４０の装置ＩＤを登録するエントリ７２３、その記憶装置４０で利用したいデータキャッシュ４２の割当量を示すキャッシュ量が登録されるエントリ７２４及びそのデータへのアクセス順を保持するエントリ７２５の組が含まれる。なお、複数のＤＢＭＳ９０が関与する場合には、更に先読み方法７２０にＤＢＭＳ  ＩＤを保持するエントリが追加される。
【０１１０】
まず、先読み方法決定モジュール２５４は、ＳＱＬ解析情報２８０から、処理開始時に与えられたプログラムＩＤに対応するＳＱＬ解析詳細情報２９０を選択する。その中で、エントリ２８８に登録されたアクセス方法が“全走査”のデータ構造に対しては、記憶装置４０及びＤＢＭＳ９０の双方に、“全走査”アクセス向けにそれぞれ独立に事前に定められた一定量のキャッシュを割り当てるとする。次に、エントリ２８８に登録されたアクセス方法が“全走査”ではなく、かつ、シーケンシャルヒントのエントリ２９２の値が“Ｙ”であるデータ構造に対しては、先読み方法決定モジュール２５４は、全走査の場合よりも多い、それぞれ独立に事前に定められたキャッシュ量を記憶装置４０・ＤＢＭＳ９０の双方に割り当てる。そして、先読み方法決定モジュール２５４は、これらのデータ構造に関しては、エントリ７２２に“シーケンシャル”を登録する。
【０１１１】
それ以外のデータ構造に関しては、先読み方法決定モジュール２５４は、まず、処理実行を保証するため、事前に定められた最低キャッシュ量を、記憶装置４０・ＤＢＭＳ９０の双方に割り当て、残りのキャッシュを以下の方法でそれらのデータ構造に分配していく。
【０１１２】
全ての駆動データＩＤに関してステップ１１０２でそれに一致するデータＩＤを持つ入力データ量が与えられ、かつ、これからキャッシュ量を設定すべき全てのデータ構造で対応する期待アクセスページ数のエントリ２９２に値が保持されている場合には、先読み方法決定モジュール２５４は、（駆動データＩＤに対応する入力データ量）ｘ（期待アクセスページ数）／（そのデータ構造のデータページ数）を指標として、その値が大きなデータ構造から順に、（駆動データＩＤに対応する入力データ量）ｘ（期待アクセスページ数）ｘ（データページサイズ）ｘ（事前設定割合）、又は（データ構造のデータページ数）ｘ（データページサイズ）ｘ（事前設定割合）のうち値の小さな方に対応する量をそのデータ構造に割り当てる。
【０１１３】
その後、先読み方法決定モジュール２５４は、割り当てられるキャッシュ量の総和が、ＤＢＭＳ９０毎にエントリ３４０で与えられたキャッシュ量の値になるまで繰り返す。その後、先読み方法決定モジュール２５４は、同じ指標を用いて、引き続いて記憶装置４０に、記憶装置４０毎にエントリ３４０で与えられるキャッシュ量の値になるまでキャッシュの割当を繰り返す。
【０１１４】
前記の条件を満たさず、前記の指標を計算できないデータ構造が存在する場合には、先読み方法決定モジュール２５４は、キャッシュ割当の優先順位決定の指標として（データ構造のデータページ数）を、キャッシュ割当量として（データ構造のデータページ数）ｘ（データページサイズ）ｘ（事前設定割合）を用いて上述した処理と同様の処理を行う。これらの方法で記憶装置４０にキャッシュが割り当てられたデータ構造に対しては、先読み方法決定モジュール２５４はエントリ７２２に、“即時先読み”を登録する。
【０１１５】
データ構造のデータページに関する情報は、システム情報３００中の索引情報５３０から、対応するエントリを参照することにより求めることができる。また、記憶装置４０毎のキャッシュ量を求める必要があるが、先読み方法決定モジュール２５４は、システム情報３００中のデータ記憶領域情報５１０と領域マッピング情報３１０を参照し、データ構造がどの記憶装置４０に記憶されているか求める。あるデータ構造が複数の記憶装置４０に記憶される場合には、先読み方法決定モジュール２５４は、原則としてそれぞれのデータ量に比例してキャッシュ量を記憶装置４０に分配する。ただし、いずれかの記憶装置４０でエントリ３４０に登録されたキャッシュ量の制約を超える場合には、先読み方法決定モジュール２５４は、キャッシュ量の制約分までその記憶装置４０にキャッシュ量を割り当てた後に、残りの記憶装置４０間でそれぞれのデータ量に比例してキャッシュ量を分配する。
【０１１６】
上記の方法で求めたキャッシュ割当に従って、先読み方法決定モジュール２５４は、キャッシュ量設定７１０と先読み方法７２０へ値を設定する。なお、先読み方法７２０中のエントリ７２５には、ＳＱＬ解析詳細情報２９０中の対応する値がそのまま設定される。
【０１１７】
なお、必ずしもキャッシュ量情報３４０が与えられるとは限らない。その場合には、先読み方法決定モジュール２５４は、ＤＢＭＳ９０や記憶装置４０で利用可能なキャッシュ量は、それぞれの全キャッシュ量の、事前設定される割合分であると判断する。
【０１１８】
また、先読み方法決定モジュール２５４がＤＢＭＳ９０と記憶装置４０の双方のキャッシュ量の設定を行うと説明したが、ＤＢＭＳ９０のキャッシュ量は固定とし、記憶装置４０のキャッシュ量のみ割当を動的に変更してもよい。この場合には、先読み方法決定モジュール２５４は、前述のＤＢＭＳ９０に対してキャッシュ割当を行う際と同じ指標でデータ構造へのキャッシュ割当優先順位とキャッシュ割当量を求める。そして、先読み方法決定モジュール２５４は、優先度が高いデータ構造から順に、現在のＤＢＭＳ９０におけるそのデータ構造において最低限利用可能なキャッシュ量の、求めたキャッシュ割当量からの不足分を、記憶装置４０のキャッシュを利用するとして、記憶装置４０のキャッシュの割当を行う。先読み方法決定モジュール２５４は、上述の処理を記憶装置４０で割当可能なキャッシュ量が０になるまで繰り返す（ステップ１１０５）。
【０１１９】
先読み方法決定モジュール２５４は、ステップ１１０５で求めたキャッシュ量設定７１０を対応するＤＢＭＳ９０に対して指示する。なお、先読み方法決定モジュール２５４は、ＤＢＭＳ９０に対して指示する前に、ＤＢＭＳ９０の設定前のキャッシュ量の設定を取得し、別途保存しておく。この指示を基に（必要なら独自の判断を加えながら）、ＤＢＭＳ９０はキャッシュ量の設定の変更を行う。なお、ＤＢＭＳ９０のキャッシュ量を固定として変更しない場合は、本ステップは実施しない（ステップ１１０６）。
【０１２０】
次に、先読み方法決定モジュール２５４は、ステップ１１０５で求めた先読み方法７２０を先読み指示モジュール２５６に与え、記憶装置４０に対してキャッシュ指示７３０を発行するように要求する。
【０１２１】
図１９は、キャッシュ指示７３０のデータ構造を示す図である。キャッシュ指示７３０には、複数の領域を１つにまとめるための識別子であるグループ化を保持するエントリ７３２、記憶装置４０におけるデータ領域を示す、ＬＵ等の仮想構造の識別子及びその領域を示す情報からなるデータ領域を保持するエントリ７３４、キャッシュ方法を保持するエントリ７３５、キャッシュ量を保持するエントリ７３６、並びにアクセス順を保持するエントリ７３７の組が含まれる。
【０１２２】
依頼を受けた先読み指示モジュール２５６は、先読み方法７２０中のデータ構造名と装置ＩＤから、システム情報３００中のデータ記憶領域情報５１０と領域マッピング情報３１０を用いて、それぞれの記憶装置４０におけるデータ領域を判別し、記憶装置４０毎にキャッシュ指示７３０を作成する。ここで、エントリ７３５、７３６及び７３７に関しては、先読み方法７２０に登録されたキャッシュ方法、キャッシュ量及びアクセス順に対応する値がそのまま設定される。グループ化に関しては、同じデータ構造名と装置ＩＤの組に対応するが記憶装置上では非連続なデータ領域に分割される際に同一の値が設定され、それ以外のものは異なる値が設定される。
【０１２３】
その後、先読み指示モジュール２５６は、作成したキャッシュ指示７３０を対応する記憶装置４０に対して送信する。キャッシュ指示７３０を受け取った記憶装置４０の制御プログラム４４は、その指示に従って、データキャッシュ４２の管理や先読み処理を実施する。
【０１２４】
なお、先読み方法決定モジュール２５４は、先読み指示モジュール２５６に依頼した先読み方法７２０を別途記憶しておく（ステップ１１０７）。
【０１２５】
その後、先読み方法決定モジュール２５４は、Ｊｏｂ管理プログラム１３０から、Ｊｏｂ状態情報８００としてＪｏｂプログラム１００の完了報告を受信するまで処理を一時停止する（ステップ１１０８）。
【０１２６】
Ｊｏｂ状態情報８００として処理の完了報告を受信した後、先読み方法決定モジュール２５４は、ＤＢＭＳ９０や記憶装置４０に、設定したキャッシュの設定の解除指示を発行する。具体的には、先読み方法決定モジュール２５４は、ステップ１１０６でＤＢＭＳ９０にキャッシュ量の変更を指示した場合、そのステップで保存された指示前のキャッシュ設定に戻すキャッシュ量設定７１０をＤＢＭＳ９０に送信する。この指示を基に、ＤＢＭＳ９０はキャッシュ量の設定を元に戻す。
【０１２７】
また、先読み方法決定モジュール２５４は、先読み指示モジュール２５６に対して、保存しておいた先読み情報７２０内のエントリ７２２を全て“設定解除”にし、エントリ７２４の値を全て０に設定した先読み情報７２０を送信し、キャッシュ指示７３０の発行を先読み指示モジュール２５６に依頼する。先読み指示モジュール２５６は、与えられた先読み情報７２０を基に、ステップ１１０７と同様に対応する記憶装置４０に対してキャッシュ指示７３０を発行し、キャッシュ設定の解除を指示する。キャッシュ指示７３０を受け取った記憶装置４０の制御プログラム４４は、その指示に従って、データキャッシュ４２の管理を元の状態に戻し、前に与えられたキャッシュ指示７３０に従ったデータの先読みを終了する（ステップ１１０９）。
【０１２８】
これにより、全ての処理が完了する（ステップ１１２０）。
【０１２９】
ここまで、記憶装置４０はＬＵ２０８を外部装置に提供し、外部装置はＩ／Ｏパス３４を経由してＬＵ２０８にアクセスすると説明してきた。しかし、本発明は、記憶装置４０がファイル２０２を外部装置に提供し、そのファイル２０２がネットワークファイルシステムプロトコルを用いてネットワーク２４経由でアクセスされる構成にも適用できる。
【０１３０】
図２０は、記憶装置４０がファイル２０２を外部装置に提供する計算機システムの構成を示す図である。この場合、本図の計算機システムは、図１と比較して、以下の点で違いがある。
【０１３１】
Ｉ／Ｏパス３４や仮想化スイッチ６０が存在しない。サーバ７０はＩ／ＯパスＩ／Ｆ  ３２を有さない。ＯＳ７２は、外部装置が提供するファイル２０２をネットワークファイルシステムプロトコルを用いてネットワークＩ／Ｆ  ２２及びネットワーク２４経由でアクセスするネットワークファイルシステム８２を有し、ボリュームマネージャ７８やファイルシステム８０を有さなくともよい。ネットワークファイルシステム８２は、領域マッピング情報３１０をＯＳ管理情報７４中に有する。ＤＢＭＳ９０により認識されるファイル２０２と記憶装置４０から提供されるファイル２０２があるルールに従って対応する場合、その対応関係を定めるルールの情報のみがＯＳ管理情報７４中に保持されても良い。この場合には、先読みプログラム１６０は対応関係を定める情報を取得し、それから領域マッピング情報３１０を作成し、システム情報３００中に記憶する。
【０１３２】
記憶装置４０はＩ／ＯパスＩ／Ｆ  ３２を有さなくても良く、ファイルを外部装置に対して提供する。記憶装置４０の制御プログラム４４は、図１のファイルシステム８０と同等のプログラムを有し、記憶装置４０内に存在するＬＵ２０８の記憶領域を仮想化し、ファイル２０２として提供する。また、制御プログラム４４は１つ以上のネットワークファイルシステムプロトコルを解釈し、ネットワーク２４及びネットワークＩ／Ｆ  ２２経由で外部装置からそのプロトコルを用いて要求されるファイルアクセスを処理する。この記憶装置４０では、キャッシュ指示７３０は、エントリ７３４にはファイルの識別子とその領域を示す情報が登録され、ファイル２０２をベースに外部からのキャッシュ領域やそのキャッシュ方法が指示されることができる。
【０１３３】
データのマッピングに関しては、図２で説明したデータのマッピング階層構成において、ファイル２０２以下が全て記憶装置４０により提供されるようになり、サーバ７０は、ＯＳ７２内のネットワークファイルシステム８２を用いて記憶装置４０上にあるファイル２０２をアクセスする。
【０１３４】
記憶装置４０がファイル２０２を外部装置に提供する場合、上述した各処理においては、ＬＵ２０８に対応する部分が記憶装置４０上のファイル２０２に置き換えられる。
【０１３５】
次に、本発明の第二の実施形態について説明する。第二の実施形態では、繰り返し実行されるＳＱＬ文を処理開始時に先読みプログラムが取得し、その解析結果を基に先読み指示を発行する。尚、第二の実施形態は第一の実施形態と同一の部分が多い。以下、第二の実施形態と第一の実施形態が異なる部分のみ説明し、同一な部分については説明を省略する。尚、第二の実施形態における計算機システムの構成や各機器が保持するデータのデータ構造は、以下に述べる個所以外、原則として第一の実施形態と同一である。
【０１３６】
図２１は、第二の実施形態における、先読み処理に関係する先読みプログラム１６０やその他プログラムと、それらプログラムが保持する、もしくは、それらプログラム間で交換される情報を示したブロック図である。先読みプログラム１６０は、Ｊｏｂ管理プログラム１３０から繰り返し情報８０５を受け取る代わりに、Ｊｏｂプログラム１００から繰り返し情報８０５ｂを受け取る。また、抽出ＳＱＬ情報８２０をＪｏｂプログラム１００が実施される前に取得したのに代わり、先読みプログラム１６０は、ストアドプロシージャ情報８４０をＪｏｂプログラム１００の実行前に、Ｊｏｂプログラム１００が実施されるときにＪｏｂプログラム１００からＳＱＬヒント８３０を受け取る。なお、本図では、Ｊｏｂ状態情報８００をＪｏｂ管理プログラムから受け取っているが、これをＪｏｂプログラム１００から受け取るようにすることもできる。
【０１３７】
図２２は、先読みプログラム１６０が事前に実施する情報収集処理の処理手順を示す図である。
【０１３８】
ステップ２１０２、ステップ２１０３及びステップ２１０６については、ステップ２１０１からの処理の場合と同一の処理を行う。
【０１３９】
ステップ２１０３の処理の終了後、ＳＱＬ解析モジュール２５２は、先読みＪｏｂ情報３５０で指定されるＪｏｂプログラム１００が発行するＳＱＬ文のうち、ストアドプロシージャ化されるＳＱＬ文をストアドプロシージャ情報８４０として取得する。
【０１４０】
図２３は、ストアプロシージャ情報８４０に含まれるストアドプロシージャの宣言の例５２００を示す。この例５２００では、範囲５２０２がストアドプロシージャの呼び出し名を示す。ストアドプロシージャ情報８４０は、開発プログラム１５０中のストアドプロシージャ把握モジュール２７２が開発コード１５２を元に作成する。具体的には、ストアドプロシージャ把握モジュール２７２が、開発コード１５２に含まれるソースコードに含まれるＳＱＬ文を解析し、ストアドプロシージャの宣言部分を把握し、それを抽出することにより作成する。
【０１４１】
複数のストアドプロシージャが利用される場合には、それらを全て抽出してストアドプロシージャ情報８４０が作成される。なお、プログラムＩＤを指定してストアドプロシージャ情報８４０の作成を開発プログラム１５０に依頼し、それを先読みプログラム１６０に与える処理は管理者が行っても良いし、先読みプログラム１６０中のＳＱＬ解析モジュール２５２が直接行っても良い（ステップ２１０４ｂ）。
【０１４２】
ＳＱＬ解析モジュール２５２は、取得したストアドプロシージャ情報８４０に含まれるストアドプロシージャをそれぞれ分離し、分離された各々のストアドプロシージャに関してＳＱＬ解析詳細情報２９０ｂをそれぞれ独立に作成する。
【０１４３】
図２４は、ＳＱＬ解析詳細情報２９０ｂのデータ構造を示す図である。ＳＱＬ解析詳細情報２９０との違いは、繰り返しグループＩＤ、実行順、及び駆動データＩＤを保持するエントリの替わりに、解析されたＳＱＬ文である被解析ＳＱＬ文を保持するエントリ２９６及びストアドプロシージャの呼び出し名であるストアドプロシージャ名を保持するエントリ２９８が付加されることである。
【０１４４】
ＳＱＬ解析詳細情報２９０ｂの作成方法は、ステップ２５０１から始まるＳＱＬ解析詳細情報２９０を作成する処理とほぼ同一である。ただし、本実施形態では、本ステップでは、１つのストアドプロシージャは第一の実施形態における繰り返しグループに相当するとして扱い、繰り返しグループに対応して設定した繰り返しグループＩＤ、実行順、及び駆動データＩＤの設定処理が行われない。
【０１４５】
また、ＳＱＬ解析モジュール２５２は、ストアドプロシージャの宣言を被解析ＳＱＬ文のエントリ２９６に設定し、その宣言を解析して得られるストアドプロシージャの呼び出し名をエントリ２９８に設定する（ステップ２１０５ｂ）。
【０１４６】
尚、本実施形態では、Ｊｏｂプログラム１００が繰り返し情報８０５ｂやＳＱＬヒント８３０を発行する必要がある。ここで、繰り返し情報８０５ｂは、繰り返し処理の開始もしくは終了を示す情報で、繰り返し処理の開始を示す場合には、必要に応じて処理の繰り返し回数も含まれる。ＳＱＬヒント８３０は、これから実行される繰り返し処理構造の中で実行される一連のＳＱＬ文７００である。なお、繰り返し情報８０５ｂやＳＱＬヒント８３０は常にＪｏｂプログラム１００のプログラムＩＤと共に送信されるようにし、その送信元Ｊｏｂプログラム１００のプログラムＩＤが識別できるようにする。
【０１４７】
図２５は、Ｃ言語で書かれたソースコードに埋め込みＳＱＬ文が含まれている場合に、そのソースコードに、Ｊｏｂプログラム１００から繰り返し情報８０５ｂやＳＱＬヒント８３０を発行させるための埋め込み文を追加する処理による変換例を示す図である。この処理は、開発プログラム１５０中のＳＱＬヒント埋め込みモジュール２７４により行われる。
【０１４８】
ソースコードの範囲５００２で示される部分では、ｆｏｒ文により繰り返し処理が行われ、その中で幾つかのＳＱＬ文が実行される。ＳＱＬヒント埋め込みモジュール２７４はこの繰り返し構造を識別し、その中にＳＱＬ文が存在していることから、そのＳＱＬ文が繰り返し実行されると判断する。この場合、ＳＱＬヒント埋め込みモジュール２７４は、その繰り返し構造が開始される直前に、繰り返し処理の開始を先読みプログラム１６０に伝える繰り返し情報８０５ｂをＪｏｂプログラム１００に発行させるための埋め込み文５０２２と、ＳＱＬヒント８３０を先読みプログラム１６０へ発行するための埋め込み文５０２６を挿入する。また、ＳＱＬヒント埋め込みモジュール２７４は、その繰り返し構造が終了した直後に、繰り返し処理が完了を先読みプログラム１６０に伝える繰り返し情報８０５ｂをＪｏｂプログラム１００に発行させるための埋め込み文５０２８を挿入する。
【０１４９】
ここで、埋め込み文５０２２には、繰り返し回数を示す変数の値を出力するように、出力変数を示す情報５０２４が付加されてもよい。また、埋め込み文５０２６から出力されるＳＱＬヒント８３０は、範囲５００２中の埋め込みＳＱＬ文を抜き出した情報５０１０である。
【０１５０】
ソースコードは、このヒント出力を行う埋め込み文が追加された後に、更に実行形式を作成する処理が行われ、こうして作成された実行形式がＪｏｂプログラム１００として実行される。
【０１５１】
図２６は、ソースコードがＳＱＬスクリプトを用いて記述された場合に、そのＳＱＬスクリプトを解釈・実行するスクリプト実行プログラムを用いてＪｏｂプログラム１００として実行する時に、繰り返し情報８０５ｂやＳＱＬヒント８３０の発行をスクリプト実行プログラムに指示する文をＳＱＬスクリプトに追加する処理例を示す図である。この処理もＳＱＬヒント埋め込みモジュール２７４により行われる。本例のＳＱＬスクリプトでは、範囲５１０２でカーソルの定義が行われ、範囲５１０４でカーソルを用いて読み出されたデータ毎に、範囲５１０６の処理が繰り返し実行される。
【０１５２】
ＳＱＬヒント埋め込みモジュール２７４は、この繰り返し構造を識別し、繰り返し処理が実施されるされる範囲５１０４の直前に、繰り返し処理の開始を先読みプログラム１６０に伝える繰り返し情報８０５ｂの発行をスクリプト実行プログラムに指示する文５０２２ｂ及びＳＱＬヒント８３０の先読みプログラム１６０への発行をスクリプト実行プログラムに指示する文５０２６ｂを挿入する。また、その繰り返し構造が終了した直後に、ＳＱＬヒント埋め込みモジュール２７４は、繰り返し処理の完了を先読みプログラム１６０に伝える繰り返し情報８０５ｂの発行をスクリプト実行プログラムに指示する文５０２８を挿入する。ここで、文５０２２ｂには、繰り返し回数を示す変数の値を出力するように繰り返し数をカウントする文５０２４ｂが付加されてもよい。また、埋め込み文５０２６ｂから出力されるＳＱＬヒント８３０は、範囲５１０４中の実際に繰り返し実行されるＳＱＬ文を抜き出した情報５１１０である。
【０１５３】
Ｊｏｂプログラム１００実行時に、この変換されたＳＱＬスクリプトがスクリプト実行プログラムに与えられ、繰り返し情報８０５ｂやＳＱＬヒント８３０を出力させながら処理が実施される。また、この解析機能をスクリプト実行プログラムに持たせ、ＳＱＬスクリプトの実行時に動的に繰り返し情報８０５ｂやＳＱＬヒント８３０の生成・発行が行われても良い。
【０１５４】
以下、本実施形態における、Ｊｏｂプログラム１００が実行される際の、先読みプログラム１６０による先読み指示処理に関して説明する。
【０１５５】
図２７は、本実施形態における先読み指示処理の手順を示す図である。なお、本実施形態においては、先読みプログラム１６０がＪｏｂ状態情報８００としてＪｏｂプログラム１００の開始をＪｏｂ管理プログラム１３０から受け取ることにより本処理が開始され、先読みプログラム１６０がＪｏｂ状態情報８００としてＪｏｂプログラム１００の完了を受信したときに処理が完了する。なお、前述のように、Ｊｏｂ状態情報８００はＪｏｂプログラム１００が送信してもよい（ステップ１１０１ｂ）。
【０１５６】
まず、先読み処理プログラム１６０の先読み方法決定モジュール２５４は、繰り返し情報８０５ｂとＳＱＬヒント８３０をＪｏｂプログラム１００から受信する。なお、繰り返し情報８０５ｂ中に、繰り返し回数が与えられても与えられなくてもよい（ステップ１１０３ｂ）。
【０１５７】
続いて、先読み方法決定モジュール２５４は、ＳＱＬヒント８３０中からＳＱＬ文７００を把握し、それをＳＱＬ解析モジュール２５２に与えてＳＱＬ解析詳細情報２９０ｂを作成させ、ＳＱＬ解析情報２８０中に保存させる。なお、ここで作成されたＳＱＬ解析詳細情報２９０ｂには、ストアドプロシージャ名を保持すべきエントリ２９８に値は設定されない。また、ＳＱＬ文７００の中にストアドプロシージャを呼び出す部分が存在する場合には、その部分の解析結果として、そのストアドプロシージャに対応して作成されたＳＱＬ解析詳細情報２９０ｂの情報がそのまま用いられる。
【０１５８】
また、先読み方法決定モジュール２５４は、本ステップでは、ＳＱＬヒント８３０で与えられた全体が、第一の実施形態における１つの繰り返しグループに相当すると判断する。それ以外のＳＱＬ解析詳細情報２９０ｂの設定は、ステップ２１０５ｂで述べた方法と同様にして行われる（ステップ１１０４ｂ）。
【０１５９】
続いて、先読み方法決定モジュール２５４及び先読み指示モジュール２５６は、ステップ１１０５ｂからステップ１１０７ｂまでの処理を行う。これらの処理は、第一の実施形態のステップ１１０５からステップ１１０７で説明した処理と同様であるが、以下のような違いが存在する。
【０１６０】
まず、利用されるＳＱＬ解析詳細情報２９０ｂは、ステップ１１０４ｂで作成したものである。また、ＳＱＬ解析詳細情報２９０ｂにはアクセス順が登録されるエントリが存在せず、先読み方法７２０及びキャッシュ指示７３０では、アクセス順を保持するエントリを抹消するか、もしくは、無効値や同一の値を保持させるようにする。
【０１６１】
続いて、先読み方法決定モジュール２５４は、Ｊｏｂプログラム１００が発行する繰り返し情報８０５ｂとしての繰り返し処理の完了報告を受信するまで処理を一時停止する（ステップ１１０８ｂ）
その後、先読み方法決定モジュール２５４は、ＤＢＭＳ９０や記憶装置４０に設定したキャッシュの設定の解除指示を発行する。それら処理の詳細は、第一の実施形態で説明したステップ１１０９と同様である（ステップ１１０９ｂ）。
【０１６２】
その後、先読み方法決定モジュール２５４は、Ｊｏｂプログラム１００からの情報、もしくは、Ｊｏｂ状態情報８００の受信待ち状態に入る。Ｊｏｂ状態情報８００としてのＪｏｂプログラム１００の完了報告を受信した場合には、先読み方法決定モジュール２５４は処理を完了する（ステップ１１２０ｂ）。それ以外の情報を受信した場合には、ステップ１１０３ｂに戻り、受信した情報の確認をする（ステップ１１１０ｂ）。
【０１６３】
尚、本実施形態も、記憶装置４０がファイル２０２を外部装置に提供し、そのファイル２０２がネットワークファイルシステムプロトコルを用いてネットワーク２４経由でアクセスされる計算機システムにも適用可能である。そのときの注意点は、第一の実施形態と同様である。
【０１６４】
次に、本発明の第三の実施形態について説明する。第三の実施形態では、先読みプログラム１６０はＤＢＭＳ９０のフロントエンドプログラム的に振舞う。先読みプログラム１６０は、与えられたＳＱＬ文が繰り返し実行されるとして解析後、先読み指示を発行し、その後にＤＢＭＳ９０に対してＳＱＬ文を転送する。第三の実施形態は、第二の実施の形態と同一の部分が多い。以下、第三の実施形態と第二の実施形態が異なる部分のみ説明し、同一な部分については説明を省略する。尚、第三の実施形態における計算機システムの構成や各機器が保持するデータのデータ構造は、以下に述べる個所以外、原則として第二の実施形態と同一である。
【０１６５】
図２８は、第三の実施形態における、先読み処理に関係する先読みプログラム１６０やその他プログラムと、それらプログラムが保持する、もしくは、それらプログラム間で交換される情報を示したブロック図を示す図である。先読みプログラム１６０は、Ｊｏｂプログラム１００実行時にＳＱＬヒント８３０を受け取る代わりに、処理要求として最終的にＤＢＭＳ９０に対して送信されるＳＱＬ文７００を受領し、それを用いて必要な処理を実行後、そのＳＱＬ文７００をＤＢＭＳ９０に対して送信する。その処理結果として、実行結果９５０をＤＢＭＳ９０から受領し、それをそのままＪｏｂプログラム１００に対して返信する。なお、本図では、Ｊｏｂ状態情報８００をＪｏｂ管理プログラムから受け取っているが、第二の実施の形態と同様に、これをＪｏｂプログラム１００から受け取るようにすることもできる。
【０１６６】
先読みプログラム１６０が事前に実施する情報収集処理の処理に関しては、第二の実施形態と同一で、ステップ２１０１ｂから開始される処理を行う。
【０１６７】
本実施形態では、Ｊｏｂプログラム１００が繰り返し情報８０５ｂを発行する必要がある。以下、その方法について説明する。
【０１６８】
図２９は、Ｃ言語で書かれたソースコードに埋め込みＳＱＬ文が含まれている場合に、繰り返し情報８０５ｂをＪｏｂプログラム１００に発行させるための埋め込み文を追加する処理による変換例を示す図である。この処理は、開発プログラム１５０中の繰り返し情報埋め込みモジュール２７６により行われる。本処理は、第二の実施形態におけるＳＱＬヒント埋め込みモジュール２７４による変換とほぼ同一であるが、繰り返し情報埋め込みモジュール２７６の場合には、ＳＱＬヒント８３０をＪｏｂプログラム１００に発行させるための埋め込み文５０２６を挿入しない点が異なる。
【０１６９】
図３０は、ソースコードがＳＱＬスクリプトを用いて記述された場合に、そのＳＱＬスクリプトを解釈・実行するスクリプト実行プログラムを用いてＪｏｂプログラム１００として実行する時に、繰り返し情報８０５ｂの発行をスクリプト実行プログラムに指示する文を追加する処理による変換例を示す図である。この処理も繰り返し情報埋め込みモジュール２７６により行われる。本処理もＳＱＬヒント埋め込みモジュール２７４による変換とほぼ同一であるが、繰り返し情報埋め込みモジュール２７６の場合には、ＳＱＬヒント８３０の発行をスクリプト実行プログラムに指示する文５０２６ｂを挿入しない点が異なる。
【０１７０】
Ｊｏｂプログラム１００実行時に、この変換されたＳＱＬスクリプトがスクリプト実行プログラムに与えられ、繰り返し情報８０５ｂを出力させながら処理が実施される。また、この解析機能をスクリプト実行プログラムに持たせ、ＳＱＬスクリプトの実行時に動的に繰り返し情報８０５ｂの生成・発行が行われても良い。
【０１７１】
以下、本実施形態における、Ｊｏｂプログラム１００が実行される際の、先読みプログラム１６０による先読み指示処理に関して説明する。図３１は、本実施形態における先読み指示処理の手順を示す図である。なお、本実施形態においては、先読み方法決定モジュール２５４がＪｏｂ状態情報８００としてＪｏｂプログラム１００の開始をＪｏｂ管理プログラム１３０から受け取ることにより本処理が開始され、先読み方法決定モジュール２５４がＪｏｂ状態情報８００としてＪｏｂプログラム１００の完了を受信したときに処理が完了する。なお、前述のように、Ｊｏｂ状態情報８００はＪｏｂプログラム１００が送信してもよい（ステップ１２０１）。
【０１７２】
まず、先読み方法決定モジュール２５４は、繰り返し情報８０５ｂをＪｏｂプログラム１００から受信する。なお、繰り返し情報８０５ｂ中に、繰り返し回数が与えられても与えられなくてもよい（ステップ１２０２）。
【０１７３】
続いて、先読み方法決定モジュール２５４は、ＤＢＭＳ９０に対して処理要求として発行されるＳＱＬ文７００をＪｏｂプログラム１００から受信する。なお、このＳＱＬ文７００は、送信元Ｊｏｂプログラム１００のプログラムＩＤと共に送信する等、送信元のＪｏｂプログラム１００のプログラムＩＤが識別可能であるようにする（ステップ１２０３）。
【０１７４】
続いて、先読み方法決定モジュール２５４は、ステップ１２０３で受信したＳＱＬ文７００に対応するＳＱＬ解析詳細情報２９０ｂがＳＱＬ解析情報２８０中に存在するか確認する（ステップ１２０４）。存在する場合にはステップ１２０９に進み、存在しない場合にはステップ１２０５に進む。
【０１７５】
ＳＱＬ解析詳細情報２９０ｂがＳＱＬ解析情報２８０中に存在しない場合、先読み方法決定モジュール２５４はＳＱＬ解析モジュールに対し、ステップ１２０３で受信したＳＱＬ文７００について、ＳＱＬ解析詳細情報２９０ｂを作成し、ＳＱＬ解析情報２８０中に保存するよう指示する。その作成方法は、ステップ１１０４ｂと同様である（ステップ１２０５）。
【０１７６】
続いて、先読み方法決定モジュール２５４及び先読み指示モジュール２５６は、ステップ１１０５ｃからステップ１１０７ｃまでの処理を行う。これらの処理は、第二の実施形態で説明したステップ１１０５ｂからステップ１１０７ｂと同様であるが、以下のような違いが存在する。第二の実施形態における処理では、あるＪｏｂプログラム１００に対応するＳＱＬ解析詳細情報２９０ｂが増えることはないが、本処理では、対応するＳＱＬ解析詳細情報２９０ｂが順次増加する。
【０１７７】
また、ステップ１１０５ｃでキャッシュ量設定７１０や先読み方法７２０を決定する際には、先読み方法決定モジュール２５４は、それまでに発行したものは特に考慮せずに新たに最適と思われるキャッシュ量設定７１０や先読み方法７２０を順次決定する。また、ステップ１１０６ｃで、指示する前のＤＢＭＳ９０の設定を保存する場合には、本処理を開始する前のＤＢＭＳ９０の設定が常に保存される。さらに、ステップ１１０７ｃで、先読み方法７２０が記憶されるが、それは最後に先読み指示モジュール２５６に依頼された先読み方法７２０が記憶される。
【０１７８】
ステップ１２０７ｃの実行後、又はステップ１２０４でＳＱＬ解析詳細情報２９０ｂがＳＱＬ解析情報２８０中に存在すると判断された場合、先読み方法決定モジュール２５４は、ステップ１２０３で受信したＳＱＬ文７００を対応するＤＢＭＳ９０に対して発行し、その処理結果を取得する。その後、先読み方法決定モジュール２５４は、ＳＱＬ文７００を発行したＪｏｂプログラム１００に対して、取得した処理結果をそのまま返す（ステップ１２０９）。
【０１７９】
続いて、先読み方法決定モジュール２５４は、Ｊｏｂプログラム１００からの情報受信待ち状態に入り、Ｊｏｂプログラム１００からの繰り返し情報８０５ｂとしての繰り返し処理の完了報告の受信の有無を確認する。受信した情報が完了報告以外の情報の場合には、先読み方法決定モジュール２５４は、ステップ１２０３に戻り、受信した情報の確認をする（ステップ１２１０）。
【０１８０】
繰り返し情報８０５ｂとしての繰り返し完了処理の報告を受信した場合、先読み方法決定モジュール２５４は、第二の実施形態のステップ１１０９ｂと同様の処理を行う（ステップ１２１１）。
【０１８１】
その後、先読み方法決定モジュール２５４は、Ｊｏｂプログラム１００からの情報、もしくは、Ｊｏｂ状態情報８００の受信待ち状態に入る。情報を受信したときに、それがＪｏｂ状態情報８００としてのＪｏｂプログラム１００の完了報告であるか確認する（ステップ１２１２）。
【０１８２】
受信した情報がＪｏｂ状態情報８００としてのＪｏｂプログラム１００の完了報告でない場合には、先読み方法決定モジュール２５４は、ステップ１２０２に戻り、受信した情報の確認をする。
【０１８３】
受信した情報がＪｏｂ状態情報８００としてのＪｏｂプログラム１００の完了報告である場合には、先読み方法決定モジュール２５４は、処理が完了したＪｏｂプログラム１００に対応する、ストアドプロシージャの解析結果でない、つまり、ストアドプロシージャ名を保持するエントリ２９８に値を持たないＳＱＬ解析詳細情報２９０ｂをＳＱＬ解析情報２８０から削除する。なお、Ｊｏｂプログラム１００との対応関係はプログラムＩＤを用いて把握される（ステップ１２１３）。そして、処理を完了する（ステップ１２１４）。
【０１８４】
尚、本実施形態も、記憶装置４０がファイル２０２を外部装置に提供し、そのファイル２０２がネットワークファイルシステムプロトコルを用いてネットワーク２４経由でアクセスされる計算機システムにも適用可能である。そのときの注意点は、第一の実施形態と同様である。
【０１８５】
【発明の効果】
本発明により、ＤＢＭＳが稼動する計算機システムにおいて、同じ形のＳＱＬ文で与えられる処理が多数回、繰り返し実行される場合に、記憶装置へのアクセス性能が向上する。
【図面の簡単な説明】
【図１】第一の実施の形態における計算機システムの構成を示す図である。
【図２】第一の実施の形態におけるデータマッピングの階層構成の概念を示す図である。
【図３】領域マッピング情報３１０のデータ構造を示す図である。
【図４】データ記憶領域情報５１０のデータ構造を示す図である。
【図５】表データ量情報５２０のデータ構造を示す図である。
【図６】索引情報５３０のデータ構造を示す図である。
【図７】Ｊｏｂ実行管理情報３６０のデータ構造を示す図である。
【図８】第一の実施の形態における、先読み処理に関係する先読みプログラム１６０やその他プログラム間で交換される情報の流れを示す図である。
【図９】第一の実施の形態における、先読みプログラム１６０が事前に実施する情報収集処理の手順を示す図である。
【図１０】先読みＪｏｂ情報３５０のデータ構造を示す図である。
【図１１】第一の実施の形態における抽出処理の例を示す図である。
【図１２】第一の実施の形態における抽出処理の例を示す図である。
【図１３】抽出ＳＱＬ情報８２０からＳＱＬ解析詳細情報２９０を作成する処理の手順を示す図である。
【図１４】ＳＱＬ解析詳細情報２９０のデータ構造を示す図である。
【図１５】実行計画５７０のデータ構造を示す図である。
【図１６】第一の実施の形態における、先読みプログラム１６０による先読み指示処理の手順を示す図である。
【図１７】キャッシュ量設定７１０のデータ構造を示す図である。
【図１８】先読み方法７２０のデータ構造を示す図である。
【図１９】キャッシュ指示７３０のデータ構造を示す図である。
【図２０】第一の実施の形態において、記憶装置４０がファイル２０２を外部装置に提供する場合の計算機システムの構成を示す図である。
【図２１】第二の実施の形態における、先読み処理に関係する先読みプログラム１６０やその他プログラム間で交換される情報の流れを示す図である。
【図２２】第二の実施の形態における、先読みプログラム１６０が事前に実施する情報収集処理の手順を示す図である。
【図２３】ストアドプロシージャの宣言の例を示す図である。
【図２４】ＳＱＬ解析詳細情報２９０ｂのデータ構造を示す図である。
【図２５】第二の実施の形態における変換例を示す図である。
【図２６】第二の実施の形態における変換例を示す図である。
【図２７】第二の実施の形態における、先読みプログラム１６０による先読み指示処理の手順を示す図である。
【図２８】第三の実施の形態における、先読み処理に関係する先読みプログラム１６０やその他プログラム間で交換される情報の流れを示す図である。
【図２９】第三の実施の形態における変換例を示す図である。
【図３０】第二の実施の形態における変換例を示す図である。
【図３１】第三の実施の形態における、先読みプログラム１６０による先読み指示処理の手順を示す図である。
【符号の説明】
１６…ＨＤＤ、２２…ネットワークＩ／Ｆ、２４…ネットワーク、３２…Ｉ／ＯパスＩ／Ｆ、３４…Ｉ／Ｏパス、４０…記憶装置、６０…仮想化スイッチ、７０…サーバ、９０…ＤＢＭＳ、１００…Ｊｏｂプログラム、１３０…Ｊｏｂ管理プログラム、１５０…開発プログラム、１６０、１６０ａ、１６０ｂ、１６０ｃ、１６０ｄ、１６０ｅ、１６０ｆ…先読みプログラム
【図１】
2004295458.tif 000003
【図２】
2004295458.tif 000004
【図３】
2004295458.tif 000005
【図４】
2004295458.tif 000006
【図５】
2004295458.tif 000007
【図６】
2004295458.tif 000008
【図７】
2004295458.tif 000009
【図８】
2004295458.tif 000010
【図９】
2004295458.tif 000011
【図１０】
2004295458.tif 000012
【図１１】
2004295458.tif 000013
【図１２】
2004295458.tif 000014
【図１３】
2004295458.tif 000015
【図１４】
2004295458.tif 000016
【図１５】
2004295458.tif 000017
【図１６】
2004295458.tif 000018
【図１７】
2004295458.tif 000019
【図１８】
2004295458.tif 000020
【図１９】
2004295458.tif 000021
【図２０】
2004295458.tif 000022
【図２１】
2004295458.tif 000023
【図２２】
2004295458.tif 000024
【図２３】
2004295458.tif 000025
【図２４】
2004295458.tif 000026
【図２５】
2004295458.tif 000027
【図２６】
2004295458.tif 000028
【図２７】
2004295458.tif 000029
【図２８】
2004295458.tif 000030
【図２９】
2004295458.tif 000031
【図３０】
2004295458.tif 000032
【図３１】
2004295458.tif 000033