(57)【要約】【課題】バーチャリゼーション環境下において、データベース管理システム（ＤＢＭＳ）のＤＢ処理実行情報や処理優先度を加味した制御を行うことにより、システム全体の性能向上を実現する。【解決手段】バーチャリゼーション環境上にＤＢを構築したシステムにおいて、管理サーバがＤＢＭＳからＤＢ処理の実行計画や処理優先度等のＤＢ処理情報を取得し、その情報を基にこれからアクセスが行われるデータとそのアクセス順を予測し、予測結果に基づいて近い将来アクセスが行われるデータを記憶装置のキャッシュ上に読み出すよう指示し、最も近い将来にアクセスが行われるデータを自サーバのキャッシュメモリに読み出す。【選択図】  図１
2004192292.tif 000002
【特許請求の範囲】
【請求項１】
データベースのデータが記憶される一又は複数の記憶装置と、データベースを管理し、データベース内のデータにアクセスするデータベースホストとに接続される計算機であって、
前記データベースホストと接続するための第一のインタフェース部と、
前記一又は複数の記憶装置と接続するための第二のインタフェース部と、
制御装置と、
キャッシュメモリとを有し、
前記第一のインタフェース部が、前記データベースホストが実行するデータベースの管理処理の実行計画を、前記データベースホストから受信し、
前記制御装置が、前記実行計画に基づいて、前記データベースホストがアクセスするデータが格納されている前記一又は複数の記憶装置内の記憶領域を示す、第一の識別情報を予め把握し、
前記制御装置が、前記第一の識別情報を、前記計算機及び前記一又は複数の記憶装置が接続するネットワーク上で前記記憶領域を示すために用いられる第二の識別情報に変換し、
前記記憶領域に格納されたデータを読み出すよう要求する、前記第二の識別情報を含む第一の読み出し要求を、前記第二のインタフェース部が送信し、
前記記憶領域から読み出されたデータを前記第二のインタフェース部が受信して、該データを前記キャッシュメモリに格納し、
前記第一のインタフェース部が前記データベースホストから前記第一の識別情報を有するアクセス要求を受信した場合には、該第一のインタフェース部は、前記キャッシュメモリに格納されたデータを前記データベースホストに向けて送信することを特徴とする計算機。
【請求項２】
請求項１記載の計算機において、
前記第一の読み出し要求は、前記記憶領域に格納されたデータを、該記憶領域を有する記憶装置のキャッシュメモリに読み出すよう要求する情報を有し、
前記第二のインタフェース部は更に、前記記憶装置のキャッシュメモリに読み出された情報を読み出すための第二の読み出し要求を送信し、
前記第二の読み出し要求に応じて読み出されたデータを前記第二のインタフェース部が受信して、前記計算機が有するキャッシュメモリに格納することを特徴とする計算機。
【請求項３】
請求項１記載の計算機において、
前記実行計画には、前記データベースホストが実行する複数の処理各々についての実行順序と、該複数の処理各々について、各々の処理が実行される際に用いられるデータが格納されている記憶領域を示す第一の識別情報とが含まれており、
前記第二のインタフェース部は、前記実行順序に従って、前記複数の処理各々について、該各々の処理で用いられるデータについての前記第一の読み出し要求を送信することを特徴とする計算機。
【請求項４】
請求項１記載の計算機において、
更にメモリを有しており、
前記メモリには、前記データベースホストが前記一又は複数の記憶装置に格納されているデータにアクセスする際に用いるアクセス対象の記憶領域を識別するための第一の識別情報と、前記計算機及び前記一又は複数の記憶装置が記憶領域を識別するために用いる第二の識別情報との対応関係が格納されており、
前記制御装置は、前記メモリに格納されている前記対応関係に基づいて、前記第一の識別情報を前記第二の識別情報に変換することを特徴とする計算機。
【請求項５】
データベース内のデータが記憶される一又は複数の記憶装置と、データベースを管理し、データベース内のデータにアクセスするデータベースホストとに接続される計算機であって、
前記データベースホストと接続するための第一のインタフェース部と、
前記一又は複数の記憶装置と接続するための第二のインタフェース部と、
制御装置とを有し、
前記第一のインタフェース部が、前記データベースホストが実行するデータベースの管理処理の実行計画を、前記データベースホストから受信し、
前記制御装置が、前記実行計画に基づいて、前記データベースホストがアクセスするデータが格納されている前記一又は複数の記憶装置内の記憶領域を特定し、
前記制御装置が、特定された前記記憶領域を示す前記実行計画に含まれる第一の識別情報を、前記計算機及び前記一又は複数の記憶装置が該記憶領域を識別すために用いる第二の識別情報に変換し、
前記記憶領域に格納されたデータを、該記憶領域を有する記憶装置のキャッシュメモリに読み出すよう要求する読み出し要求を、前記第二のインタフェース部が送信し、
前記第一のインタフェース部が、前記データベースホストから前記第一の識別情報を有するアクセス要求を受信した場合に、前記第二の識別情報を用いて前記記憶領域を有する記憶装置にアクセスし、該記憶装置が有するキャッシュメモリからデータを読み出すよう、前記第二の識別情報を前記データベースホストに送信することを特徴とする計算機。
【請求項６】
データベースを管理するホストコンピュータと、データベースのデータが格納される記憶装置とに接続される計算機が、前記ホストコンピュータからアクセスされるデータを、前記ホストコンピュータが前記データに対するアクセス要求を発行する前に、該データを格納する記憶装置内の記憶領域からから読み出しておくデータ先読み方法であって、
前記ホストコンピュータから、該ホストコンピュータが実行するデータベース管理処理の実行計画情報を受信するステップと、
前記実行計画情報に含まれる、データベース管理処理に伴ってアクセスされる記憶領域の第一の識別情報を、該記憶領域を有する記憶装置が該記憶領域を識別するために用いている第二の識別情報に変換するステップと、
前記ホストコンピュータから前記記憶領域に対するアクセス要求を受信する前に、前記記憶領域に格納されているデータを読み出すよう、該記憶領域を有する記憶装置に、前記第二の識別情報を有する読み出し要求を送信するステップと、
前記記憶領域を有する記憶装置から、該記憶領域に格納されているデータを受信し、該データを前記計算機が有するキャッシュメモリに格納するステップと、
前記ホストコンピュータから前記記憶領域に対するアクセス要求を受信するステップと、
前記アクセス要求に従って、前記キャッシュメモリに格納されたデータを前記ホストコンピュータに送信するステップとを有することを特徴とするデータ先読み方法。
【請求項７】
請求項６記載のデータ先読み方法において、
前記読み出し要求を送信するステップは更に、
前記記憶領域に格納されているデータを前記記憶装置が有するキャッシュメモリに読み出すよう要求するステップと、
前記記憶装置のキャッシュメモリに格納されている前記データを前記計算機に送信するよう要求するステップとを有することを特徴とするデータ先読み方法。
【請求項８】
請求項６記載のデータ先読み方法において、
前記実行計画情報には、前記ホストコンピュータによってアクセスされる記憶領域を示す複数の第一の識別情報と、該複数の第一の識別情報各々が示す記憶領域が前記ホストコンピュータによってアクセスされる順番とが含まれており、
前記読み出し要求を送信するステップは、前記順番に従って、前記複数の第一の識別情報各々に対応する第二の識別情報を有する読み出し要求を送信することを特徴とするデータ先読み方法。
【請求項９】
ホストコンピュータと、ホストコンピュータによって管理されるデータベースのデータが格納される記憶装置とに接続される計算機が、前記ホストコンピュータからアクセスされるデータを、予め該データを格納する記憶装置内の記憶領域からから読み出しておくデータ先読み方法であって、
前記ホストコンピュータから、該ホストコンピュータが実行するデータベース管理処理の実行計画情報を受信するステップと、
前記実行計画情報に含まれる、前記ホストコンピュータによってアクセスされる記憶領域の仮想識別情報を、該記憶領域を有する記憶装置が該記憶領域を識別するために用いている物理識別情報に変換するステップと、
前記記憶領域に格納されているデータを、該記憶領域を有する記憶装置のキャッシュメモリに読み出すよう要求する、前記物理識別情報を有する読み出し要求を、該記憶装置に送信するステップと、
前記ホストコンピュータから前記記憶領域に対するアクセス要求を受信するステップと、
前記アクセス要求に従って、前記ホストコンピュータに前記物理識別情報を通知するステップとを有し、
前記ホストコンピュータは前記物理識別情報を用いて前記記憶装置にアクセスし、前記キャッシュメモリからデータを読み出すことを特徴とするデータ先読み方法。
【請求項１０】
データベースのデータを格納する一又は複数の記憶装置と、
前記データベースを管理するホストコンピュータと、
前記ホストコンピュータから前記一又は複数の記憶装置が有する記憶領域の仮想的な識別情報を有するアクセス要求を受け付けて、該仮想的な識別情報が示す記憶領域を有する記憶装置に、前記ホストコンピュータからのアクセス要求を転送する管理サーバとを有し、
前記ホストコンピュータは、該ホストコンピュータが実行するデータベース管理処理の処理計画を前記管理サーバに送信し、
前記管理サーバは、前記処理計画に基づいて、前記ホストコンピュータが前記データベース管理処理を実行する際に用いるデータが格納されている記憶領域の仮想的な識別情報を特定し、前記仮想的な識別情報を、前記記憶領域を示す物理的な識別情報に変換し、前記記憶領域に格納されているデータを読み出すよう要求する前記物理的な識別情報を有する第一の要求を、前記ホストコンピュータから前記データに対するアクセス要求を受信する前に、前記データを記憶している記憶装置に送信し、
前記記憶装置は前記データを前記管理サーバに送信し、
前記管理サーバは、前記記憶装置から受信したデータを、該管理サーバが有するキャッシュメモリに格納し、前記ホストコンピュータから前記データに対するアクセス要求を受信した場合には、前記キャッシュメモリに格納されているデータを前記ホストコンピュータに送信することを特徴とする計算機システム。
【請求項１１】
請求項１０記載の計算機システムにおいて、
前記記憶装置は、前記第一の要求に基づいて、前記データを前記記憶装置が有するキャッシュメモリに読み出し、
前記管理サーバは更に、前記記憶装置が有するキャッシュメモリに格納されたデータを該管理サーバに送信するよう要求する第二の要求を前記記憶装置に送信し、
前記記憶装置は前記第二の要求に応じて、前記データを前記管理サーバに送信することを特徴とする計算機システム。
【請求項１２】
請求項１０記載の計算機システムにおいて、
前記管理サーバは、前記処理計画が示すデータベース管理処理の実行手順に基づいて、前記第一の要求を前記記憶装置に送信することを特徴とする計算機システム。
【請求項１３】
データベースのデータを格納する記憶装置と、
前記データベースを管理するホストコンピュータと、
前記ホストコンピュータから前記記憶装置が有する記憶領域の仮想的な識別情報を含むアクセス要求を受け付けて、該仮想的な識別情報を物理的な識別情報に変換して、該物理的な識別情報を前記ホストコンピュータに通知する管理サーバとを有し、
前記ホストコンピュータは、該ホストコンピュータが実行するデータベース管理処理の処理計画を前記管理サーバに送信し、
前記管理サーバは、前記処理計画に基づいて、前記ホストコンピュータが前記データベース管理処理を実行する際に用いるデータが格納されている記憶領域の仮想的な識別情報を特定し、前記仮想的な識別情報を、前記記憶領域を示す物理的な識別情報に変換し、前記ホストコンピュータから前記データに対するアクセス要求を受信する前に、前記記憶領域に格納されているデータを前記記憶装置が有するキャッシュメモリに読み出すよう、該記憶装置に要求し、
前記管理サーバは、前記ホストコンピュータから前記データに対するアクセス要求を受信した場合には、前記物理的な識別情報を前記ホストコンピュータに送信し、
前記ホストコンピュータは前記物理的な識別情報を用いて、前記記憶装置のキャッシュメモリに格納されているデータにアクセスすることを特徴とする計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶装置に格納されたデータのうち、計算機によって近々アクセスされるデータを予測して、キャッシュメモリにプリフェッチする技術に関する。
【０００２】
【従来の技術】
現在、ＤＢを用いる多くのアプリケーションが存在し、ＤＢに関する一連の処理・管理を行うソフトウェアであるＤＢ管理システム（以下、ＤＢＭＳ）は極めて重要なものとなっている。ＤＢの特徴の一つは、多大な量のデータを扱うことである。そのため、ＤＢＭＳが稼動するシステムの多くにおいては、ＤＢＭＳが走行する計算機に大容量のディスクを持つ記憶装置を接続し、そのディスク上にＤＢのデータを記憶する形態が一般的であり、データが記憶装置のディスク上に記憶される以上、ＤＢに関する処理を行う際にはディスクに対してアクセスが必然的に発生する。このディスクへのアクセスは、データのシーク等、機械的な動作を伴うものであり、計算機内のＣＰＵやメモリ上で行われる演算、データ転送に比べ遥かに時間がかかる。そこで、記憶装置内にキャッシュメモリを設け、ディスクから読み出したデータをそのキャッシュメモリに保持しておき、同じデータへのアクセスの際はキャッシュメモリからデータを読み出すことで、ディスクへのデータアクセスを少なくする記憶装置が主流となっている。また、一連のデータアクセスからこの先読み出されるデータを予測し、キャッシュメモリ上にプリフェッチしておく技術も開発されている。
【０００３】
特許文献１は、無駄なアクセスの削減や必要なデータのプリフェッチによりＤＢＭＳの性能を向上させる技術について開示している。本技術は、ユーザからの問い合わせ処理（クエリ）を実行する部分において、問い合わせの実行プランやデータアクセス特性、キャッシュメモリ量、Ｉ／Ｏ負荷等を考慮して、プリフェッチ実行やその量の決定、キャッシュ（バッファ）管理等を行うことによりＩ／Ｏアクセス性能を向上させてＤＢＭＳの性能を向上させている。
【０００４】
非特許文献１では、記憶装置の高機能化によるＤＢＭＳの性能向上について、リレーショナルデータベース管理システム（ＲＤＢＭＳ）を用いたＤＢを例にして論じている。記憶装置に対しアプリケーションレベルの知識としてＲＤＢＭＳにおける問い合わせ処理の実行プランを与えた場合、記憶装置は、ＲＤＢＭＳのある表に対する索引を読んだ後、その表のデータを記憶するどのブロックにアクセスすべきなのかが判断できるようになる。そこで、記憶装置は、索引を連続的にアクセスし、その索引によりアクセスすべき表のデータを保持するブロック群を把握し、それらに対するアクセスを効果的にスケジューリングすることによりデータの総アクセス時間を短縮することができる。また、この処理はＤＢＭＳが実行されている計算機とは独立実行可能であり、計算機からの命令を待つ必要がない。また、データが複数台の物理記憶装置に分散配置されている場合にはそれぞれの物理記憶装置を並列にアクセス可能であり、よりＤＢＭＳの処理実行時間の短縮が期待できる。
非特許文献２においては、アプリケーションが発行する、今後アクセスするファイルとアクセス先領域に関するヒントを用いて、計算機のＯＳにおいて計算機上のファイルキャッシュにデータをプリフェッチする機能とその制御方法について論じている。
【０００５】
一方、近年ＲＡＩＤに代表される記憶装置に記憶されるデータ量が著しく増大し、それに伴い記憶装置自体の記憶容量が大きくなり、また、ネットワークに接続される記憶装置、ファイルサーバ等の台数も増加している。その結果、大容量となった記憶領域の管理の複雑化、記憶装置、及びサーバの設置場所が分散することによる情報機器の管理の複雑化、特定の記憶装置への負荷集中等、様々な問題が現れている。現在、これらの諸問題を解決することを目的として、バーチャリゼーションと呼ばれる技術が研究、開発されている。
【０００６】
バーチャリゼーション技術は、非特許文献３に記載されているように、主に三種類の形態に分類される。
【０００７】
一つ目は、ネットワークに接続される各サーバが、記憶装置の記憶領域を管理する情報を共有している形態である。各サーバは、各々が有するボリュームマネージャを用いて記憶装置にアクセスする。
【０００８】
二つ目は、バーチャリゼーションサーバ（以下、管理サーバ）が、ネットワークに接続された記憶装置の全記憶領域を仮想記憶領域として管理する形態である。管理サーバは、各サーバから記憶装置へのアクセス要求を受け付け、配下の記憶装置の記憶領域にアクセスし、その結果を要求元のサーバに返信する。
【０００９】
三つ目は、二つ目と同様に、管理サーバがネットワークに接続された記憶装置の全記憶領域を仮想記憶領域として管理する形態である。管理サーバは、各サーバから記憶装置装置へのアクセス要求を受け付け、アクセス対象となるデータを実際に記憶している記憶領域の位置情報を要求元のサーバに返信する。サーバは、その位置情報を元にして記憶装置装置の記憶領域にアクセスする。
【００１０】
【特許文献１】
米国特許第５３１７７２７号明細書
【非特許文献１】
向井影洋、他２名、「高機能ディスクにおけるアクセスプランを用いたプリフェッチ機構に関する評価」、第１１回データ工学ワークショップＤＥＷＳ２０００論文集、電子情報通信学会データ工学研究専門委員会、２０００年７月、講演番号３Ｂ−３
【非特許文献２】
アール、エイチ、パターソン（Ｒ．Ｈ．Ｐａｔｔｅｒｓｏｎ）、他４名、「インフォームドプリフェッチとキャッシング（Ｉｎｆｏｒｍｅｄ  Ｐｒｅｆｅｔｃｈｉｎｇ  ａｎｄ  Ｃａｃｈｉｎｇ）」、第１５回ＡＣＭオペレーティングシステムプリンシプルシンポジウム予稿集（Ｐｒｏｃ．  ｏｆ  ｔｈｅ  １５ｔｈ  ＡＣＭ  Ｓｙｍｐ．  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｐｒｉｎｃｉｐｌｅｓ）、１９９５年１２月、ｐ．７９−９５
【非特許文献３】
「エバリュエーターシリーズ  ディスクストレージの仮想化（Ｔｈｅ  Ｅｖａｌｕａｔｏｒ  Ｓｅｒｉｅｓ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ｏｆ  Ｄｉｓｋ  Ｓｔｏｒａｇｅ  ）」、ＷＰ−０００７−１、エバリュエーターグループ社（Ｅｖａｌｕａｔｏｒ  Ｇｒｏｕｐ，  Ｉｎｃ．）、２０００年９月
【００１１】
【発明が解決しようとする課題】
バーチャリゼーション技術を応用したシステムにおいては、膨大なデータを扱うことになるため、ＤＢＭＳが用いられる割合は極めて高いと言える。この場合、より大量のデータにアクセスするため、記憶装置内のディスクへのアクセス性能がシステム全体の性能に与える影響は更に大きくなる。
【００１２】
従来の技術として記した、キャッシュメモリの活用やデータのプリフェッチは記憶装置内に特化したものである。特許文献１、非特許文献１〜２記載の技術は、ＤＢＭＳの処理と記憶装置を連携させて性能面を向上させているが、バーチャリゼーション環境には対応していない。
【００１３】
本発明の目的は、バーチャリゼーション環境上にＤＢを構築したシステムにおける、データのプリフェッチ技術を提供することである。
【００１４】
【課題を解決するための手段】
一般にＤＢＭＳは、与えられた問い合わせ処理（クエリ）を実行する前にその実行プランを作成し、それに従って処理を実行する。このクエリの実行プランは、どの順番で、どのデータをどのようにアクセスし、アクセス後にＤＢホスト上でどのような処理を実行するかといった手順を示すものである。
【００１５】
そこで、バーチャリゼーション環境上にＤＢを構築したシステムにおいて、管理サーバがＤＢＭＳから実行プランを含めたＤＢ処理情報をＤＢＭＳのＤＢ処理の実行前に取得し、ＤＢ処理情報を基にこれからアクセスが行われるデータとそのアクセス順を特定し、特定結果に基づいて将来アクセスが行われるデータを記憶装置のキャッシュ上に読み出し、将来アクセスが行われるデータを自サーバのキャッシュメモリに読み出すことによって、ＤＢ処理の内容に応じたデータをプリフェッチする。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態を説明する。なお、これにより本発明が限定されるものではない。
【００１７】
図１から図１４を用いて、第一の実施の形態について説明する。
【００１８】
図１は、本発明を適用した計算機システムの第一の実施形態を示す図である。
【００１９】
本システムは、管理サーバ１００、記憶装置１３０、ＤＢホスト１４０、ＤＢクライアント１６０、管理サーバ１００と記憶装置１３０を接続するネットワーク１８４、管理サーバ１００とＤＢホスト１４０を接続するネットワーク１８２、ＤＢホスト１４０とＤＢクライアント１６０を接続するネットワーク１８０で構成される。
【００２０】
管理サーバ１００と記憶装置１３０間のデータ通信は、ネットワーク１８４を介して行われる。管理サーバ１００とＤＢホスト１４０間のデータ通信は、ネットワーク１８２を介して行われる。ＤＢホスト１４０とＤＢクライアント１６０間のデータ通信は、ネットワーク１８０を介して行われる。尚、当システムにおいて、ＤＢクライアント１６０、ＤＢホスト１４０、記憶装置１３０は一台でも複数台でも構わない。
【００２１】
管理サーバ１００は、制御装置（制御プロセッサ）１０２、キャッシュ１０４、ネットワーク１８２と接続するＩ／Ｆ（Ａ）１０６、ネットワーク１８４と接続するＩ／Ｆ（Ｂ）１０８、メモリ１１０を有する。メモリ１１０には、仮想記憶領域管理プログラム１１２、ＤＢ処理管理プログラム１１４、マッピング情報１１６、ＤＢＭＳ情報１１８、キャッシュ管理情報１２０が格納されている。仮想記憶領域管理プログラム１１２は、制御装置１０２上で動作するプログラムであり、マッピング情報１１６を用いて、配下の記憶装置１３０の物理的な記憶領域全てを仮想的な記憶領域として管理する。ＤＢ処理管理プログラム１１４も、制御装置１０２上で動作するプログラムであり、ＤＢＭＳ情報１１８を用いて、ＤＢホスト１４０上のＤＢＭＳ１４８が実行するＤＢ処理の情報を管理する。また、キャッシュ管理情報１２０を用いて自サーバのキャッシュ１０４を管理する。当プログラムの具体的な処理内容については、処理フローの説明と合わせて後述する。
【００２２】
記憶装置１３０は、制御装置（制御プロセッサ）１３２、キャッシュ１３４、ネットワーク１３６と接続するＩ／Ｆ１３６、ディスク１３８を有し、制御装置１３２により、キャッシュ１３４やディスク１３８等を制御する。ＤＢの実データは、ディスク１３８上に記憶される。
【００２３】
ＤＢホスト１４０は、制御装置（制御プロセッサ）１４２、メモリ１４４、ネットワーク１８０と接続するＩ／Ｆ（Ａ）１５２、ネットワーク１８２と接続するＩ／Ｆ（Ｂ）１５４を有する計算機である。メモリ１５４には、ＤＢ処理情報取得プログラム１４６、ＤＢＭＳ１４８が格納される。また、ＤＢＭＳ１４８は、ＤＢスキーマ情報１５０を有する。ＤＢ処理情報取得プログラム１４６は、制御装置１４２上で動作するプログラムであり、ＤＢクライアント１６０上のＤＢ処理フロントエンドプログラム１６４を通して、ユーザからＤＢ処理要求を受け付け、そのＤＢ処理のプラン情報等をＤＢＭＳ１４８から取得し、ＤＢ処理情報６００として管理サーバ１００に送信する。ＤＢＭＳ１４８も、制御装置１４２上で動作するプログラムであり、ＤＢのテーブルやインデックス、ログ等をＤＢスキーマ情報１５０として管理する。また、ユーザから受け付けたＤＢ処理に応じて、管理サーバ１００を通して記憶装置１３０から必要なデータを取得し、ＤＢ処理を実行し、その実行結果を要求元のＤＢクライアント１６０に返信する。
【００２４】
ＤＢクライアント１６０は、メモリ１６２、ユーザがＤＢ処理を入力するため、及び処理結果を出力するための入出力装置１６６、制御装置（制御プロセッサ）１６８、ネットワーク１８０と接続するＩ／Ｆ１７０を有する計算機である。メモリ１６２には、ＤＢ処理フロントエンドプログラム１６４が格納される。ＤＢ処理フロントエンドプログラム１６４は、制御装置１６８上で動作するプログラムであり、ユーザからＤＢ処理を受け付けＤＢホスト１４０に送信する。またＤＢホスト１４０から受信したＤＢ処理の実行結果を入出力装置１１６に出力する。
【００２５】
図２は、マッピング情報１１６の構成の一例を示した図である。マッピング情報１１６は、仮想ボリューム名２００、仮想ブロック番号２０２、記憶装置ＩＤ２０４、物理ディスクＩＤ２０６、物理ブロック番号２０８で構成する。
【００２６】
仮想ボリューム名２００は、仮想ボリュームを識別するための名前であり、仮想ブロック番号２０２は、仮想ボリューム内の記憶領域を示す番号である。記憶装置ＩＤ２０４は、仮想ボリューム名２００と仮想ブロック番号２０２が示す仮想ボリューム領域のデータを実際に記憶する記憶装置１３０の識別子である。物理ディスクＩＤ２０６は、仮想ボリューム名２００と仮想ブロック番号２０２が示す仮想ボリューム領域のデータを実際に記憶する記憶装置の物理ディスク１３８の識別子である。物理ブロック番号２０８は、仮想ボリューム名２００と仮想ブロック番号２０２が示す仮想ボリューム領域のデータを実際に記憶する物理ディスクの物理ブロック番号である。図２中の一番上のエントリを例にあげると、「ＶＶＯＬ１」という名前の仮想ボリュームの仮想ブロック０番から３９９９番の仮想ボリューム領域は、実際には「Ｓ０１」で識別される記憶装置の「Ｄ０１０１」で識別される物理ディスク上の物理ブロック１０００番から４９９９番に存在するということである。
【００２７】
図３は、ＤＢＭＳ情報１１８の構成の一例を示した図である。ＤＢＭＳ情報１１８は、実行情報ＩＤ管理情報３００、ＤＢＭＳ処理計画情報３１０で構成される。
【００２８】
実行情報ＩＤ管理情報３００は、実行情報ＩＤ３０２、ＤＢＭＳ名３０４、ＤＢ処理プランＩＤ３０６、処理優先度３０７、キャッシュ処理フラグ３０８を有する。実行情報ＩＤ３０２は、ＤＢ処理管理プログラム１１４がＤＢ処理情報６００を受信した時に割り当てられるユニークなＩＤであり、当ＩＤにより実行情報ＩＤ管理情報とＤＢＭＳ処理計画情報を関連付け、受信したＤＢ処理情報を管理する。ＤＢＭＳ名３０４は、当エントリが管理するＤＢ処理を実行するＤＢＭＳを識別する名前であり、ＤＢホスト１４０から受信したＤＢ処理情報６００のＤＢＭＳ名６０２と同じＤＢＮＳ名を格納する。ＤＢ処理プランＩＤ３０６は、当エントリが管理するＤＢ処理のＤＢ処理プランを識別するＩＤであり、ＤＢ処理情報６００のＤＢ処理プランＩＤ６０３のＩＤを格納する。処理優先度は３０７は、当エントリが管理するＤＢ処理のプリフェッチ処理の優先度を示し、ＤＢ処理情報６００の処理優先度６０４の値を格納する。キャッシュ処理フラグ３０８は、当エントリに対するキャッシュ処理の状態を示すフラグである。当フラグが“０”の場合は、キャッシュ処理が未実行であることを示し、“１”の場合は、キャッシュ処理が実行中であることを示す。尚、初期値は“０”である。
【００２９】
ＤＢＭＳ処理計画情報３１０は、実行情報ＩＤ３１２、実行情報内部通番３１４、アクセス先データ構造３１６、アクセス先仮想ボリューム名３１８、アクセス先仮想ブロック番号３２０、実行順序３２２を有する。実行情報ＩＤ３１２は、実行情報ＩＤ管理情報３００の実行情報ＩＤ３０２と対応するもので、ＤＢ処理を管理するために用いられる。実行情報内部通番３１４は、実行情報ＩＤ３１２が管理するＤＢ処理中にアクセスされるデータ構造の順番を示す番号である。ＤＢ処理管理プログラム１１４は、この実行情報内部通番３１４に従って、データのプリフェッチを実行する。アクセス先データ構造３１６、アクセス先仮想ボリューム名３１８、アクセス先仮想ブロック番号３２０は、当エントリが管理するＤＢ処理のアクセス対象となるデータ構造と、そのデータ構造を記憶している仮想ボリュームの仮想ボリューム名、仮想ブロック番号を示すもので、後述するＤＢ処理プラン情報６０６のアクセス先データ構造６１４、アクセス先仮想ボリューム名６１６、アクセス先仮想ブロック番号６１８の情報をそれぞれ格納する。実行順序３２２は、当エントリが管理するＤＢ処理の実行順序をＤＢ処理プラン情報６０６の実行順序６１２から継承した情報である。
【００３０】
図４は、キャッシュ管理情報１２０の構成例を示した図である。尚、本発明において、キャッシュ１０４はセグメントという単位で分割して管理している。また、その全セグメントのうち、一部を予備キャッシュセグメントとして確保している。
【００３１】
キャッシュ管理情報１２０は、全キャッシュセグメント数４００、使用可能キャッシュセグメント数４０２、使用中セグメントリスト４０４、使用可能セグメントリスト４０６、再利用セグメントリスト４０８、キャッシュセグメント情報４１０を有する。全キャッシュセグメント数４００は、キャッシュ１０４に存在するセグメントの個数を格納する。使用可能キャッシュセグメント数４０２は、キャッシュ１０４に存在するセグメントのうち、使用可能なセグメントの個数を格納する。使用中セグメントリスト４０４は、ＤＢホスト１４０にデータを転送する直前のセグメントのリストである。使用可能セグメントリスト４０６は、この先ＤＢホスト１４０に読み出しが行われる予定がないセグメントのリストである。再利用セグメントリスト４０８は、ＤＢホスト１４０にデータを転送し、更にこの先ＤＢホスト１４０に読み出しが行われる予定のあるセグメントのリストである。
【００３２】
キャッシュセグメント情報４１０は、セグメントＩＤ４１２、記憶装置ＩＤ４１４、物理ディスクＩＤ４１６、物理ブロック番号４１８、データ転送フラグ４２０、再利用カウンタ４２２を有する。
【００３３】
セグメントＩＤ４１２は、当エントリが管理するセグメントを識別するＩＤである。当ＩＤとセグメントは１対１に対応する。記憶装置ＩＤ４１４は、当エントリが管理するセグメント上に保持しているデータを記憶する記憶装置を識別するＩＤである。物理ディスクＩＤ４１６は、当エントリが管理するセグメント上に保持しているデータを記憶する記憶装置内の物理ディスク１３８を識別するＩＤである。物理ブロック番号４１８は、当エントリが管理するセグメント上に保持しているデータを記憶する物理ディスクの物理ブロック番号である。データ転送フラグ４２０は、当エントリが管理するセグメント上のデータをＤＢホスト１４０に転送したかしていないかを示すフラグである。当フラグが“０”の場合は、データが未転送であることを示し、“１”の場合は、データが転送済みであることを示す。再利用カウンタ４２２は、当エントリが管理するセグメント上のデータの再利用予定の回数を示すカウンタである。
【００３４】
図５は、ＤＢスキーマ情報１５０の構成を示した図である。ＤＢスキーマ情報１５０は、表定義情報５００、索引定義情報５０２、ログ情報５０４、一時表領域５０６、データ記憶位置情報５０８を有する。尚、本明細書では、ＤＢスキーマ情報として、表、索引、ログ、一時記憶領域の代表的なＤＢスキーマを記載したが、実際のＤＢＭＳではこれら以外のＤＢスキーマも多数存在し、それらの情報もＤＢスキーマ情報１５０に含まれる。ＤＢＭＳ１４８は、これらのＤＢスキーマを定義し、データの格納、参照、更新等を行い、要求されたＤＢ処理を実行する。
【００３５】
データ記憶位置情報５０８は、データ構造名５１０、データ構造型５１１、仮想ボリューム名５１２、仮想ブロック番号５１４を有する。データ構造名５１０は、ＤＢスキーマで定義したデータ構造の名前であり、データ構造型５１１は、そのデータ構造の型を示す。仮想ボリューム名５１２は、当エントリのデータ構造を記憶する仮想ボリュームの名前である。仮想ブロック番号５１４は、当エントリのデータ構造を記憶する仮想ボリューム内の仮想ブロック番号である。図５のデータ記憶位置情報５０８の１番目のエントリを例にとると、当エントリのデータ構造名５１０には「Ｔ１」、データ構造型５１１には「Ｔａｂｌｅ」、仮想ボリューム名５１２には「ＶＶＯＬ１」、仮想ブロック番号には「０−９９９９」が格納されている。この場合、表定義情報５００で定義された表Ｔ１は、仮想ボリュームＶＶＯＬ１内の仮想ブロック０番から９９９９番に格納されていることを示す。また、ＤＢホスト１４０が実際に記憶装置１３０のディスク１３８に記憶されたデータにアクセスする場合は、この仮想ボリューム名５１２と仮想ブロック番号５１４を用いる。
【００３６】
図６は、ＤＢ処理情報６００と、データ転送命令６２０の構成を示した図である。ＤＢ処理情報６００は、ＤＢＭＳ名６０２、ＤＢ処理プランＩＤ６０３、処理優先度６０４、ＤＢ処理プラン情報６０６を有する。ＤＢＭＳ名６０２は、対象のＤＢ処理を実行するＤＢＭＳを識別する名前である。ＤＢ処理プランＩＤ６０３は、対象のＤＢ処理のＤＢ処理プランを識別するＩＤである。処理優先度６０４は、対象のＤＢ処理に対するプリフェッチ処理の優先度である。
【００３７】
ＤＢ処理プラン情報６０６は、対象とするＤＢ処理の実行プランであり、プランノード名６０８、親ノード名６１０、実行順序６１２、アクセス先データ構造６１４、アクセス先仮想ボリューム６１６、アクセス先仮想ブロック番号６１８を有する。プランノード名６０８は、当エントリのノード名である。親ノード名６１０は、当エントリの親エントリのノード名である。アクセス先データ構造６１４、アクセス先仮想ボリューム名６１６、アクセス先仮想ブロック番号６１８は、当エントリがアクセスするデータ構造、そのデータ構造を記憶している仮想ボリューム名と仮想ブロック番号を示す。尚、データ構造にアクセスしない場合は“−”を設定する。
【００３８】
データ転送命令６２０は、ＤＢＭＳ１４８が管理サーバ１００、及び配下の記憶装置１３０からデータを転送する際に発行する命令であり、命令コード６２２、仮想ボリューム名６２４、仮想ブロック番号６２６、バッファアドレス６２８を有する。命令コード６２２には、データ転送を意味する“ＲＥＡＤ”が設定される。仮想ボリューム名６２４、仮想ブロック番号６２６は、転送対象のデータを記憶している仮想ボリューム名と仮想ブロック番号である。バッファアドレス６２８は、データを受信するＤＢホスト側のバッファアドレスである。
【００３９】
図７は、記憶装置１３０のキャッシュ１３４上に指定されたデータを読み出すオンキャッシュ命令７００の構成を示した図である。オンキャッシュ命令７００は、命令識別子７０２、データ物理位置情報７０４を有する。データ物理位置情報７０４は、物理ディスクＩＤ７０６と物理ブロック番号７０８を有する。管理サーバ１００がオンキャッシュ命令を記憶装置１３０に発行する際は、命令識別子７０２にオンキャッシュ命令であることを示す“ＯＮＣＡＣＨＥ”をセットし、また、キャッシュ１３４上に読み出すデータを記憶している物理記憶領域の物理ディスクＩＤと物理ブロック番号を、それぞれ物理ディスクＩＤ７０６と物理ブロック番号７０８にセットする。
【００４０】
図８〜図１４は、第一の実施形態における、全体の処理の流れの一例と、データのプリフェッチに関する処理の流れの一例を示したフロー図である。以下、これらのフロー図に従い処理の内容について説明する。
【００４１】
図８は、ＤＢクライアント１６０がユーザからＤＢ処理を実行するよう指示する命令を受け付けてから、そのＤＢ処理の実行結果を出力するまでの一連の処理の流れを示したフロー図である。尚、図８中の細い矢印は命令や制御情報の流れを示し、太い矢印はＤＢのデータの流れを示す。
【００４２】
ＤＢ処理フロントエンドプログラム１６４は、ユーザから入出力装置１６６を通してＤＢ処理要求を受け付け、そのＤＢ処理要求をＤＢホスト１４０に送信する［処理８００］。
【００４３】
ＤＢ処理情報取得プログラム１４６は、受信したＤＢ処理を実際に実行するＤＢＭＳ１４８から、ＤＢＭＳ名、ＤＢ処理プランＩＤ、ＤＢ処理要求内容に応じたＤＢ処理プランを取得してＤＢ処理情報６００にそれぞれセットし、管理サーバ１００に送信する［処理８０２］。
【００４４】
ＤＢ処理管理プログラム１１４は、受信したＤＢ処理情報６００を元に、実行情報ＩＤ管理情報３００とＤＢＭＳ処理計画情報３１０を更新する［処理８０４］。具体的な処理内容は、図９の処理８０４フロー図の説明にて後述する。
【００４５】
ＤＢ処理管理プログラム１１４は、実行情報ＩＤ管理情報３００とＤＢＭＳ処理計画情報３１０から、この先読み出しが行われるデータを判定し、そのデータが実際に記憶されている記憶装置１３０に対して、該当のデータをキャッシュ１３４上に読み込むオンキャッシュ命令７００を発行する［処理８０６］。具体的な処理内容は、図１０の処理８０６フロー図の説明にて後述する。尚、図８において処理８０６は、処理８０４に続いて必ず実行されるように記載されているが、処理８０４が実行されるたびに処理８０６が実行される必要はなく、例えば一定間隔で処理８０６が実行されるといったように、任意のタイミングで処理８０６が実行される構成であっても良い。
【００４６】
オンキャッシュ命令７００を受け付けた記憶装置１３０の制御装置１３２は、オンキャッシュ命令のデータ物理位置情報７０４で指定された物理ディスク、物理ブロック番号が示す記憶領域に格納されたデータをキャッシュ１３４に読み込む［処理８０８］。
【００４７】
ＤＢ処理管理プログラム１１４は、実行情報ＩＤ管理情報３００とＤＢＭＳ処理計画情報３１０を基に、近いうちに読み出しが行われるデータを判定し、該当のデータが実際に記憶されている記憶装置１３０からＳＣＳＩコマンドによりキャッシュ１０４にデータを読み出す［処理８１０］。具体的な処理内容は、図１１〜図１３の処理８１０フロー図の説明にて後述する。尚、図８において処理８１０は、処理８０６に続いて実行されるように記載されているが、処理８０６と同様、処理８１０も任意のタイミングで実行される構成としてもかまわない。
【００４８】
ＳＣＳＩコマンドを受け付けた記憶装置１３０の制御装置１３２は、指定されたデータを管理サーバ１００内のキャッシュ１０４に転送する［処理８１２］。
【００４９】
ＤＢＭＳ１４８は、ＤＢ処理要求の内容に応じたＤＢ処理プランに従ってＤＢ処理を実行する。ＤＢ処理の実行時に必要となるＤＢのデータは、管理サーバ１００にデータ転送命令６２０を発行して読み出す［処理８１４］。
【００５０】
ＤＢ処理管理プログラム１１４は、受信した転送命令６２０で指定されたデータをＤＢホスト１４０に転送する。データ転送後、転送したデータが再利用されない場合は、そのデータを記憶していたキャッシュセグメントを使用可能状態にする［処理８１６］。具体的な処理内容は、図１４の処理フローの説明にて記述する。
【００５１】
ＤＢＭＳ１４８は、ＤＢ処理の実行が終了すると、その実行結果を要求元のＤＢクライアント１６０に送信する［処理８１８］。
【００５２】
ＤＢ処理フロントエンドプログラム１６４は、ＤＢＭＳ１４８から受信したＤＢ処理要求に対する実行結果を入出力装置１６６を用いて出力する［処理８２０］。
【００５３】
図９は、図８中の処理８０４の処理内容の一例を示したフロー図である。
【００５４】
管理サーバ１００のＤＢ処理管理プログラム１１４は、ＤＢホスト１４０からＤＢ処理情報６００を受信すると、実行情報ＩＤ管理情報３００に新規エントリを追加し、当エントリの実行情報ＩＤ３０２に任意のＩＤを割り当てる［処理９００］。
【００５５】
次にＤＢ処理管理プログラム１１４は、ＤＢホスト１４０から受信したＤＢ処理情報６００内のＤＢＭＳ名６０２、ＤＢ処理プランＩＤ６０３、処理優先度６０４を、実行情報ＩＤ管理情報３００の当エントリのＤＢＭＳ名３０４、ＤＢ処理プランＩＤ３０６、処理優先度３０７にそれぞれコピーし、キャッシュ処理フラグ３０８に“０”をセットする［処理９０２］。
【００５６】
ＤＢ処理管理プログラム１１４は、受信したＤＢ処理情報６００内のＤＢ処理プラン情報６０６のエントリを先頭から参照し、そのエントリのアクセス先データ構造６１４にアクセスするデータ構造の情報が指定されているかを判定する。データ構造が指定されていれば、処理９０６から処理を継続する。保持していなければ処理９０８から処理を継続する［処理９０４］。
【００５７】
処理９０６においてＤＢ処理管理プログラム１１４は、ＤＢＭＳ処理計画情報３１０に新規エントリを追加し、当エントリの実行情報ＩＤ３１２には処理９００で割り当てた実行情報ＩＤと同じＩＤをセットする。また、アクセス先データ構造３１６、アクセス先仮想ボリューム名３１８、アクセス先仮想ブロック番号３２０、実行順序３２２に、参照したＤＢ処理プラン情報６０６のエントリのアクセス先データ構造６２４、アクセス先仮想ボリューム名６２６、アクセス先仮想ブロック番号６２８、実行順序６２２をそれぞれコピーする［処理９０６］。
【００５８】
ＤＢ処理プラン情報６１６のエントリ全てを参照した場合は、処理９１０から処理を継続する。まだ、参照していないエントリがある場合は、次のエントリを処理対象として処理９０４から処理を継続する［処理９０８］。
【００５９】
処理９１０においてＤＢ処理管理プログラム１１４は、ＤＢＭＳ処理計画情報３１０に今回追加した全てのエントリの実行順序３２２を比較し、実行順序が早いエントリから順番に内部通番３１４を割り振り処理８０４を終了する［処理９１０］。尚、同一の実行順序の場合は、ＤＢＭＳ処理計画情報３１０にエントリが追加された順番に内部通番を割り振る。
【００６０】
図１０は、図８中の処理８０６の処理内容を示したフロー図である。
【００６１】
ＤＢ処理管理プログラム１１４は、実行情報ＩＤ管理情報３００を先頭から検索し、キャッシュ処理フラグ３０８が“０”を示し、且つその中で処理優先度３０７が最も高いエントリを見つける［処理１０００］。
【００６２】
処理１０００で、処理対象のエントリを見つけた場合は処理１００４から処理を継続し、見つからなかった場合は処理８０６を終了する［処理１００２］。
【００６３】
処理１００４においてＤＢ管理プログラム１１４は、処理対象エントリのキャッシュ処理フラグ３０８に“１”をセットする［処理１００４］。
【００６４】
更にＤＢ管理プログラム１１４は、処理対象エントリの実行情報ＩＤ３０２と同一のＩＤを持つＤＢＭＳ処理計画情報３１０のエントリを参照し、そのエントリの内部通番３１４の順序に従い処理１００８から処理を継続する［処理１００６］。
【００６５】
ＤＢ管理プログラム１１４は、アクセス先仮想ボリューム名３１８とアクセス先仮想ブロック番号３２０が示す仮想ボリューム領域に対応する物理記憶位置（記憶装置ＩＤ、物理ディスクＩＤ、物理ブロック番号）を、マッピング情報１１６を検索して割り出す［処理１００８］。
【００６６】
そして、ＤＢ管理プログラム１１４は、オンキャッシュ命令７００内のデータ物理位置情報７０４に、処理１００８で割り出した物理記憶位置の物理ディスクＩＤと物理ブロック番号をセットし、対象の記憶装置１３０に発行する［処理１０１０］。
【００６７】
処理１０２０では、ＤＢ管理プログラム１１４は、処理１００８で割り出した全ての記憶装置１３０に対し、オンキャッシュ命令７００を発行したか判定する。発行した場合は、処理１０１４から処理を継続する。まだ発行すべき記憶装置１３０が残っている場合は、その記憶装置１３０に対し処理１０１０から処理を継続する［処理１０１２］。
【００６８】
処理１０１４においてＤＢ管理プログラム１１４は、処理１００８から処理１０１２の処理対象としたエントリの内部通番３１４が最後の内部通番であるか判定する。最後の内部通番である場合は、処理８０６を終了する。最後の内部通番でない場合は、次の内部通番のエントリを処理対象として処理１００８から処理を継続する［処理１０１４］。
【００６９】
図１１〜図１３は、図８中の処理８１０の処理内容を示したフロー図である。
【００７０】
ＤＢ処理管理プログラム１１４は、実行情報ＩＤ管理情報３００を先頭から検索し、キャッシュ処理フラグ３０８が“１”を示し、且つその中で処理優先度３０７が最も高いエントリを見つける［処理１１００］。
【００７１】
処理１１００で、処理対象のエントリを見つけた場合は処理１１０４から処理を継続し、見つからなかった場合は処理８１０を終了する［処理１１０２］。
【００７２】
処理１１０４においてＤＢ処理管理プログラム１１４は、処理対象エントリの実行情報ＩＤ３０２と同一のＩＤを持つＤＢＭＳ処理計画情報３１０のエントリを参照し、そのエントリの内部通番３１４の順序に従い処理１１０６から処理を継続する［処理１１０４］。
【００７３】
ＤＢ処理管理プログラム１１４はまず、ＤＢＭＳ処理計画情報３１０のエントリのアクセス先仮想ボリューム名３１８とアクセス先仮想ブロック番号３２０が示す仮想ボリューム領域に対応する物理記憶位置（記憶装置ＩＤ、物理ディスクＩＤ、物理ブロック番号）を、マッピング情報１１６を検索して割り出す［処理１１０６］。
【００７４】
次にＤＢ処理管理プログラム１１４は、キャッシュセグメント情報４１０の全エントリを検索し、処理１１０６で割り出した物理記憶位置に記憶しているデータを保持するセグメントを調査する。今回参照したキャッシュセグメント情報４１０のエントリが管理するセグメントが、上記のデータを保持している場合は処理１１１０から処理を継続する。保持していない場合は、処理１１２０から処理を継続する［処理１１０８］。
【００７５】
処理１１０８でキャッシュのセグメント上に、読み出し対象となるデータがあると判断された場合、ＤＢ処理管理プログラム１１４は、キャッシュに格納されている読み出し対象であるデータが、既にＤＢホストに転送されているか判定する。読み出し対象データが格納されているセグメントの情報を示す、キャッシュセグメント情報４１０のエントリのデータ転送フラグ４２０が“１”の場合は、既にＤＢホストにデータ転送済みであり、処理１１１２から処理を継続する。データ転送フラグ４２０が“０”の場合はＤＢホストにデータが転送されていない状態であり、処理１１１６から処理を継続する［処理１１１０］。
【００７６】
処理１１１２においてＤＢ処理管理プログラムは、読み出し対象データが格納されているセグメントの情報が格納されたエントリのデータ転送フラグ４２０に“０”をセットする。また、この時点で当エントリは使用可能セグメントリスト４０６に属している。今回の処理で当エントリが管理するセグメント上のデータを再度使用状態するため、ＤＢ処理管理プログラムは、当エントリを使用可能セグメントリスト４０６から切り離し、使用中セグメントリスト４０４の末尾にリストする［処理１１１２］。
【００７７】
更にＤＢ処理管理プログラムは、使用可能セグメント数４０２から１減算し、処理１１２０から処理を継続する［処理１１１４］。
【００７８】
読み出し対象のデータが未だＤＢホストに転送されていない場合には、ＤＢ処理管理プログラムは、このデータが格納されているセグメントの情報が格納された、キャッシュセグメント情報４１０のエントリの再利用カウンタ４２２を１加算する［処理１１１６］。
【００７９】
また、このエントリが再利用セグメントリスト４０８に属している場合は、このエントリが管理するセグメントのデータが再利用待ちであることを意味する。今回の処理で当エントリが管理するセグメント上のデータを再度使用状態するため、更にＤＢ処理管理プログラムは、当エントリを再利用セグメントリスト４０８から切り離し、使用中セグメントリスト４０４の末尾にリストする［処理１１１８］。
【００８０】
処理１１２０においてＤＢ処理管理プログラムは、キャッシュセグメント情報４１０の全エントリに対し、処理１１０８から処理１１１８の処理を実行したか判定する。実行した場合は、処理１１２２から処理を継続する。実行していない場合は、次のエントリを処理対象として、処理１１０８から処理を継続する［処理１１２０］。
【００８１】
処理１１２２ではＤＢ処理管理プログラムは、処理１１０６で参照したエントリのアクセス先仮想ブロック番号３２０から、読み出し対象となるデータ量を求め、そのデータ量に見合ったキャッシュセグメント数を算出する。また、ＤＢ処理管理プログラムは、処理１１０８から処理１１２２で、キャッシュ１１４上に読み出されていたデータのセグメント数を算出する。この両者から、今回読み出し対象となるデータで、現在キャッシュ１０４上に存在しないデータのプリフェッチに必要なセグメント数を割り出す［処理１１２２］。
【００８２】
処理１１２２で割り出したセグメント数が、使用可能セグメント数４０６より少ない場合は、ＤＢ処理管理プログラムは、処理１２０２から処理を継続し、多い場合はＤＢ処理管理プログラムは、処理１３００から処理を継続する［処理１２００］。
【００８３】
ＤＢ処理管理プログラムは、処理１１２２で割り出したセグメント数分のセグメントを管理するキャッシュセグメント情報４１０のエントリを、使用可能セグメントリストの先頭から切り離してバッファプールを作成する。また、切り離したエントリ分のセグメント数を使用可能キャッシュセグメント数から減算する［処理１２０２］。
【００８４】
次にＤＢ処理管理プログラムは、処理１２０２で作成したバッファプールに、今回読み出し対象となっているデータで、キャッシュ１０４上に読み出されていないデータを記憶装置１２０から読み出す。尚、データ読み出し元の物理記憶位置（記憶装置、物理ディスクＩＤ、物理ブロック番号）は、処理１１０６で割り出したものを使用する。読み出し対象のデータが、複数の記憶装置にまたがって存在する場合は、対象となる複数の記憶装置から読み出す［処理１２０４］。
【００８５】
処理１２０４でＤＢ処理管理プログラムは、バッファプールに読み込んだデータを保持するセグメントを管理しているキャッシュセグメント情報４１０の各エントリを更新する。更新内容は、今回自セグメントに読み出したデータの元を記憶している記憶装置のＩＤ４１４、物理ディスクのＩＤ４１６、物理ブロック番号４１８である。また、それに合わせて、データ転送フラグ４２０に“０”をセットし、再利用カウンタ４２２を０クリアする［処理１２０６］。
【００８６】
処理１１０６から処理１２０６の処理対象としたＤＢＭＳ処理計画情報３１０のエントリの内部通番３１４が最後の内部通番であるか判定する。最後の内部通番である場合は、処理１２１０から処理を継続する。最後の内部通番でない場合は、次の内部通番のエントリを処理対象として処理１１０６から処理を継続する［処理１２０８］。
【００８７】
処理１２１０では、ＤＢ処理管理プログラムは、今回処理した実行情報ＩＤ管理情報３００のエントリと、ＤＢＭＳ処理計画情報３１０の各エントリを削除し、処理８１０を終了する［処理１２１０］。
【００８８】
処理１２００において、使用可能キャッシュセグメント数が不足していると判定された場合、図１３に示す処理１３００においてＤＢ処理管理プログラムは、再利用セグメントリスト４０８に属するキャッシュセグメント情報４１０のエントリが存在する場合は、処理１３０２から処理を継続する。存在しない場合は、処理１３０８から処理を継続する［処理１３００］。
【００８９】
処理１３０２では、ＤＢ処理管理プログラムは、再利用セグメント４０８の先頭にリストされているキャッシュセグメント情報４１０のエントリを参照し、当セグメントに格納されているデータを記憶している物理記憶位置（記憶装置ＩＤ、物理ディスクＩＤ、物理ブロック番号）を割り出す［処理１３０２］。
【００９０】
そして、ＤＢ処理管理プログラムは、オンキャッシュ命令７００内のデータ物理記憶位置情報７０４に、処理１３０２で割り出した物理ディスクＩＤと物理ブロック番号をセットし、対象となる記憶装置１３０に発行する［処理１３０４］。
【００９１】
更にＤＢ処理管理プログラムは、処理１３０２で参照したキャッシュセグメント情報４１０のエントリを再利用セグメントリスト４０８から切り離し、使用可能セグメントリスト４０６の末尾にリストする。また、使用可能キャッシュセグメント数４０２に１加算し、処理１３１０から処理を継続する［処理１３０６］。
【００９２】
一方処理１３０８においてＤＢ処理管理プログラムは、一定期間ウェイトし、処理１３１０から処理を継続する［処理１３０８］。尚、ここでウェイトする理由は次の通りである。処理８１６は、ＤＢホスト１４０からのデータ転送命令６２０を契機として実行されるため、本処理（処理８１０）とも並列して実行されている可能性が高い。処理８１６の具体的な処理内容については後述するが、簡単に処理内容を説明すると、処理８１６では、管理サーバ１００が指定されたデータを要求元のＤＢホスト１４０に転送し、転送したデータを保持しているキャッシュセグメントを使用可能、もしくは再利用の状態にする。従って、このウェイトの間にデータ転送が実行されることで、使用可能、再利用状態のセグメントが増え、本処理におけるデータのプリフェッチに必要なセグメントを用意できる場合がある。従って、管理サーバ１００からＤＢホスト１４０へのデータ転送により、プリフェッチに必要なセグメントが揃うまで処理１３０８において一定期間待つのである。
【００９３】
処理１３１０では、ＤＢ処理管理プログラムは、処理１１２２で割り出したセグメント数が、使用可能セグメント数４０６より少ないか判断し、少ない場合は再度プリフェッチ処理が可能であるから処理１２０２から処理を継続し、多い場合は処理１３００から処理を継続する［処理１３１０］。
【００９４】
図１４は、図８中の処理８１６の処理内容を示したフロー図である。
【００９５】
ＤＢ処理管理プログラム１１４は、データ転送命令６２０に格納された仮想ボリューム名６２４と仮想ブロック番号６２６が示す仮想ボリューム領域に対応する物理記憶位置（記憶装置ＩＤ、物理ディスクＩＤ、物理ブロック番号）を、マッピング情報１１６を検索して割り出す［処理１４００］。
【００９６】
次にＤＢ処理管理プログラム１１４は、使用中セグメントリスト４０４に属するキャッシュセグメント情報４１０のエントリを検索し、処理１４００で割り出した物理記憶位置のデータを格納しているセグメントを見つける［処理１４０２］。
【００９７】
処理１４０２で該当するセグメントが見つかった場合は、処理１４０６から処理を継続し、見つからなかった場合は、処理１４０８から処理を継続する［処理１４０４］。
【００９８】
処理１４０６においてＤＢ処理管理プログラム１１４は、データ転送命令６２０のバッファアドレス６２８に、処理１４０２で見つけたセグメント上のデータを転送し、処理１４１２から処理を継続する［処理１４０６］。
【００９９】
一方処理１４０８においては、ＤＢ処理管理プログラム１１４は、処理１４００で割り出した物理記憶位置のデータを予備キャッシュセグメントに読み出す［処理１４０８］。
【０１００】
そして、ＤＢ処理管理プログラム１１４は、データ転送命令６２０で指定されるバッファアドレス６２８に、処理１４０８で読み出した予備キャッシュセグメント上のデータを転送し、処理１４２２から処理を継続する［処理１４１０］。
【０１０１】
処理１４１２では、ＤＢ処理管理プログラム１１４は、処理１４０６でバッファに転送したデータを保持するセグメントを管理するキャッシュセグメント情報４１０のエントリの再利用カウンタ４２２が０以上の場合は処理１４１４から処理を継続し、０の場合は処理１４１８から処理を継続する［処理１４１２］。
【０１０２】
処理１４１４においては、ＤＢ処理管理プログラム１１４は、キャッシュセグメント情報４１０の当エントリの再利用カウンタから１減算する［処理１４１４］。
【０１０３】
そして、ＤＢ処理管理プログラム１１４は、当エントリを使用中セグメントリスト４０４から切り離し、再利用セグメントリスト４０８の末尾にリストし、処理１４２２から処理を継続する［処理１４１６］。
【０１０４】
一方処理１４１８においては、ＤＢ処理管理プログラム１１４は、キャッシュセグメント情報４１０の当エントリのデータ転送フラグ４２０に“１”をセットする［処理１４１８］。
【０１０５】
そして、当エントリを使用中セグメントリスト４０４から切り離し、使用可能セグメントリスト４０６の末尾にリストし、使用可能キャッシュセグメント数４０２を１加算する［処理１４２０］。
【０１０６】
ＤＢ処理管理プログラム１１４は、データ転送命令６２０で指定されたデータ全てを転送した場合は、処理８１６を終了する。また、転送すべきデータが残っている場合は、処理１４２４から処理を継続する［処理１４２２］。
【０１０７】
処理１４２４では、ＤＢ処理管理プログラム１１４は、今回転送したデータの仮想ブロック番号に１セグメント分のデータサイズを加算したブロック番号を、次に転送対象とするデータの仮想ブロック番号とし、仮想ボリューム名６２４と当仮想ブロック番号が示す仮想ボリューム領域に対応する物理記憶位置（記憶装置ＩＤ、物理ディスクＩＤ、物理ブロック番号）を、マッピング情報１１６を検索して割り出す［処理１４２４］。
【０１０８】
そして、今回転送したバッファアドレスに１セグメント分のデータサイズを加算したアドレスを、次の転送先のバッファアドレスとして、処理１４０２から処理を継続する［処理１４２６］。
【０１０９】
第一の実施形態によれば、インバンド型バーチャリゼーション環境上に構築したＤＢシステムにおいて、ＤＢクライアントからＤＢホストに要求されたＤＢ処理に関する情報を、管理サーバ１００がＤＢホストから取得し、その情報を基に近々読み出しが行われるデータを割り出すことができる。従って管理サーバ１００は、割り出したデータを記憶装置のキャッシュ１３４上に読み出すよう指示し、読み出し対象のデータを記憶装置のキャッシュ１３４上にプリフェッチしておくこと、また、これからすぐ読み出しが行われるデータをキャッシュ１０４上にプリフェッチしておくことができる。この結果ＤＢシステム全体の性能向上を図ることが可能となる。
【０１１０】
次に、本発明の第二の実施形態について説明する。
【０１１１】
図１５は、本発明の第二の実施形態におけるシステム構成の一例を示す図である。第一の実施形態で示したシステム構成との相違は、管理サーバ１００内のキャッシュ１０４、及びキャッシュ管理情報１２０が無いこと、記憶装置１３０にネットワーク１８２と直接（管理サーバ１００を介さずに）接続するためのインタフェースＩ／Ｆ（Ｂ）１３７と、ネットワーク１８６を新たに設けたことである。
【０１１２】
第二の実施形態における処理内容は、第一の実施形態で説明した処理内容のうち、管理サーバ１００内のキャッシュ処理に関する処理を略した処理となる。ＤＢ処理管理プログラム１１４は、ＤＢＭＳ情報１１８を基に近々読み出しが行われるデータを判定し、対象のデータを記憶している記憶装置１３０にオンキャッシュ命令７００を発行し、対象のデータをキャッシュ１３４上に読み出すように指示を与える。ＤＢホスト１４０のＤＢＭＳ１４８からデータ転送命令６２０を受信した際は、ＤＢ処理管理プログラム１１４は、指定されたデータを記憶する記憶装置１３０の物理記憶位置を要求元のＤＢホスト１４０に送信し、ＤＢホスト１４０はその物理位置情報を用いて、ネットワーク１８２、及びネットワーク１８６を通して記憶装置１３０上のデータに直接アクセスする。
【０１１３】
第二の実施形態によれば、アウトバンド型バーチャリゼーション環境上に構築したＤＢシステムにおいて、ＤＢクライアントから要求されたＤＢ処理に関する情報をＤＢホストから管理サーバ１００が取得し、その情報を基に、近々読み出しが行われるデータを割り出し、記憶装置のキャッシュ１３４上に読み出す指示を該当する記憶装置１３０に与えることができる。この結果、ＤＢホストが記憶装置から将来読み出すデータを、予め記憶装置のキャッシュ１３４上にプリフェッチしておくことが可能なので、ＤＢシステム全体の性能向上を図ることが可能となる。
【０１１４】
次に、本発明の第三の実施の形態について説明する。
【０１１５】
第三の実施形態におけるシステムは、第一の実施形態で示したシステム構成のうち、記憶装置１３０内のキャッシュ１３４を除いたものである。尚、第三の実施の形態において、キャッシュ１３４を持つ記憶装置１３０と、キャッシュ１３４を持たない記憶装置１３０が一つのシステム内に両方とも存在してもかまわない。
【０１１６】
第三の実施形態における処理内容は、第一の実施形態で説明した処理内容のうち、管理サーバ１００が配下の記憶装置１３０に対しオンキャッシュ命令７００を発行する処理部分を略したものである。ＤＢ処理管理プログラム１１４は、ＤＢＭＳ情報を基に近々読み出しが行われるデータを判定し、対象のデータを記憶する配下の記憶装置１３０から直接データを読み出す。また、再利用予定のデータを保持するキャッシュセグメントを使用可能状態にする際に、当セグメントのデータを記憶する記憶装置に発行するオンキャッシュ命令７００も発行しないで、そのまま使用可能状態にする。
【０１１７】
第三の実施形態によれば、ＨＤＤの様なキャッシュを持たない記憶装置を用いたバーチャリゼーション環境上に構築したＤＢシステムにおいて、管理サーバ１００が要求されたＤＢ処理の情報を取得し、その情報を基に、近々読み出しが行われるデータを割り出し、該当するデータを記憶装置１３０からキャッシュ１０４上にプリフェッチしておくことで、ＤＢシステム全体の性能向上を図ることが可能となる。
【０１１８】
【発明の効果】
本発明により、バーチャリゼーション環境上にＤＢを構築したシステムにおいて、近々記憶装置から読み出されるデータをプリフェッチし、記憶装置内に格納されているデータへのアクセス時間を短縮することができるため、ＤＢシステム全体の性能向上を図ることが可能となる。
【図面の簡単な説明】
【図１】本発明の第一の実施形態におけるシステム構成の一例を示す図である。
【図２】管理サーバが有するマッピング情報の一例を示す図である。
【図３】管理サーバが有するＤＢＭＳ情報の一例を示す図である。
【図４】管理サーバが有するキャッシュ管理情報の一例を示す図である。
【図５】ＤＢホスト内のＤＢＭＳが有するＤＢスキーマ情報の一例を示す図である。
【図６】ＤＢホストが発行するＤＢ処理情報と、データ転送命令の一例を示す図である。
【図７】管理サーバが発行するオンキャッシュ命令の一例を示す図である。
【図８】ＤＢクライアントがユーザからＤＢ処理を受け付けた後に実行される一連の処理の一例を示すフローチャートである。
【図９】ＤＢＭＳ処理計画情報更新処理の一例を示すフローチャートである。
【図１０】オンキャッシュ命令発行処理の一例を示すフローチャートである。
【図１１】記憶装置から管理サーバにデータを先読みするための処理の一例を示すフローチャートである。
【図１２】記憶装置から管理サーバにデータを先読みするための処理の一例を示すフローチャートである。
【図１３】記憶装置から管理サーバにデータを先読みするための処理の一例を示すフローチャートである。
【図１４】ＤＢホストへのデータの転送処理の一例を示すフローチャートである。
【図１５】第二の実施形態におけるシステム構成の一例を示す図である。
【符号の説明】
１００：管理サーバ
１０２：制御装置
１０４：キャッシュ
１０６：Ｉ／Ｆ（Ａ）
１０８：Ｉ／Ｆ（Ｂ）
１１０：メモリ
１１２：仮想記憶領域管理プログラム
１１４：ＤＢ処理管理プログラム
１１６：マッピング情報
１１８：ＤＢＭＳ情報
１２０：キャッシュ管理情報
１３０：記憶装置
１３２：制御装置
１３４：キャッシュ
１３６：Ｉ／Ｆ
１３８：ディスク
１４０：ＤＢホスト
１４２：制御装置
１４４：メモリ
１４６：ＤＢ処理情報取得プログラム
１４８：ＤＢＭＳ
１５０：ＤＢスキーマ情報
１５２：Ｉ／Ｆ（Ａ）
１５４：Ｉ／Ｆ（Ｂ）
１６０：ＤＢクライアント
１６２：メモリ
１６４：ＤＢ処理フロンエンドプログラム
１６６：入出力装置
１６８：制御装置
１７０：Ｉ／Ｆ
【図１】
2004192292.tif 000003
【図２】
2004192292.tif 000004
【図３】
2004192292.tif 000005
【図４】
2004192292.tif 000006
【図５】
2004192292.tif 000007
【図６】
2004192292.tif 000008
【図７】
2004192292.tif 000009
【図８】
2004192292.tif 000010
【図９】
2004192292.tif 000011
【図１０】
2004192292.tif 000012
【図１１】
2004192292.tif 000013
【図１２】
2004192292.tif 000014
【図１３】
2004192292.tif 000015
【図１４】
2004192292.tif 000016
【図１５】
2004192292.tif 000017