(57)【要約】      （修正有）【課題】ＤＢサーバ、ストレージ装置からなるＤＢシステムにおいて、既存のＤＢシステムに大きな変更を加えることなく、ストレージ装置に記憶されたＤＢデータのアクセスに要する時間を短縮すること。【解決手段】ＤＢＭＳが稼動するＤＢサーバとＤＢのデータを記憶する記憶装置に接続したプリフェッチサーバに、ＤＢＭＳが管理するＤＢスキーマの記憶装置上の記憶位置に関する情報と、ＤＢＭＳが実行するＤＢ処理に関する情報と、ＤＢＭＳがＤＢ処理を実行する際に行われるＤＢのデータへのアクセスに関する情報を取得し、取得した情報に基づいて読み出しが行われるデータを予測する手段、該当するデータのプリフェッチを記憶装置に指示する手段を設ける。プリフェッチの指示を受けた記憶装置は、指定されたデータをキャッシュメモリ上に読み出す。【選択図】図１
2005258735.tif 000002
【特許請求の範囲】
【請求項１】
第一の計算機と、
前記第一の計算機と接続されるストレージ装置と、
前記第一の計算機及び前記ストレージ装置とに接続される第二の計算機とを有し、
前記第一の計算機はデータベース管理プログラムを実行し、
前記ストレージ装置はデータベースを格納し、
前記第二の計算機は、前記第一の計算機が前記ストレージ装置が有する前記データベースへアクセスする際に、前記データベースへのアクセスに使用する情報に基づいて、前記ストレージ装置に前記データベースに格納されたデータの先読みを指示することを特徴とする計算機システム。
【請求項２】
前記第二の計算機は、前記データベースへのアクセスに使用する情報を前記第一の計算機から取得することを特徴とする請求項１記載の計算機システム。
【請求項３】
前記第一の計算機は、前記データベースへのアクセスに使用する情報を、該第一の計算機が前記ストレージ装置が有する前記データベースへアクセスする際に前記第二の計算機に送信することを特徴とする請求項２記載の計算機システム。
【請求項４】
前記ストレージ装置はキャッシュメモリを有し、
前記第二の計算機は、前記データベースの構成についての情報、前記第一の計算機が実行するデータベース操作についての情報及び前記データベースへのアクセスに使用する情報に基づいて、前記第一の計算機がアクセスするデータを予測し、前記予測されたデータを前記キャッシュメモリへ読み出す命令を含む前記先読みを前記ストレージ装置に指示することを特徴とする請求項３記載の計算機システム。
【請求項５】
前記第一の計算機は、前記データベースの構成についての情報を、該第一の計算機で前記データベース管理プログラムの実行が開始された際、又は前記データベース管理プログラムの実行によって前記データベースの構成が変更になった時に前記第二の計算機に送信することを特徴とする請求項４記載の計算機システム。
【請求項６】
前記第一の計算機は、前記データベース操作についての情報を、該第一の計算機がクエリを受信した際に前記第二の計算機に送信することを特徴とする請求項５記載の計算機システム。
【請求項７】
前記データベースへのアクセスに使用する情報には、前記第一の計算機がアクセスするデータの種類に関する情報が含まれており、
前記データの種類がインデックスデータである場合には、前記第二の計算機は前記予測を行う際に、前記ストレージ装置から前記インデックスデータを読み出して所定の条件に基づいて前記インデックスデータをグループ化し、
前記データの種類がテーブルデータである場合には、前記第二の計算機は前記予測を行う際に、前記グループ化された前記インデックスデータのうち、前記テーブルデータが含まれているグループを特定し、前記グループに属するインデックスデータで指定されるテーブルデータを前記キャッシュメモリに読み出す命令を作成して前記ストレージ装置に送信することを特徴とする請求項６記載の計算機システム。
【請求項８】
前記データベースへのアクセスに使用する情報には、前記第一の計算機が前記データベースを検索する条件及び前記第一の計算機が読み出すインデックスデータについての情報が含まれており、
前記第二の計算機は、前記予測を行う際に、前記インデックスデータを前記ストレージ装置から読み出し、読み出した前記インデックスデータから前記検索する条件に合致するインデックスを抽出し、抽出した前記インデックスに対応するテーブルデータを前記キャッシュメモリに読み出す命令を前記ストレージ装置に送信することを特徴とする請求項６記載の計算機システム。
【請求項９】
更に第二のストレージ装置を有し、
前記第二の計算機は、前記ストレージ装置及び前記第二のストレージ装置に前記先読みを指示することを特徴とする請求項１から８記載のうちいずれか一つの計算機システム。
【請求項１０】
計算機システムと接続される管理計算機であって、
制御部、メモリ及び前記計算機システムと接続するためのインターフェースを有し、
前記制御部は、
前記計算機システムが有する計算機から、前記計算機システムが有するストレージ装置が有するデータベースの構成に関する情報、前記計算機が前記データベースを操作する際の情報及び前記計算機が前記ストレージ装置が有する前記データベースへアクセスするための情報を取得して前記メモリに格納し、取得された前記情報に基づいて前記計算機が前記ストレージ装置から読み出すデータを予測し、前記ストレージ装置に予測したデータの読み出しを前記インターフェースを介して指示することを特徴とする管理計算機。
【請求項１１】
前記ストレージ装置はキャッシュメモリを有し、
前記データベースへのアクセスに使用する情報には、前記計算機がアクセスするデータの種類に関する情報が含まれており、
前記データの種類がインデックスデータである場合には、前記制御部は前記予測を行う際に、前記ストレージ装置から前記インデックスデータを読み出して所定の条件に基づいて前記インデックスデータをグループ化し、
前記データの種類がテーブルデータである場合には、前記制御部は前記予測を行う際に、前記グループ化された前記インデックスデータのうち、前記テーブルデータが含まれているグループを特定し、前記グループに属するインデックスデータで指定されるテーブルデータを前記キャッシュメモリに読み出す命令を作成して前記ストレージ装置に送信することを特徴とする請求項１０記載の管理計算機。
【請求項１２】
前記データベースへのアクセスに使用する情報には、前記計算機が前記データベースを検索する条件及び前記計算機が読み出すインデックスデータについての情報が含まれており、
前記制御部は、前記予測を行う際に、前記インデックスデータを前記ストレージ装置から読み出し、読み出した前記インデックスデータから前記検索する条件に合致するインデックスを抽出し、抽出した前記インデックスに対応するテーブルデータを前記キャッシュメモリに読み出す命令を前記ストレージ装置に送信することを特徴とする請求項１０記載の管理計算機。
【請求項１３】
管理計算機及びストレージ装置と接続される計算機であって、
制御部、メモリ及び前記管理計算機又は前記ストレージ装置と接続するためのインターフェースを有し、
前記制御部はデータベース管理プログラムを実行し、
前記制御部は、前記ストレージ装置が有するデータベースの構成に関する情報、該計算機が前記データベースを操作する際の情報及び該計算機が前記ストレージ装置が有する前記データベースへアクセスするための情報を前記管理計算機に送信することを特徴とする計算機。
【請求項１４】
前記制御部は、前記データベースの構成についての情報を、該計算機で前記データベース管理プログラムの実行が開始された際、又は前記データベース管理プログラムの実行によって前記データベースの構成が変更になった時に前記管理計算機に送信し、
前記データベース操作についての情報を、該計算機がクエリを受信した際に前記管理計算機に送信し、
前記データベースへのアクセスに使用する情報を、該計算機が前記ストレージ装置が有する前記データベースへアクセスする際に前記管理計算機に送信することを特徴とする請求項１３記載の計算機。
【請求項１５】
第一の計算機と、
前記第一の計算機と接続されるストレージ装置と、
前記第一の計算機及び前記ストレージ装置とに接続される第二の計算機とを有し、
前記第一の計算機はデータベース管理プログラムを実行し、
前記ストレージ装置はデータベースを格納しかつキャッシュメモリを有し、
前記第一の計算機は、データベースの構成についての情報を、該第一の計算機で前記データベース管理プログラムの実行が開始された際、又は前記データベース管理プログラムの実行によって前記データベースの構成が変更になった時に前記第二の計算機に送信し、データベース操作についての情報を、該第一の計算機がクエリを受信した際に前記第二の計算機に送信し、前記データベースへのアクセスに使用する情報を、該第一の計算機が前記ストレージ装置が有する前記データベースへアクセスする際に前記第二の計算機に送信し、
前記データベースへのアクセスに使用する情報には、前記第一の計算機がアクセスするデータの種類に関する情報が含まれており、
前記データの種類がインデックスデータである場合には、前記第二の計算機は、前記ストレージ装置から前記インデックスデータを読み出して所定の条件に基づいて前記インデックスデータをグループ化し、
前記データの種類がテーブルデータである場合には、前記第二の計算機は、前記グループ化された前記インデックスデータのうち、前記テーブルデータが含まれているグループを特定し、前記グループに属するインデックスデータで指定されるテーブルデータを前記キャッシュメモリに読み出す命令を作成して前記ストレージ装置に送信し、
前記命令を受信した前記ストレージ装置は、前記命令に基づいて前記テーブルデータを前記キャッシュメモリに読み出すことを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース（以下「ＤＢ」）を運用する計算機システム（以下「ＤＢシステム」）に関する。
【背景技術】
【０００２】
現在、ＤＢを基盤とする多くのアプリケーションが存在し、ＤＢに関する一連の処理・管理を行うデータベースマネージメントシステム（以下「ＤＢＭＳ」）は極めて重要なものとなっている。ＤＢの特徴の一つは、膨大な量のデータを扱うことである。そのため、ＤＢＭＳが稼動するＤＢシステムの多くにおいては、ＤＢＭＳが動作する計算機に大容量のディスク装置を持つストレージ装置を接続し、ストレージ装置上にＤＢのデータを記憶するシステム形態が一般的である。
【０００３】
ＤＢシステム等に使用される上記のストレージ装置へのデータの入出力処理を高速化する方法として、ストレージ装置に揮発性の記憶媒体であるキャッシュメモリを設ける方法がある。この方法では、ストレージ装置に入出力されるデータをストレージ装置がキャッシュメモリに一時的に格納する。一般的に揮発性のキャッシュメモリの方がディスク装置よりも応答速度が速い。したがって、ディスク装置から読み出したデータをそのキャッシュメモリに保持しておき、同じデータへのアクセスの際はキャッシュメモリのデータを使用することストレージ装置の応答速度が向上する。
【０００４】
さらに、ストレージ装置（又は計算機）が一連の連続したデータアクセス（以下「シーケンシャルアクセス」とも言う）を検出することでこの先読み出されるデータを予測し、キャッシュメモリ上に予測したデータを読み出す（以下「プリフェッチ」とも言う）しておく技術もある。
【０００５】
非特許文献１では、ストレージ装置の高機能化によるＤＢＭＳの性能向上について、リレーショナルデータベース管理システム（ＲＤＢＭＳ）を用いたＤＢを例にして論じている。ストレージ装置に対しアプリケーションレベルの知識としてＲＤＢＭＳにおける問い合わせ処理の実行プランを与えた場合、ストレージ装置は、ＲＤＢＭＳのある表に対する索引を読んだ後、その表のデータを記憶するどのブロックにアクセスすべきなのかが判断できるようになる。そこで、ＤＢＭＳが索引を連続的にアクセスして、その索引と対応する表のデータを保持するブロック群をＤＢＭＳを実行する計算機が把握し、それらに対するアクセスを効果的にスケジューリングすることによりデータの総アクセス時間を短縮することが可能となる。
【０００６】
またこの処理はＤＢＭＳが実行されている計算機とは独立実行可能であり、計算機からの命令を待つ必要がない。また、データが複数台のストレージ装置に分散配置されている場合にはそれぞれのストレージ装置を並列にアクセス可能であり、よりＤＢＭＳの処理実行時間の短縮が期待できる。
【０００７】
又、特許文献１では、ストレージ装置上に記憶されているデータベースのデータへのアクセスを高速化するため、データベースのデータを記憶しているストレージ装置が、ＤＢＭＳからプリフェッチに必要となるＤＢスキーマの位置情報やクエリの実行情報等を取得し、ストレージ装置内でプリフェッチを実行する技術を開示している。
【０００８】
【特許文献１】特開２００３−１５０４１９号公報
【非特許文献１】論文“高機能ディスクにおけるアクセスプランをプリフェッチ機構に関する評価”（向井他，第１１回データ工学ワークショップ（ＤＥＷＳ２０００）論文集講演番号３Ｂ−３，２０００年７月発行ＣＤ−ＲＯＭ，主催：電子情報通信学会データ工学研究専門委員会）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来技術で記したキャッシュメモリの活用やデータのプリフェッチはストレージ装置内に特化したものである。また、プリフェッチに関しては、シーケンシャルアクセスについては効果があるものの、不連続なデータアクセスに関してはあまり効果がない。
【００１０】
又、非特許文献１記載の従来技術は、ストレージ装置に対しアプリケーションレベルの知識としてＲＤＢＭＳにおける問い合わせ処理実行時の実行プランが与えられた後に、どのようなデータを用いてどのような処理を行う必要があるか十分に明確化されていない。
【００１１】
更に特許文献１記載の技術は、ストレージ装置がＤＢＭＳからプリフェッチに必要となるＤＢスキーマの位置情報やクエリの実行情報等を取得し、ストレージ装置内でプリフェッチを実行する。しかし、本技術を実装する場合、ストレージ装置内の改良を行う必要がある。更に、既存のＤＢシステムに適用する場合、既存のストレージ装置を、本技術を実装したストレージ装置に置き換え、ＤＢのデータを移行する必要があり、この間通常業務に支障をきたす可能性が高い。更に、ストレージ装置（又は計算機）においては、通常のデータの読み出し処理に加え、新たにプリフェッチに関する処理を行わないといけないが、これはストレージ装置等に大きな負荷を与え、アクセス時間の短縮の効果が阻害される可能性がある。
【００１２】
本発明の目的は、既存のＤＢシステムに大きな変更を加えることなく、ストレージ装置上に記憶されたＤＢデータのアクセスに要する時間を短縮することである。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明は、ＤＢＭＳが稼動するＤＢサーバと、ＤＢのデータを記憶するストレージ装置に、プリフェッチを指示する計算機（以下、プリフェッチサーバ）を接続したシステム構成とする。
【００１４】
上記プリフェッチサーバは、ＤＢＭＳが管理するＤＢスキーマのストレージ装置上の記憶位置に関する情報と、ＤＢＭＳが実行するＤＢ処理に関する情報と、ＤＢＭＳがＤＢ処理を実行する際に行われるＤＢのデータへのアクセスに関する情報をＤＢサーバから取得し、これらの情報に基づいて、この先読み出しが行われるデータを予測し、該当するデータのプリフェッチをストレージ装置に指示する。プリフェッチの指示を受けたストレージ装置は、指定されたデータをキャッシュメモリ上に読み出す。
【発明の効果】
【００１５】
本発明によれば、ＤＢサーバ、ストレージ装置からなるＤＢシステムにおいて、既存のＤＢシステムに大きな変更を加えることなく、ストレージ装置に記憶されたＤＢデータのアクセスに要する時間を短縮することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を説明する。尚、これにより本発明が限定されるものではない。
図１は、本発明を適用したシステムの第一の実施形態の例を示した図である。
システムは、ＤＢサーバ１００、プリフェッチサーバ１３０、ストレージ装置１５０、ＤＢクライアント１７０、ＤＢサーバ１００、プリフェッチサーバ１３０及びＤＢクライアント１７０を相互に接続するネットワーク１９０、並びにＤＢサーバ１００、プリフェッチサーバ１３０及びストレージ装置１５０を相互に接続するネットワーク１９２を有する。
【００１７】
ＤＢサーバ１００は、ストレージ装置１５０に格納されているＤＢを制御するＤＢＭＳを実行する。プリフェッチサーバ１３０は、ＤＢサーバ１００から取得した情報に基づいて、ＤＢサーバ１００が今後アクセスするデータを予測する。そして、プリフェッチサーバ１３０は、予測の結果に基づいて、データの先読み（以下「プリフェッチ」とも言う）の指示をストレージ装置１５０に送信する。
【００１８】
ストレージ装置１５０は、ＤＢ等、ＤＢサーバ１００が使用するデータを格納する。ＤＢクライアント１７０は、ユーザから受け付けたクエリの実行をＤＢサーバ１００に要求する。ネットワーク１９０は、ローカルエリアネットワーク（ＬＡＮ）やワイドエリアネットワーク（ＷＡＮ）等のネットワークである。一方、ネットワーク１９２はＬＡＮでも、ファイバチャネル等で構成されるネットワーク（ストレージエリアネットワーク：ＳＡＮ）でも良い。
【００１９】
又、ネットワーク１９０とネットワーク１９２は同一のネットワークでも良い。尚、図１において、ＤＢサーバ１００、ストレージ装置１５０、ＤＢクライアント１７０はそれぞれ１台のみ記載しているが、複数台でも良い。
【００２０】
ＤＢサーバ１００は一般的な計算機であり、ネットワーク１９０とのインタフェースであるＩ／Ｆ（Ａ）１０２、ＣＰＵ（制御プロセッサ）１０４、入出力装置１０６、メモリ１０８、ネットワーク１９２とのインタフェースであるＩ／Ｆ（Ｂ）１２０を有する。メモリ１０８には、オペレーティングシステム（以下「ＯＳ」）１１０、ＤＢＭＳ１１４、ＤＢ情報取得送信プログラム１１８が格納される。
【００２１】
ＯＳ１１０、ＤＢＭＳ１１４及びＤＢ情報取得送信プログラム１１８は、ＣＰＵ１０４によって実行される。ＯＳ１１０は、ローデバイスとストレージ装置１５０上の論理的な記憶領域を対応付けるローデバイス情報１１２を保持する。尚、ローデバイスとは、ＯＳで管理する論理的な記憶装置である。ＤＢＭＳ１１４は、ＤＢの運用管理に必要となるＤＢ管理情報１１６を保持する。
【００２２】
プリフェッチサーバ１３０はＤＢサーバ１００と同じく一般的な計算機であり、ネットワーク１９０とのインタフェースであるＩ／Ｆ（Ａ）１３２、ＣＰＵ（制御プロセッサ）１３４、入出力装置１３６、メモリ１３８、ネットワーク１９２とのインタフェースであるＩ／Ｆ（Ｂ）１４６を有する。
【００２３】
メモリ１３８には、ＯＳ１４０、プリフェッチプログラム１４２が格納される。ＯＳ１４０及びプリフェッチプログラム１４２は、ＣＰＵ１３４によって実行される。ＯＳ１４０は、ＤＢサーバ１００のローデバイス情報１１２と同一の情報を保持する。具体的には、システム管理者等ＤＢサーバ１００のローデバイス情報１１２の内容をプリフェッチサーバ１３０に入力したり、ＤＢサーバ１００がローデバイス情報１１２の内容をプリフェッチサーバ１３０に自動的に送信したりする。プリフェッチプログラム１４２は、プリフェッチ処理に必要となるプリフェッチ管理情報１４４を保持する。
【００２４】
ストレージ装置１５０は、ネットワーク１９２とのインタフェースであるＩ／Ｆ１５２、ＣＰＵ（制御プロセッサ）１５４、メモリ１５６、キャッシュメモリ１６２、ディスク１６４を有する。メモリ１５６には、ストレージ装置１５０を制御する制御プログラム１５８が格納される。制御プログラム１５８は、ＣＰＵ１５４によって実行される。又制御プログラムは、ストレージ装置１５０の論理的な記憶領域と、ディスク１６４が有する物理的な記憶領域を対応付ける記憶領域情報１６０を保持する。尚、ディスク１６４は記憶媒体であり、ハードディスクドライブでも光ディスクでも良い。また、ストレージ装置１５０は、複数のディスクをＲＡＩＤ構成にしていても良い。
【００２５】
ＤＢクライアント１７０は、ＤＢサーバ１００やプリフェッチサーバ１３０と同じく一般的な計算機であり、ＣＰＵ（制御プロセッサ）１７２、入出力装置１７４、メモリ１７６、ネットワーク１９０とのインタフェースであるＩ／Ｆ１８２を有する。また、メモリ１７６には、ＯＳ１７８、ＤＢフロントエンドプログラム１８０が格納される。ＯＳ１７８、ＤＢフロントエンドプログラム１８０は、ＣＰＵ１７２によって実行される。
【００２６】
尚、上述した各種プログラムは、可搬記憶媒体あるいはネットワークを介して各装置にインストールされる。
【００２７】
図２は、ストレージ装置１５０の制御プログラム１５８が保持する記憶領域情報１６０の構成例を示した図である。
【００２８】
記憶領域情報１６０は、ストレージ装置１５０が有する論理的な記憶領域（以下「論理ユニット」）と、実際にデータが記憶される物理的な記憶領域を対応付ける情報である。記憶領域情報１６０は、論理ユニット毎に対応するエントリを有する。各エントリは、論理ユニットを識別するための論理ユニット番号を登録するフィールド２００、論理ユニット内における論理ブロックの番号（以下「論理ブロックアドレス」）を登録するフィールド２０２、論理ブロックと対応する物理ブロックが存在するディスクを識別するための物理ディスク番号を登録するフィールド２０４及び論理ブロックと対応する物理ブロックの番号（以下「物理ブロックアドレス」）を登録するフィールド２０６を有する。
【００２９】
尚、ブロックとは、記憶領域を扱う際の単位を示すものであり、一般的に５１２ＫＢであることが多い。また、論理ブロックは物理ブロックと一対一で対応している必要があるが、全ての論理ブロックが同一のディスク上にある必要はない。ストレージ装置１５０は、ＤＢサーバ１００やプリフェッチサーバ１３０から論理ユニット及び論理ブロックアドレスによるアクセスを受け付ける。そして、ストレージ装置１５０は、論理ユニット及び論理ブロックに対応する物理ブロックの物理ディスク番号と物理ブロックアドレスを記憶領域情報１６０から割り出し、実際にアクセスを行う。
【００３０】
図３は、ＤＢサーバ１００のＯＳ１１０及びプリフェッチサーバ１３０のＯＳ１４０が保持するローデバイス情報１１２の構成例を示した図である。
【００３１】
ローデバイス情報１１２は、ＯＳ１１０が持つローデバイスと、そのローデバイスに割り当てられたストレージ装置１５０上の記憶領域を対応付ける情報である。ローデバイス情報１１２は、ローデバイス毎に対応するエントリを有する。各エントリは、ローデバイスのファイル名を登録するフィールド３００、ローデバイスに対して割り当てられた記憶領域が存在するストレージ装置の装置アドレスを登録するフィールド３０２、割り当てられた記憶領域が存在する論理ユニットの論理ユニット番号を登録するフィールド３０４、割り当てられた記憶領域の論理ユニット上での先頭論理ブロックアドレスを登録するフィールド３０６及び割り当てられた記憶領域の論理ブロック数を登録するフィールド３０８を有する。
【００３２】
尚、本実施の形態において、ＤＢサーバ１００とプリフェッチサーバ１３０は、同一のストレージ装置上の記憶領域にアクセスする必要があるため、ＤＢサーバ１００のＯＳ１１０及びプリフェッチサーバ１３０のＯＳ１４０は、それぞれ内容も全て同一のローデバイス情報１１２を有する。
【００３３】
図４（ａ）は、ＤＢＭＳ１１４が保持するＤＢ管理情報１１６の構成例を示した図である。尚、ＤＢ管理情報１１６は、ＤＢの初期設定時に、管理者等によって設定される。
【００３４】
ＤＢ管理情報１１６は、ＤＢシステムファイルの設定情報であるＤＢシステムファイル情報４００、データ領域の設定情報であるデータ領域情報４２０、テーブルやインデックスといったＤＢスキーマの設定情報であるＤＢスキーマ情報４４０、インデックスの設定情報であるインデックス情報４６０を有する。
【００３５】
図４（ｂ）は、ＤＢシステムファイル情報４００の構成例を示した図である。
【００３６】
ＤＢシステムファイル情報４００は、ＤＢシステムファイルと、前述のローデバイスを対応付ける情報である。ＤＢシステムファイル情報４００は、ＤＢシステムファイル毎にエントリを有する。各エントリは、ＤＢシステムファイルのファイル名を登録するフィールド４０２、ＤＢシステムファイルが登録されるローデバイスのファイル名を登録するフィールド４０４を有する。
【００３７】
尚、ＤＢシステムファイルは、ローデバイスに作られる一つの大きなファイルである。ＤＢＭＳ１１４は、このＤＢシステムファイルにＤＢのデータを書き込むことでＤＢを構築する。また、ＤＢシステムファイルに書き込まれたＤＢのデータについて、ＯＳ１１０が前述のローデバイス情報１１２から実際にデータを書き込むストレージ装置１５０の論理的な記憶領域を割り出す。そして割り出した情報を元に、ＯＳ１１０がデータの書き込み命令をストレージ装置１５０に発行する。
【００３８】
図４（ｃ）は、データ領域情報４２０の構成例を示した図である。
データ領域情報４２０は、ＤＢＭＳ１１４が管理するデータ領域の設定情報である。データ領域情報４２０は、データ領域毎にエントリを有する。各エントリは、データ領域を識別するためのデータ領域ＩＤを登録するフィールド４２２、データ領域の名前を登録するフィールド４２４、データ領域が作られるＤＢシステムファイルのファイル名を登録するフィールド４２６及びデータ領域に割り当てた領域サイズを登録するフィールド４２８を有する。
【００３９】
尚、データ領域とは、ＤＢのデータを記憶するデータ領域であり、ＤＢシステムファイル上に作成される。
【００４０】
図５（ａ）は、ＤＢスキーマ情報４４０の構成例を示した図である。
ＤＢスキーマ情報４４０は、ＤＢＭＳ１１４が管理する表（テーブル）や索引（インデックス）といったＤＢスキーマに関する設定情報である。ＤＢスキーマ情報４４０は、ＤＢスキーマ毎にエントリを有する。各エントリは、ＤＢスキーマを識別するためのＤＢスキーマＩＤを登録するフィールド５００、ＤＢスキーマの名前を登録するフィールド５０２、ＤＢスキーマの種別を登録するフィールド５０４、ＤＢスキーマが書き込まれるデータ領域を識別するためのデータ領域ＩＤを登録するフィールド５０６、ＤＢスキーマのサイズを登録するフィールド５０８及びＤＢスキーマが書き込まれるデータ領域上のオフセットを登録するフィールド５１０を有する。
【００４１】
図５（ｂ）は、インデックス情報４６０の構成例を示した図である。
インデックス情報４６０は、ＤＢスキーマのうちインデックスに関する設定情報である。インデックス情報４６０は、インデックス毎にエントリを有する。各エントリは、インデックスを識別するためのＤＢスキーマＩＤを登録するフィールド５２０、インデックスのＤＢスキーマ名を登録するフィールド５２２、インデックスの種別を登録するフィールド５２４及びインデックスと対応するテーブルを識別するためのＤＢスキーマＩＤを登録するフィールド５２６を有する。
【００４２】
以下、本実施形態におけるシステムの挙動について簡単に説明する。
ＤＢサーバ１００は、自身でＤＢＭＳ１１４を起動した際あるいはＤＢの構成を変更した際、ストレージ装置１５０に格納されているＤＢの構成、特にＤＢスキーマの格納場所を示す情報（ＤＢスキーマ位置情報）をプリフェッチサーバ１３０に送信する。
【００４３】
その後、ＤＢクライアント１７０からクエリ（ＤＢの操作内容又はＤＢに対する処理内容）を受け付けたＤＢサーバ１００は、そのクエリに関する情報（ＤＢ処理情報）をプリフェッチサーバ１３０に送る。更にＤＢサーバ１００は、ＤＢのデータへアクセスする際、アクセスするＤＢに関する情報（ＤＢアクセス情報）をプリフェッチサーバ１３０に送る。その後、ＤＢサーバ１００はストレージ装置１５０へのアクセスを行う。
【００４４】
一方、上述の情報を受信したプリフェッチサーバ１３０は、これらの情報に基づいて、ＤＢサーバ１００がストレージ装置１５０のどの記憶領域にアクセスするかを予測する。そして、プリフェッチサーバ１３０は、その予測結果に基づいてプリフェッチ命令を作成し、ストレージ装置１５０へ送信する。
【００４５】
プリフェッチ命令を受信したストレージ装置１５０は、プリフェッチ命令で指示される記憶領域からデータを読み出し、キャッシュメモリ１６２に保存する。
【００４６】
図６（ａ）は、プリフェッチプログラム１４２が保持するプリフェッチ管理情報１１６の構成例を示した図である。
プリフェッチ管理情報１１６は、各ＤＢスキーマの論理的な位置情報であるＤＢスキーマ位置情報６００及びクエリの実行に関する情報であるＤＢ処理情報６２０を有する。
【００４７】
図６（ｂ）は、ＤＢスキーマ位置情報６００の構成例を示した図である。
ＤＢスキーマ位置情報６００は、前述のＤＢスキーマがストレージ装置１５０の記憶領域に記憶された実際の位置を示す情報である。ＤＢスキーマ位置情報６００は、ＤＢスキーマ毎にエントリを有する。
【００４８】
各エントリは、ＤＢスキーマを有するＤＢＭＳを識別するためのＤＢＭＳ ＩＤを登録するフィールド６０２、ＤＢスキーマを識別するためのＤＢスキーマＩＤを登録するフィールド６０４、ＤＢスキーマの種別を登録するフィールド６０６、ＤＢスキーマが書き込まれたローデバイスのファイル名を登録するフィールド６０８、ＤＢスキーマが書き込まれたストレージ装置１５０の論理ユニット番号を登録するフィールド６１０及びＤＢスキーマが書き込まれたストレージ装置１５０の論理ユニットアドレスを登録するフィールド６１２を有する。尚、ＤＢＭＳ ＩＤは管理者等によってあらかじめ各ＤＢＭＳに一意の値として割り当てられている値である。
【００４９】
尚、ＤＢサーバ１００がＤＢ情報取得送信プログラム１１８を実行することでＤＢスキーマ位置情報６００をＯＳ１１０やＤＢＭＳ１１４から取得し、プリフェッチサーバ１３０に送信する。具体的には、ＤＢ情報取得送信プログラム１１８は、ＤＢサーバ１００が有するＤＢ管理情報１１６やローデバイス情報１１２の内容及びＤＢＭＳ ＩＤの情報に基づいてＤＢスキーマ位置情報６００を作成（又はＤＢスキーマ位置情報６００を構成する情報を収集）し、プリフェッチサーバ１３０に送信する。送信する契機は、ＤＢＭＳ１１４の起動時、及びＤＢの構成の変更時である。
【００５０】
図６（ｃ）は、ＤＢ処理情報６２０の構成例を示した図である。
ＤＢ処理情報６２０は、ＤＢＭＳ１１４が実行するクエリ及びそのクエリで実行される検索（テーブルスキャンやインデックススキャン等。以下「スキャン」とも言う）に関する情報である。ＤＢ処理情報６２０は、各クエリの各スキャン毎にエントリを有する。各エントリは、クエリを実行するＤＢＭＳを識別するためのＤＢＭＳ ＩＤを登録するフィールド６２２、実行するクエリを識別するためのクエリＩＤを登録するフィールド６２４、クエリ内で実行されるスキャンを識別するためのスキャンＩＤを登録するフィールド６２６、スキャンによってアクセスされるＤＢスキーマを識別するためのＤＢスキーマＩＤを登録するフィールド６２８及びスキャンの種別を登録するフィールド６３０を有する。
【００５１】
尚、ＤＢクライアント１７０から受け付けたクエリに対するＤＢ処理情報６２０をＤＢ情報取得送信プログラム１１８がＤＢＭＳ１１４から取得し、プリフェッチサーバ１３０に送信する。
【００５２】
図７（ａ）は、ＤＢサーバ１００がプリフェッチサーバ１３０に送信するＤＢアクセス情報７００の構成例を示した図である。
【００５３】
ＤＢアクセス情報７００は、ＤＢＭＳ１１４がＤＢデータにアクセスする際に使用する情報である。ＤＢアクセス情報７００は、クエリを実行しているＤＢＭＳ１１４を識別するためのＤＢＭＳ ＩＤを登録するフィールド７０２、実行されているクエリを識別するためのクエリＩＤを登録するフィールド７０４、実行しているスキャンの種別を登録するフィールド７０６、アクセスされるデータが記憶されているストレージ装置１５０上の論理ユニット番号を登録するフィールド７０８、アクセスされるデータが記憶されているストレージ装置１５０上の論理ユニットアドレスを登録するフィールド７１０及びアクセスされるデータのサイズを登録するフィールド７１２を有する。
【００５４】
尚、上述したように、ＤＢＭＳ１１４がＤＢデータにアクセスする毎にＤＢアクセス情報７００を作成し、プリフェッチサーバ１３０に送信する。
【００５５】
図７（ｂ）は、プリフェッチサーバ１３０がストレージ装置に発行するプリフェッチ命令７２０の構成例を示した図である。
【００５６】
プリフェッチ命令７２０は、プリフェッチ対象となるデータの位置を示す情報であり、プリフェッチ対象のデータ毎にエントリを有する。各エントリは、プリフェッチ対象となるデータが記憶されているストレージ装置１５０上の論理ユニット番号を登録するフィールド７２０、プリフェッチ対象となるデータが記憶されているストレージ装置１５０上の論理ブロックのアドレスを登録するフィールド７２４及びプリフェッチ対象となるデータのサイズを登録するフィールド７２６を有する。
【００５７】
尚、プリフェッチ命令７２０を受信したストレージ装置１５０は、該当するデータの物理的な位置を記憶領域情報１６０から割り出し、キャッシュメモリ１６２上に読み出す。その後、ＤＢへのアクセス命令を受け取ったストレージ装置１５０は、あらかじめキャッシュメモリ１６２に読み出されていたデータをＤＢサーバ１００へ送信する。
【００５８】
以下、ＤＢサーバ１００で実行される各種情報のプリフェッチサーバ１３０への送信処理（以下「ＤＢ情報取得送信処理」）及びプリフェッチサーバ１３０で実行されるプリフェッチ命令の作成及び送信処理（以下「プリフェッチ処理」）の手順について説明する。尚、ＤＢは構築済み（ＤＢ管理情報１１６は作成済み）であるものとする。
【００５９】
図８は、ＤＢサーバ１００上で実行されるＤＢ情報取得送信処理の手順例を示したフロー図である。以下、プログラムが主語になる場合は、実際にはそのプログラムを実行するＣＰＵによって処理が行われるものとする。
システム管理者は、ＤＢサーバ１００上でＤＢ情報取得送信プログラム１１８を起動し、ＤＢ情報取得送信処理を開始する（ステップ８００）。
【００６０】
ＤＢ情報取得送信プログラム１１８は、起動後すぐにスリープ（待機状態）に入る。ＤＢ情報取得送信プログラム１１８は、以下に説明する各ステップでの割り込みを待ちつづける（ステップ８０２）。
【００６１】
ＤＢＭＳ１１４が起動した場合（ステップ８０４）又はＤＢに変更があった場合（ステップ８０６）、ＤＢ情報取得送信プログラム１１８は、ＤＢＭＳ１１４及びＯＳ１１０から必要な情報（ＤＢ管理情報１１６及びローデバイス情報１１２）を取得してＤＢスキーマ位置情報６００を作成し（ステップ８０８）、プリフェッチサーバ１３０に送信する（ステップ８１０）。尚、ＤＢ情報取得送信プログラム１１８が起動した時点でＤＢＭＳ１１４が動作している場合、ＤＢ情報取得送信プログラム１１８はすぐにステップ８０８及びステップ８１０の処理を実行する。
【００６２】
ＤＢクライアント１７０からクエリを受け付けた場合（ステップ８１２）、ＤＢ情報取得送信プログラム１１８は、そのクエリのクエリプランをＤＢＭＳ１１４から取得してＤＢ処理情報を作成し（ステップ８１４）、プリフェッチサーバ１３０に送信する（ステップ８１６）。その後、ＤＢ情報取得送信プログラム１１８は、受け付けたクエリの実行をＤＢＭＳ１１４に要求する（ステップ８１８）。
【００６３】
クエリを実行するためにＤＢＭＳ１１４がＤＢのデータにアクセスする場合（ステップ８２０）、ＤＢ情報取得送信プログラム１１８は、ＤＢへのアクセス要求の発行の直前に、ＤＢのデータへのアクセス（以下「Ｉ／Ｏ」とも言う）に関する情報をＤＢＭＳ１１４から取得してＤＢアクセス情報７００を作成する。尚、ＤＢ情報取得送信プログラム１１８は、Ｉ／Ｏの発行をＤＢＭＳ、もしくはＯＳからのＩ／Ｏ発行前のコールに基づいて検出する（ステップ８２２）。その後、ＤＢ情報取得送信プログラム１１８は、作成したＤＢアクセス情報７００をプリフェッチサーバ１３０に送信する（ステップ８２４）。
【００６４】
システム管理者等からＤＢ情報取得送信プログラム１１８の終了コマンドを受け付けた場合（ステップ８２６）、ＤＢ情報取得送信プログラム１１８は処理を終了する（ステップ８２８）。
【００６５】
図９は、プリフェッチサーバ１３０上で実行されるプリフェッチ処理の手順例を示したフロー図である。
【００６６】
システム管理者は、プリフェッチサーバ１３０上でプリフェッチプログラム１４２を起動し、プリフェッチ処理を開始する（ステップ９００）。尚、プリフェッチプログラム１４２は、前述のＤＢ情報取得送信プログラム１１８より先に起動しておく必要がある。
【００６７】
プリフェッチプログラム１４２は、起動後すぐにスリープし（ステップ９０２）、ＤＢサーバ１００上で動作するＤＢ情報取得送信プログラム１１８から、ＤＢスキーマ位置情報６００、ＤＢ処理情報６２０及びＤＢアクセス情報７００が送られてくるのを待つ。
【００６８】
ＤＢスキーマ位置情報６００を受信した場合（ステップ９０４）、プリフェッチプログラム１４２は、受信したＤＢスキーマ位置情報６００をプリフェッチ管理情報１４４の一部として格納する（ステップ９０６）。
【００６９】
ＤＢ処理情報６２０を受信した場合（ステップ９１０）、プリフェッチプログラム１４２は、受信したＤＢ処理情報６２０をプリフェッチ管理情報１４４の一部として格納する（ステップ９１２）。
【００７０】
ＤＢアクセス情報７００を受信した場合（ステップ９１４）、プリフェッチプログラム１４２は、後述のプリフェッチ処理（ｂ）１０００を実行する（ステップ９１６）。
【００７１】
システム管理者等からプリフェッチプログラム１４２の終了コマンドを受け付けた場合（ステップ９１８）、プリフェッチプログラム１４２は処理を終了する（ステップ９２０）。
【００７２】
図１０は、プリフェッチサーバ１３０が行うプリフェッチ処理（ｂ）１０００の処理手順例を示すフロー図である。プリフェッチプログラム１４２は、ＤＢアクセス情報７００を受信した場合、プリフェッチ処理（ｂ）１０００を実行する。まず、取得したＤＢアクセス情報７００内のスキャン種別７０６を参照し、ＤＢアクセス情報７００の送信の契機になったＤＢサーバ１００のアクセスの内容がインデックススキャンか判定する（ステップ１００２）。
【００７３】
ステップ１００２でアクセスの内容がインデックススキャンでないと判定した場合、プリフェッチプログラム１４２は、プリフェッチ処理（ｂ）を終了する（ステップ１０１６）。
【００７４】
ステップ１００２でアクセスの内容がインデックススキャンであると判定した場合、プリフェッチプログラム１４２は、取得したＤＢアクセス情報７００内のＤＢＭＳ ＩＤ７０２、クエリＩＤ７０４、アクセス先論理ユニット番号７０８、アクセス先論理ブロックアドレス７１０と、ＤＢスキーマ位置情報６００、及びＤＢ処理情報６２０を参照し、アクセスの対象となるデータがインデックスデータか判定する（ステップ１００４）。
【００７５】
ステップ１００４でアクセスの対象となるデータがインデックスデータであると判定した場合、プリフェッチプログラム１４２は、アクセスの対象となるインデックスデータをストレージ装置１５０から読み出す（ステップ１００６）。そして、プリフェッチプログラム１４２は、読み出したインデックスデータ内の各インデックスをキー値別のグループに区分し（ステップ１００８）、プリフェッチ処理（ｂ）を終了する（ステップ１０１６）。
【００７６】
ステップ１００４でアクセスの対象となるデータがインデックスデータでないと判定した場合、プリフェッチプログラム１４２は、アクセスの対象となるデータがテーブルデータであるか判定する（ステップ１０１０）。
【００７７】
ステップ１０１０でアクセスの対象となるデータがテーブルデータであると判定した場合、プリフェッチプログラム１４２は、ステップ１００８で作成した各グループのうち、アクセスの対象となるテーブルデータが属するグループを特定する。具体的には、プリフェッチプログラム１４２は、ＤＢサーバ１００から受信するＤＢアクセス情報７００の位置情報からアクセスされるテーブルデータを特定し、そのテーブルデータを含むグループを特定する（ステップ１０１２）。そして、プリフェッチプログラム１４２は、特定されたグループに属しているインデックスに対応するテーブルデータを読み出すためのプリフェッチ命令を作成する。その後、プリフェッチプログラム１４２は、作成したプリフェッチ命令７２０をストレージ装置１５０に発行し（ステップ１０１４）、プリフェッチ処理（ｂ）を終了する。
【００７８】
ステップ１０１０でアクセスの対象となるデータがテーブルデータでないと判定した場合、プリフェッチプログラム１４２は、プリフェッチ処理（ｂ）を終了する（ステップ１０１６）。
【００７９】
以上の手順により、プリフェッチサーバ１３０は、ＤＢサーバ１００によってこの先アクセスされるデータを予測し、該当するデータのプリフェッチ指示をストレージ装置１５０に与える。指示を受けたストレージ装置１５０は、指定されたデータをキャッシュメモリ１６２上に読み出す。この結果、ＤＢサーバ１００がストレージ装置１５０上のＤＢのデータにアクセスする際は、全てのデータではないが大部分のデータはストレージ装置１５０のキャッシュメモリ１６２上にプリフェッチされているため、ディスクから読み出す時間分が短縮され、アクセス性能が向上する。
【００８０】
図１１及び図１２を用いて、本発明の第二の実施形態を説明する。
第一の実施形態と第二の実施形態の違いは、ＤＢサーバ１００がプリフェッチサーバ１３０に送信するＤＢアクセス情報の内容と、その違いに基づくプリフェッチ処理（ｂ）の処理内容である。それ以外の処理や構成については、第一の実施形態で説明した内容と同じである。以下、第一の実施形態と異なっている部分について説明する。
【００８１】
図１１は、第二の実施形態におけるＤＢアクセス情報１１００の構成例を示した図である。
【００８２】
ＤＢアクセス情報１１００は、クエリを実行しているＤＢＭＳを識別するためのＤＢＭＳ ＩＤを登録するフィールド１１０２、実行されているクエリを識別するためのクエリＩＤを登録するフィールド１１０４、アクセスするインデックススキーマを識別するためのＤＢスキーマＩＤを登録するフィールド１１０６、スキャンの条件を登録するフィールド１１０８、アクセスされるデータが記憶されているストレージ装置１５０上の論理ユニット番号を登録するフィールド１１１０、アクセスされるデータが記憶されているストレージ装置１５０上の論理ユニットアドレスを登録するフィールド１１１２及びアクセスされるデータのサイズを登録するフィールド１１４を有する。
【００８３】
尚、本実施形態では、ＤＢサーバ１００は、ＤＢアクセス情報１１００を、ＤＢＭＳ１１４がＤＢデータにインデックススキャンを目的としてアクセスする場合にのみプリフェッチサーバ１３０に送信する。この点が第一の実施形態と異なる。尚、ＤＢサーバ１００は、ＤＢＭＳ１１４のアクセスがインデックススキャンか否かを受信するクエリ及びＤＢ管理情報１１６の内容に基づいて判定する。
【００８４】
図１２は、第二の実施形態におけるプリフェッチ処理（ｂ）の手順例を示したフロー図である。
プリフェッチプログラム１４２は、ＤＢアクセス情報１１００を受信した場合、プリフェッチ処理（ｂ）１２００を実行する。まず、ＤＢアクセス情報１１００の契機となったアクセスの対象となるインデックスデータをストレージ装置１５０から読み出す（ステップ１２０２）。そしてプリフェッチプログラム１４２は、読み出したインデックスデータ内の各インデックスからスキャン条件１１０８と一致するインデックスを抽出する（ステップ１２０４）。
【００８５】
その後、プリフェッチプログラム１４２は、抽出したインデックスと関連付けられているテーブルデータをプリフェッチ対象のデータとする。そしてプリフェッチプログラム１４２は、プリフェッチ対象となったテーブルデータをストレージ装置１５０にプリフェッチさせるためのプリフェッチ命令７２０を作成する。そして、プリフェッチプログラム１４２は、作成したプリフェッチ命令７２０を、ストレージ装置１５０に発行し（ステップ１２０６）、プリフェッチ処理（ｂ）１２００を終了する。
【００８６】
以上の手順により、本実施形態では、第一の実施形態と同じく、ＤＢサーバ１００がストレージ装置１５０上のＤＢのデータにアクセスする際は、全てのデータではないが大部分のデータはストレージ装置１５０のキャッシュメモリ１６２上にプリフェッチされている。したがってストレージ装置１５０がディスクからデータを読み出す時間が短縮され、アクセス性能が向上する。
【００８７】
また、第一の実施形態では、アクセス対象となるインデックスデータを読み出してキー値別にグループを作成した後、テーブルデータのアクセス情報を受信し、グループを特定してからストレージ装置１５０にプリフェッチ指示を与える。しかし、第二の実施形態では、アクセス対象となるインデックスデータの情報と共にスキャン条件を取得し、インデックスデータを読み出した時点でストレージ装置１５０にプリフェッチの指示を与えることが可能となる。
【００８８】
尚、ＤＢサーバ１００に接続されるストレージ装置１５０が複数の場合も、上述した内容で発明を実施できる。この際、ＤＢサーバ１００は、ローデバイス情報１１２に基づいて、複数のストレージ装置１５０へのＩ／Ｏを発行する。この際、ＤＢサーバ１００は、複数のストレージ装置１５０に関するＤＢアクセス情報をプリフェッチサーバ１３０へ送信する。個々のＤＢアクセス情報を受け取ったプリフェッチサーバ１３０は、ローデバイス情報１１２を用いて個々のＤＢアクセス情報に対応するストレージ装置１５０を特定し、作成したプリフェッチ命令を個々のストレージ装置１５０へ送信する。
【図面の簡単な説明】
【００８９】
【図１】システム構成例を示した図である。
【図２】記憶領域情報１７０の構成例を示した図である。
【図３】ローデバイス情報１１２の構成例を示した図である。
【図４】ＤＢ管理情報１１６の構成例を示した図である。
【図５】ＤＢ管理情報１１６の構成例を示した図である。
【図６】プリフェッチ管理情報１４４の構成例を示した図である。
【図７】ＤＢアクセス情報７００及プリフェッチ命令７２０の構成例を示した図である。
【図８】ＤＢ情報取得処理の手順例を示したフロー図である。
【図９】プリフェッチ処理の手順例を示したフロー図である。
【図１０】プリフェッチ処理の手順例を示したフロー図である。
【図１１】第二の実施形態におけるＤＢアクセス情報１１００の構成例を示した図である。
【図１２】第二の実施形態におけるプリフェッチ処理（ｂ）の手順例を示したフロー図である。
【符号の説明】
【００９０】
１００…ＤＢサーバ、１３０…プリフェッチサーバ、１５０…ストレージ装置、１７０…ＤＢクライアント、１９０、１９２…ネットワーク。
【図１】
2005258735.tif 000003
【図２】
2005258735.tif 000004
【図３】
2005258735.tif 000005
【図４】
2005258735.tif 000006
【図５】
2005258735.tif 000007
【図６】
2005258735.tif 000008
【図７】
2005258735.tif 000009
【図８】
2005258735.tif 000010
【図９】
2005258735.tif 000011
【図１０】
2005258735.tif 000012
【図１１】
2005258735.tif 000013
【図１２】
2005258735.tif 000014