(57)【要約】【課題】各データベースサーバへのＳＱＬの各処理フェーズ実行時の負荷のアンバランスを改善すること。【解決手段】管理コンピュータが、入力された問い合わせ要求を、並列に実行することができる単位である処理フェーズに分け、処理フェーズを実行するために要するリソースコストを計算し、データベースへのアクセス権をもとに処理フェーズを論理的なコンピュータに割り当て、各論理的なコンピュータに割り当てられた処理フェーズのリソースコストに応じて、各論理的なコンピュータのリソース割当率を計算し、そのリソース割当率に応じたリソース割当量に相当する前記物理的なコンピュータの割り当て可能なリソースを各論理的なコンピュータに割り当てる。【選択図】図１
2008123040.tif 000002
【特許請求の範囲】
【請求項１】
物理的なコンピュータ上でプログラムとして実行されることにより構成される複数の論理的なコンピュータが、ストレージに格納されるデータベースに対する問い合わせ要求を実行するときに使用する前記物理的なコンピュータのリソースを割り当てる管理コンピュータによるリソース割当方法であって、
入力された問い合わせ要求を、並列に実行することができる単位である処理フェーズに分け、
前記処理フェーズのフェーズ種別ごとに、前記論理的なコンピュータの処理内容、および、その処理内容を実行するのに要するリソースコストを示すコストマスタ情報を格納する記憶手段を参照して、前記入力された問い合わせ要求の前記処理フェーズを実行するために要するリソースコストを計算し、
前記論理的なコンピュータの前記データベースへのアクセス権をもとに、各前記論理的なコンピュータに割り当てられた前記処理フェーズのリソースコストを各前記論理的なコンピュータから受信して記憶手段に格納し、
前記記憶手段に格納されたリソースコストを参照し、各前記論理的なコンピュータに割り当てられた前記処理フェーズのリソースコストを、全ての前記論理的なコンピュータに割り当てられた前記処理フェーズのリソースコストの総和で除算することで、各前記論理的なコンピュータのリソース割当率を計算し、
前記各論理的なコンピュータに割り当てられている前記物理的なコンピュータのリソースを、前記計算されたリソース割当率に応じて変更すること
を特徴とするリソース割当方法。
【請求項２】
前記管理コンピュータは、前記各論理的なコンピュータに割り当てられている前記物理的なコンピュータのＣＰＵを、前記計算されたリソース割当率に応じて変更することを特徴とする請求項１に記載のリソース割当方法。
【請求項３】
前記管理コンピュータは、前記各論理的なコンピュータに割り当てられている前記物理的なコンピュータのメモリを、前記計算されたリソース割当率に応じて変更することを特徴とする請求項１に記載のリソース割当方法。
【請求項４】
前記管理コンピュータは、１つの前記論理的なコンピュータが、１つの前記データベースに対して占有的にアクセスできるシェアードナッシング方式の前記データベースへのアクセス権に応じて、各前記論理的なコンピュータに前記処理フェーズを割り当てることを特徴とする請求項１ないし請求項３のいずれか１項に記載のリソース割当方法。
【請求項５】
前記管理コンピュータは、１つの前記論理的なコンピュータが、全ての前記データベースに対して共用的にアクセスできるシェアードディスク方式の前記データベースへのアクセス権に応じて、各前記論理的なコンピュータに前記処理フェーズを割り当てることを特徴とする請求項１ないし請求項３のいずれか１項に記載のリソース割当方法。
【請求項６】
前記管理コンピュータは、前記処理フェーズを早期に完了した前記論理的なコンピュータのリソース割当率を０に減少し、減少分のリソース割当率を他の前記論理的なコンピュータに再割当することで、前記各論理的なコンピュータに割り当てられている前記物理的なコンピュータのリソースを、前記再割当されたリソース割当率に応じて変更することを特徴とする請求項１ないし請求項５のいずれか１項に記載のリソース割当方法。
【請求項７】
請求項１ないし請求項６のいずれか１項に記載のリソース割当方法を、コンピュータに実行させるためのリソース割当プログラム。
【請求項８】
物理的なコンピュータ上でプログラムとして実行されることにより構成される複数の論理的なコンピュータが、ストレージに格納されるデータベースに対する問い合わせ要求を実行するときに使用する前記物理的なコンピュータのリソースを割り当てる管理コンピュータであって、
入力された問い合わせ要求を、並列に実行することができる単位である処理フェーズに分ける問い合わせ要求解析部と、
前記処理フェーズのフェーズ種別ごとに、前記論理的なコンピュータの処理内容、および、その処理内容を実行するのに要するリソースコストを示すコストマスタ情報を格納する記憶手段を参照して、前記入力された問い合わせ要求の前記処理フェーズを実行するために要するリソースコストを計算するリソースコスト計算部と、
前記論理的なコンピュータの前記データベースへのアクセス権をもとに、各前記論理的なコンピュータに割り当てられた前記処理フェーズのリソースコストを各前記論理的なコンピュータから受信して記憶手段に格納するリソースコスト集計部と、
前記記憶手段に格納されたリソースコストを参照し、各前記論理的なコンピュータに割り当てられた前記処理フェーズのリソースコストを、全ての前記論理的なコンピュータに割り当てられた前記処理フェーズのリソースコストの総和で除算することで、各前記論理的なコンピュータのリソース割当率を計算し、
前記各論理的なコンピュータに割り当てられている前記物理的なコンピュータのリソースを、前記計算されたリソース割当率に応じて変更するコンピュータリソース管理部と、
を有することを特徴とする管理コンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リレーショナルデータベース管理システムに適したリソース割当方法、リソース割当プログラム、および、管理コンピュータに関する技術である。
【背景技術】
【０００２】
ＤＢＭＳ（DataBase Management System：データベース管理システム）は、データベースのデータに対する問い合わせに応えるシステムである。特に、データベースが表形式であるＲＤＢＭＳ（Relational DataBase Management System）が一般的である。データに対する問い合わせを記述した言語としては、ＳＱＬ（Structured Query Language）がよく使用される。
【０００３】
多くの問い合わせに対応するために、問い合わせの処理時間を短縮化することが求められている。そこで、従来は、問い合わせの処理を複数のフェーズに分け、各処理フェーズを複数のノード（計算機資源）に分配して、パイプライン処理など並列的な処理を行っていた。
【０００４】
なお、処理フェーズをどのノードに分配するかを決定する分配アルゴリズムが重要である。例えば、非特許文献１に記載された技術は、ＤＢＭＳのディクショナリに保管された、処理対象となる問い合わせに関する各種統計情報を基にして、各処理フェーズを分配していた。
【非特許文献１】Joel L. Wolf、John Turek、 Ming-Syan Chen and Philip S. Yu著、“A Hierarchical Approach to Parallel Multiquery Scheduling”、IEEE Transactions on Parallel and Distributed Systems、 6(6):578--590、 June 1995.
【発明の開示】
【発明が解決しようとする課題】
【０００５】
複数のサーバで構成するＤＢＭＳとしては、シェアードディスク方式とシェアードナッシング方式がある。シェアードディスク方式は、問い合わせを行う全てのサーバから全てのディスクにアクセスが可能である。一方、シェアードナッシング方式は、各サーバに独立して属するディスクにのみアクセスが可能である。
【０００６】
分配アルゴリズムの精度は、ディスクにアクセスするＤＢサーバのリソース（ＣＰＵおよびメモリ）の利用効率に大きく影響する。例えば、処理分配がうまくいかず、特定のＤＢサーバに処理が集中してしまうと、他のＤＢサーバは処理待ちとなってしまう。つまり、リソースのアンバランスが発生してしまい、ＤＢサーバのリソースを有効利用できない。特に、シェアードナッシング方式は、処理待ちとなるＤＢサーバが、アクセス対象のディスクを占有するため、リソースのアンバランスが多く発生する。
【０００７】
図１２は、ＳＱＬの処理フェーズの実行例を示す説明図である。図１２（ａ）のＳＱＬ例は、処理フェーズに分割され、図１２（ｂ）に示すように各ＤＢサーバに分配され、実行される。
【０００８】
図１２（ａ）のＳＱＬ例は、以下に示す６つの処理フェーズに分割される。なお、この処理フェーズの順序は、実行する順序を示す。
・Ｔ１〜Ｔ４のスキャン：「Ｔ１，Ｔ２，Ｔ３，Ｔ４」から
・Ｔ１の条件評価：「Ｔ１．Ｃ１＝’ＤＢ’」から
・Ｔ３の条件評価：「Ｔ３．Ｃ１＜＞’ＡＰ’」から
・Ｔ１，Ｔ２の結合：「Ｔ１．Ｃ１＝Ｔ２．Ｃ１」から
・Ｔ３，Ｔ４の結合：「Ｔ３．Ｃ１＝Ｔ４．Ｃ１」から
・Ｔ１，Ｔ２とＴ３，Ｔ４の結合：「Ｔ１，Ｔ２，Ｔ３，Ｔ４」から
【０００９】
ＤＢサーバ「１」、ＤＢサーバ「２」、ＤＢサーバ「３」、および、ＤＢサーバ「４」はそれぞれ異なる筐体のＤＢサーバである。各ＤＢサーバには、互いに同じ量のリソース（ＣＰＵおよびメモリ）が割り当てられており、その割り当て量は、時間が経過しても変更されない。
【００１０】
ＳＱＬ処理フェーズ（１）を実行する際、各ＤＢサーバのＣＰＵの能力は均等であり、「スキャン」という処理フェーズの種別も同じである。しかし、処理フェーズの対象データであるＴ１，Ｔ２，Ｔ３，Ｔ４という各データのデータ量にばらつきがある。よって、各ＤＢサーバがスキャンを終了する時刻にもばらつきが生じる。
【００１１】
よって、処理を早期に完了してしまったＤＢサーバ「２」およびＤＢサーバ「４」には、まだ処理を続けているＤＢサーバ「１」およびＤＢサーバ「３」の処理時間（図では実線矢印表示）と同期するため、ＳＱＬ処理を実行しない空き時間（図では破線表示）が発生する。よって、この空き時間のために、ＤＢサーバ「２」およびＤＢサーバ「４」のリソースの利用効率が悪いものとなる。
【００１２】
ＳＱＬ処理フェーズ（２）を実行する際にも同様に、ＳＱＬ処理フェーズ（２）を実行しないＤＢサーバ「２」、および、ＤＢサーバ「４」のＣＰＵは使用しないため、各ＤＢサーバの稼働時間の総和に対するＳＱＬを実行する時間の比率は５０％であり、効率が悪い。
【００１３】
ＳＱＬ処理フェーズ（３）を実行する際、「Ｔ１とＴ２の結合」、および、「Ｔ３とＴ４の結合」は最初に割り当てたＣＰＵのみで実行し、ＳＱＬ処理フェーズ（３）を実行しないＤＢサーバ「２」、および、ＤＢサーバ「４」のＣＰＵは使用しないため、ＣＰＵの使用効率は５０％である。そして、「Ｔ３とＴ４の結合」を完了した後では、ＤＢサーバ「２」のＣＰＵも使用しないため、ＣＰＵの使用効率は２５％であり、効率が悪い。
【００１４】
ＳＱＬ処理フェーズ（４）を実行する際、「Ｔ１、Ｔ２とＴ３、Ｔ４の結合」はＤＢサーバ「２」でのみ実行され、他のＤＢサーバ「１」、ＤＢサーバ「３」、および、ＤＢサーバ「４」のＣＰＵは使用されない。よって、ＣＰＵの使用効率は２５％であり、効率が悪い。
【００１５】
そこで、本発明は、前記した問題を解決し、各データベースサーバ（論理的なコンピュータ）へのＳＱＬの各処理フェーズ実行時の負荷のアンバランスを改善することを主な目的とする。
【課題を解決するための手段】
【００１６】
前記課題を解決するために、本発明は、物理的なコンピュータ上でプログラムとして実行されることにより構成される複数の論理的なコンピュータが、ストレージに格納されるデータベースに対する問い合わせ要求を実行するときに使用する前記物理的なコンピュータのリソースを割り当てる管理コンピュータによるリソース割当方法であって、入力された問い合わせ要求を、並列に実行することができる単位である処理フェーズに分け、前記処理フェーズのフェーズ種別ごとに、前記論理的なコンピュータの処理内容、および、その処理内容を実行するのに要するリソースコストを示すコストマスタ情報を格納する記憶手段を参照して、前記入力された問い合わせ要求の前記処理フェーズを実行するために要するリソースコストを計算し、前記論理的なコンピュータの前記データベースへのアクセス権をもとに、各前記論理的なコンピュータに割り当てられた前記処理フェーズのリソースコストを各前記論理的なコンピュータから受信して記憶手段に格納し、前記記憶手段に格納されたリソースコストを参照し、各前記論理的なコンピュータに割り当てられた前記処理フェーズのリソースコストを、全ての前記論理的なコンピュータに割り当てられた前記処理フェーズのリソースコストの総和で除算することで、各前記論理的なコンピュータのリソース割当率を計算し、前記各論理的なコンピュータに割り当てられている前記物理的なコンピュータのリソースを、前記計算されたリソース割当率に応じて変更することを特徴とする。その他の手段は、後記する。
【発明の効果】
【００１７】
本発明によれば、ＳＱＬの処理フェーズ単位でリソース割当率を変更することによって、各データベースサーバ（論理的なコンピュータ）へのＳＱＬの各処理フェーズ実行時の負荷のアンバランスを改善することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の一実施形態であるＤＢＭＳについて、図面を参照しながら説明する。
【００１９】
図１は、ＤＢＭＳ全体を示す構成図である。ＤＢＭＳは、データベースを使用する為の指示情報であるＳＱＬ要求（問い合わせ要求）を入力し、データベースの内容を表示する為の端末装置４１、端末装置４１のＳＱＬ要求部４１ａからＳＱＬ要求を受け付けるコンピュータ４２、コンピュータ４２からの指示に従いデータベース格納領域６０を制御するコンピュータ５１を含めて構成される。データベース格納領域６０は、磁気記憶装置などにより構成される。
【００２０】
コンピュータ４２（管理コンピュータ）は、ＣＰＵ４３ａ、通信制御装置４４ａ、および、メモリ４５を備える。メモリ４５には、ＯＳ４６が搭載されている。メモリ４５上には、ＯＳ４６上で稼動する管理サーバ７０が搭載され、ＣＰＵ４３ａを用いて稼動している。管理サーバ７０は、リソースコスト集計部４８、サーバリソース管理部４９（コンピュータリソース管理部）、および、ＳＱＬ解析部５０を備える。端末装置４１は、通信制御装置４４ａによってネットワークを介して、管理サーバ７０にＳＱＬ要求を送信する。
【００２１】
管理サーバ７０は、前記したリソースコスト集計部４８、サーバリソース管理部４９、ＳＱＬ解析部５０、の他に、サーバリソース管理テーブル７１０、処理フェーズ管理テーブル７２０、および、コストマスタテーブル７３０（コストマスタ情報を格納する記憶手段）を備える。なお、管理サーバ７０は、コンピュータ５１の各ＤＢサーバのいずれかが代行してもよい。
【００２２】
コンピュータ５１（物理的なコンピュータ）は、ＣＰＵ４３、通信制御装置４４、および、メモリ５３を備える。メモリ５３にはＯＳ４６が置かれている。各ＤＢサーバ（ＤＢサーバ「１」５４、ＤＢサーバ「２」５７、ＤＢサーバ「３」５８、および、ＤＢサーバ「４」５９）は、物理的な筐体ではなく、仮想サーバ（論理的なコンピュータ）である。コンピュータ５１のサーバ仮想化部５２は、各ＤＢサーバに対して、リソースであるＣＰＵ４３およびメモリ５３を割り当てる。これにより、各ＤＢサーバは、サーバ仮想化部５２によって割り当てられたリソースを用いて稼動する。なお、メモリ４５およびメモリ５３は、例えば、フラッシュメモリ、シリコンメモリなどにより実現される。
【００２３】
なお、仮想サーバは、１つの物理的なコンピュータを分割する事で、複数の論理的なコンピュータに見せかけるＬＰＡＲ（Logical Partition）技術により、実現される。物理的なコンピュータは、プログラムを実行することで、複数の論理的なコンピュータを構成する。論理的なコンピュータは、処理を実行するために物理的なコンピュータのリソース（ＣＰＵおよびメモリ）を利用する。なお、ＬＰＡＲを実現するソフトウェアは、例えば、VMware社のVMware Serverが挙げられる。
【００２４】
また、各ＤＢサーバは、データベース格納領域６０と直接接続されており、直接接続の関係を有するＤＢサーバのみが、接続先のデータベース格納領域６０へのアクセス権を有するシェアードナッシング方式である。一方、全てのＤＢサーバが、データベース格納領域６０へのアクセス権を有するシェアードディスク方式としてもよい。各ＤＢサーバは、それぞれリソースコスト計算部５５、および、ＳＱＬ実行部５６を備えている。
【００２５】
図２は、ＤＢＭＳのＳＱＬ処理に関する構成要素を示す構成図である。図１を適宜参照して、この構成図を説明する。
【００２６】
リソースコスト集計部４８は、各ＤＢサーバから送信されたＣＰＵコスト、および、メモリコストを集計する。そして、リソースコスト集計部４８は、サーバリソース管理テーブル７１０に、システム全体の全ＣＰＵコスト、全メモリコスト、各ＤＢサーバのＣＰＵコスト、メモリコスト、全ＣＰＵコストに占めるＣＰＵコストの割合、全メモリコストに占めるメモリコストの割合を設定する。
【００２７】
サーバリソース管理部４９は、メモリ上のサーバリソース管理テーブル７１０を参照して、各ＤＢサーバの全ＣＰＵコストに占めるＣＰＵコストの割合、全メモリコストに占めるメモリコストの割合を元に、各ＤＢサーバのＣＰＵ４３およびメモリ５３の割り当てをサーバ仮想化部５２に指示する。サーバ仮想化部５２は、指示に従って、ＤＢサーバごとにＣＰＵ４３およびメモリ５３を割り当てる。
【００２８】
ＳＱＬ要求部４１ａは、ユーザにＳＱＬ要求を入力させる。ＳＱＬ要求部４１ａは、ＳＱＬ解析部５０に対して、入力されたＳＱＬ要求を通知する。
【００２９】
ＳＱＬ解析部５０は、ＳＱＬ要求部４１ａから発行されたＳＱＬ要求を構文解析する。構文解析とは、例えば、ＳＱＬの字句解析である。そして、ＳＱＬ解析部５０は、ＳＱＬ要求の処理を複数ノードで並列に処理するために、複数の処理フェーズに分ける。以下、ＳＱＬ解析部５０の処理について、式１の例を元に詳細に説明する。式１は、処理フェーズに分けられる前のＳＱＬ要求の一例である。
ＳＥＬＥＣＴ  Ｔ２．Ｃ１  ＦＲＯＭ  Ｔ２  ＯＲＤＥＲ  ＢＹ  Ｔ２．Ｃ２…（式１）
【００３０】
ＳＱＬ解析部５０は、式１のＳＱＬ要求を、２つの処理フェーズに分ける。１つめの処理フェーズは、「ＳＥＬＥＣＴ  Ｔ２．Ｃ１  ＦＲＯＭ  Ｔ２」に対応するデータ取り出しフェーズ（データベース格納領域６０に存在するデータを取り出すフェーズ）である。２つめの処理フェーズは、「ＯＲＤＥＲ  ＢＹ  Ｔ２．Ｃ２」に対応するデータマージフェーズ（列Ｔ２．Ｃ２に関するソート処理を行う）である。
【００３１】
なお、分割された処理フェーズは、データ取り出しフェーズおよびデータマージフェーズに限定されることはない。ＳＱＬ解析部５０は、さまざまな種別の処理フェーズを扱ってもよい。例えば、非特許文献１は、様々なＳＱＬ要求について、処理フェーズに分割される一例を示している。また、ＳＱＬ解析部５０は、ＳＱＬ要求を高速に処理することができる公知の技術（非特許文献１などを参照）を用いてＳＱＬ要求を処理フェーズに分割してもよい。
【００３２】
リソースコスト計算部５５は、ＳＱＬ解析部５０により分けられた処理フェーズのうち、自ＤＢサーバで実行する処理フェーズのコストを計算し、管理サーバ７０に送信する。例えば、リソースコスト計算部５５は、データ取り出しフェーズを、データベース格納領域６０へのアクセスのために利用されるメモリ５３のメモリコストが高い処理フェーズであると解析する。また、リソースコスト計算部５５は、データマージフェーズを、ソート処理を実行するＣＰＵ４３のＣＰＵコストが高い処理フェーズであると解析する。
【００３３】
リソースコスト計算部５５は、ＳＱＬ解析部５０により分けられた処理フェーズのうち、自ＤＢサーバで実行する処理フェーズのコストを計算し、管理サーバ７０に送信する。
【００３４】
サーバリソース管理部４９は、ＳＱＬ解析部５０で分けた各処理フェーズを、各ＤＢサーバに分配する。なお、処理フェーズの分配は、例えば、ＳＱＬ要求を実行するプログラムコードを分配先のＤＢサーバに出力することにより、実現される。
【００３５】
ＳＱＬ実行部５６は、サーバリソース管理部４９の指示によりサーバ仮想化部５２が割り当てたＣＰＵ４３およびメモリ５３を使用して、データベース格納領域６０からデータを取り出し、分配された各処理フェーズにより指定された演算を行い、演算終了をサーバリソース管理部４９に通知する。
【００３６】
図３は、処理フェーズ管理テーブルを示す構成図である。
【００３７】
図３（ａ）は、各ＤＢサーバで実行するＳＱＬの各処理フェーズについて、各処理フェーズに割り当てられたＣＰＵ割当率を併記した図である。図３（ｂ）は、図３（ａ）に対応する処理フェーズ管理テーブル７２０のデータを示す。ＣＰＵ割当率は、各処理フェーズに対応するＣＰＵコストの割合に応じて決定されている。なお、リソースの割当率とは、割り当て可能なリソース量を分母とし、割り当てるリソース量を分子とする分数によって計算される。つまり、割当率と割り当て可能なリソース量との乗算によって、実際に割り当てられるリソース量が決定される。
【００３８】
ＳＱＬ処理フェーズ（１）を実行する際、「Ｔ１のスキャン」、「Ｔ２のスキャン」、「Ｔ３のスキャン」、および、「Ｔ４のスキャン」を実行するために、図３（ｂ）に示したＣＰＵコストの割当率に応じて、ＣＰＵをＤＢサーバ「１」に２９％、ＤＢサーバ「２」に２１％、ＤＢサーバ「３」に２９％、および、ＤＢサーバ「４」に２１％割り当てる。
【００３９】
ＳＱＬ処理フェーズ（２）を実行する際、「Ｔ１の条件評価」を行うＤＢサーバ「１」、および、「Ｔ３の条件評価」を行うＤＢサーバ「３」にのみＣＰＵを割り当てる。ＳＱＬ処理フェーズ（１）と同様に、図３（ｂ）に示したＣＰＵコストの割当率に応じて、ＣＰＵをＤＢサーバ「１」に３３％、および、ＤＢサーバ「３」に６７％割り当てる。
【００４０】
ＳＱＬ処理フェーズ（３）を実行する際、「Ｔ１とＴ２の結合」を行うＤＢサーバ「１」、および、「Ｔ３とＴ４の結合」を行うＤＢサーバ「３」に対してのみＣＰＵを割り当てる。ＳＱＬ処理フェーズ（１）と同様に、図３（ｂ）に示したＣＰＵコストの割当率に応じて、ＣＰＵをＤＢサーバ「１」に４０％、および、ＤＢサーバ「３」に６０％割り当てる。
【００４１】
ＳＱＬ処理フェーズ（４）を実行する際、「Ｔ１、Ｔ２とＴ３、Ｔ４の結合」を行うＤＢサーバ「２」に対してのみＣＰＵを割り当てる。ＳＱＬ処理フェーズ（１）と同様に、図３（ｂ）に示したＣＰＵコストの割当率に応じて、ＣＰＵをＤＢサーバ「２」に１００％割り当てる。
【００４２】
以上説明したＣＰＵ割当率によるＣＰＵの割当により、各ＤＢサーバは、それぞれ割り当てられた処理フェーズをほぼ同時に処理を終了する。よって、各ＤＢサーバのＣＰＵの使用効率は１００％となるため、効率がよい。
【００４３】
なお、処理フェーズを早期に完了したＤＢサーバのリソースを他のサーバに再割当することとしてもよい。例えば、ＳＱＬ処理フェーズ（３）において、「Ｔ１とＴ２の結合」で処理するデータが、「Ｔ３とＴ４の結合」で処理するデータよりも多い場合、「Ｔ３とＴ４の結合」の処理が早期に完了することがある。この場合、「Ｔ３とＴ４の結合」の完了後に、ＣＰＵコストの割当率を再計算し、再計算した割当率に基づいて各ＤＢサーバへのＣＰＵ割り当てを行う。
【００４４】
その結果、「Ｔ１とＴ２の結合」を実行中のＤＢサーバ「１」の割当率が、「Ｔ３とＴ４の結合」を早期に完了したＤＢサーバ「３」の割当率である６０％と、既に割り当てられている４０％との和である１００％へと変更される。この結果、ＣＰＵは常に使用効率１００％となり、効率がよい。
【００４５】
図４は、サーバリソース管理テーブルを示す構成図である。
【００４６】
サーバリソース管理テーブル７１０は、サーバ名７１１をキーとし、サーバ名７１１に対応するＤＢサーバに関するＣＰＵ割当率７１２、メモリ割当率７１３、ＣＰＵコスト７１４、および、メモリコスト７１５を対応づけて格納する。さらに、サーバリソース管理テーブル７１０は、全サーバのＣＰＵ割当率７１２、メモリ割当率７１３、ＣＰＵコスト７１４、および、メモリコスト７１５の総和の情報を保持している。
【００４７】
ＣＰＵ割当率７１２は、割り当てられるＣＰＵのシステム全体の割り当て可能なＣＰＵに占める割合を示す。メモリ割当率７１３は、割り当てられるメモリのシステム全体の割り当て可能なメモリに占める割合を示す。ＣＰＵコスト７１４は、実行する処理フェーズに必要なＣＰＵのコストを示す。メモリコスト７１５は、実行する処理フェーズに必要なメモリのコストを示す。例えば、ＤＢサーバ「１」ではＣＰＵ割当率が「４５％」、メモリ割当率が「２５％」、ＣＰＵコストが「１０００」、メモリコストが「５００」である。
【００４８】
図５は、端末装置を示す構成図である。
【００４９】
端末装置４１は、ＣＰＵ（Central Processing Unit）４１ｄ、メモリ４１ｂ、ＨＤＤ（Hard Disk Drive）４１ｅ、および、ＮＩＦ（Network interface）４１ｆを備えたコンピュータである。ＣＰＵ４１ｄは、メモリ４１ｂに読み込まれたプログラム４１ｃを実行する。
【００５０】
以下の表１は、コストマスタテーブル７３０の一例を示す。コストマスタテーブル７３０は、処理フェーズごとに、フェーズ種別、処理内容、ＣＰＵコスト、および、メモリコストに対応づけられる。例えば、フェーズ種別「結合」は、計算機の処理内容として「１回のソート、１回のマージ」により実現され、その処理内容を実現するために、ＣＰＵコスト「１００」およびメモリコスト「５０」というリソースを要する。
【表１】
2008123040.tif 000003
【００５１】
図６は、ＳＱＬ実行処理の処理手順を示すフローチャートである。
【００５２】
ＳＱＬ解析部５０の処理（Ｓ６０１）を説明する。ＳＱＬ解析部５０は、ＳＱＬの処理要求を端末装置４１から受け取ると、処理要求として入力されたＳＱＬ文を構文解析し、問い合わせの処理を複数のＤＢサーバで並列に処理するために、複数の処理フェーズに分ける。
【００５３】
リソースコスト集計部４８の処理（Ｓ６０２）を説明する。リソースコスト集計部４８は、コストマスタテーブル７３０を参照して、前記処理フェーズのＣＰＵコスト、および、メモリコストを集計し、ＤＢサーバごとにシステム全体に占めるリソースの割合を取得する。
【００５４】
サーバリソース管理部４９の処理（Ｓ６０３）を説明する。サーバリソース管理部４９は、前記ＤＢサーバごとシステム全体に占めるリソースの割合に基づいて、各ＤＢサーバのリソースの割り当て指示をＯＳ４６に行う。
【００５５】
ＳＱＬ実行部５６の処理（Ｓ６０４）を説明する。ＳＱＬ実行部５６は、ＤＢサーバごとに割り当てられたリソースを使用して前記処理フェーズを実行する。
【００５６】
なお、サーバリソース管理部４９は、処理フェーズを早期に完了したＤＢサーバのリソースを他のサーバに再割当することとしてもよい（Ｓ６０５）。なお、リソースの再割当処理は、図３のＳＱＬ処理フェーズ（３）で説明したとおりである。
【００５７】
そして、実行しているＳＱＬの全処理フェーズの実行が終了した否かの判定を行う（Ｓ６０６）。ＳＱＬの全処理フェーズが終了していない場合には（Ｓ６０６，Ｎｏ）、終了していない処理フェーズに対して、Ｓ６０２以下の処理を行う。一方で、ＳＱＬの全処理フェーズが終了した場合には（Ｓ６０６，Ｙｅｓ）、ＳＱＬ処理を終了する。
【００５８】
図７は、リソースコスト集計の処理手順を示すフローチャートである。
【００５９】
管理サーバ７０内のリソースコスト集計部４８は、各ＤＢサーバのＣＰＵコスト、および、メモリコストに関わる情報をサーバリソース管理テーブル７１０に設定する。
【００６０】
リソースコスト計算部５５の処理（Ｓ４８０１）を説明する。ＳＱＬの処理フェーズの情報を取得すると、Ｓ４８０１でリソースコスト計算部５５は、該ＤＢサーバで実行する処理フェーズのＣＰＵコスト、および、メモリコストを計算する。
【００６１】
Ｓ４８０２でリソースコスト集計部４８は、各ＤＢサーバから該ＤＢサーバで実行するＣＰＵコストを受信する。Ｓ４８０３でリソースコスト集計部４８は、各ＤＢサーバから該ＤＢサーバで実行するメモリコストを受信する。
【００６２】
Ｓ４８０４でリソースコスト集計部４８は、受信した各ＤＢサーバのＣＰＵコストをサーバリソース管理テーブル７１０に設定する。Ｓ４８０５でリソースコスト集計部４８は、受信した各ＤＢサーバのメモリコストをサーバリソース管理テーブル７１０に設定する。
【００６３】
Ｓ４８０６でリソースコスト集計部４８は、受信したＣＰＵコストの総和（総ＣＰＵコスト）を計算し、サーバリソース管理テーブル７１０に設定する。Ｓ４８０７でリソースコスト集計部４８は、受信したメモリコストの総和（総メモリコスト）を計算し、サーバリソース管理テーブル７１０に設定する。
【００６４】
Ｓ４８０８でリソースコスト集計部４８は、総ＣＰＵコストに対する、ＤＢサーバのＣＰＵコストの割合を計算し、サーバリソース管理テーブル７１０に設定する。Ｓ４８０９でリソースコスト集計部４８は、総メモリコストに対する、ＤＢサーバのメモリコストの割合を計算し、サーバリソース管理テーブル７１０に設定する。
【００６５】
Ｓ４８１０では、Ｓ４８０８およびＳ４８０９の設定について、全ＤＢサーバ分の設定が終了したか否かの判定を行う。全ＤＢサーバ分の設定が終了したら（Ｓ４８１０，Ｙｅｓ）リソースコスト集計部４８の処理を終了し、全ＤＢサーバ分の設定が終了していない（Ｓ４８１０，Ｎｏ）なら、設定が終了していないＤＢサーバに対して、Ｓ４８０８およびＳ４８０９の処理を行う。
【００６６】
図８は、リソースコスト計算の処理手順を示すフローチャートである。
【００６７】
Ｓ５５０１でリソースコスト計算部５５は、属するＤＢサーバで実行する該当処理フェーズのＣＰＵコストを計算する。Ｓ５５０２でリソースコスト計算部５５は、属するＤＢサーバで実行する該当処理フェーズのメモリコストを計算する。
【００６８】
Ｓ５５０３でリソースコスト計算部５５は、Ｓ５５０１で取得したＣＰＵコスト、および、Ｓ５５０２で取得したメモリコストの情報をリソースコスト集計部４８に送信して、処理を終了する。
【００６９】
図９は、サーバリソース管理の処理手順を示すフローチャートである。
【００７０】
Ｓ４９０１でサーバリソース管理部４９は、図４のサーバリソース管理テーブル７１０を参照し、全ＤＢサーバのＣＰＵ割当率７１２を取得する。Ｓ４９０２でサーバリソース管理部４９は、Ｓ４９０１で取得した全ＤＢサーバのＣＰＵ割当率７１２に基づいたＣＰＵの割当指示をサーバ仮想化部５２に行う。
【００７１】
Ｓ４９０３でサーバリソース管理部４９は、図４のサーバリソース管理テーブル７１０を参照し、全ＤＢサーバのメモリ割当率７１３を取得する。Ｓ４９０４でサーバリソース管理部４９は、Ｓ４９０３で取得した全ＤＢサーバのメモリ割当率７１３に基づいたメモリの割当指示をサーバ仮想化部５２に行い、サーバリソース管理部４９の処理を終了する。
【００７２】
図１０は、ＣＰＵ割り当ての一例を示す説明図である。図１２（ａ）に示すＳＱＬ要求を処理する場合を説明する。図１０（ａ）は、ＣＰＵが各ＤＢサーバに固定的に割り当てられている（ＣＰＵ固定）割当状況を示す。図１０（ｂ）は、ＣＰＵが各ＤＢサーバに図６に示すフローチャートを実行することで変動的に割り当てられている（ＣＰＵ変動）割当状況を示す。
【００７３】
図１０（ｃ）は、図１０（ｂ）に対応する処理フェーズ管理テーブル７２０を示す。図１０（ｂ）は、図１０（ａ）と比べて、ＣＰＵの利用効率が改善されている。なお、図１０（ｂ）の処理フェーズ（３）の時刻（Ａ）において、リソースの再割当が実施されている（図６のＳ６０５参照）。
【００７４】
図１１は、メモリ割り当ての一例を示す説明図である。以下の式２に示すＳＱＬ要求を処理する場合を説明する。式２の結合方法は、マージジョインであるものとする。なお、式２の「ｆｒｏｍ  Ｔ１，Ｔ２」を実行するために、処理フェーズ「Ｔ１，Ｔ２のスキャン」および処理フェーズ「Ｔ１，Ｔ２のソート」が抽出される。式２の「ｗｈｅｒｅ  Ｔ１．Ｃ１＝Ｔ２．Ｃ１」を実行するために、処理フェーズ「Ｔ１，Ｔ２の結合」が抽出される。
ｓｅｌｅｃｔ  Ｔ１．Ｃ１  ｆｒｏｍ  Ｔ１，Ｔ２  ｗｈｅｒｅ  Ｔ１．Ｃ１＝Ｔ２．Ｃ１…（式２）
【００７５】
図１１（ａ）は、メモリが各ＤＢサーバに固定的に割り当てられている（メモリ固定）割当状況を示す。図１１（ｂ）は、メモリが各ＤＢサーバに図６に示すフローチャートを実行することで変動的に割り当てられている（メモリ変動）割当状況を示す。図１１（ｃ）は、図１１（ｂ）に対応する処理フェーズ管理テーブル７２０を示す。図１１（ｂ）は、図１１（ａ）と比べて、メモリの利用効率が改善されている。なお、図１１（ｂ）の処理フェーズ（２）の時刻（Ａ）において、リソースの再割当が実施されている（図６のＳ６０５参照）。
【００７６】
以上説明した本実施形態によれば、ＳＱＬの処理フェーズ単位でリソース割当率を変更することによって、各データベースサーバへのＳＱＬの各処理フェーズ実行時の負荷のアンバランスを改善することができる。これにより、リソースの利用効率が上がることで、処理フェーズが早期に完了する。よって、処理可能な処理フェーズの数が増えることにより、処理フェーズのスループットを向上させることができる。
【図面の簡単な説明】
【００７７】
【図１】本発明の一実施形態に関するＤＢＭＳ全体を示す構成図である。
【図２】本発明の一実施形態に関するＤＢＭＳのＳＱＬ処理に関する構成要素を示す構成図である。
【図３】本発明の一実施形態に関する処理フェーズ管理テーブルを示す構成図である。
【図４】本発明の一実施形態に関するサーバリソース管理テーブルを示す構成図である。
【図５】本発明の一実施形態に関する端末装置を示す構成図である。
【図６】本発明の一実施形態に関するＳＱＬ実行処理の処理手順を示すフローチャートである。
【図７】本発明の一実施形態に関するリソースコスト集計の処理手順を示すフローチャートである。
【図８】本発明の一実施形態に関するリソースコスト計算の処理手順を示すフローチャートである。
【図９】本発明の一実施形態に関するサーバリソース管理の処理手順を示すフローチャートである。
【図１０】本発明の一実施形態に関するＣＰＵ割り当ての一例を示す説明図である。
【図１１】本発明の一実施形態に関するメモリ割り当ての一例を示す説明図である。
【図１２】ＳＱＬの処理フェーズの実行例を示す説明図である。
【符号の説明】
【００７８】
４８    リソースコスト集計部
４９    サーバリソース管理部
５０    ＳＱＬ解析部
５２    サーバ仮想化部
５５    リソースコスト計算部
５６    ＳＱＬ実行部
６０    データベース格納領域
７０    管理サーバ
７１０  サーバリソース管理テーブル
７２０  処理フェーズ管理テーブル
７３０  コストマスタテーブル
【図１】
2008123040.tif 000004
【図２】
2008123040.tif 000005
【図３】
2008123040.tif 000006
【図４】
2008123040.tif 000007
【図５】
2008123040.tif 000008
【図６】
2008123040.tif 000009
【図７】
2008123040.tif 000010
【図８】
2008123040.tif 000011
【図９】
2008123040.tif 000012
【図１０】
2008123040.tif 000013
【図１１】
2008123040.tif 000014
【図１２】
2008123040.tif 000015