(57)【要約】【課題】プリフェッチサーバが既述の先読みを行う計算機システムにおいて、ＤＢサーバに対するクエリが多重に発生してもストレージ装置への負荷が増加することを抑制できる計算機システムを提供する。【解決手段】ＤＢＭＳが稼動するＤＢサーバと、ＤＢのデータを記憶するストレージ装置に接続したプリフェッチサーバに、先読み効果の判定に必要となる情報を保持し、先読みＩ／Ｏを発行する時点で先読み効果が得られるかどうかの判定処理を実施し、その判定処理で先読み効果が得られると判定した先読みＩ／Ｏをストレージ装置に発行する。【選択図】図６
2008299672.tif 000002
【特許請求の範囲】
【請求項１】
データベース管理プログラムを備える計算機と、
前記データベース管理プログラムがアクセス可能なデータベースを備える、ストレージ装置と、
前記データベース管理プログラムが前記データベースにある目的データにアクセスする前に、前記ストレージ装置が当該目的データを前記データベースから先読みするためのコマンドを生成する第１の回路部と、さらに、
前記コマンドの有効性を判定し、この判定が肯定された当該コマンドを前記ストレージ装置に供給する第２の回路部と、
を備える、計算機システム。
【請求項２】
前記第２の回路部は、前記データベース管理プログラムが前記目的データにアクセスする前に、前記ストレージ装置が当該目的データを先読みできるか否かを判定する、請求項１記載の計算機システム。
【請求項３】
前記第２の回路部が、前記データベース管理プログラムが前記目的データにアクセスする前に、前記ストレージ装置が当該目的データを先読みできない場合、前記コマンドを前記ストレージ装置に発行しない、請求項２記載の計算機システム。
【請求項４】
データベース管理プログラムを備える第１の計算機と、
前記データベース管理プログラムがアクセス可能なデータベースを備え、前記第1の計算機と接続されるストレージ装置と、
前記第1の計算機及び前記ストレージ装置に接続される第２の計算機であって、前記データベースのデータを前記データベース管理プログラムよりも先読みする指示を前記ストレージ装置に発行し、このコマンドを受けた前記ストレージ装置が当該先読みしたデータを前記第１の計算機に供給するようにした、第２の計算機と、
を備え、
前記第２の計算機は、
前記データベースのデータに前記第１の計算機がアクセス際に、当該アクセスに関する情報に基づいて、前記ストレージ装置に前記データベースに格納されたデータの先読みを指示する第１の回路部と、
前記先読みを指示する際に、先読みの効果が得られるかどうかを判定し、先読みの効果が得られる場合に当該先読みの指示を前記ストレージ装置に与える第２の回路部と、を備える計算機システム。
【請求項５】
前記第２の回路部は、前記先読みの対象となるデータの先読みが完了するまでの第１の所要時間と、前記データベース管理プログラムが当該先読み対象となるデータにアクセスするまでの第２所要時間と、を予測し、
前記第１の所要時間と前記第２の所要時間とを比較して、前記先読みの効果を判定する、請求項４記載の計算機システム。
【請求項６】
前記第２回路部は、前記第１の所要時間が前記第２の所要時間を超える場合、前記第２の計算機は前記先読みの指示を前記ストレージ装置に与えない、請求項５記載の計算機システム。
【請求項７】
前記第２回路部は、
前記データベース管理プログラムの前記データベースへのアクセス履歴に関する情報と、
前記先読み対象となったデータの現在の状態に関する情報と、
前記先読みが完了するまでの所要時間に関する情報と、を
前記データベース管理プログラムが前記先読み対象となるデータにアクセスするまでの前記第１所要時間の予測に用いる請求項５記載の計算機システム。
【請求項８】
前記第２の回路部は、
前記先読み対象となったデータの状態に関する情報と、
前記先読みが完了する所要時間に関する情報と、を、
前記先読みの対象となるデータの先読みが完了するまでの前記第２所要時間の予測に用いる、請求項７記載の計算機システム。
【請求項９】
前記第１の回路部は、前記先読みの対象となったデータを特定した際、  前記データベース管理プログラムがアクセスする順番とは逆順で前記先読みを指示し、
前記第２の回路部は、前記データベース管理プログラムが該当のデータにアクセスしたかどうかで前記先読み効果を判定することを特徴とする請求項４記載の計算機システム。
【請求項１０】
データベース管理プログラムを備える計算機と、前記データベース管理プログラムがアクセス可能なデータベースを備える、ストレージ装置と、を備える計算機システムを用いたデータベース管理方法において、
前記データベース管理プログラムが前記データベースにある目的データにアクセスする前に、前記ストレージ装置が当該目的データを前記データベースから先読みするためのコマンドを生成する第１の工程と、
前記コマンドの有効性を判定し、この判定が肯定された当該コマンドを前記ストレージ装置に供給する第２の工程と、
を備える、計算機システムを用いたデータベース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース（以下「ＤＢ」という。）を運用する計算機システム（以下「ＤＢシステム」）に関するものである。
【背景技術】
【０００２】
現在、ＤＢを基盤とする多くのアプリケーションが存在し、ＤＢに関する一連の処理・管理を行うデータベースマネージメントシステム（以下「ＤＢＭＳ」という。）は極めて重要なものとなっている。
【０００３】
ＤＢの特徴の一つは、多大な量のデータを扱うことである。そのため、ＤＢＭＳが稼動するＤＢシステムの多くにおいては、ＤＢＭＳが動作する計算機に大容量の記憶領域を備えるストレージ装置を接続し、ストレージ装置にデータを記憶させるシステム形態が一般的である。
【０００４】
このシステム形態では、ストレージ装置にデータが記憶されるために、計算機がストレージ装置にＩＯを発行する際に、ストレージ装置の記憶資源であるディスクに対するアクセスが必然的に発生する。このディスクへのデータアクセスはデータシーク等の機械的な動作を伴うものであり、計算機内のＣＰＵやメモリ上で行われる演算、データ転送等に比べ遥かに時間がかかるものである。
【０００５】
そこで、ストレージ装置はキャッシュメモリを有し、ストレージ装置のコントローラは、ディスクから読み出したデータをキャッシュメモリに保持しておき、同じデータへのアクセスがあった際にはディスクではなくキャッシュメモリからデータを読み出すようにしている。
【０００６】
また、ストレージ装置が一連の連続したデータアクセス（シーケンシャルアクセス）を検出することで、次にアクセスされるデータを予測して、キャッシュメモリ上にプリフェッチ（先読み）しておくことも提案されている。
【０００７】
特開２００３−１５０４１９号公報では、ストレージ装置に記憶されているＤＢのデータへのアクセスを高速化するため、データベースのデータを記憶しているストレージ装置が、ＤＢＭＳからプリフェッチに必要となるＤＢスキーマの位置情報やクエリの実行情報等を取得し、ストレージ装置内でプリフェッチを実行する技術を開示している。
【０００８】
また、"高機能ディスクにおけるアクセスプランをプリフェッチ機構に関する評価"（向井他，第１１回データ工学ワークショップ（ＤＥＷＳ２０００）論文集講演番号３Ｂ−３，２０００年７月発行ＣＤ−ＲＯＭ，主催：電子情報通信学会データ工学研究専門委員会）では、ストレージ装置の高機能化によるＤＢＭＳの性能向上について、リレーショナルデータベース管理システム（ＲＤＢＭＳ）を用いたＤＢを例にして論じている。
【０００９】
ストレージ装置に対しアプリケーションレベルの知識としてＲＤＢＭＳにおける問い合わせ処理の実行プランを与えた場合、ストレージ装置は、ＲＤＢＭＳのある表に対する索引を読んだ後、その表のデータを記憶するどのブロックにアクセスすべきなのかが判断できるようになる。
【００１０】
そこで、ＤＢＭＳが索引を連続的にアクセスして、その索引と対応する表のデータを保持するブロック群を、ＤＢＭＳを実行する計算機が把握し、それらに対するアクセスを効果的にスケジューリングすることによりデータの総アクセス時間を短縮することが可能となる。
【００１１】
しかしながら、既述の技術は、既存のストレージ装置に大きな変更を加えなければ、データベースサーバがストレージ装置に記憶されたＤＢデータにアクセスできるまでの時間を短縮できないものであった。
【００１２】
そこで、特開２００５−２５８７３５号公報記載の計算機システムは、ＤＢサーバとストレージ装置に接続したプリフェッチサーバが、ＤＢＭＳからプリフェッチに必要となるＤＢスキーマの位置情報やクエリ情報、ＤＢＭＳの実行情報を取得し、それらの情報に基づいてＤＢＭＳがアクセスするデータを特定し、当該データをプリフェッチする指示（先読みＩ／Ｏ）をストレージ装置に与えてキャッシュ上に予め目的とするデータをステージングしておくことによって、ＤＢサーバからストレージ装置へ発行されたＩ／Ｏを処理するのに要する時間を短縮できることを可能にした。
【特許文献１】特開２００３−１５０４１９号公報
【特許文献２】特開２００５−２５８７３５号公報
【非特許文献１】論文"高機能ディスクにおけるアクセスプランをプリフェッチ機構に関する評価"（向井他，第１１回データ工学ワークショップ（ＤＥＷＳ２０００）論文集講演番号３Ｂ−３，２０００年７月発行ＣＤ−ＲＯＭ，主催：電子情報通信学会データ工学研究専門委員会）
【発明の開示】
【発明が解決しようとする課題】
【００１３】
前記特開２００５−２５８７３５号公報では、ＤＢサーバが同時に実行しなければならないクエリの数、すなわちクエリの多重度が上がるに連れ、ＤＢサーバからストレージ装置へのリードＩ／Ｏに加えて、プリフェッチサーバからストレージ装置へ先読みのためのＩ／Ｏも増加し、先読みを実施しない場合よりもかえってストレージ装置への負荷が増加してしまうおそれがある。
【００１４】
そこで、本発明の目的は、プリフェッチサーバが既述の先読みを行う計算機システムにおいて、ＤＢサーバに対するクエリが多重に発生してもストレージ装置への負荷が増加することを抑制できる計算機システムを提供することにある。
【課題を解決するための手段】
【００１５】
上記目的を達成するため、本発明は、従来制限なくプリフェッチサーバからストレージ装置へ発行されていた先読みＩ／Ｏの有効性を判定し、有効性が認められた先読みＩ／Ｏをストレージ装置へ発行することで、先読み効果が得られない場合でも発行していた先読みＩ／Ｏを削減し、ストレージの負荷が増加することを抑制することを特徴とするものである。
【００１６】
すなわち、本発明は、ＤＢＭＳが稼動するＤＢサーバと、ＤＢのデータを記憶するストレージ装置に接続したプリフェッチサーバに、先読み効果の判定に必要となる情報を保持し、先読みＩ／Ｏを発行する時点で先読み効果が得られるかどうかの判定処理を実施し、その判定処理で先読み効果が得られると判定した先読みＩ／Ｏをストレージ装置に発行するようにしたものである。
【発明の効果】
【００１７】
本発明によれば、プリフェッチサーバが先読みを行う計算機システムにおいて、ＤＢサーバに対するクエリが多重に発生してもストレージ装置への負荷が増加することを抑制できる計算機システム及びデータベース管理方法を提供することができる。
【発明を実施するための最良の形態】
【００１８】
以下、図１〜図８を用いて本発明の実施の形態を説明する。尚、これにより本発明が限定されるものではない。
【００１９】
図１〜図６を用いて、本発明の第一の実施形態を説明する。図１は、計算機システムのハードウエアブロック図を示している。この計算機システムは、ＤＢＭＳが動作するＤＢサーバ１００、ＤＢサーバ１００から取得した情報に基づいて今後ＤＢサーバがストレージ装置の記憶領域にアクセスするデータを予測し、プリフェッチの指示をストレージ装置１５０に与えるプリフェッチサーバ１３０、ＤＢのデータを記憶するストレージ装置１５０、ユーザから受け付けたクエリの実行をＤＢサーバ１００に要求するＤＢクライアント１７０、ＤＢサーバ１００並びにプリフェッチサーバ１３０及びＤＢクライアント１７０を相互に接続するネットワーク１９０、そして、ＤＢサーバ１００並びにプリフェッチサーバ１３０及びストレージ装置１５０を相互に接続するネットワーク１９２と、を備えている。尚、図１は、ＤＢサーバ１００、ストレージ装置１５０、ＤＢクライアント１７０はそれぞれ１台のみを開示しているが、それぞれ複数台でも良い。
【００２０】
ＤＢサーバ１００は一般的な計算機であり、ネットワーク１９０とのインタフェースであるＩ／Ｆ（Ａ）１０２、ＣＰＵ（制御プロセッサ）１０４、入出力装置１０６、メモリ１０８、ネットワーク１９０とのインタフェースであるＩ／Ｆ（Ｂ）１２０とを有する。
【００２１】
ＤＢサーバ１００のメモリ１０８には、オペレーティングシステム（以下「ＯＳ」という。）１１０、ＤＢＭＳ１１４、ＤＢ情報取得送信プログラム１１８が格納されている。ＯＳ１１０、及びＤＢＭＳ１１４、並びにＤＢ情報取得送信プログラム１１８は、ＣＰＵ１０４によって実行される。
【００２２】
ＯＳ１１０は、ローデバイスとローデバイス情報１１２を保持する。ＤＢＭＳ１１４は、ＤＢの運用管理に必要となるＤＢ管理情報１１６を保持する。ローデバイスとは、ＯＳで管理する論理的な記憶装置である。ローデバイス情報１１２は、ＯＳ１１０が持つローデバイスと、そのローデバイスに割り当てられたストレージ装置１５０上の記憶領域を対応付ける情報である。
【００２３】
ローデバイス情報１１２によって、ローデバイスのファイル名と、ストレージ装置の記憶領域とが対応付けされる。ローデバイスのファイルに対するストレージ装置の記憶領域の割り当ては、ストレージ装置の論理ユニットの番号と、論理ユニット上での先頭論理ブロックアドレスによって定義される。
【００２４】
ＤＢサーバ１００とプリフェッチサーバ１３０は、同一のストレージ装置上の記憶領域にアクセスする必要があるため、ＤＢサーバ１００のＯＳ１１０及びプリフェッチサーバ１３０のＯＳ１４０は、それぞれ内容も全て同一のローデバイス情報１１２を有する。
【００２５】
ＤＢ管理情報１１６は、ＤＢの初期設定時に、管理者等によって設定される。ＤＢ管理情報１１６は、ＤＢシステムファイルの設定情報であるＤＢシステムファイル情報、データ領域の設定情報であるデータ領域情報、テーブルやインデックスといったＤＢスキーマの設定情報であるＤＢスキーマ情報、そして、インデックスの設定情報であるインデックス情報とから構成されている。
【００２６】
ＤＢシステムファイル情報は、ＤＢシステムファイルと、既述のローデバイスを対応付ける情報である。ＤＢシステムファイルは、ローデバイスに作られる一つの大きなファイルである。ＤＢＭＳ１１４は、このＤＢシステムファイルにＤＢのデータを書き込むことでＤＢを構築する。また、ＤＢシステムファイルに書き込まれたＤＢのデータについて、ＯＳ１１０が既述のローデバイス情報１１２から実際にデータを書き込むストレージ装置１５０の論理的な記憶領域を割り出す。そして割り出した情報を元に、ＯＳ１１０がデータの書き込み命令をストレージ装置１５０に発行する。
【００２７】
データ領域情報は、ＤＢＭＳ１１４が管理するデータ領域の設定情報である。データ領域とは、ＤＢのデータを記憶するデータ領域であり、ＤＢシステムファイル上に作成される。
【００２８】
ＤＢスキーマ情報は、ＤＢＭＳ１１４が管理する表（テーブル）や索引（インデックス）といったＤＢスキーマに関する設定情報である。インデックス情報は、ＤＢスキーマのうちインデックスに関する設定情報である。
【００２９】
プリフェッチサーバ１３０はＤＢサーバ１００と同じく一般的な計算機であり、ネットワーク１９０とのインタフェースであるＩ／Ｆ（Ａ）１３２、ＣＰＵ（制御プロセッサ）１３４、入出力装置１３６、メモリ１３８、ネットワーク１９２とのインタフェースであるＩ／Ｆ（Ｂ）１４６とを有する。
【００３０】
メモリ１３８には、ＯＳ１４０、プリフェッチプログラム１４２が格納される。ＯＳ１４０、及びプリフェッチプログラム１４２は、ＣＰＵ１３４によって実行される。ＯＳ１４０は、ＤＢサーバ１００のローデバイス情報１１２と同一の情報を保持する。プリフェッチプログラム１４２は、プリフェッチ処理に必要となるプリフェッチ管理情報１４４を保持する。
【００３１】
ストレージ装置１５０は、ネットワーク１９２とのインタフェースであるＩ／Ｆ１５２、ＣＰＵ（制御プロセッサ）１５４、メモリ１５６、キャッシュメモリ１６２、ディスク１６４と、を有する。
【００３２】
ストレージ装置１５０のメモリ１５６には、ストレージ装置１５０を制御する制御プログラム１５８が格納されている。制御プログラム１５８は、ＣＰＵ１５４によって実行され、論理的な記憶領域と物理的な記憶領域を対応付ける記憶領域情報１６０を保持する。尚、ディスク１６４は記憶媒体であり、ハードディスクドライブでも光ディスクでもよい。また、ストレージ装置１５０は、複数のディスクにまたがる論理的な記憶領域をＲＡＩＤによって設定してもよい。さらにまた、ディスクの代わりに、フラッシュメモリなどの半導体メモリを用いてもよい。
【００３３】
記憶領域情報１６０は、ストレージ装置１５０が有する論理的な記憶領域である論理ユニットと、実際にデータが記憶される物理的な記憶領域を対応付ける情報である。記憶領域情報１６０は、論理ユニット番号、論理ユニット内における論理ブロックの番号である論理ブロックアドレスと、論理ブロックアドレスと対応する物理ブロックが存在するディスクを識別するための物理ディスク番号、及び論理ブロックと対応する物理ブロックの番号である物理ブロックアドレスとから構成される。
【００３４】
ストレージ装置１５０は、ＤＢサーバ１００やプリフェッチサーバ１３０から、ストレージ装置１５０の論理ユニット及び論理ブロックアドレスによるアクセスを受け付ける。そして、ストレージ装置１５０は、論理ユニット及び論理ブロックに対応する物理ブロックの物理ディスク番号と物理ブロックアドレスを記憶領域情報１６０から割り出し、実際にアクセスを行う。
ＤＢクライアント１７０は、ＤＢサーバ１００やプリフェッチサーバ１３０と同じく一般的な計算機であり、ＣＰＵ（制御プロセッサのこと。）１７２、入出力装置１７４、メモリ１７６、ネットワーク１９０とのインタフェースであるＩ／Ｆ１８２とを有する。
【００３５】
メモリ１７６には、ＯＳ１７８、ＤＢフロントエンドプログラム１８０が格納される。ＯＳ１７８、ＤＢフロントエンドプログラム１８０は、ＣＰＵ１７２によって実行される。ＤＢサーバ１００は、自身でＤＢＭＳ１１４を起動した際あるいはＤＢの構成を変更した際、ストレージ装置１５０に格納されているＤＢの構成、特にＤＢスキーマの格納場所を示す情報（これを「ＤＢスキーマ位置情報」と称する。）をプリフェッチサーバ１３０に送信する。
【００３６】
その後、ＤＢクライアント１７０からクエリ（ＤＢの操作内容又はＤＢに対する処理内容のこと。）を受け付けたＤＢサーバ１００は、そのクエリに関する情報（これを「ＤＢ処理情報」と称する。）をプリフェッチサーバ１３０に送る。更に、ＤＢサーバ１００は、ＤＢのデータへアクセスする際、アクセスするＤＢに関する情報（これを「ＤＢアクセス情報」と称する。）をプリフェッチサーバ１３０に送る。その後、ＤＢサーバ１００はストレージ装置１５０へのアクセスを行う。
【００３７】
ＤＢクライアント１７０からクエリを受け付けた場合、ＤＢ情報取得送信プログラム１１８は、そのクエリのクエリプランをＤＢＭＳ１１４から取得してＤＢ処理情報を作成し、プリフェッチサーバ１３０に送信する。その後、ＤＢ情報取得送信プログラム１１８は、受け付けたクエリの実行をＤＢＭＳ１１４に要求する。
【００３８】
一方、既述の情報を受信したプリフェッチサーバ１３０は、これらの情報に基づいて、ＤＢサーバ１００がストレージ装置１５０のどの記憶領域にアクセスするかを予測する。そして、プリフェッチサーバ１３０は、その予測結果に基づいてプリフェッチ命令を作成し、ストレージ装置１５０へ送信する。プリフェッチ命令を受信したストレージ装置１５０は、プリフェッチ命令で指示される記憶領域からデータを読み出し、キャッシュメモリ１６２に保存する。
【００３９】
プリフェッチ管理情報１44は、各ＤＢスキーマの論理的な位置情報であるＤＢスキーマ位置情報、及びクエリの実行に関する情報であるＤＢ処理情報とから構成される。スキーマ位置情報は、ＤＢスキーマを有するＤＢＭＳを識別するためのＤＢＭＳ ＩＤと、ＤＢスキーマを識別するためのＤＢスキーマＩＤと、ＤＢスキーマの種別と、ＤＢスキーマが書き込まれたローデバイスのファイル名と、ＤＢスキーマが書き込まれたストレージ装置１５０の論理ユニット番号と、ＤＢスキーマが書き込まれたストレージ装置１５０の論理ユニットアドレスと、から構成される。ＤＢＭＳ ＩＤは管理者等によってあらかじめ各ＤＢＭＳに一意の値として割り当てられている値である。
【００４０】
ＤＢサーバ１００がＤＢ情報取得送信プログラム１１８を実行することでＤＢスキーマ位置情報をＯＳ１１０やＤＢＭＳ１１４から取得し、プリフェッチサーバ１３０に送信する。ＤＢ情報取得送信プログラム１１８は、ＤＢサーバ１００が有するＤＢ管理情報１１６やローデバイス情報１１２の内容及びＤＢＭＳ ＩＤの情報に基づいてＤＢスキーマ位置情報を作成（又は、ＤＢスキーマ位置情報を構成するための情報を収集）し、プリフェッチサーバ１３０に送信する。送信する契機は、ＤＢＭＳ１１４の起動時、及びＤＢの構成の変更時である。
【００４１】
ＤＢ処理情報は、ＤＢＭＳ１１４が実行するクエリ及びそのクエリで実行される検索（テーブルスキャンやインデックススキャン等。以下「スキャン」とも言う）に関する情報である。ＤＢ処理情報は、クエリを実行するＤＢＭＳを識別するためのＤＢＭＳ ＩＤ、実行するクエリを識別するためのクエリＩＤ、クエリ内で実行されるスキャンを識別するためのスキャンＩＤ、スキャンによってアクセスされるＤＢスキーマを識別するためのＤＢスキーマＩＤ及びスキャンの種別から構成される。ＤＢクライアント１７０から受け付けたクエリに対するＤＢ処理情報をＤＢ情報取得送信プログラム１１８がＤＢＭＳ１１４から取得し、プリフェッチサーバ１３０に送信する。
【００４２】
ＤＢアクセス情報は、ＤＢＭＳ１１４がＤＢデータにアクセスする際に使用する情報である。ＤＢアクセス情報は、クエリを実行するＤＢＭＳ１１４を識別するためのＤＢＭＳ ＩＤ、実行するクエリを識別するためのクエリＩＤ、実行するスキャンの種別、アクセスされるデータが記憶されているストレージ装置１５０上の論理ユニット番号、アクセスされるデータが記憶されているストレージ装置１５０上の論理ブロックアドレス、及びアクセスされるデータのサイズとから構成される。ＤＢＭＳ１１４がＤＢデータにアクセスする毎にＤＢアクセス情報を作成し、プリフェッチサーバ１３０に送信する。
【００４３】
プリフェッチサーバ１３０がストレージ装置に発行するプリフェッチ命令は、プリフェッチ対象となるデータの位置を示す情報であり、プリフェッチ対象となるデータが記憶されているストレージ装置１５０上の論理ユニット番号、プリフェッチ対象となるデータが記憶されているストレージ装置１５０上の論理ブロックのアドレス、及びプリフェッチ対象となるデータのサイズとから構成される。
【００４４】
プリフェッチ命令を受信したストレージ装置１５０は、該当するデータの物理的な位置を記憶領域情報１６０から割り出し、キャッシュメモリ１６２上に読み出す。その後、ＤＢへのアクセス命令を受け取ったストレージ装置１５０は、あらかじめキャッシュメモリ１６２に読み出されていたデータをＤＢサーバ１００へ送信する。
【００４５】
プリフェッチサーバ１３０上で動作するプリフェッチプログラム１４２は、さらに、I/O完了時間情報１４７、ＤＢＭＳアクセス履歴管理情報１４８、先読みデータ管理情報１４９を保持する。
【００４６】
図２は、プリフェッチサーバ１３０のプリフェッチプログラム１４２が保持するＩ／Ｏ完了時間情報１４７の構成例を示した図である。Ｉ／Ｏ完了時間情報１４７は、プリフェッチサーバがストレージ装置150に対して、先読みのためのＩ／Ｏを発行してから完了するまでの時間を管理するための情報であり、この情報はＩ／Ｏ完了時間履歴保持数を登録するフィールド２００、Ｉ／Ｏ完了時間履歴を登録するフィールド２０２、Ｉ／Ｏ平均完了時間を登録するフィールド２０４と、を有する。
【００４７】
Ｉ／Ｏ完了時間履歴保持数２００は、Ｉ／Ｏ完了時間の履歴として保持するＩ／Ｏ完了時間の数を示す情報であり、プリフェッチプログラム１４２内部で設定しても良いし、プリフェッチプログラム起動時に管理者が外部からパラメータとして与えてもよい。
【００４８】
Ｉ／Ｏ完了時間履歴２０２のＩ／Ｏ完了時間とは、プリフェッチサーバ130が先読みＩ／Ｏをストレージ装置150に発行してから、ストレージ装置からプリフェッチサーバに当該Ｉ／Ｏに対する応答が来る間をタイムスタンプの差分によって表現したものである。Ｉ／Ｏ完了時間履歴２０２は、過去のＩ／Ｏ完了時間を直近のものからＩ／Ｏ完了時間履歴保持数分だけ保持したものである。
【００４９】
Ｉ／Ｏ平均完了時間２０４は、Ｉ／Ｏ完了時間履歴２０２に新しくＩ／Ｏ完了時間が追加、もしくは書き換えが行われた際、Ｉ／Ｏ完了時間履歴２０２を全て加算した後Ｉ／Ｏ完了時間履歴保持数で割った値である。
【００５０】
図３は、プリフェッチサーバ１３０のプリフェッチプログラム１４２が保持するＤＢＭＳアクセス履歴管理情報１４８の構成例を示した図である。ＤＢＭＳアクセス履歴管理情報１４８は、ＤＢＭＳがストレージ装置にどのようにアクセスするかを管理する情報であり、ＤＢＭＳアクセス履歴情報３００と、アクセス先データ情報３１０を有する。プリフェッチプログラム１４２は、アクセス履歴管理情報１４８を参照して先読み処理を実行する。
【００５１】
ＤＢＭＳアクセス履歴情報３００は、ＤＢＭＳ ＩＤを登録するフィールド３０２、クエリＩＤを登録するフィールド３０４、アクセス先データ情報３１０の先頭へのポインタを登録するフィールド３０６、次のＤＢＭＳアクセス履歴情報へのポインタを登録するフィールド３０８を有する。
【００５２】
ＤＢＭＳアクセス履歴情報３００は、先読み対象となっているクエリ数分だけ作られ、次のＤＢＭＳアクセス履歴情報へのポインタ３０８によって関連付けられる。
【００５３】
アクセス先データ情報３１０は、アクセスフラグを登録するフィールド３１２、スキャンＩＤを登録するフィールド３１４、アクセス先論理ユニット番号を登録するフィールド３１６、アクセス先論理ブロックアドレスを登録するフィールド３１８、次のアクセス先データ情報へのポインタを登録するフィールド３２０を有する。
【００５４】
アクセス先データ情報３１０は、プリフェッチプログラム１４２が先読み処理の過程で先読み先となるデータを特定した時点で作成され、該当するＤＢＭＳアクセス履歴情報３００のアクセス先データ情報として登録される。
【００５５】
この時、複数のアクセス先データ情報が作成された場合、ＤＢＭＳのアクセス順で、次のアクセス先データ情報へのポインタ３２０によって関連付けられる。アクセスフラグ３１２はＤＢＭＳがこのフラグによって示される記憶領域にアクセスしたかどうかを示す情報であり、初期値はＯＦＦである。ＤＢＭＳがＤＢのデータにアクセスした際に送信されるＤＢアクセス情報によって、対応するアクセス先データ情報３１０を割り出して本アクセスフラグをＯＮにする。
【００５６】
対応するアクセス先データ情報３１０の割り出しには、スキャンＩＤ３１４、アクセス先論理ユニット番号３１６、アクセス先論理ブロックアドレス３１８を使用する。ある一定期間保持し、処理に必要としなくなったアクセス先データ情報３１０は削除しても良い。
【００５７】
フェッチサーバ１３０のプリフェッチプログラム１４２は、ＤＢサーバ１００から送られるＤＢ処理情報から図３に示すＤＢＭＳアクセス履歴管理情報１４８を作成する。なお、ＤＢＭＳは、例えば、ＤＢＭＳ  ＩＤとクエリＩＤで特定されるＤＢＭＳアクセス履歴情報について、ポインタによってつながれた順にアクセス先データ情報に基づいてＤＢにアクセスする。さらに、ＤＢＭＳは、ＤＢＭＳ  ＩＤとクエリＩＤで特定される、第１のＤＢＭＳアクセス履歴情報に基づくＤＢへのアクセスが終了すると、第２のＤＢＭＳアクセス履歴情報に基づいてＤＢへのアクセスを行う。
【００５８】
図４は、プリフェッチサーバ１３０のプリフェッチプログラム１４２が保持する先読みデータ管理情報１４９の構成例を示した図である。
【００５９】
先読みデータ管理情報１４９は、先読みＩ／Ｏ発行待ちキュー４２０、先読みＩ／Ｏ完了待ちキュー４３０、先読みＩ／Ｏ完了キュー４４０、先読みＩ／Ｏキャンセルキュー４５０を有する。各々のキューには、それぞれの状態によって先読みＩ／Ｏ情報４００が末尾からキューイングされる。
【００６０】
先読みＩ／Ｏ情報は４００、ＤＢＭＳ ＩＤを登録するフィールド４０２、クエリＩＤを登録するフィールド４０４、スキャンＩＤを登録するフィールド４０６、先読み先論理ユニット番号を登録するフィールド４０８、先読み先論理ブロックアドレスを登録するフィールド４１０、次先読みＩ／Ｏ情報へのポインタを登録するフィールド４１２を有する。
【００６１】
先読みＩ／Ｏ情報４００は、プリフェッチプログラム１４２が先読み処理の過程で先読み先のデータを特定した際、そのデータに対応する情報として作成し、これをまず先読みＩ／Ｏ発行待ちキュー４２０の末尾にキューイングする。
【００６２】
尚、この時のキューイングの順番は、ＤＢＭＳのアクセス順である。また、各々のデータに優先度を設定し、優先度の高い順でキューイングしても良い。例えば、先読みの起点となる索引リーフページの優先度を最も高くすることで、他のデータよりも早くプリフェッチサーバのプリフェッチプログラムがストレージ装置に先読みＩ／Ｏを発行することになる。
【００６３】
先読みＩ／Ｏ発行待ちキュー４２０に先読みＩ／Ｏ情報４００がキューイングされている場合、プリフェッチプログラムは、キューの先頭から後述の先読み効果判定処理を実施し、先読み効果ありと判定した場合は、先読みＩ／Ｏを発行して該当の先読みＩ／Ｏ情報４００を先読み発行待ちキュー４２０からデキューし、先読み完了待ちキュー４３０の末尾にキューイングする。
【００６４】
プリフェッチプログラムは、先読みＩ／Ｏが終わった際は、該当の先読みＩ／Ｏ情報４００を先読みＩ／Ｏ完了待ちキュー４３０からデキューし、先読みＩ／Ｏ完了キュー４４０の末尾にキューイングする。
【００６５】
また、プリフェッチプログラムは先読み効果判定処理で先読み効果なしと判定した場合は、先読みＩ／Ｏを発行しないで該当の先読みＩ／Ｏ情報４００を先読み発行待ちキュー４２０からデキューし、先読みＩ／Ｏキャンセルキュー４５０にキューイングする。
【００６６】
尚、先読み完了キュー４４０、又は先読みキャンセルキュー４５０上である一定期間保持し、処理に必要としなくなった先読みＩ／Ｏ情報４００は削除しても良い。
【００６７】
プリフェッチプログラム１４２は、図３のＤＢＭＳアクセス履歴管理情報１４８を参照して、ランダムに先読みＩ／Ｏ情報４００を生成し、これを先読みＩ／Ｏ発行キューに格納する。図４の各キューは、プリフェッチサーバのメモリ１３８の所定領域に形成される。
【００６８】
以下、プリフェッチプログラム１４２が実行する先読み処理の過程において実行される先読みＩ／Ｏの発行処理（以下、先読みＩ／Ｏ発行処理）、及び先読みの効果を予測する処理（以下、先読み効果予測処理）の手順について説明する。以下、プログラム、又は処理が主語になる場合、実際にはそのプログラム、又は処理を実行するＣＰＵによるものとする。
【００６９】
図５は、先読みＩ／Ｏ発行処理の手順例を示したフロー図である。先読みＩ／Ｏ発行処理５００は、先読みＩ／Ｏ発行待ちキュー４２０を参照し、先読みＩ／Ｏ情報４００がキューイングされているか否かを判定する（ステップ５０２）。
【００７０】
ステップ５０２において、プリフェッチプログラムは、先読みＩ／Ｏ情報４００が先読みＩ／Ｏ発行待ちキュー４２０にキューイングされていると判定した場合、先読みＩ／Ｏ発行待ちキュー４２０の先頭にキューイングされている先読みＩ／Ｏ情報４００を読み出し、Ｉ／Ｏ先読み情報４００に保持されているデータを基にプリフェッチ管理情報１４４を検索し、このデータが先読みの起点となる索引リーフページか否かを判定する（ステップ５０４）。
【００７１】
ステップ５０４において前記データが先読みの起点となる索引リーフページではないと判定した場合、後述する先読み効果予測処理６００を実行し、先読みＩ／Ｏによって先読み効果が得られるか否かを判定する（ステップ５０６）。
【００７２】
ステップ５０４において、プリフェッチプログラムが、前記データが先読みの起点となる索引リーフページである、と判定した場合、又はステップ５０６において先読みを実行して先読み効果が得られると判定した場合、その判定の時点でのタイムスタンプを取得し、先読みＩ／Ｏ情報４００のＩ／Ｏ開始タイムスタンプ４１２に保存した後、先読みＩ／Ｏをストレージに発行する（ステップ５０８）。
【００７３】
続いて、プリフェッチプログラムは、この先読みＩ／Ｏ情報４００を先読みＩ／Ｏ発行待ちキュー４２０からデキューし、先読みＩ／Ｏ完了待ちキュー４３０にキューイングする（ステップ５１０）。
【００７４】
ステップ５０６において、プリフェッチプログラムは、先読みを実行しても先読み効果が得られないと判定した場合、この判定の対象となった先読みＩ／Ｏ情報４００を先読み発行待ちキュー４２０からデキューし、先読みキャンセルキュー４５０にキューイングする。
【００７５】
ステップ５０２において、先読みＩ／Ｏ情報４００が先読みＩ／Ｏ発行待ちキュー４２０にキューイングされていない場合、もしくはステップ５０４からステップ５１２の処理を実行した後、プリフェッチプログラムは、以前に発行した先読みＩ／Ｏが完了したかを判定する（ステップ５１４）。
【００７６】
ステップ５１４において、以前に発行した先読みＩ／Ｏが完了していた場合、この先読みＩ／Ｏ情報４００を先読み完了キュー４３０から検索して読み出し、以前に発行した先読みＩ／Ｏが完了した時点のタイムスタンプを取得してＩ／Ｏ開始タイムスタンプ４１２に保持されている値との差分を取り、Ｉ／Ｏ完了時間を割り出してＩ／Ｏ完了時間履歴２０２に保存する（ステップ５１６）。
【００７７】
続いて、プリフェッチプログラムは、ステップ５１６で検索した該当先読みＩ／Ｏ情報４００を先読み完了待ちキュー４３０からデキューし、先読みＩ／Ｏ完了キュー４４０にキューイングする（ステップ５１８）。以降、プリフェッチプログラムは、ステップ５０２からステップ５１８を繰り返す。
【００７８】
図６は、先読み効果予測処理の手順例を示したフロー図である。先読み効果予測処理６００は、前述の先読みＩ／Ｏ発行処理５００において、先読みＩ／Ｏ情報４００が先読み発行待ちキュー４２０にキューイングされていて、且つ先読み発行待ちキュー４２０の先頭にキューイングされている先読みＩ／Ｏ情報４００で先読みされるデータが先読みの起点となる索引リーフページではない場合に実行される。
【００７９】
先読み効果予測処理６００は、ＤＢＭＳアクセス履歴管理情報を検索して、先読みＩ／Ｏ情報４００で特定された、先読みされるべきデータにＤＢＭＳがアクセスしているかどうか判定する（ステップ６０２）。
【００８０】
ステップ６０２において、プリフェッチプログラムは、ＤＢＭＳがアクセスしていないと判定した場合、再度ＤＢＭＳアクセス履歴管理情報を検索し、現時点でＤＢＭＳが最後にアクセスした、又はアクセスしているデータのアクセス先データ情報３１０を読み出す（ステップ６０４）。
【００８１】
続いて、プリフェッチプログラムは、ＤＢＭＳがステップ６０４で読み出したアクセス先データ情報３１０のデータから、先読みＩ／Ｏ情報４００で先読みされるデータをアクセスする迄にアクセスされるデータの先読み状態を、先読みデータ管理情報１４９の各々のキューを参照して把握し、ＤＢＭＳアクセス所要時間Ｔ１を以下ステップ６０８からステップ６２０によって算出する（ステップ６０６）。
【００８２】
対象のデータが先読みＩ／Ｏ完了待ちキュー４３０にキューイングされているか判定し（ステップ６０８）、そうである場合は現在先読み実行中であるため、ＤＢＭＳが先読みすべきデータにアクセスするまでに要する、累積時間（Ｔ１）にＩ／Ｏ平均完了時間２０２を加算する（ステップ６１０）。
【００８３】
対象のデータが先読みＩ／Ｏキャンセルキュー４５０にキューイングされているか判定し（ステップ６１２）、そうである場合は先読み未実施であるため、ＤＢＭＳはこのデータにアクセスしなければならないために、ＤＢＭＳアクセス所要時間Ｔ１にＩ／Ｏ平均完了時間２０２を加算する（ステップ６１４）。
【００８４】
ステップ６０８、及びステップ６１２の判定がともに否定された場合、対象のデータは先読みＩ／Ｏ完了キュー４４０にキューイングされていることになり、先読みされるべきデータは先読み済みであり、これはキャッシュヒットの状態であるために、プリフェッチプログラムは、ＤＢＭＳアクセス所要時間Ｔ１への加算は行わない（ステップ６１６）。
【００８５】
ＤＢＭＳアクセス所要時間Ｔ１を算出するためにチェックすべき全てのデータに対し、ステップ６０８からステップ６１６を実行したか否かを判定し（ステップ６１８）、まだチェックすべきデータが存在する場合は、そのデータに対してステップ６０８からステップ６１６を実行する（ステップ６２０）。
【００８６】
ステップ６１８において、プリフェッチプログラムが、ＤＢＭＳアクセス所要時間Ｔ１を算出するために対象となる全てのデータに対してステップ６０８からステップ６１６を実行したと判定した場合、先読みＩ／Ｏ完了待ちキュー４３０にキューイングされている先読みＩ／Ｏ情報４００の数をカウントし、更に１を加算した値にＩ／Ｏ平均所要時間２０２を乗算して該当先読みＩ／Ｏの先読み完了時間Ｔ２を算出する（ステップ６２２）。
【００８７】
続いて、ステップ６０８からステップ６１６によって算出したＤＢＭＳアクセス所要時間Ｔ１と、ステップ６２２で算出したＩ／Ｏの先読み完了時間Ｔ２を比較し（ステップ６２４）、Ｉ／Ｏの先読み完了時間Ｔ２がＤＢＭＳアクセス所要時間Ｔ１より小さい場合は、該当先読みＩ／Ｏによって先読み効果が得られる（先読みが間に合う）と判定する（ステップ６２６）。
【００８８】
ステップ６２４において、Ｉ／Ｏの先読み完了時間Ｔ２がＤＢＭＳアクセス所要時間Ｔ１より大きい場合、又はステップ６０２においてＤＢＭＳアクセス済みであると判定した場合、該当先読みＩ／Ｏによって先読み効果は得られない（先読みは間に合わない）と判定する（ステップ６２８）。
【００８９】
以上の手順により、先読み効果の予測を行い、先読み効果を得られる（先読みが間に合う）先読みＩ／Ｏを発行することで、ストレージに発行するＩ／Ｏを削減し、ストレージの負荷増加を抑えることが可能となる。
【００９０】
但し、本発明の第一の実施形態において、プリフェッチサーバがストレージ装置に先読みＩ／Ｏを発行する際、前述の先読み効果予測処理を毎回行うことになり、プリフェッチサーバのＣＰＵリソースを多く消費してしまう可能性が高く、先読み処理自体に影響を与えてしまうことも考えられる。そこで、先読み効果予測処理を簡略化し、プリフェッチサーバのＣＰＵリソースを多く消費しない手順を第二の実施形態として説明する。
【００９１】
まず、第二の実施形態では、プリフェッチプログラム１４２が先読み処理の過程で先読み先となるデータを特定し、先読みＩ／Ｏ情報４００を作成し、先読み発行待ちキュー４２０にキューイングする際、第一の実施形態ではＤＢＭＳのアクセス順でキューイングしていたところを、ＤＢＭＳがアクセスする順番の逆順でキューイングするように変更する。そして、先読み効果予測処理では、ＤＢＭＳアクセス履歴管理情報を検索して、該当先読みＩ／Ｏ情報４００で先読みされるデータにＤＢＭＳがアクセスしているかどうかを判定し、ＤＢＭＳ未アクセスの場合は先読み効果あり（先読みが間に合う）、ＤＢＭＳアクセス済みの場合は先読み効果なし（先読みが間に合わない）とする。
【００９２】
図７は、第二の実施形態における先読みデータ管理情報１４９の構成例を示した図である。第二の実施形態における先読み効果処理では、先読みデータの状態を管理する必要がなくなるため、先読みデータ管理情報１４９としては先読みＩ／Ｏ発行待ちキュー７２０を保持するだけで良い。尚、先読みＩ／Ｏ発行待ちキュー７２０にキューイングされる先読みＩ／Ｏ情報７００の構成は、第一の実施形態の先読みＩ／Ｏ情報４００と同一である。
【００９３】
図８は、第二の実施形態における先読み効果予測処理の手順例を示したフロー図である。
【００９４】
先読み効果予測処理８００は、前述したようにＤＢＭＳアクセス履歴管理情報を検索して、該当先読みＩ／Ｏ情報４００で先読みされるデータにＤＢＭＳがアクセスしているかどうかを判定する（ステップ８０２）。
【００９５】
ステップ８０２において、ＤＢＭＳ未アクセスの場合には、先読み効果あり（先読みが間に合う）と判定し（ステップ８０４）、ＤＢＭＳアクセス済みの場合には、先読み効果なし（先読みが間に合わない）と判定する（ステップ８０６）。
【００９６】
以上の手順により、第一の実施形態よりも少ない処理で先読み効果の判定が可能となり、プリフェッチサーバのＣＰＵリソースの消費も少なくて済む。但し、ＤＢＭＳがアクセスしたかどうかの判定によって先読み効果を判定するため、先読みが間に合うと判定して先読みを実施しても、先読みが完了する前にＤＢＭＳがアクセスするケースも考えられるため、先読み効果予測の精度は第一の実施形態よりも若干低くなる。
【００９７】
第一、第二の実施形態ともＩ／Ｏ完了時間をプリフェッチサーバ１３０上で算出しているが、新たにインタフェースを設けてストレージ装置１５０から直接取得しても良い。また、クエリの多重度等によって、第一の実施形態の方式と第二の実施形態の方式を切り替えても良い。
【００９８】
また、プリフェッチサーバがストレージ装置のパラメータをチェックして、既述の先読み効果が得られる場合であっても、ストレージ装置がビジー状態などの場合には、プリフェッチサーバは先読みをキャンセルしてもよい。
【図面の簡単な説明】
【００９９】
【図１】システム構成例を示した図である。
【図２】Ｉ／Ｏ完了時間情報の構成例を示した図である。
【図３】ＤＢＭＳアクセス履歴管理情報の構成例を示した図である。
【図４】先読みデータ管理情報の構成例を示した図である。
【図５】先読みＩ／Ｏ発行処理の手順例を示したフロー図である。
【図６】先読み効果予測処理の手順例を示したフロー図である。
【図７】第二の実施形態における先読みデータ管理情報の構成例を示した図である。
【図８】第二の実施形態における先読み効果予測処理の構成例を示した図である。
【符号の説明】
【０１００】
１００…ＤＢサーバ、１０２…Ｉ／Ｆ（Ａ）、１０４…ＣＰＵ、１０６…入出力装置、１０８…メモリ、１１０…ＯＳ、１１４…ＤＢＭＳ、１１８…ＤＢ情報取得送信プログラム、１２０…Ｉ／Ｆ（Ｂ）、１３０…プリフェッチサーバ、１３２…Ｉ／Ｆ（Ａ）、１３４…ＣＰＵ、１３６…入出力装置、１３８…メモリ、１４０…ＯＳ、１４２…プリフェッチプログラム、１４６…Ｉ／Ｆ（Ｂ）、１５０…ストレージ装置、１５２…Ｉ／Ｆ、１５４…ＣＰＵ、１５６…メモリ、１５８…制御プログラム、１６２…キャッシュメモリ、１６４ディスク、１７０…ＤＢクライアント、１７２…ＣＰＵ、１７４…入出力装置、１７６…メモリ、１７８…ＯＳ、１８０…ＤＢフロントエンドプログラム、１８２…Ｉ／Ｆ、１９０、１９２…ネットワーク。
【図１】
2008299672.tif 000003
【図２】
2008299672.tif 000004
【図３】
2008299672.tif 000005
【図４】
2008299672.tif 000006
【図５】
2008299672.tif 000007
【図６】
2008299672.tif 000008
【図７】
2008299672.tif 000009
【図８】
2008299672.tif 000010