(57)【要約】【課題】データベースの内容を一時的に格納するバッファプールのサイズを動的に最適化する。【解決手段】  バッファプールのサイズを最適化するデータベースサーバであって、予め定められたサイズの記憶領域を、トランザクションの種類又はデータの種類に応じて選択的に使用される複数のバッファプールに分割する分割比率を設定する分割比率設定部と、分割比率が設定された状態において、トランザクションの応答時間を測定する応答時間測定部と、複数のバッファプールの各々のサイズに基づいて応答時間を算出する式である応答時間算出式のパラメータを、設定された分割比率及び測定された応答時間に基づいて算出する応答時間算出式生成部と、応答時間算出式に基づいて応答時間を最小化する分割比率を算出する分割比率算出部とを備え、分割比率設定部は、分割比率算出部により算出された分割比率を設定するデータベースサーバを提供する。【選択図】図１
2005327138.tif 000002
【特許請求の範囲】
【請求項１】
データベースの内容を一時的に格納するバッファプールのサイズを最適化するデータベースサーバであって、
予め定められたサイズの記憶領域を、トランザクションの種類又はデータの種類に応じて選択的に使用される複数の前記バッファプールに分割する分割比率を設定する分割比率設定部と、
前記分割比率が設定された状態において、複数のトランザクションが前記データベースサーバに要求されてから当該複数のトランザクションが処理されるまでの応答時間を測定する応答時間測定部と、
前記複数のバッファプールの各々のサイズに基づいて前記応答時間を算出する式である応答時間算出式のパラメータを、設定された前記分割比率及び測定された前記応答時間に基づいて算出する応答時間算出式生成部と、
前記応答時間算出式生成部によりパラメータが算出された前記応答時間算出式に基づいて、前記応答時間を最小化する前記分割比率を算出する分割比率算出部と
を備え、前記分割比率設定部は、前記分割比率算出部により算出された分割比率を設定するデータベースサーバ。
【請求項２】
前記分割比率設定部により既に設定されている分割比率である第１の分割比率と、当該第１の分割比率が設定されている状態において前記分割比率算出部により算出された分割比率である第２の分割比率との差が、予め定められた基準差分値以内に収束したか否かを判断する収束判定部を更に備え、
前記第１の分割比率及び第２の分割比率の差が前記基準差分値以内に収束しない場合において、
前記分割比率設定部は、前記第２の分割比率を設定し、
前記応答時間測定部は、前記第２の分割比率が設定された状態において、前記応答時間を測定し、
前記応答時間算出式生成部は、前記応答時間算出式のパラメータを、前記第２の分割比率及び前記第２の分割比率が設定された状態における応答時間に基づいて算出し、
前記分割比率算出部は、前記応答時間算出式生成部によりパラメータが算出された当該応答時間算出式に基づいて、前記応答時間を最小化する第３の分割比率を算出し、
前記収束判定部は、前記第２の分割比率及び前記第３の分割比率が前記基準差分値以内に収束したか否かを判断し、
前記第２の分割比率及び前記第３の分割比率が前記基準差分値以内に収束しない場合に、前記分割比率設定部は、前記第３の分割比率を設定する
請求項１記載のデータベースサーバ。
【請求項３】
前記第１の分割比率及び前記第２の分割比率の差が前記基準差分値以内に収束しない場合において、
前記応答時間算出式生成部は、前記第１の分割比率及び前記第１の分割比率が設定された場合における前記応答時間と、前記第２の分割比率及び前記第２の分割比率が設定された場合における前記応答時間との双方に基づいて、前記応答時間算出式のパラメータを算出する
請求項２記載のデータベースサーバ。
【請求項４】
前記第１の分割比率及び前記第２の分割比率の差が前記基準差分値以内に収束しない場合において、
前記応答時間算出式生成部は、より昔に測定された応答時間と比較してより最近に測定された応答時間が前記応答時間算出式のパラメータにより大きく影響する算出方法により、前記応答時間算出式のパラメータを算出する
請求項３記載のデータベースサーバ。
【請求項５】
前記分割比率算出部により分割比率が算出されていない場合において、
前記分割比率設定部は、予め定められた互いに異なる複数の分割比率を順次設定し、
前記応答時間測定部は、前記複数の分割比率の各々が設定された場合における前記応答時間を測定し、
前記応答時間算出式生成部は、前記複数の分割比率が繰り返し順次設定された場合における前記応答時間算出式のパラメータを、前記複数の分割比率の各々及び当該分割比率が設定された状態における前記応答時間に基づいて算出する
請求項１記載のデータベースサーバ。
【請求項６】
当該データベースサーバは、互いに異なる処理を要求する複数のアプリケーションプログラムの何れかによりアクセスされ、
当該データベースサーバをアクセスするアプリケーションプログラムが変更されたか否かを検出する変更検出部を更に備え、
アプリケーションプログラムが変更された場合において、
前記応答時間測定部は、前記応答時間を測定し、
前記応答時間算出式生成部は、設定されている分割比率及び前記応答時間に基づいて、前記応答時間算出式のパラメータを算出し、
前記分割比率算出部は、前記応答時間算出式に基づいて前記応答時間を最小化する分割比率を算出し、
前記分割比率設定部は、前記分割比率算出部により算出された分割比率を設定する
請求項１記載のデータベースサーバ。
【請求項７】
前記変更検出部は、当該データベースに要求される複数のトランザクションに対する、何れかの種類のトランザクションの割合が、予め定められた基準値以上変化した場合に、アプリケーションプログラムが変更されたと判断する
請求項６記載のデータベースサーバ。
【請求項８】
前記応答時間算出式生成部は、各々のバッファプールが前記応答時間に与える影響を示すパラメータと、各バッファプールの格納対象のデータにアクセスする場合の応答時間に、当該バッファプールのサイズが与える影響を示すパラメータとを、前記分割比率設定部により設定された分割比率及び当該分割比率が設定された状態における応答時間に基づいて算出する
請求項１記載のデータベースサーバ。
【請求項９】
各バッファプールについて、当該バッファプールが格納する対象のデータに対するアクセス要求に対して、当該アクセス要求の対象データが当該バッファプールに格納されていなかった頻度を示すミス率を測定するミス率測定部と、
前記ミス率及び前記分割比率に基づいて、各バッファプールのサイズに基づいて当該バッファプールのミス率を算出する式であるミス率算出式のパラメータを算出するミス率算出式生成部と
を更に備え、
前記応答時間算出式生成部は、前記ミス率算出式生成部により算出されたパラメータに更に基づいて、前記応答時間算出式のパラメータを算出する
請求項１記載のデータベースサーバ。
【請求項１０】
データベースサーバに設定された、データベースの内容を一時的に格納するバッファプールのサイズをコンピュータにより最適化するプログラムであって、
前記プログラムは、前記コンピュータを、
予め定められたサイズの記憶領域を、トランザクションの種類又はデータの種類に応じて選択的に使用される複数の前記バッファプールに分割する分割比率を、前記データベースサーバに設定する分割比率設定部と、
前記分割比率が設定された状態において、複数のトランザクションが前記データベースサーバに要求されてから当該複数のトランザクションが処理されるまでの応答時間を測定する応答時間測定部と、
前記複数のバッファプールの各々のサイズに基づいて前記応答時間を算出する式である応答時間算出式のパラメータを、設定された前記分割比率及び測定された前記応答時間に基づいて算出する応答時間算出式生成部と、
前記応答時間算出式生成部によりパラメータが算出された前記応答時間算出式に基づいて、前記応答時間を最小化する前記分割比率を算出する分割比率算出部と
して機能させ、前記分割比率設定部は、前記分割比率算出部により算出された分割比率を設定するプログラム。
【請求項１１】
前記コンピュータを、
前記分割比率設定部により既に設定されている分割比率である第１の分割比率と、当該第１の分割比率が設定されている状態において前記分割比率算出部により算出された分割比率である第２の分割比率との差が、予め定められた基準差分値以内に収束したか否かを判断する収束判定部として更に機能させ、
前記第１の分割比率及び第２の分割比率が前記基準差分値以内に収束しない場合において、
前記分割比率設定部は、前記第２の分割比率を設定し、
前記応答時間測定部は、前記第２の分割比率が設定された状態において、前記応答時間を測定し、
前記応答時間算出式生成部は、前記応答時間算出式のパラメータを、前記第２の分割比率及び前記第２の分割比率が設定された状態における応答時間に基づいて算出し、
前記分割比率算出部は、前記応答時間算出式生成部によりパラメータが算出された当該応答時間算出式に基づいて、前記応答時間を最小化する第３の分割比率を算出し、
前記収束判定部は、前記第２の分割比率及び前記第３の分割比率が前記基準差分値以内に収束したか否かを判断し、
前記第２の分割比率及び前記第３の分割比率が前記基準差分値以内に収束しない場合に、前記分割比率設定部は、前記第３の分割比率を設定する
請求項１０記載のプログラム。
【請求項１２】
請求項１０又は請求項１１に記載のプログラムを記録した記録媒体。
【請求項１３】
データベースの内容を一時的に格納するバッファプールのサイズを最適化するデータベースサーバを制御する制御方法であって、
予め定められたサイズの記憶領域を、トランザクションの種類又はデータの種類に応じて選択的に使用される複数の前記バッファプールに分割する分割比率を設定する分割比率設定段階と、
前記分割比率が設定された状態において、複数のトランザクションが前記データベースサーバに要求されてから当該複数のトランザクションが処理されるまでの応答時間を測定する応答時間測定段階と、
前記複数のバッファプールの各々のサイズに基づいて前記応答時間を算出する式である応答時間算出式のパラメータを、設定された前記分割比率及び測定された前記応答時間に基づいて算出する応答時間算出式生成段階と、
前記応答時間算出式生成段階においてパラメータが算出された前記応答時間算出式に基づいて、前記応答時間を最小化する前記分割比率を算出する分割比率算出段階と
を備え、前記分割比率設定段階において、前記分割比率算出段階において算出された分割比率を設定する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースサーバ、プログラム、記録媒体、及び制御方法に関する。特に、本発明は、データベースの内容を一時的に格納するバッファプールのサイズを最適化するデータベースサーバ、プログラム、記録媒体、及び制御方法に関する。
【背景技術】
【０００２】
従来、データベースに対するアクセスを高速化する目的で、データベースの内容を一時的に格納するバッファプールをデータベースサーバに設ける方法が用いられている。そして、このバッファプールをデータベースに対して１つ設ける場合よりも、トランザクションの種類毎に複数のバッファプールを設ける場合の方が、アクセスが高速化される場合が多い。
【０００３】
バッファプールとして使用できる記憶領域の合計サイズが定められている場合には、その記憶領域を複数のバッファプールに分割する分割比率を適切に設定する必要がある。しかしながら、アクセスを最も高速にできる分割比率を算出するのは容易でない。更に、データベースに対するアクセスの内容によっては、分割比率を動的に変更した方がよい場合もある。
【０００４】
これらの課題に対して、従来、バッファプールの使用履歴等の統計情報を、予め定められた数式に代入して計算することにより、分割比率を求める方法が提案されている（特許文献１参照。）。この方法において、この数式は、使用者の経験及び知識等に基づいて予め定められるものである。
【０００５】
他の方法として、直接探索法により分割比率を決定する方法が提案されている（非特許文献１参照。）。この方法では、まず、互いに異なる複数の分割比率を探索アルゴリズムに基づき設定し、平均応答時間を計測する。以降同様に、複数の分割比率設定に対して平均応答時間を計測する手順を、最小平均応答時間が得られるまで繰り返す。
【０００６】
【特許文献１】特開平９−３３０２５６号公報
【非特許文献１】Y. Diao et al.,"Generic Online Optimization of Multiple Configuration Parameters With Application to a Database Server", pp. 3-15, Lecture Notes in Computer Science 2867, Springer, 2003.
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１によると、あらゆるアクセスパターンを想定した適切な数式を定めるのは容易でない。更に、データベースに対するアクセスのパターンが変更された場合であっても、同一の数式を使い続けてよいとは限らない。従って、様々な要求を処理し得る汎用のデータベースサーバに適用することは困難であると考えられる。
【０００８】
また、上記非特許文献１によると、一旦平均応答時間を計測した後に次に設定するべき分割比率の候補が、多数存在する。そして、これらの候補の中から適切な分割比率を少ない探索回数で選択して設定するのは容易でない。このため、例えば不適切な分割比率の方向に探索が進んでしまうと、分割比率が特定の値に収束するまでに膨大な時間を要する場合があった。更に、この文献には、上記探索処理において、探索方向の妥当性を判断する基準が定量的に定められておらず、結果としてどの分割比率が最適であるかを決定することは困難であった。
【０００９】
そこで本発明は、上記の課題を解決することのできるデータベースサーバ、プログラム、記録媒体、及び制御方法を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の第１の形態においては、データベースの内容を一時的に格納するバッファプールのサイズを最適化するデータベースサーバであって、予め定められたサイズの記憶領域を、トランザクションの種類又はデータの種類に応じて選択的に使用される複数の前記バッファプールに分割する分割比率を設定する分割比率設定部と、前記分割比率が設定された状態において、複数のトランザクションが前記データベースサーバに要求されてから当該複数のトランザクションが処理されるまでの応答時間を測定する応答時間測定部と、前記複数のバッファプールの各々のサイズに基づいて前記応答時間を算出する式である応答時間算出式のパラメータを、設定された前記分割比率及び測定された前記応答時間に基づいて算出する応答時間算出式生成部と、前記応答時間算出式生成部によりパラメータが算出された前記応答時間算出式に基づいて、前記応答時間を最小化する前記分割比率を算出する分割比率算出部とを備え、前記分割比率設定部は、前記分割比率算出部により算出された分割比率を設定するデータベースサーバ、データベースサーバを制御する制御方法、プログラム、及びプログラムを記録した記録媒体を提供する。
【００１１】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【００１２】
本発明によれば、データベースの内容を一時的に格納するバッファプールのサイズを動的に最適化することができる。
【発明を実施するための最良の形態】
【００１３】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１４】
図１は、データベースサーバ１０のブロック図である。データベースサーバ１０は、データベース２０と、バッファプール３０−１〜Ｎと、本体部４０とを備える。データベースサーバ１０は、データベース２０に対するアクセスの傾向の変化に追従して、予め定められたサイズの記憶領域をバッファプール３０−１〜Ｎに分割する分割比率を動的に最適化することを目的とする。
【００１５】
データベース２０は、外部から要求されたトランザクションに応じて、格納している内容を読み出して返信する。バッファプール３０−１〜Ｎの各々は、予め定められたサイズの記憶領域を分割することにより生成される。そして、バッファプール３０−１〜Ｎの各々は、データベース２０から読み出されたデータベース２０の内容を一時的に格納する。この結果、データベースサーバ１０は、トランザクションを要求された場合に、そのトランザクションに要するデータをバッファプール３０−１〜Ｎから取得することにより、そのデータをデータベース２０から取得する処理と比較して効率的に動作できる。
【００１６】
好ましくは、バッファプール３０−１〜Ｎは、トランザクションの種類に応じて選択的に使用される。即ち、バッファプール３０−１〜Ｎの各々は、当該バッファプールに対応して定められた種類のトランザクションに要するデータを格納する。これに代えて、バッファプール３０−１〜Ｎは、格納する対象のデータの種類に応じて選択的に使用されてもよい。即ち、バッファプール３０−１〜Ｎの各々は、データベース２０内のデータのうち、当該バッファプールに対応して定められた種類のデータを格納してもよい。
【００１７】
なお、データベースサーバ１０は、バッファプールの数を変更することができ、その上限値は、データベースサーバ１０を実現するソフトウェア又はハードウェア等の規格に基づいて定まっている。そこで、本実施例の以降の説明では、説明の便宜上、データベースサーバ１０がバッファプール３０−１〜３を備えるものとする。
【００１８】
本体部４０は、インターフェイス４００と、分割比率設定部４１０と、変更検出部４２０と、応答時間測定部４３０と、応答時間算出式生成部４４０と、分割比率算出部４５０と、収束判定部４６０と、ミス率測定部４７０と、ミス率算出式生成部４８０とを有する。
【００１９】
分割比率設定部４１０は、予め定められたサイズの記憶領域を複数のバッファプールに分割する分割比率を設定する。例えば、分割比率設定部４１０は、分割比率算出部４５０により分割比率が算出されていない場合には、予め定められた分割比率を設定し、分割比率算出部４５０により分割比率が算出されている場合には、算出されているその分割比率を設定する。処理の一例としては、分割比率設定部４１０は、CIM(Common Information Model)のCIMOM(CIM Object Manager)により駆動されるプログラムを用いて、分割比率を設定してもよい。
【００２０】
変更検出部４２０は、データベース２０をアクセスするアプリケーションプログラムが変更されたか否かを検出する。なお、アプリケーションプログラムとは、１つのプログラムにより構成されるソフトウェアに限定されるものではなく、ある１つのプログラムが有する複数の処理ルーチンの各々であってもよい。
【００２１】
応答時間測定部４３０は、分割比率設定部４１０により分割比率が設定された状態において、複数のトランザクションがデータベース２０に要求されてからそれらの複数のトランザクションが処理されるまでの応答時間を測定する。応答時間測定部４３０は、分割比率設定部４１０により分割比率が変更される毎に応答時間を測定してもよいし、収束判定部４６０から指示を受けた場合に応答時間を測定してもよいし、上記アプリケーションプログラムが変更された場合に応答時間を測定してもよい。処理の一例としては、応答時間測定部４３０は、CIMのCIM providerによって応答時間を測定してもよい。
【００２２】
応答時間算出式生成部４４０は、複数のバッファプールの各々のサイズに基づいて応答時間を算出する式である応答時間算出式のパラメータを、設定されたその分割比率及び測定されたその応答時間に基づいて算出する。これに加えて、応答時間算出式生成部４４０は、ミス率算出式生成部４８０により生成されたミス率算出式に更に基づいてパラメータを算出してもよい。分割比率算出部４５０は、応答時間算出式生成部４４０によりパラメータが算出された応答時間算出式に基づいて、応答時間を最小化する分割比率を算出する。
【００２３】
収束判定部４６０は、分割比率設定部４１０により既に設定されている分割比率である第１の分割比率と、その第１の分割比率が設定されている状態において分割比率算出部４５０により算出された分割比率である第２の分割比率との差分を算出する。そして、収束判定部４６０は、その差分が、予め定められた基準差分値以内に収束したか否かを判断する。基準値差分値以内に収束していない場合に、分割比率算出部４５０は、分割比率設定部４１０及び応答時間測定部４３０に指示を送る。これを受けて、分割比率設定部４１０は、第２の分割比率を設定する。そして、応答時間測定部４３０は、第２の分割比率が設定された状態において応答時間を測定する。
【００２４】
ミス率測定部４７０は、各バッファプールについて、そのバッファプールが格納する対象のデータに対するアクセス要求に対して、そのアクセス要求の対象データがそのバッファプールに格納されていなかった頻度を示すミス率を測定する。更に、ミス率測定部４７０は、設定されている分割比率を取得する。ミス率算出式生成部４８０は、ミス率及び分割比率に基づいて、各バッファプールのサイズに基づいてそのバッファプールのミス率を算出する式であるミス率算出式のパラメータを算出する。
【００２５】
図２は、データベースサーバ１０が分割比率を設定する処理の動作フローを示す。分割比率設定部４１０は、分割比率算出部４５０により分割比率が算出されていない場合に、分割比率の初期値を設定する（Ｓ２００）。具体的には、分割比率設定部４１０は、予め定められた互いに異なる複数の分割比率を順次設定する。そして、応答時間測定部４３０は、それらの複数の分割比率の各々が設定された場合における応答時間を測定する。この結果得られる各バッファプールのサイズ及び応答時間の組を、以下の式（１）と表現する。
【数１】
2005327138.tif 000003
【００２６】
この式（１）において、uはバッファプールのサイズを示し、rは応答時間を示す。即ち、バッファプール３０−１、バッファプール３０−２、及びバッファプール３０−３のサイズを、それぞれu1、 u2、及び u3とする。続いて、応答時間算出式生成部４４０は、これらの複数の分割比率が繰り返し順次設定された場合における応答時間算出式のパラメータを、これらの複数の分割比率の各々及びその分割比率が設定された状態における応答時間に基づいて算出する（Ｓ２１０）。
【００２７】
この処理の詳細を説明する。まず、応答時間がバッファプールのサイズを入力として式（２）に従って定まるというモデルを仮定する。即ち、式（２）は、本発明に係る応答時間算出式の一例である。この式において、r(t)は、時刻t-Tから時刻tまでの期間における平均応答時間を示す。但しTは所定の定数とする。また、u(t)は、時刻t-Tから時刻tまでの期間において設定されているバッファプールのサイズを示す。C(t)はノイズである。
【数２】
2005327138.tif 000004
【００２８】
そして、応答時間算出式生成部４４０は、分割比率及び応答時間に基づいて、各々のバッファプールが応答時間に与える影響を示すパラメータであるaiを求める。また、応答時間算出式生成部４４０は、各バッファプールの格納対象のデータにアクセスする場合の応答時間に、そのバッファプールのサイズが与える影響を示すパラメータであるbiを求める。なお、応答時間算出式は、式（２）に限定されず、例えば、バッファサイズの増加に応じて応答時間が減少する任意の関数であってもよい。なお、バッファプールの振舞いを適切に表現するためには、応答時間算出式は、非線形の減少指数関数であることが望ましい。
【００２９】
続いて、応答時間算出式生成部４４０が、拡張カルマン・フィルタに基づいて応答時間算出式のパラメータを算出する処理を説明する。算出すべきパラメータのベクトルを式（３）とする。応答時間算出式生成部４４０は、式（４）により、xt-1からxtを算出する。即ち、応答時間算出式生成部４４０は、xt-1及びxtの差分値が予め定められた基準差分値以内に収束するまで、x1から順にxtを算出する。収束した時点のxtの各要素を、求めたパラメータとする。但し、式（４）の定義に式（５）及び式（６）を用いる。
【数３】
2005327138.tif 000005
【数４】
2005327138.tif 000006
【数５】
2005327138.tif 000007
【数６】
2005327138.tif 000008
【００３０】
なお、応答時間及び分割比率の組が４以上得られている場合には、その組の数に応じて、上記のt mod 3を、t mod 4及びt mod 5等に変更する必要がある。また、パラメータを算出する方法は、上記の拡張カルマン・フィルタに基づく方法に限定されない。例えば、Ｈ無限大フィルタリングは、Ｋｒｅｉｎ空間のカルマン・フィルタリングとみなせることが知られている。従って、応答時間算出式生成部４４０は、Ｈ無限大フィルタリングによる推定アルゴリズムにより、パラメータを算出してもよい。
【００３１】
更に他の方法として、応答時間算出式生成部４４０は、各バッファプールのミス率に更に基づいてパラメータを算出してもよい。この方法については図３及び図４で説明する。続いて、分割比率算出部４５０は、応答時間算出式生成部４４０によりパラメータが算出された応答時間算出式に基づいて、応答時間を最小化する分割比率を算出する（Ｓ２２０）。この処理の詳細を、上述の式（１）で示すモデルを用いて説明する。
【００３２】
まず、応答時間算出式は、Ｓ２１０において求めたパラメータを用いて、式（７）として表される。
【数７】
2005327138.tif 000009
【００３３】
このため、分割比率算出部４５０は、例えば勾配法を用いて、このモデルが正しいと仮定した場合において応答時間を最小化するuiを求めることができる。具体的には、分割比率算出部４５０は、式（８）を用いて、uk-1 及びukの差分値が予め定められた範囲に収束するまで、uk-1 からuk
を順次算出する。但し、μは、予め定められた任意の正の数である。なお、「最小化する」とは、必ずしも厳密に最小の値とすることではなく、応答時間を最小値に近づかせる分割比率を順次繰り返し算出することをいう。
【数８】
2005327138.tif 000010
【００３４】
続いて、収束判定部４６０は、分割比率設定部４１０により既に設定されている分割比率である第１の分割比率と、その第１の分割比率が設定された状態において分割比率算出部４５０により算出された分割比率である第２の分割比率との差分値を算出する（Ｓ２３０）。そして、収束判定部４６０は、その差分値が、基準差分値以内に収束したか否かを判断する。具体的には、収束判定部４６０は、何れかのバッファプールの分割比についての差分値が、基準差分値以内に収束したか否かを判断してもよいし、全てのバッファプールの分割比についての差分値が、基準差分値以内に収束したか否かを判断してもよい。
【００３５】
第１の分割比率及び第２の分割比率の差分値が基準差分値以内に収束していない場合に（Ｓ２３０：ＮＯ）、分割比率設定部４１０は、分割比率算出部４５０により算出された第２の分割比率を設定する（Ｓ２４０）。そして、応答時間測定部４３０は、第２の分割比率が設定された状態において応答時間を測定する（Ｓ２５０）。更にこの状態において、ミス率測定部４７０は、各バッファプールのミス率を測定してもよい（Ｓ２６０）。なお、ミス率測定部４７０は、ミス率自体を算出する処理に代えて、ミス率を算出するために必要な他の指標を測定してもよい。
【００３６】
続いて、データベースサーバ１０は、Ｓ２１０に処理を戻す。Ｓ２６０からＳ２１０に処理が移行した場合における処理を説明する。まず、応答時間算出式生成部４４０は、応答時間算出式のパラメータを、第２の分割比率及び第２の分割比率が設定された場合における応答時間に基づいて算出する（Ｓ２１０）。好ましくは、応答時間算出式生成部４４０は、第１の分割比率及び第１の分割比率が設定された状態における応答時間と、第２の分割比率及び第２の分割比率が設定された状態における応答時間との双方に基づいて、応答時間算出式のパラメータを算出する。
【００３７】
更に好ましくは、応答時間算出式生成部４４０は、より昔に測定された応答時間と比較して、より最近に測定された応答時間が応答時間算出式のパラメータにより大きく影響する算出方法により、応答時間算出式のパラメータを算出してもよい。一例として、応答時間を、測定された順にr1、r2、r3、…と順次配列しておき、応答時間算出式生成部４４０は、式（４）に代えて式（９）を用いてパラメータを算出してもよい。ここで、λは、０より大きく１より小さい所定の値とする。
【数９】
2005327138.tif 000011
【００３８】
そして、分割比率算出部４５０は、応答時間算出式生成部４４０によりパラメータが算出された応答時間算出式に基づいて、応答時間を最小化する第３の分割比率を算出する（Ｓ２２０）。収束判定部４６０は、第２の分割比率及び第３の分割比率の差分値が基準差分値以内に収束したか否かを判断する（Ｓ２３０）。収束していない場合に（Ｓ２３０：ＮＯ）、分割比率設定部４１０は、第３の分割比率を設定する（Ｓ２４０）。このように、データベースサーバ１０は、分割比率が収束するまで、応答時間の測定及び分割比率の算出を交互に繰り返す。
【００３９】
一方、分割比率が収束した場合に（Ｓ２３０：ＹＥＳ）、データベースサーバ１０は、データベース２０をアクセスするアプリケーションプログラムが変更されるまで処理を保留する（Ｓ２７０：ＮＯ）。例えば、変更検出部４２０は、データベース２０に要求される複数のトランザクションに対する、何れかの種類のトランザクションの割合が、予め定められた基準値以上変化した場合に、アプリケーションプログラムが変更されたと判断してもよい。アプリケーションプログラムが変更された場合に（Ｓ２７０：ＹＥＳ）、データベースサーバ１０は、Ｓ２５０以降に処理を移し、応答時間測定部４３０は、応答時間を測定する（Ｓ２５０）。
【００４０】
このように、データベースサーバ１０は、データベースサーバ１０が起動された場合等であって、分割比率を新たに設定する必要がある場合のみならず、アプリケーションプログラムが変更された場合であっても、適切な分割比率を動的に算出し、設定することができる。なお、アプリケーションプログラムの変更を条件として分割比率を変更する処理は一例である。この処理に代えて、データベースサーバ１０は、アプリケーションプログラムが変更されたか否かに関わらず、応答時間の測定及び分割比率の設定を交互に処理し続けてもよい。
【００４１】
図３は、図２のＳ２１０においてパラメータを算出する他の例を示す。本例において、分割比率算出部４５０は、ミス率に更に基づいて応答時間算出式のパラメータを算出する。具体的には、まず、ミス率算出式生成部４８０は、測定されたミス率及び設定されている分割比率に基づいて、各バッファプールのサイズに基づいてそのバッファプールのミス率を算出するミス率算出式のパラメータを算出する（Ｓ３００）。
【００４２】
ここで、ミス率とは、例えば、以下の式（１０）で定義される値である。但し、Data Physical Readsは、データベース２０内のデータ部分を読み出した回数又は読み出されたデータ量を示す。Data Logical Readsは、データベース２０のデータ部分に対して要求された読み出しの回数又は読み出しが要求されるデータ量を示す。同様に、Index Physical Readsは、データベース２０内のインデックス部分を読み出した回数又は読み出されたデータ量を示す。Index Logical Readsは、データベース２０のインデックス部分に対して要求された読み出しの回数又は読み出しが要求されるデータ量を示す。
【数１０】
2005327138.tif 000012
【００４３】
即ち例えば、ミス率測定部４７０は、Data Physical Reads、Data Logical Reads、Index Physical Reads、及びIndex Logical Readsに基づいてミス率を算出してもよい。ミス率には、バッファプールのサイズを大きくすれば小さくなるという性質がある。このため、例えば、バッファプールに基づいてミス率を算出するミス率算出式は、式（１１）のようにモデル化できる。但し、u(t)は、バッファプールのサイズを示す。
【数１１】
2005327138.tif 000013
【００４４】
そして、ミス率算出式生成部４８０は、バッファプールのサイズがミス率に影響する影響度を示すパラメータであるbを算出する。例えば、ミス率算出式生成部４８０は、互いに異なる複数のバッファプールサイズの各々と、そのバッファプールのサイズが設定された状態において測定されたヒット率とに基づいて、例えばパラメータbが正の値である制約付の最小２乗法により、パラメータｂを算出する。
【００４５】
図４は、データベースサーバ１０がミス率算出式のパラメータを算出する処理の概念図である。本図のグラフには、互いに異なる複数のバッファプールサイズに対する応答時間がプロットされている。概念的には、ミス率算出式生成部４８０は、プロットされたこれらの点の各々と、式（１１）が示すグラフとの距離を最小にするパラメータbを算出する。
【００４６】
図３に戻る。続いて、応答時間算出式生成部４４０は、算出されたパラメータbに基づいて、応答時間算出式のパラメータを算出する（Ｓ３１０）。例えば、応答時間算出式生成部４４０は、以下の式（１２）に基づいて、パラメータaが正の値である制約付の最小２乗法により、パラメータaを算出する。但し、この式（１２）におけるパラメータbの各々は、Ｓ３００において既に算出されたパラメータである。
【数１２】
2005327138.tif 000014
【００４７】
以上、本図の方法によれば、応答時間算出式生成部４４０は、応答時間算出式のパラメータをより正確に算出することができる。これにより、一度の繰り返しにより応答時間がより短縮されるので、分割比率の収束を早めることができる。
【００４８】
図５は、本体部４０として機能するコンピュータ５００のハードウェア構成の一例を示す。コンピュータ５００は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、及びグラフィックコントローラ１０７５を有するＣＰＵ周辺部と、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部と、入出力コントローラ１０８４に接続されるＢＩＯＳ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部とを備える。
【００４９】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＢＩＯＳ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、ＣＰＵ１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００５０】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ１０４０は、コンピュータ５００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０を介して入出力チップ１０７０に提供する。
【００５１】
また、入出力コントローラ１０８４には、ＢＩＯＳ１０１０と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。ＢＩＯＳ１０１０は、コンピュータ５００の起動時にＣＰＵ１０００が実行するブートプログラムや、コンピュータ５００のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、ＲＡＭ１０２０を介して入出力チップ１０７０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００５２】
コンピュータ５００に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１０７０及び/又は入出力コントローラ１０８４を介して、記録媒体から読み出されコンピュータ５００にインストールされて実行される。このプログラムがコンピュータ５００に働きかけて行わせる動作は、図１から図４において説明したコンピュータ５００における動作と同一であるから、説明を省略する。
【００５３】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ５００に提供してもよい。
【００５４】
図６は、本実施例の効果を説明する図である。データベースサーバ１０において、データベースに対するOLTP(OnLine Transaction Processing)における性能を評価する、TPC-W(Transaction Processing Performance Council)のベンチマークテストを実行する実験を行った。データベース２０には、TPC-Wの中で、ウェブ・インタラクションにおける閲覧と注文の比率を５０％づつに設定したWIPSoと呼ばれる負荷が与えられる。また、データベース２０には、当該閲覧の比率が９５％でありかつ当該注文の比率が５％であるWIPSbと呼ばれる負荷が与えられる。
【００５５】
また、バッファプールの数は３つであり、各バッファプールは、そのバッファプールを用いる予め定められたトランザクションに対応付けられている。具体的には、主にインデックス部分を参照するトランザクションは、識別子BP_Indexのバッファプールに対応付けられている。ワーク用データ等のキャッシュデータを主に参照するトランザクションは、識別子BP_Tempのバッファプールに対応付けられている。その他のデータを主に参照するトランザクションは、識別子Bp_Dataのバッファプールに対応付けられている。また、応答時間は、各トランザクションの応答時間を１５分毎に平均した値とする。
【００５６】
（ａ）は、データベース２０に与えられる負荷がWIPSbからWIPSoに変更された場合においてデータベースサーバ１０が設定する分割比率を示す。まず、データベースサーバ１０は、分割比率の初期値として、3.4:3.4:3.2と、6:3:1と、2:6:2とを順次設定し、各分割比率が設定された状態における応答時間を測定する。次に、データベースサーバ１０は、これらの分割比率及び応答時間の組に基づいて、応答時間算出式のパラメータを算出する。分割比率が収束するまでにパラメータが反復して算出された回数は６回であった。この結果、データベースサーバ１０は、分割比率として3:2.4:4.6を設定する。
【００５７】
続いて、データベース２０にWIPSoの負荷が与えられる。3:2.4:4.6の分割比率が設定された状態における応答時間は既に測定されている。更に、データベースサーバ１０は、分割比率の初期値として、1:6:3と、6:1:3とを順次設定し、分割比率が設定された状態における応答時間を測定する。次に、データベースサーバ１０は、これらの分割比率及び応答時間の組に基づいて、応答時間算出式のパラメータを算出する。分割比率が収束するまでにパラメータが反復して算出された回数は３回であった。この結果、データベースサーバ１０は、分割比率として5.4:0.6:4を設定する。
【００５８】
（ｂ）は、データベース２０に与えられる負荷がWIPSoからWIPSbに変更された場合においてデータベースサーバ１０が設定する分割比率を示す。まず、データベースサーバ１０は、分割比率の初期値として、3.4:3.4:3.2と、1:6:3と、6:1:3とを順次設定し、各分割比率が設定された状態における応答時間を測定する。次に、データベースサーバ１０は、これらの分割比率及び応答時間の組に基づいて、応答時間算出式のパラメータを算出する。分割比率が収束するまでにパラメータが反復して算出された回数は3回であった。この結果、データベースサーバ１０は、分割比率として5.6:1.8:2.6を設定する。
【００５９】
続いて、データベース２０にWIPSbの負荷が与えられる。5.6:1.8:2.6の分割比率が設定された状態における応答時間は既に測定されている。更に、データベースサーバ１０は、分割比率の初期値として、6:3:1と、2:6:2とを順次設定し、分割比率が設定された状態における応答時間を測定する。次に、データベースサーバ１０は、これらの分割比率及び応答時間の組に基づいて、応答時間算出式のパラメータを算出する。分割比率が収束するまでにパラメータが反復して算出された回数は4回であった。この結果、データベースサーバ１０は、分割比率として2.6:2.2:5.2を設定する。
【００６０】
この結果設定された分割比率は、１０時間以上を要して分割比率を算出する他の方法による比率と比較して、ほとんど変わらないことが確かめられた。即ち、本実施例によれば、負荷が変化した場合であっても、その負荷に応じた適切な分割比率を短時間で算出することができる。
【００６１】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００６２】
【図１】図１は、データベースサーバ１０のブロック図である。
【図２】図２は、データベースサーバ１０が分割比率を設定する処理の動作フローを示す。
【図３】図３は、図２のＳ２１０においてパラメータを算出する他の例を示す。
【図４】図４は、データベースサーバ１０がミス率算出式のパラメータを算出する処理の概念図である。
【図５】図５は、本体部４０として機能するコンピュータ５００のハードウェア構成の一例を示す。
【図６】図６は、本実施例の効果を説明する図である。
【符号の説明】
【００６３】
１０  データベースサーバ
２０  データベース
３０  バッファプール
４０  本体部
４００  インターフェイス
４１０  分割比率設定部
４２０  変更検出部
４３０  応答時間測定部
４４０  応答時間算出式生成部
４５０  分割比率算出部
４６０  収束判定部
４７０  ミス率測定部
４８０  ミス率算出式生成部
５００  コンピュータ
【図１】
2005327138.tif 000015
【図２】
2005327138.tif 000016
【図３】
2005327138.tif 000017
【図４】
2005327138.tif 000018
【図５】
2005327138.tif 000019
【図６】
2005327138.tif 000020