(57)【特許請求の範囲】
【請求項１】
記憶領域を提供しキャッシュメモリを有し読み出し要求に応じて前記記憶領域から前記キャッシュメモリにデータを読み出し前記キャッシュメモリからデータを送信するストレージ装置に接続した計算機であって、
データ処理要求を受け付ける要求受付部と、
前記データ処理要求、又は、前記データ処理要求のアクセス用途に関連する情報を基に、アクセス用途を判定し、前記判定したアクセス用途に応じた論理デバイスを前記記憶領域に割り当てられている複数の論理デバイスから選択し、前記選択した論理デバイスに対して読み出し要求を発行する要求発行部と
を有し、
前記複数の論理デバイスは、アクセス数重視用の論理デバイスと、応答時間重視用の論理デバイスとを含み、
前記要求発行部は、
アクセス用途が、単位時間あたりの読み出し数を重視するパターンであるか、１つの読み出し要求に対する応答時間を重視するパターンであるかを判定し、
単位時間あたりの読み出し数を重視するパターンであると判定した場合は、前記アクセス数重視用の論理デバイスを選択し、
１つの読み出し要求に対する応答時間を重視するパターンであると判定した場合は、前記応答時間重視用の論理デバイスを選択する、
計算機。
【請求項２】
クエリプラン生成部を更に有し、
前記記憶領域は、データベースのデータを記憶しており、
前記データ処理要求は、前記データベースへのクエリであり、
前記クエリプラン生成部は、前記受け付けたクエリを処理するために必要なデータベースオペレーションの情報であるクエリプランを生成し、
前記要求発行部が、前記生成したクエリプランに基づいてデータベースオペレーションを実行するためのタスクを動的に生成し、動的に生成された複数のタスクを並列に実行し、タスクの実行の際必要に応じて、前記クエリプランを基にアクセス用途を判定し、前記判定したアクセス用途に応じた論理デバイスを前記記憶領域に割り当てられている複数の論理デバイスから選択し、且つ、前記選択した論理デバイスに対して読み出し要求を発行する、
請求項１記載の計算機。
【請求項３】
前記複数の論理デバイスが、シーケンシャルアクセス用の論理デバイスとランダムアクセス用の論理デバイスとを含み、
前記要求発行部は、
アクセス用途がシーケンシャルアクセスかランダムアクセスかを判定し、
シーケンシャルアクセスと判定した場合は前記シーケンシャルアクセス用の論理デバイスを選択し、
ランダムアクセスと判定した場合は前記ランダムアクセス用の論理デバイスを選択する、
請求項１又は２記載の計算機。
【請求項４】
前記シーケンシャルアクセス用の論理デバイスと前記ランダムアクセス用の論理デバイスのうち少なくとも前記シーケンシャルアクセス用の論理デバイスが複数である、
請求項３記載の計算機。
【請求項５】
前記ストレージ装置が、前記選択した論理デバイスに関連付いたパスを介して受信した読み出し要求の数が許容度以下の場合に前記パスを介して受信した複数の前記読み出し要求に従う読み出しのアクセスパターンがシーケンシャルアクセスである否かを判定し、その判定結果が肯定的の場合に前記複数の読み出し要求で指定されたアドレスの先のアドレスのデータを前記記憶領域から前記キャッシュメモリに読み出す先読み処理を行うようになっており、
前記シーケンシャルアクセス用の論理デバイスの数は、前記許容度と、前記要求発行部が発行する読み出し要求の最大多重度とに基づいている、
請求項４記載の計算機。
【請求項６】
前記要求発行部が、前記アクセス用途がシーケンシャルアクセスと判定した場合、２以上の読み出し要求がマージされた読み出し要求を発行する
請求項３乃至５のうちのいずれか１項に記載の計算機。
【請求項７】
前記要求発行部は、前記複数の論理デバイスの各々の使用頻度を管理するようになっており、
前記要求発行部が、前記アクセス用途に応じた論理デバイスが２以上存在する場合、前記２以上の論理デバイスのうち、使用頻度が相対的に少ない論理デバイスを選択する、
請求項１乃至６のうちのいずれか１項に記載の計算機。
【請求項８】
前記要求発行部は、前記複数の論理デバイスの各々の使用頻度を管理するようになっており、
前記アクセス数重視用の論理デバイスは、前記複数の論理デバイスにおいて使用頻度が相対的に多い論理デバイスであり、
前記応答時間重視用の論理デバイスは、前記複数の論理デバイスにおいて使用頻度が相対的に少ない論理デバイスである、
請求項１乃至７のうちのいずれか１項に記載の計算機。
【請求項９】
前記要求発行部は、前記複数の論理デバイスの各々の応答性能を管理するようになっており、
前記アクセス数重視用の論理デバイスは、前記複数の論理デバイスにおいて応答性能が相対的に低い論理デバイスであり、
前記応答時間重視用の論理デバイスは、前記複数の論理デバイスにおいて応答性能が相対的に高い論理デバイスである、
請求項１乃至７のうちのいずれか１項に記載の計算機。
【請求項１０】
記憶領域を提供しキャッシュメモリを有し読み出し要求に応じて前記記憶領域から前記キャッシュメモリにデータを読み出し前記キャッシュメモリからデータを送信するストレージ装置からデータを読み出すデータ読み出し方法であって、
（Ａ）データ処理要求を受け付け、
（Ｂ）前記データ処理要求、又は、前記データ処理要求のアクセス用途に関する情報を基にアクセス用途を判定し、
（Ｃ）前記判定したアクセス用途に応じた論理デバイスを前記記憶領域に割り当てられている複数の論理デバイスから選択し、
（Ｄ）前記選択した論理デバイスに対して読み出し要求を発行し、
前記複数の論理デバイスは、アクセス数重視用の論理デバイスと、応答時間重視用の論理デバイスとを含み、
（Ｂ）として、アクセス用途が、単位時間あたりの読み出し数を重視するパターンであるか、１つの読み出し要求に対する応答時間を重視するパターンであるかを判定し、
（Ｃ）として、単位時間あたりの読み出し数を重視するパターンであると判定した場合は、前記アクセス数重視用の論理デバイスを選択し、１つの読み出し要求に対する応答時間を重視するパターンであると判定した場合は、前記応答時間重視用の論理デバイスを選択する、
データ読み出し方法。
【請求項１１】
（Ａ）として、前記データ処理要求として、前記記憶領域に格納されているデータベースへのクエリを受け付け、
前記受け付けたクエリを処理するために必要なデータベースオペレーションの情報であるクエリプランを生成し、
前記生成したクエリプランに基づいてデータベースオペレーションを実行するためのタスクを動的に生成し、動的に生成された複数のタスクを並列に実行し、タスクの実行の際必要に応じて、（Ｂ）として、前記クエリプランを基にアクセス用途を判定し、（Ｃ）として、前記判定したアクセス用途に応じた論理デバイスを前記記憶領域に割り当てられている複数の論理デバイスから選択し、且つ、（Ｄ）として、前記選択した論理デバイスに対して読み出し要求を発行する、
請求項１０記載のデータ読み出し方法。
【請求項１２】
前記複数の論理デバイスが、シーケンシャルアクセス用の論理デバイスとランダムアクセス用の論理デバイスとを含み、
（Ｂ）として、アクセス用途がシーケンシャルアクセスかランダムアクセスかを判定し、
（Ｃ）として、シーケンシャルアクセスと判定した場合は前記シーケンシャルアクセス用の論理デバイスを選択し、ランダムアクセスと判定した場合は前記ランダムアクセス用の論理デバイスを選択する、
請求項１０又は１１記載のデータ読み出し方法。
【請求項１３】
前記複数の論理デバイスの各々の使用頻度を管理し、
（Ｃ）として、前記アクセス用途に応じた論理デバイスが２以上存在する場合、前記２以上の論理デバイスのうち、使用頻度が相対的に少ない論理デバイスを選択する、
請求項１０乃至１２のうちのいずれか１項に記載の記載のデータ読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置からのデータの読み出しに関する。
【背景技術】
【０００２】
データの読み出しを行うエンティティとして、例えば、ＤＢ管理システム（ＤＢＭＳ）がある。ＤＢに関する一連の処理及び管理を行うＤＢＭＳは重要なものとなっている。【０００３】
ＤＢＭＳの特徴の一つは、多大な量のデータを含んだＤＢを扱うことである。そのため、ＤＢＭＳが稼動する計算機システムは、一般に、ＤＢＭＳが動作する計算機と、計算機に接続された大容量のストレージ装置とを有し、ストレージ装置が、ＤＢのデータを記憶する。ストレージ装置は、複数の記憶デバイス（例えばＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Device））を有し、それらの記憶デバイスにＤＢが記憶される。ストレージ装置内の記憶デバイスにデータが記憶されるため、ＤＢに関する処理を行う際には記憶デバイスに対してアクセスが必然的に発生する。特に、ペタバイトクラスの超大規模ＤＢにおいて、大量のＤＢのデータの中から、ある特定のデータを探し出す処理には膨大な時間を要することになる。【０００４】
そこで、大量のデータの中から特定のデータを探し出す検索処理を高速化する技術として、特許文献１に開示されている技術が知られている。特許文献１に開示されている技術は、データの読み出しを行う都度、タスクを動的に作成し、タスクを並列に実行することで、データの読み出し要求を多重化する技術である。この技術を用いたＤＢＭＳによると、タスクを生成順で逐次的に実行するＤＢＭＳと比較して、検索性能を向上することができる。【０００５】
また、特許文献２は、キャッシュメモリを有するストレージ装置の先読み処理を開示している。具体的には、ストレージ装置は、複数の読み出し要求を受けて、それらの読み出し要求が、連続したアドレスのデータの読み出し（シーケンシャルリード）か否かを判定する（読み出し種別判定）。ストレージ装置は、シーケンシャルリードと判定した場合は、受信した読み出し要求で指定されたアドレスの更にその先のアドレスのデータをキャッシュメモリに読み出しておく。これにより、読み出し要求に対する応答性能の向上（読み出し時間の短縮）を図ることが可能となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３４４１４号公報
【特許文献２】特公平７−７６９４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ストレージ装置は、上記のような先読み処理を、計算機から受信する読み出し要求の多重度が許容度を超えている場合には、行うことができない。具体的には、ストレージ装置は、許容度を超える多重度の読み出し要求を受信した場合、上記読み出し種別判定においてランダムリードと判定し、先読み処理を行わない。【０００８】
また、シーケンシャルリードのための複数の読み出し要求とランダムリードのための複数の読み出し要求とが前述の許容度を超えた多重度で混在する場合でも、同様に、ストレージ装置は常にランダムリードと判定し先読み処理を行わない。【０００９】
以上の通り、ＤＢＭＳがストレージ装置の許容度を超えた多重度で読み出し要求を発行できるようになっていても、シーケンシャルリードの読み出し応答性能の向上を期待することができない。【００１０】
また、アクセス用途としては、シーケンシャルリード及びランダムリードに加えて、他種のアクセス用途、例えば、単位時間あたりの読み出し数を重視するパターン、及び、１つの読み出し要求に対する応答時間を重視するパターン等がある。この種のアクセス用途に関しても、ＤＢＭＳの読み出し性能の向上が望まれる。【００１１】
以上のような問題は、ＤＢＭＳに限らず、読み出し要求をストレージ装置に送信することができる他種のエンティティ（例えばＤＢＭＳとは別のコンピュータプログラムを実行することによりストレージ装置に読出し要求を発行する計算機）についても起こり得る。
【課題を解決するための手段】
【００１２】
記憶領域を提供しキャッシュメモリを有し読み出し要求に応じて記憶領域からキャッシュメモリにデータを読み出しキャッシュメモリからデータを送信するストレージ装置があり、計算機が、そのストレージ装置に接続される。計算機は、データ処理要求を受け付け、データ処理要求（又は、そのデータ処理要求のアクセス用途に関する情報）、又は、データ処理要求のアクセス用途に関連する情報を基にアクセス用途を判定し、判定したアクセス用途に応じた論理デバイスを記憶領域に割り当てられている複数の論理デバイスから選択し、選択した論理デバイスに対して読み出し要求を発行する。論理領域は、例えば、後述の論理ユニット（ＬＵ）である。【００１３】
計算機は、要求を受け付け、受け付けた要求の実行において、その要求についてのオペレーションを実行するためのタスクを動的に生成し、動的に生成された複数のタスクを並行して実行することで読み出し要求を（例えば多重で）発行することができる。具体的には、計算機は、要求の実行において、（ａ）要求についてのオペレーションを実行するためのタスクを生成すること、（ｂ）生成されたタスクを実行することで、必要に応じてそのタスクに対応したオペレーションに必要なデータを読み出すためにストレージ装置へ読出し要求を発行すること、（ｃ）上記（ｂ）で実行されたタスクに対応したＮ番目のオペレーションの実行結果に基づき（Ｎ＋１）番目のオペレーションを実行する場合には、その実行結果に基づくタスクを新たに生成すること（Ｎは１以上の整数）、及び、（ｄ）その新たに生成したタスクについて上記（ｂ）及び上記（ｃ）を行うこと、を行い、上記（ｂ）及び（ｄ）において、２以上の実行可能なタスクが存在する場合には、それら２以上のタスクのうちの複数のタスクを並行して実行することで、読み出し要求を（例えば多重で）ストレージ装置に送信することができる。
【発明の効果】
【００１４】
ストレージ装置が提供する記憶領域に計算機における複数の論理デバイスが割り当てられ、データ処理要求を基に特定されるアクセス用途に応じて、記憶領域に対する読み出し要求が、複数の論理デバイスに振り分けられる。このため、計算機の読み出し性能の向上が期待できる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例に係るＤＢシステムの構成例を示した図である。
【図２Ａ】図２Ａは、実施例に係るＤＢ管理情報の構成を示した図である。
【図２Ｂ】図２Ｂは、実施例に係るＤＢファイル情報の構成を示した図である。
【図２Ｃ】図２Ｃは、実施例に係るＤＢデータ領域情報の構成を示した図である。
【図３Ａ】図３Ａは、実施例に係るＤＢスキーマ管理情報の構成を示した図である。
【図３Ｂ】図３Ｂは、実施例に係るＤＢスキーマ情報の構成を示した図である。
【図３Ｃ】図３Ｃは、実施例に係るクエリプラン情報の構例を示した図である。
【図４Ａ】図４Ａは、実施例に係るＯＳ管理情報の構成を示した図である。
【図４Ｂ】図４Ｂは、実施例に係るデバイス管理情報の構成を示した図である。
【図５Ａ】図５Ａは、実施例に係る論理デバイス情報の構成を示した図である。
【図５Ｂ】図５Ｂは、実施例に係るボリュームグループ情報の構成を示した図である。
【図６Ａ】図６Ａは、実施例に係るストレージ管理情報の構成を示した図である。
【図６Ｂ】図６Ｂは、実施例に係る論理記憶領域管理情報の構成を示した図である。
【図６Ｃ】図６Ｃは、実施例に係る物理記憶領域管理情報の構成を示した図である。
【図７Ａ】図７Ａは、実施例に係るクエリの一例を示した図である。
【図７Ｂ】図７Ｂは、図７Ａのクエリプランを示した図である。
【図８】図８は、実施例に係るクエリ受付処理のフローチャートである。
【図９】図９は、実施例に係るクエリ実行処理のフローチャートである。
【図１０】図１０は、実施例の概要を示した図である。
【図１１Ａ】図１１Ａは、１つのＬＵに対する複数のシーケンシャルリード用論理デバイスの関連付けの一例を示す。
【図１１Ｂ】図１１Ｂは、１つのＬＵに対する複数のランダムリード用論理デバイスの関連付けの一例を示す。
【図１２】図１２は、１つのＬＵに関連付けるシーケンシャルリード用の論理デバイスの数の制御の一例を示す。
【図１３】図１３は、変形例に係る計算機システムの構成を示す。
【発明を実施するための形態】
【００１６】
ストレージ装置からデータの読み出しを行うエンティティとして、種々のエンティティがある。例えば、エンティティは、コンピュータプログラムであってもよいし、コンピュータプログラムを実行する計算機であってもよい。コンピュータプログラムとしては、例えば、ファイルを読み出すファイルシステムプログラム、或いは、ＤＢ内のデータを読み出すＤＢＭＳが考えられる。以下、データの読み出しを行うエンティティがＤＢＭＳである一実施例を説明する。
【００１７】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、計算機、ストレージ装置等に含まれるプロセッサ（例えばＣＰＵ（Central Processing Unit））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又は通信インターフェースデバイス（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する装置（計算機、ストレージ装置等）が行う処理としてもよい。また、プロセッサは、処理の一部又は全部を行うハードウエア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は記憶メディアであってもよい。
【００１８】
また、以下の説明では、要素の識別情報として、識別子、番号又は名称が使用されるが、それに代えて又は加えて、識別情報は、他種の情報を含んでもよい。
【００１９】
図１０は、実施例の概要を示す。
【００２０】
計算機１００にストレージ装置１５０が接続される。計算機１００は、メモリ及びプロセッサ等を有し、プロセッサにより、ＯＳ（Operating System）１４０及びＤＢＭＳ１２０が実行される。ＤＢＭＳ１２０は、クエリ受付部１２２と、クエリプラン生成部１２３と、クエリ実行部１２４とを有する。クエリ受付部１２２は、ＤＢ７０へのクエリを受け付ける。クエリプラン生成部１２３は、受け付けたクエリを実行するために必要なＤＢオペレーションを表す情報である処理ブロックを含むクエリプランを生成する。クエリ実行部１２４は、生成したクエリプランに基づいてクエリを実行し、そのクエリの実行において、ＤＢオペレーションを実行するためのタスクを動的に生成し、動的に生成された複数のタスクを並行して実行することで、多重で読み出し要求をＤＢ７０に発行する。例えば、クエリ実行部１２４は、クエリの実行において、（ａ）ＤＢオペレーションを実行するためのタスクを生成すること、（ｂ）生成されたタスクを実行することで、必要に応じてそのタスクに対応したＤＢオペレーションに必要なデータを読み出すためにＤＢへ読出し要求を発行すること、（ｃ）上記（ｂ）で実行されたタスクに対応したＮ番目のＤＢオペレーションの実行結果に基づき（Ｎ＋１）番目のＤＢオペレーションを実行する場合には、その実行結果に基づくタスクを新たに生成すること（Ｎは１以上の整数）、及び、（ｄ）その新たに生成したタスクについて上記（ｂ）及び上記（ｃ）を行うこと、を行い、上記（ｂ）及び（ｄ）において、２以上の実行可能なタスクが存在する場合には、それら２以上のタスクのうちの複数のタスクを並行して実行するようになっている。
【００２１】
ストレージ装置１５０は、複数のＨＤＤ（Hard Disk Drive）１５６と、それらＨＤＤ１５６に接続されたコントローラ１５４とを有する。コントローラ１５４は、ＬＵ５０に対して読み書きされるデータが一時的に記憶されるキャッシュメモリ（以下、ＣＭ）１６８を有する。複数のＨＤＤ１５６で２以上のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループが構成されていてもよい。ストレージ装置１００は、ＨＤＤ１５６に代えて又は加えて、ＳＳＤ（Solid State Device）のような他種の物理記憶デバイスを有してよい。ＲＡＩＤグループが２以上の他種の物理記憶デバイスで構成されてもよい。
【００２２】
ストレージ装置１５０が、計算機１００に複数（又は１つ）の論理ユニット（ＬＵ）５０を提供する。複数のＬＵ５０が、ＤＢ７０を記憶している。ＤＢ７０は、表７１と索引７２を含んでいる。
【００２３】
各ＬＵ５０は、複数（又は１つ）のＨＤＤ１５６に基づく論理記憶デバイスである。また、少なくともＬＵ５０が、仮想的なＬＵ、例えば、ストレージ装置１５０の外部のストレージ装置（図示せず）の記憶資源に基づくＬＵであってもよいし、Thin Provisioningに従うＬＵであってもよい。
【００２４】
１つのＬＵ５０に、計算機１００が使用する複数のパスが関連付けられる。それら複数のパスに、複数の論理デバイス６０がそれぞれ関連付けられる。ＤＢＭＳ１２０は、論理デバイス６０を通じて、ＬＵ５０が記憶するＤＢ７０からデータを読み出すことができる。本実施例では、ＬＵ＃１に、論理デバイスｓｄａ及びｓｄｃが関連付けられており、ＬＵ＃２に、論理デバイスｓｄｂ及びｓｄｄが関連付けられている。クエリ実行部１２４は、所望の論理デバイスが関連付けられているパスを使用して多重で読み出し要求を発行することができる。発行された読み出し要求は、ＯＳ１４０によりストレージ装置１５０に送信される。ＯＳ１４０（又は、ＤＢＭＳ１２０の下位で実行されるコンピュータプログラム）は、２以上の読み出し要求を１つの読み出し要求としてストレージ装置１５０に送信してもよい。
【００２５】
計算機１００からストレージ装置１５０に送信される読み出し要求には、読み出し元情報が関連付けられている。読み出し元情報は、ＬＵ５０における読み出し元領域を表す情報であり、例えば、ＬＵＮ（Logical Unit Number）（特に後述のホストＬＵＮ）とＬＢＡ（Logical
Block Address）を含む。ストレージ装置１５０のコントローラ１５４は、計算機１００から読み出し要求を受けた場合、その読み出し要求から特定される読み出し元領域に基づくＨＤＤ１５６からデータを読み出し、読み出したデータをＣＭ１６８に格納する。そして、コントローラ１５４は、ＣＭ１６８からそのデータを計算機１００に送信する。
【００２６】
ストレージ装置１５０のコントローラ１５４は、１つのパスを介して受信した読み出し要求の多重度が許容度以下の場合に、その１つのパスを介して受信した複数の読み出し要求に従う読み出しがシーケンシャルリードか否かを判定する。コントローラ１５４は、その判定の結果が肯定的の場合に、それら複数の読み出し要求で指定されたＬＢＡの先のＬＢＡからデータをＣＭ１６８に読み出す先読み処理を行うようになっている。
【００２７】
一方で、コントローラ１５４は、１つのパスを介して受信した読み出し要求の多重度が許容度を超えている場合には、その１つのパスを介して受信した複数の読み出し要求に従う読み出しがシーケンシャルリードであるとしてもそれを判定することができず、故に、上述の先読み処理を行うことができない。
【００２８】
そこで、本実施例では、同一のＬＵ５０に関連付けられる複数の論理デバイス６０が、リードパターンに応じて分類されている。具体的には、同一のＬＵ５０に関連付けられる論理デバイス６０として、シーケンシャルリード用の論理デバイス及びランダムリード用の論理デバイスが用意される。図１０の例では、論理デバイスsda及びsdbが、シーケンシャルリード用の論理デバイスであり、論理デバイスsdc及びsddが、ランダムリード用の論理デバイスである。
【００２９】
クエリ実行部１２４は、クエリプランを構成する処理ブロックの種類を基に、データ読み出しがシーケンシャルリードかランダムリードかを判定する。例えば、クエリ実行部１２４は、索引を使用しないで表をスキャンすることを表している処理ブロックについては、シーケンシャルリードと判定し、ＬＵ＃１内のデータを読み出すための読み出し要求の発行の際にはシーケンシャルリード用の論理デバイスｓｄａを選択し、論理デバイスｓｄａが関連付けられているパスを使用して読み出し要求を多重で発行する（シーケンシャルリードは、実線矢印で示される）。一方、クエリ実行部１２４は、索引をスキャンすること（及び、索引を使用して表をスキャンすること）を表している処理ブロックについては、ランダムリードと判定し、ＬＵ＃１内のデータを読み出すための読み出し要求の発行の際にはランダムリード用の論理デバイスｓｄｃを選択し、論理デバイスｓｄｃが関連付けられているパスを使用して読み出し要求を多重で発行する（ランダムリードは、破線矢印で示される）。
【００３０】
これにより、ストレージ装置１５０が１つのパスを介して受信する読み出し要求の多重度がストレージ装置１５０の許容度未満である可能性が高まる。これにより、シーケンシャルリードの際にストレージ装置１５０が先読み処理を行うことができる可能性、つまり、シーケンシャルリードの読み出し応答性能が向上する可能性が高まる。
【００３１】
なお、図１１Ａに示すように、同一のＬＵ５０にシーケンシャルリード用の論理デバイスが複数個関連付けられていてよい。これにより、シーケンシャルリードの際にストレージ装置１５０が先読み処理を行うことができる可能性が更に高まる。
【００３２】
また、図１１Ａに示すように、クエリ実行部１２４は、複数のシーケンシャルリード用の論理デバイスの中から使用頻度の少ないシーケンシャルリード用の論理デバイスを選択してよい。これにより、シーケンシャルリードの際にストレージ装置１５０が先読み処理を行うことができる可能性が更に高まる。
【００３３】
また、図１１Ｂに示すように、同一のＬＵ５０にランダムリード用の論理デバイスが複数個関連付けられていてよい。これにより、ランダムリードのための複数の読み出し要求が複数のパスに分散され、負荷分散が期待できる。
【００３４】
また、図１１Ｂに示すように、クエリ実行部１２４は、複数のランダムリード用の論理デバイスの中から使用頻度の少ないランダムリード用の論理デバイスを選択してよい。これにより、より効果の高い負荷分散が期待できる。
【００３５】
また、同一のＬＵ５０に関連付けられるシーケンシャルリード用の論理デバイスの数は、ストレージ装置１５０の許容度と、計算機１００から発行される読み出し要求の多重度の最大値とに基づいて決定された数でよい。その最大値は、ＤＢＭＳ１２０が発行する読み出し要求の多重度の最大値でもよいし、ＯＳ１４０から発行される読み出し要求の多重度の最大値でもよい。例えば、１つのＬＵ５０に関連付けられるシーケンシャルリード用の論理デバイスの数は、上記最大値を上記許容度で割ったときの商であってよい。上記のような観点で、１つのＬＵ５０に関連付けられるシーケンシャルリード用の論理デバイスの数が決定されるので、ストレージ装置１５０が先読み処理を行うことができる可能性を高めることができる。
【００３６】
例えば図１２に示すように、計算機１００のメモリ１１０に、ストレージ装置１５０の許容度（又はその許容度を特定するための情報）が記憶される。計算機１００は、ストレージ装置１５０の許容度と、計算機１００から発行される読み出し要求の多重度の最大値とに基づいて、１つのＬＵ５０に関連付けられる有効なシーケンシャルリード用の論理デバイスの数を制御する。有効なシーケンシャルリード用の論理デバイスの数の制御として、例えば、そのＬＵ５０への複数のパス（複数のシーケンシャルリード用の論理デバイスが関連付けられている複数のパス）のうちアクティブのパス（使用可能なパス）の数を制御することであってもよい、そのＬＵ５０へ関連付けるシーケンシャルリード用の論理デバイスそれ自体の数の制御であってもよい。図１２では、実線のパスが、アクティブであり、破線のパスが、インアクティブである。これにより、１つのＬＵ５０に関連付けられるシーケンシャルリード用の論理デバイスの数を制御することができる。
【００３７】
以下、本実施例を詳細に説明する。
【００３８】
図１は、一実施例に係るＤＢシステムの構成例を示した図である。
【００３９】
本実施例に係るＤＢシステムは、計算機システムの一例である。通信ネットワーク１８０及び１８２を介して、計算機１００とストレージ装置１５０とが接続される。計算機１００は、ストレージ装置１５０に格納されているＤＢのデータを管理するＤＢＭＳ１２０を実行する。通信ネットワーク１８０は、例えば、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）等のネットワークでよく、通信ネットワーク１８２は、ファイバチャネル等で構成されるネットワーク（例えばＳＡＮ（Storage Area Network））でよい。図１において、計算機１００及びストレージ装置１５０は、それぞれ１台のみ記載しているが、どちらとも複数台であってもよい。また、計算機１００とストレージ装置１５０は、異なる通信ネットワーク１８０及び１８２に代えて、１つの通信ネットワークを介して接続されてもよい。
【００４０】
計算機１００は、内部バス１０２で接続されたＣＰＵ（プロセッサ）１０４、Ｉ／Ｏ（Input/Output）デバイス１０６、記憶デバイス１０８、メモリ１１０、Ｉ／Ｆ（１）１１２（通信ネットワーク１８０とのインタフェース）、及び、Ｉ／Ｆ（２）１１４（通信ネットワーク１８２とのインタフェース）を有する。記憶デバイス１０８及びメモリ１１０の少なくとも一方には、ＤＢＭＳ１２０及びＯＳ１４０が格納され、ＣＰＵ１０４によって実行される。ＤＢＭＳ１２０は、外部（例えば計算機１００のクライアント計算機）からクエリを受け付けるクエリ受付部１２２と、そのクエリを基にクエリプランを表す情報１２８を生成するクエリプラン生成部１２３と、クエリを実行するクエリ実行部１２４とを有する。ＤＢＭＳ１２０は、ＤＢの管理に用いるＤＢ管理情報１２６と受付けたクエリのクエリプラン情報１２８とを保持する。ＯＳ１４０は、ＯＳ１４０上のデバイスとストレージ装置１５０上の論理的な記憶領域とを対応付けるＯＳ管理情報１４２を保持する。
【００４１】
ストレージ装置１５０は、コントローラ１５４と、複数のＨＤＤ１５６とを有し、それらは内部バス１５２によって接続される。なお、図１において、コントローラ１５４は、１台のみ記載されているが、複数台であってもよい。
【００４２】
コントローラ１５４は、例えば内部バス１５６で接続されたＩ／Ｆ（１）１６２（通信ネットワーク１８０とのインタフェース）、Ｉ／Ｆ（２）１６４（通信ネットワーク１８２とのインタフェース）、ＣＰＵ（プロセッサ）１６６、ＣＭ１６８、及びメモリ１７０を有する。メモリ１７０には、ストレージ装置１５０を制御する制御プログラム１７２が格納され、ＣＰＵ１６６によって実行される。制御プログラム１７２は、ストレージ装置１５０のＬＵとＨＤＤ１５６が有する物理的な記憶領域とを対応付けるストレージ管理情報１７４を保持する。２以上のＨＤＤ１５６でＲＡＩＤグループが構成されてもよい。
【００４３】
続いて、以下、前述した各種情報について詳細について説明する。
【００４４】
なお、本実施例において、ストレージ装置１５０のＬＵ構成やＯＳ側の論理デバイス構成、ＤＢの表や索引は、それぞれ定義済みであるとし、また、ＤＢのデータは配置済みであるものとする。
【００４５】
図２Ａは、ＤＢ管理情報１２６の構成例を示した図である。
【００４６】
ＤＢ管理情報１２６は、ＤＢのデータを配置するファイルに関する情報であるＤＢファイル情報２００、ＤＢのデータ領域に関する情報であるＤＢデータ領域情報２０２、ＤＢの表や索引といったスキーマの管理情報であるＤＢスキーマ管理情報２０４、及び、各スキーマの構成に関する情報であるＤＢスキーマ情報２０６を含む。
【００４７】
図２Ｂは、ＤＢファイル情報２００の構成例を示した図である。
【００４８】
ＤＢファイル情報２００は、ＤＢのデータを配置するＤＢファイルとＯＳ上の論理デバイスのマッピングに関する情報であり、ＤＢファイル毎にエントリを有する。各エントリは、ＤＢファイルを識別するためのファイルパスを登録するフィールド２２０、そのＤＢファイルのサイズ（ここでは一例としてバイト単位）を登録するフィールド２２２、及び、そのＤＢファイルを配置する論理デバイスの名称を登録するフィールド２２４を有する。
【００４９】
図２Ｃは、ＤＢデータ領域情報２０２の構成例を示した図である。ＤＢデータ領域情報２０２は、ＤＢのスキーマを配置するＤＢデータ領域とそのＤＢデータ領域が配置されるＤＢファイルのマッピングに関する情報であり、ＤＢデータ領域毎にエントリを有する。各エントリは、ＤＢデータ領域を識別するための識別子を登録するフィールド２４０、ＤＢデータ領域のサイズを登録するフィールド２４２、ＤＢデータ領域を構成するＤＢファイルのファイルパスを登録するフィールド２４４、ＤＢデータ領域を構成するＤＢファイルのアクセス用途を登録するフィールド２４６を有する。尚、１つのＤＢデータ記憶領域のエントリに複数のＤＢファイルを設定してもよい。
【００５０】
ＤＢＭＳ１２０は、アクセス用途２４６に“シーケンシャル”が設定されているＤＢファイルに対するアクセス（Ｉ／Ｏ）では、シーケンシャルアクセスだけを発行し、“ランダム”が設定されているＤＢファイルに対するアクセスでは、ランダムアクセスだけを発行し、“シーケンシャル・ランダム”が設定されているＤＢファイルに対するアクセスでは、シーケンシャルアクセスとランダムアクセスのどちらも発行することができる。ここで言う「アクセス」は、書き込み又は読み出しである。シーケンシャルアクセスを発行するとは、シーケンシャルアクセスのためのアクセス要求を発行することであり、ランダムアクセスを発行するとは、ランダムアクセスのためのアクセス要求を発行することである。
【００５１】
図３Ａは、ＤＢスキーマ管理情報２０４の構成例を示した図である。
【００５２】
ＤＢスキーマ管理情報２０４は、ＤＢの表や索引といったスキーマを管理する情報であり、スキーマ毎にエントリを有する。各エントリは、スキーマを識別するための識別子を登録するフィールド３００、そのスキーマの名称を登録するフィールド３０２、そのスキーマの種別を登録するフィールド３０４、そのスキーマが配置されるＤＢデータ領域の識別子を登録するフィールド３０６、及び、そのスキーマのデータサイズを登録するフィールド３０８を有する。
【００５３】
図３Ｂは、ＤＢスキーマ情報２０６の構成例を示した図である。
【００５４】
ＤＢスキーマ情報２０６は、ＤＢのスキーマの構成に関する情報であり、１つのスキーマ毎にＤＢスキーマ情報２０６が作られ、１つのデータ毎にエントリを有する。なお、ここでは、スキーマＴｂｌ０の構成例を示している。スキーマＴｂｌ０のＤＢスキーマ情報２０６の各エントリは、スキーマを識別するための識別子を登録するフィールド３２０、そのスキーマの名称を登録するフィールド３２２、１番目の要素である“ＦＲＯＭ＿ＩＤ”のデータを登録するフィールド３２４、２番目の要素である“ＴＯ＿ＩＤ”のデータを登録するフィールド３２６、及び、３番目の要素である“ＣＬＡＳＳ”のデータを登録するフィールド３２８を有する。
【００５５】
図３Ｃは、クエリプラン情報１２８の構成例を示した図である。
【００５６】
クエリプラン情報１２８は、クエリプラン生成部１２３によって生成されたクエリプランの情報を表し、１つの処理ブロック毎にエントリを有する。各エントリは、クエリを識別するための識別子を登録するフィールド３４０、その処理ブロックを識別するための識別子を登録するフィールド３４２、その処理ブロックの処理タイプを登録するフィールド３４４、その処理ブロックのアクセスパターンを登録するフィールド３４６、その処理ブロックがアクセスするスキーマの識別子を登録するフィールド３４８、その処理ブロックに繋がる左側（直前）の処理ブロックの識別子を登録するフィールド３５０、その処理ブロックに繋がる右側（直後）の処理ブロックの識別子を登録するフィールド３５２、その処理ブロックの検索条件を登録するフィールド３５４を有する。なお、フィールド３４６に登録する処理ブロックのアクセスパターンは“シーケンシャル”か“ランダム”かの２種類である。例えば、処理ブロックが索引を使用しない表スキャンの場合は“シーケンシャル”が登録され、索引スキャン及び索引を使用した表スキャンの場合は“ランダム”が登録される。
【００５７】
図４Ａは、ＯＳ管理情報１４２の構成例を示した図である。
【００５８】
ＯＳ管理情報１４０は、ＯＳ１４０内のデバイスの管理に関する情報であるデバイス管理情報４００、ＯＳ１４０内の論理デバイスに関する情報である論理デバイス情報４０２、及び、ＯＳ１４０内のボリュームグループに関する情報であるボリュームグループ情報４０４を含む。
【００５９】
図４Ｂは、デバイス管理情報４００の構成例を示した図である。
【００６０】
デバイス管理情報４００は、ＯＳ１４０が管理するデバイスと、ストレージ装置１５０のＬＵとのマッピングに関する情報であり、デバイス毎にエントリを有する。各エントリは、デバイスの名称を登録するフィールド４２０、そのデバイスのサイズ（容量）を登録するフィールド４２２、そのデバイスと対応するＬＵが配置されているストレージ装置１５０の識別子を登録するフィールド４２４、そのデバイスと対応するＬＵへのパスが張られているコントローラ１５４の識別子を登録するフィールド４２６、及び、そのデバイスと対応するＬＵのホストＬＵＮを登録するフィールド４２８を有する。
【００６１】
図５Ａは、論理デバイス情報４０２の構成例を示した図である。
【００６２】
論理デバイス情報４０２は、ＯＳ１４０内の論理デバイスとボリュームグループのマッピングに関する情報であり、論理デバイス毎にエントリを有する。各エントリは、論理デバイスの名称を登録するフィールド５００、その論理デバイスのサイズ（容量）を登録するフィールド５０２、及び、その論理デバイスが作られたボリュームグループの名称を登録するフィールド５０４を有する。
【００６３】
図５Ｂは、ボリュームグループ情報４０４の構成例を示した図である。
【００６４】
ボリュームグループ情報４０４は、ＯＳ１４０内のボリュームグループとデバイスのマッピングに関する情報であり、ボリュームグループ毎にエントリを有する。各エントリは、ボリュームグループの名称を登録するフィールド５２０、そのボリュームグループのサイズ（容量）を登録するフィールド５２２、そのボリュームグループを構成するデバイスファイルの名称を登録するフィールド５２４を有する。図示の通り、１つのボリュームグループのエントリに複数のデバイスが設定されてよい。
【００６５】
図６Ａは、ストレージ管理情報１７４の構成例を示した図である。
【００６６】
ストレージ管理情報１７４は、ストレージ装置１５０内の論理的な記憶領域を管理する情報である論理記憶領域管理情報６００、及び、ストレージ装置１５０内の物理的な記憶領域を管理する物理記憶領域管理情報６０２を含む。
【００６７】
図６Ｂは、論理記憶領域管理情報６００の構成例を示した図である。
【００６８】
論理記憶領域管理情報６００は、ＬＵのパス設定に関する情報であり、ＬＵ毎にエントリを有する。各エントリは、ＬＵを計算機１００に認識させるコントローラ１５４の識別子を登録するフィールド６２０、そのＬＵのホストＬＵＮ（計算機１００が認識するＬＵＮ）を登録するフィールド６２２、及び、そのＬＵのＬＵＮ（ストレージ装置１５０が認識するＬＵＮであって計算機１００には認識されないＬＵＮ）を登録するフィールド６２４を有する。
【００６９】
図６Ｃは、物理記憶領域管理情報６０２の構成例を示した図である。
【００７０】
物理記憶領域管理情報６０２は、ストレージ装置１５０内の論理的な記憶領域と物理的な記憶領域のマッピングに関する情報であり、ＬＵ毎にエントリを有する。各エントリは、ＬＵのＬＵＮを登録するフィールド６４０、そのＬＵの論理ページアドレスを登録するフィールド６４２、そのＬＵの論理ページアドレスの記憶領域に対応するＨＤＤの番号を登録するフィールド６４４、そのＬＵの論理ページアドレスの記憶領域に対応する物理ページアドレスを登録するフィールド６４６を有する。図示の通り、１つのＬＵのエントリに複数の論理ページアドレスと、それに対応するＨＤＤ番号、物理ページアドレスが設定されてよい。なお、論理ページとは、ＬＵにおける一記憶領域である。ＬＵは、複数の論理ページで構成されている。物理ページとは、ＨＤＤの一記憶領域である。
【００７１】
図７Ａは、ＤＢＭＳ１２０に投入されるクエリの一例を示した図であり、図７Ｂは、そのクエリのクエリプランを示した図である。尚、表“Ｔｂｌ０”の“ＦＲＭＯ＿ＩＤ”に索引“Ｉｄｘ０”が張られているものとする。
【００７２】
図７Ａに示すクエリ７００は、同一のデータに対してシーケンシャルリードとランダムリードが行われるクエリである。クエリ７００のクエリプラン７１０は、図７Ｂに示すように、表“Ｔｂｌ０”の“Ｔ１”へのスキャン部分が処理ブロック７１２と、同一の表“Ｔｂｌ０”の“Ｔ２”へのスキャン部分が処理ブロック７１４とを含み、それぞれの処理ブロックがネスト結合７１６で結合されて結果を返すというクエリプランである。処理ブロック７１２は“Ｔ１”の表スキャン（索引スキャンは無い）となり、そのリードパターンはシーケンシャルリードとなる。処理ブロック７１４は、索引“Ｉｄｘ０”を用いた“Ｔ２”の索引スキャンとなり、そのリードパターンはランダムリードとなる。
【００７３】
図８は、クエリ受付処理のフローチャートである。
【００７４】
クエリ受付部１２２は、ＤＢＭＳ１２０の起動後に処理を開始する（ステップ８００）。
【００７５】
クエリ受付部１２２は、外部とのコネクションを確立した後（ステップ８０２）、クエリ受付の待ち状態に入り、外部からクエリを受付けたか否かを判定する（ステップ８０４）。また、このクエリ受付待ち状態では、同時にＤＢＭＳ１２０が終了するかを判定し（ステップ８０６）、ＤＢＭＳ１２０が終了すると判定した場合は（ステップ８０６：Ｙｅｓ）、クエリ受付処理を終了する（ステップ８０８）。
【００７６】
ステップ８０４でクエリを受付けたと判定した場合は（ステップ８０４：Ｙｅｓ）、クエリ受付部１２２は、クエリ待ち状態から抜け、クエリプラン生成部１２３を実行する。クエリプラン生成部１２３は、受付けたクエリの内容を解析してクエリプラン情報１２８を作成する（ステップ８１０）。
【００７７】
続いて、クエリプラン生成部１２３はクエリ実行部１２４にクエリ実行を要求する（ステップ８１２）。
【００７８】
図９は、クエリ実行処理のフローチャートである。
【００７９】
クエリ実行部１２４は、クエリプラン生成部１２３からの要求を受けて、クエリ実行処理を開始する（ステップ９００）。なお、クエリ実行部１２４が実行するクエリ実行処理は、実行するクエリをレコードレベルで複数のタスクに分割し、各クエリ部分についてぞれぞれのタスクが並列に実行されてもよい。この場合、１つのクエリ部分について図９のフローチャートの処理が実行される。
【００８０】
クエリ実行部１２４は、クエリプラン情報１２８を参照し、実行する処理ブロックの情報を取得する（ステップ９０２）。
【００８１】
続いて、クエリ実行部１２４は、実行する処理ブロックのアクセススキーマＩＤ３４６をキーにしてＤＢスキーマ管理情報２０４をサーチし、そのアクセススキーマＩＤ３４６から識別されるスキーマのデータが格納されているＤＢデータ領域のＤＢデータ領域ＩＤ３０６を取得する（ステップ９０４）。
【００８２】
続いて、クエリ実行部１２４は、ステップ９０４で取得したＤＢデータ領域ＩＤ３０６をキーにしてＤＢデータ領域情報２０２をサーチし、そのＤＢデータ領域ＩＤ３０６から識別されるＤＢデータ領域が配置されているＤＢファイルのＤＢファイルパス２４４と、そのアクセス用途２４６とを取得する（ステップ９０６）。
【００８３】
続いて、クエリ実行部１２４は、ステップ９０６で取得したＤＢファイルパス２４４が複数あり、且つ、複数のＤＢファイルパス２４４に対応した複数のアクセス用途２４６が“シーケンシャル”と“ランダム”に分かれているか判定する（ステップ９０８）。
【００８４】
ステップ９０８の判定の結果が否定の場合は（ステップ９０８：Ｎｏ）、クエリ実行部１２４は、取得したＤＢファイルパス２４４から特定されるＤＢファイルに対する読み出し要求を発行する（ステップ９１０）。
【００８５】
ステップ９０８の判定の結果が肯定の場合は（ステップ９０８：Ｙｅｓ）、クエリ実行部１２４は、クエリプラン情報１２８を参照し、処理ブロックのアクセスパターンが“シーケンシャル”であるか判定する（ステップ９１２）。
【００８６】
ステップ９１２の判定の結果が否定の場合（処理ブロックのアクセスパターンが“ランダム”である）場合は（ステップ９１２：Ｎｏ）、クエリ実行部１２４は、アクセス用途が“ランダム”のＤＢファイルに読み出し要求を発行する（ステップ９１４）。
【００８７】
ステップ９１２の判定の結果が肯定の場合（処理ブロックのアクセスパターンが“シーケンシャル”である）場合は（ステップ９１２：Ｙｅｓ）、クエリ実行部１２４は、アクセス用途が“シーケンシャル”のＤＢファイルに読み出し要求を発行する（ステップ９１６）。
【００８８】
クエリ実行部１２４は、ステップ９１０、ステップ９１４及びステップ９１６のいずれかで読み出し要求を発行した後、クエリが終了したかを判定する（ステップ９１８）。ステップ９１８の判定の結果が肯定の場合は（ステップ９１８：Ｙｅｓ）、クエリ実行部１２４は、クエリ実行処理を終了する（ステップ９２０）。ステップ９１８の判定の結果が否定の場合は（ステップ９１８：Ｎｏ）、クエリ実行部１２４は、ステップ９０２から処理を継続する。
【００８９】
なお、ステップ９１０、ステップ９１４及びステップ９１６でクエリ実行部１２４が発行する読み出し要求はＤＢファイルではなくてよい。クエリ実行部１２４は、ＤＢファイル情報２００を参照して、対応する論理デバイスを指定した読み出し要求を発行してもよい。また、この読み出し要求はＯＳ１４０に対して行われ、読み出し要求を受付けたＯＳ１４０は、読み出し要求の内容（例えば、論理デバイス名、データのオフセット、データサイズ等）を基に、論理デバイス情報４０２、ボリュームグループ情報４０４及びデバイス管理情報４００を参照して、該当のデータが記憶されているＬＵを指定した読み出し要求（例えば、ＳＣＳＩコマンド）を発行する。例えば、クエリ実行部１２４が論理デバイス“Ｌｖｏｌ１０”に読み出し要求を行った際、ＯＳ１４０は、“Ｌｖｏｌ１０”をキーに論理デバイス情報４０２をサーチして、対応するボリュームグループ“ＶｏｌＧｒｏｕｐ１０”を特定してよい。そして、ＯＳ１４０は、“ＶｏｌＧｒｏｕｐ１０”をキーにボリュームグループ情報４０４をサーチして、対応するデバイスファイル（ここでは“／ｄｅｖ／ｓｄｄ０”と仮定）を特定してよい。ＯＳ１４０は、“／ｄｅｖ／ｓｄｄ０”をキーにデバイス管理情報４００をサーチして、読み出し要求の発行先のストレージ装置１５０のストレージ“０ｘ００２ａ１２８２”、コントローラ“０”、及びホストＬＵＮ“１０００”を特定し、特定された情報を基に読み出し要求をストレージ装置１５０に送信する。
【００９０】
また、“シーケンシャル”用途及び“ランダム”用途のＤＢファイルがそれぞれ複数用意されてよい。ＤＢＭＳ１２０が、それぞれのＤＢファイルへのアクセス発行状況（読み出し要求の発行頻度）をモニタリングするモニタリング部（図示せず）を有してよい。クエリ実行部１２４が、読み出し要求の発行先のＤＢファイルを選択する際、リードパターンに応じてアクセス発行頻度が低いＤＢファイルを選択し、選択したＤＢファイルに対する読み出し要求を発してよい。
【００９１】
また、１つの読み出し要求について、リードパターンが“シーケンシャル”の場合、典型的には、その読み出し要求で指定するアドレスの先のアドレスを指定した読み出し要求が発行されることになる。このため、クエリ実行部１２４は、ステップ９１２で処理ブロックのアクセスパターンが“シーケンシャル”であると判定してステップ９１６で読み出し要求を発行する際、図９に示すように、発行する読み出し要求のデータサイズを大型化（例えば、４ＫＢｙｔｅのアクセス要求を１ＭＢｙｔｅのアクセス要求に変更）して発行してもよい。つまり、複数の読み出し要求が１つの読み出し要求にマージされてよい。これにより、リードパターンが“シーケンシャル”となるデータの読み出しでは、その先のデータがＣＭ１６８（もしくはＤＢＭＳ１２０内部のデータバッファ（図示せず））に予め読み出されていることになり、読み出し応答性能が向上する。なお、その読み出し要求のデータサイズ大型化は、ＯＳ１４０やＩ／Ｆ（１）やＩ／Ｆ（２）のデバイスドライバによって行われてもよい。
【００９２】
以上により、本実施例では、ストレージ装置１５０のＬＵ１つに対して、シーケンシャルリード用とランダムリード用の２種類の論理デバイスが関連付けられる。ＤＢＭＳ１２０は、クエリを実行する際、実行する各処理ブロックのアクセスパターンに応じた論理デバイスを選択する。これにより、１つのパスには、シーケンシャルリードのみの多重化された読み出し要求か、ランダムリードのみの多重化された読み出し要求が送信される。このため、ＤＢＭＳ１２０がシーケンシャルリードとランダムリードが混在するクエリを実行しても、ストレージ装置１５０が先読み処理を行える可能性が高く、故に、読み出し応答性能の向上する可能性が高い。また、シーケンシャルリード用の論理デバイスを複数用意しておくことで、ＤＢＭＳ１２０が、シーケンシャルリードだけとなるクエリを実行した場合でも、ストレージ装置１５０が先読み処理を行える可能性が高くなる。
【００９３】
以上、一実施例を説明したが、本発明は、その実施例に限られない。
【００９４】
例えば、計算機１００は、データの読み出し元のアドレスが連続の場合にシーケンシャルリードと判定し、データの読み出し元のアドレスが非連続の場合にランダムリードと判定してよい。
【００９５】
また、例えば、１つのＬＵ５０に関連付けられる複数の論理デバイスは、シーケンシャルリード用の論理デバイスとランダムリード用の論理デバイスのうちの少なくとも１つに代えて又は加えて、他のアクセス用途に対応した論理デバイス、例えば、アクセス数（例えば読み出し数）重視用の論理デバイスと、応答時間重視用の論理デバイスとを含んでよい。ここで言う「アクセス数」は、単位時間（例えば１秒間）あたりのアクセス数（例えば読み出し数）でよい。また、「応答時間」は、１つのアクセス要求（例えば読み出し要求）を発行してからストレージ装置から応答を受信するまでの時間でよい。１つのＬＵに関連付けられる複数の論理デバイスに、アクセス数重視用の論理デバイスと応答時間重視用の論理デバイスのうち少なくとも一方が複数含まれてもよい。クエリ実行部１２４は、単位時間あたりのアクセス数を重視するパターンと、応答時間を重視するパターンかを判定する。この判定は、クエリプラン（例えば実行対象の処理ブロックの種類）を基に行われてもよい。
【００９６】
例えば、クエリ実行部１２４は、論理デバイス毎に使用頻度を管理してもよい。「使用頻度」は、単位時間あたりに読み出し要求の送信のために使用された回数（例えばアクセス要求のキューの長さ）でよく、ここで言う「使用」は、ライトとリードのうちリードのみであってもよいし両方であってもよい。メモリ１１０が、論理デバイス毎の使用頻度を表す管理情報を記憶し、その管理情報が、クエリ実行部１２４によって更新されてよい。クエリ実行部１２４は、アクセス用途が、単位時間あたりのアクセス数を重視するパターンであると判定した場合、アクセス数重視用の論理デバイスを選択し、アクセス用途が、応答時間を重視するパターンであると判定した場合、応答時間重視用の論理デバイスを選択してよい。ここで、アクセス数重視用の論理デバイスは、アクセス先のＬＵに関連付けられた複数の論理デバイスのうち、使用頻度が相対的に多い（アクセス要求のキューが相対的に長い）論理デバイスでよく、応答時間重視用の論理デバイスは、アクセス先のＬＵに関連付けられた複数の論理デバイスのうち、使用頻度が相対的に少ない（アクセス要求のキューが相対的に短い）論理デバイスでよい。
【００９７】
また、例えば、クエリ実行部１２４は、論理デバイス毎に応答性能を管理してもよい。ここで、「応答性能」は、アクセス応答性能であり、論理デバイスの基になっているハードウェア（例えば通信インタフェースデバイスやストレージ装置）の性能に依存する。メモリ１１０が、論理デバイス毎の応答性能を表す管理情報を記憶してよい。クエリ実行部１２４は、アクセス用途が、単位時間あたりのアクセス数を重視するパターンであると判定した場合、アクセス数重視用の論理デバイスを選択し、アクセス用途が、応答時間を重視するパターンであると判定した場合、応答時間重視用の論理デバイスを選択してよい。ここで、アクセス数重視用の論理デバイスは、アクセス先のＬＵに関連付けられた複数の論理デバイスのうち、応答性能が相対的に低い論理デバイスでよく、応答時間重視用の論理デバイスは、アクセス先のＬＵに関連付けられた複数の論理デバイスのうち、応答性能が相対的に高い論理デバイスでよい。
【００９８】
また、例えば、計算機１００は、論理デバイスの特性に関する情報として、その論理デバイスに関連付けられたストレージ装置のコントローラや記憶装置といったハードウェアに関する情報をストレージ装置から取得し、クエリ実行部１２４がクエリを実行する際、それらの情報に基づいて論理デバイスを選択しても良い。ここで、ストレージ装置から取得する情報とは、例えば記憶装置のアクセス性能に関する情報である。例えば、論理デバイスＡに関連付けられた記憶装置のアクセス性能が論理デバイスＢに関連付けられた記憶装置よりも良い場合において、クエリ実行部１２４が応答時間重視の処理を行う際は論理デバイスＡを選択してアクセスを行う。
【００９９】
ＤＢＭＳの処理内容（例えばクエリプラン）によっては、個々の読み出し要求について応答は遅くても単位時間あたりの読み出し数を増やしたい第１の場合と、１つの読み出し要求の応答が速い方がよい第２の場合がある。第２の場合では、応答性能（ハードウェア性能）が相対的に低い論理デバイス又は負荷が相対的に高い論理デバイスが読み出し要求の発行の際に選択されてしまうと、ＤＢＭＳの性能への影響が、第１の場合よりも高いと考えられる。これらの変形例によれば、そのような問題を回避することが期待できる。
【０１００】
また、実施例及び変形例の説明において、読み出し要求を発行するエンティティはＤＢＭＳであるが、ＤＢＭＳとは別種のコンピュータプログラムが計算機によって実行される場合にも、上記実施例及び変形例の少なくとも１つを適用することができる。例えば、クエリに代えてデータ処理要求を計算機が受けて（例えば、入力デバイス又は遠隔の計算機からデータ処理要求を受けて）、計算機のプロセッサは、そのデータ処理要求を基にアクセス用途を判定することができる。
【０１０１】
また、実施例及び変形例の説明において、アクセス用途の判定は、受け付けたクエリのクエリプランに沿って処理ブロック毎に行われる。しかし、ＤＢＭＳ１２０（例えば、ＤＢＭＳ１２０における情報受付部（図示せず）が、外部から、アクセス用途に関する情報（アクセス用途情報）をクエリ単位で受けてよい。ここで言う「外部」は、例えば、クエリを投入する計算機、或いは、ＤＢＭＳの上位のプログラム（例えばアプリケーションプログラム）である。ＤＢＭＳ１２０（例えばクエリ実行部１２４）が、クエリ単位のアクセス用途情報を基に、クエリ単位でアクセス用途の判定を行ってよい。例えば、上記情報受付部は、これから実行されようとしているクエリのアクセス用途が単位時間あたりのアクセス数重視であれば、そのクエリのアクセス用途情報をクエリ実行部１２４に予め与え、クエリ実行部１２４が、そのクエリを実行する際に、与えられた情報から単位時間あたりのアクセス数重視であることを特定し、そのクエリの実行において、単位時間あたりのアクセス数重視用の論理デバイスを選択してアクセス要求を発行してよい。
【０１０２】
また、実施例及び変形例の説明において、図１３に示すような計算機システムが適用されてもよい。
【０１０３】
アプリケーションサーバ（以下、ＡＰサーバ）３５０２は、ＤＢＭＳ１２０が動作する計算機（例えばＤＢサーバ）１００に、通信ネットワーク３５１２を介して通信できるように接続されている。また、計算機１００は、ストレージ装置１５０に、通信ネットワーク１８０及び１８２を介して通信できるように接続されている。ユーザ端末（クライアント端末）３５０１は、ＡＰサーバ３５０２に、通信ネットアーク３５１１を介して通信できるように接続されている。計算機１００は、ＤＢ７０を管理するＤＢＭＳ１２０を実行する。ストレージ装置１５０は、ＤＢ７０を格納する。ＡＰサーバ３５０２は、計算機１００で実行されるＤＢＭＳ１２０に対してクエリを発行するＡＰ（アプリケーションプログラム）を実行する。ユーザ端末３５０１は、ＡＰサーバ３５０２で実行されるＡＰに要求を出す。なお、ユーザ端末３５０１、又は、ＡＰサーバ３５０２は、複数存在しても良い。
【０１０４】
ＡＰサーバ管理端末３５０３は、通信ネットワーク３５１４を介してＡＰサーバ３５０２に接続されている。計算機管理端末（例えばＤＢサーバ管理端末）３５０４は、通信ネットワーク３５１５を介して計算機１００に接続されている。ストレージ管理端末３５０５は、通信ネットワーク３５１６を介してストレージ装置１５０に接続されている。ＡＰサーバ管理端末３５０３は、ＡＰサーバ３５０２を管理する端末である。計算機管理端末３５０４は、計算機１００を管理する端末である。ストレージ管理端末３５０５は、ストレージ装置１５０を管理する端末である。計算機管理者又はユーザは、計算機管理端末３５０４から、ＤＢＭＳ１２０に関する設定を行っても良い。なお、管理端末３５０３〜３５０５のうちの少なくとも二つが共通（一体）であっても良い。また、通信ネットワーク３５１１、３５１２、３５１４、３５１５、３５１６、及び３００のうちの少なくとも二つが共通（一体）であっても良い。
【０１０５】
図１３に示すような計算機システムでは、例えば、下記の通り処理が実行される。
（Ｓ１２１）ユーザ端末３５０１は、ＡＰサーバ３５０２に要求（以下、ユーザ要求）を発行する。
（Ｓ１２２）ＡＰサーバ３５０２は、Ｓ１２１で受信したユーザ要求に従いクエリを生成する。そして、生成したクエリを計算機１００に発行する。
（Ｓ１２３）計算機１００は、ＡＰサーバ３５０２からのクエリを受け付け、受け付けたクエリを実行する。計算機１００は、受け付けたクエリの実行において必要なデータ入出力要求（例えばデータ読出し要求）をストレージ装置１５０に発行する。計算機１００は、一つのクエリの実行において、複数のデータ入出力要求を並行して発行することがある。そのため、計算機１００は、一つのクエリの実行において、Ｓ１２３の要求を複数回並行して行うことがある。
（Ｓ１２４）ストレージ装置１５０は、Ｓ１２３で発行されたデータ入出力要求について、計算機１００に応答する。ストレージ装置１５０は、Ｓ１２４の応答を複数回並行して行うことがある。
（Ｓ１２５）計算機１００は、クエリの実行結果を生成し、ＡＰサーバ３５０２に送信する。
（Ｓ１２６）ＡＰサーバ３５０２は、クエリの実行結果を受信する。そして、該実行結果に従う、Ｓ１２１で受信したユーザ要求に対する回答を、ユーザ端末３５０１に送信する。
【０１０６】
なお、ＡＰサーバ３５０２に発行されるユーザ要求、又は、計算機へ発行されるクエリは、同時に複数あっても良い。
【符号の説明】
【０１０７】
１００…計算機、１２０…ＤＢＭＳ、１２２…クエリ受付部、１２４…クエリ実行部、１２６…ＤＢ管理情報、１２８…クエリプラン情報、１４０…ＯＳ、１４２…ＯＳ管理情報、１５０…ストレージ装置、１５４…コントローラ、１５６…ＨＤＤ、１７２…制御プログラム、１７４…ストレージ管理情報、１８０、１８２…通信ネットワーク
【図１】
0005999536.tif 000002
【図２Ａ】
0005999536.tif 000003
【図２Ｂ】
0005999536.tif 000004
【図２Ｃ】
0005999536.tif 000005
【図３Ａ】
0005999536.tif 000006
【図３Ｂ】
0005999536.tif 000007
【図３Ｃ】
0005999536.tif 000008
【図４Ａ】
0005999536.tif 000009
【図４Ｂ】
0005999536.tif 000010
【図５Ａ】
0005999536.tif 000011
【図５Ｂ】
0005999536.tif 000012
【図６Ａ】
0005999536.tif 000013
【図６Ｂ】
0005999536.tif 000014
【図６Ｃ】
0005999536.tif 000015
【図７Ａ】
0005999536.tif 000016
【図７Ｂ】
0005999536.tif 000017
【図８】
0005999536.tif 000018
【図９】
0005999536.tif 000019
【図１０】
0005999536.tif 000020
【図１１Ａ】
0005999536.tif 000021
【図１１Ｂ】
0005999536.tif 000022
【図１２】
0005999536.tif 000023
【図１３】
0005999536.tif 000024