(57)【要約】      （修正有）【課題】呼び出されやすい関数を予測し、関数のオブジェクトをキャッシュメモリおよび記憶装置に保持させることができるデータベース装置を提供する。【解決手段】データベース装置１０は、実行履歴取得部４１と、予測部４５と、最適化部４６とを備える。実行履歴取得部４１は、記憶装置１３にソースが記憶された複数の関数が呼び出された回数を示す実行履歴情報を期間ごとに取得する。予測部は、過去の複数の実行履歴情報にもとづいて、次回期間における複数の関数のそれぞれの呼び出されやすさを予測する。最適化部４６は、次回期間における複数の関数のそれぞれの呼び出されやすさにもとづいて、呼び出されやすい関数から順に第１の所定数の関数の構文解析結果を記憶装置１３に格納する。また、最適化部４６は、呼び出されやすい関数から順に第２の所定数の関数の構文解析結果を記憶装置１３よりもアクセス速度が速いキャッシュメモリ１５に格納する。【選択図】図１
2013239039.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置にソースが記憶された複数の関数のそれぞれが所定の期間内に呼び出された回数を示す実行履歴情報を期間ごとに取得する実行履歴取得部と、
過去の直近期間である今回期間の実行履歴情報を含む過去の複数の実行履歴情報にもとづいて、前記今回期間の次の期間である次回期間における前記複数の関数のそれぞれの呼び出されやすさを予測する予測部と、
前記次回期間における前記複数の関数のそれぞれの呼び出されやすさにもとづいて、呼び出されやすい関数から順に第１の所定数の関数の構文解析結果を前記記憶装置に格納するとともに、前記呼び出されやすい関数から順に第２の所定数の関数の構文解析結果を前記記憶装置よりもアクセス速度が速いキャッシュメモリに格納する最適化部と、
を備えたデータベース装置。
【請求項２】
前記実行履歴取得部、前記予測部、前記最適化部および前記キャッシュメモリを有するデータベースサーバを備え、
前記記憶装置は、不揮発性の記憶媒体であり、
前記最適化部は、
前記データベースサーバのシャットダウン時に、前記呼び出されやすい関数から順に前記第１の所定数の関数の構文解析結果を前記記憶装置に格納するとともに、前記データベースサーバの起動時に、前記記憶装置に格納された前記第１の所定数の関数の構文解析結果のうち前記呼び出されやすい関数から順に前記第２の所定数の関数の構文解析結果を前記記憶装置から前記キャッシュメモリに複製する、
請求項１記載のデータベース装置。
【請求項３】
前記今回期間の実行履歴情報を受けるごとに、前記今回期間の実行履歴情報を含む前記過去の複数の実行履歴情報を所定数のクラスタに分類して各クラスタの中心値を更新するクラスタ情報更新部と、
前記今回期間の実行履歴情報を受けるごとに、前記今回期間の実行履歴情報と、前記今回期間の一つ前の期間である前回期間の実行履歴情報と、にもとづいて、隣り合う２期間のうちの一方の期間の実行履歴情報が属するクラスタから前記一方の期間の次の期間である前記２期間のうちの他方の期間の実行履歴情報が属するクラスタに遷移する確率であるクラスタ間の遷移確率を更新する遷移確率更新部と、
をさらに備え、
前記予測部は、
前記今回期間の実行履歴情報と前記クラスタ間の遷移確率とにもとづいて、前記次回期間における前記複数の関数のそれぞれの呼び出されやすさを予測する、
請求項１または２に記載のデータベース装置。
【請求項４】
前記所定数のクラスタから各実行履歴情報が属するクラスタを１つ選択するクラスタ選択部、
をさらに備え、
前記遷移確率更新部は、
前記各実行履歴情報が属するクラスタにもとづいて前記クラスタ間の遷移確率を更新し、
前記予測部は、
前記クラスタ間の遷移確率と前記今回期間の実行履歴情報が属するクラスタとにもとづいて前記次回期間の実行履歴情報が属するクラスタを予測してこの予測したクラスタの中心値を取得し、
前記最適化部は、
前記予測したクラスタの中心値にもとづいて、呼び出されやすい関数から順に前記第１の所定数の関数の構文解析結果を前記記憶装置に格納するとともに、前記呼び出されやすい関数から順に前記第２の所定数の関数の構文解析結果を前記キャッシュメモリに格納する、
請求項３記載のデータベース装置。
【請求項５】
前記所定数のクラスタのそれぞれに対して実行履歴情報が属する確率を求めるクラスタ選択部、
をさらに備え、
前記遷移確率更新部は、
前記所定数のクラスタのそれぞれに対して実行履歴情報が属する確率にもとづいて前記クラスタ間の遷移確率を更新し、
前記予測部は、
前記クラスタ間の遷移確率と、前記今回期間の実行履歴情報と、前記各クラスタの中心値の情報と、にもとづいて、前記次回期間における前記複数の関数のそれぞれの呼び出されやすさを予測する、
請求項３記載のデータベース装置。
【請求項６】
前記所定の期間の期間内において、ユーザから操作端末を介して前記記憶装置に記憶された前記複数の関数のいずれかの呼び出しを受け付けると、呼び出された関数の構文解析結果を実行する実行部と、
前記複数の関数のいずれかの呼び出しが受け付けられるごとに、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄアルゴリズムで関数の構文解析結果を前記キャッシュメモリに割り当てるＬＲＵ部と、
をさらに備えた請求項１ないし５のいずれか１項に記載のデータベース装置。
【請求項７】
記憶装置にソースが記憶された複数の関数のそれぞれが所定の期間内に呼び出された回数を示す実行履歴情報を期間ごとに取得するステップと、
過去の直近期間である今回期間の実行履歴情報を含む過去の複数の実行履歴情報にもとづいて、前記今回期間の次の期間である次回期間における前記複数の関数のそれぞれの呼び出されやすさを予測するステップと、
前記次回期間における前記複数の関数のそれぞれの呼び出されやすさにもとづいて、呼び出されやすい関数から順に第１の所定数の関数の構文解析結果を前記記憶装置に格納するステップと、
前記呼び出されやすい関数から順に第２の所定数の関数の構文解析結果を前記記憶装置よりもアクセス速度が速いキャッシュメモリに格納するステップと、
を有するデータベース装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベース装置およびデータベース装置の制御方法に関する。
【背景技術】
【０００２】
不揮発性の記憶装置と、この記憶装置よりもアクセスに要する時間が短いキャッシュメモリと、を有するデータベース装置には、記憶装置に複数の関数を登録しておくものがある。この種のデータベース装置では、記憶装置に登録された複数の関数（以下、Stored関数という）のうちユーザから呼び出された関数のオブジェクト（関数のソース（文字列）をコンパイルして構文解析した結果）をキャッシュメモリ上に展開して実行可能な状態にするまでの時間を短縮する（実行時の速度を向上させる）ことが重要となる。
【０００３】
実行時の速度を向上させる方法として、ユーザにより関数が呼び出されるたびに、この関数のオブジェクト（構文解析結果）をキャッシュメモリに蓄積していく方法ある。この方法では、最も過去に呼び出された関数のオブジェクトから順にキャッシュメモリから削除されていき、最近呼び出されたオブジェクトがキャッシュメモリに残るようになっている。しかし、利用にともないキャッシュメモリに蓄積されたデータは、データベース装置のシャットダウン時には揮発し、起動直後にはキャッシュメモリのデータが失われた状態となる。
【０００４】
起動直後でも実行時の速度が低下させることがないようにする方法としては、たとえばデータベース装置のシャットダウン時にキャッシュメモリに蓄積された最近呼び出されたオブジェクトを記憶装置に退避させておき、この退避させたオブジェクトを起動時に再びキャッシュメモリに戻す方法などが考えられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１８６２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記方法では、起動時にキャッシュメモリに保持されるデータは、前回のシャットダウン時にキャッシュメモリに保持されていたデータと同一である。しかし、シャットダウン時と起動時との間に時間的な隔たりがある場合やユーザが変化する場合などには、前回期間（たとえばシャットダウン前の所定期間）で呼び出されやすい関数と、次回期間（たとえば起動直後の所定期間）に呼び出されやすい関数とは異なる場合がある。
【０００７】
たとえば、会社の複数の社員により利用されるデータベース装置であって、夜中にシャットダウンされるとともに社員の出社前の早朝に起動されるデータベース装置の場合、シャットダウン時に呼び出されやすい関数と、早朝の出社後に社員が一斉に呼び出す可能性の高い関数とは大きく異なることが予想される。
【０００８】
また、最も過去に呼び出された関数から順にキャッシュメモリから削除しつつ呼び出されたオブジェクトをキャッシュメモリに蓄積する方法では、前回期間と次回期間で呼び出されやすい関数が異なる場合には、次回期間の初期においてはキャッシュメモリにはユーザに呼び出されやすいオブジェクトがあまり格納されていないことになる。たとえキャッシュメモリに相当数のオブジェクトが保持されていても、ユーザに呼び出されやすいオブジェクトが保持されていなければ、実行速度は低下してしまう。
【課題を解決するための手段】
【０００９】
本発明の一実施形態に係るデータベース装置は、上述した課題を解決するために、実行履歴取得部と、予測部と、最適化部とを備える。実行履歴取得部は、記憶装置にソースが記憶された複数の関数のそれぞれが所定の期間内に呼び出された回数を示す実行履歴情報を期間ごとに取得する。予測部は、過去の直近期間である今回期間の実行履歴情報を含む過去の複数の実行履歴情報にもとづいて、今回期間の次の期間である次回期間における複数の関数のそれぞれの呼び出されやすさを予測する。最適化部は、次回期間における複数の関数のそれぞれの呼び出されやすさにもとづいて、呼び出されやすい関数から順に第１の所定数の関数の構文解析結果を記憶装置に格納する。また、最適化部は、呼び出されやすい関数から順に第２の所定数の関数の構文解析結果を記憶装置よりもアクセス速度が速いキャッシュメモリに格納する。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１実施形態に係るデータベース装置の一例を示す全体構成図。
【図２】記憶装置に記憶されるオブジェクトの所要記憶容量と関数を実行可能な状態にするまでにかかる時間との関係の一例を示す説明図。
【図３】過去の複数の実行履歴にもとづいて次の期間の関数の呼び出されやすさを予測する様子の一例を示す説明図。
【図４】（ａ）は関数が複数の潜在的実行パターンに属する様子を説明するための図、（ｂ）は関数の実行履歴を３つのクラスタに分類する場合において次回期間の関数の呼び出されやすさを予測する様子の一例を示す説明図、（ｃ）は（ｂ）に示す例におけるクラスタ間の遷移確率の一例を示す説明図。
【図５】図１に示すデータベースサーバの制御部により期間ｔｎにおいて実行される関数実行処理の手順を示すフローチャート。
【図６】第１実施形態に係る予測処理の手順を示すフローチャート。
【図７】クラスタ情報の一例を示す説明図。
【図８】図６のステップＳ１２でクラスタ情報更新部により実行されるクラスタ情報更新処理の手順を示すサブルーチンフローチャート。
【図９】図６のステップＳ１４で遷移確率更新部により実行される遷移確率情報更新処理の手順を示すサブルーチンフローチャート。
【図１０】第１実施形態に係る遷移確率情報更新処理により遷移確率情報が更新される様子の一例を示す説明図。
【図１１】本発明の第２実施形態に係るデータベース装置の一例を示す全体構成図。
【図１２】図１２（ａ）は、第２実施形態に係る記憶装置の遷移確率情報の遷移確率累積情報の一例を示す説明図、（ｂ）は、遷移確率情報の前回クラスタ所属確率ｑ（ｃ）の一例を示す説明図。
【図１３】第２実施形態に係る予測処理の手順を示すフローチャート。
【図１４】図１３のステップＳ２２で遷移確率更新部により実行される遷移確率情報更新処理の手順を示すサブルーチンフローチャート。
【発明を実施するための形態】
【００１１】
本発明に係るデータベース装置およびデータベース装置の制御方法の実施の形態について、添付図面を参照して説明する。
【００１２】
（１．第１の実施形態）
（１−１．全体構成）
図１は、本発明の第１実施形態に係るデータベース装置１０の一例を示す全体構成図である。また、図２は、記憶装置１３に記憶されるオブジェクトの所要記憶容量と関数を実行可能な状態にするまでにかかる時間との関係の一例を示す説明図である。
【００１３】
図１に示すように、データベース装置１０は、ＤＢＭＳとして機能するデータベースサーバ１１、操作端末１２および不揮発性の記憶装置１３を有する。データベースサーバ１１は、制御部１４およびキャッシュメモリ１５を有する。
【００１４】
ここで、本実施形態に係るデータベース装置１０の作用について簡単に説明しておく。Stored関数を利用可能なＤＢＭＳにおける関数の保持方法のうち、第１の方法（たとえばＯｒａｃｌｅ  ＰＬ／ＳＱＬなどで用いられる関数の保持方法）では、関数が記憶装置１３に登録される際に、関数のソース（文字列）およびオブジェクト（構文解析結果）が記憶装置１３に格納される。
【００１５】
この第１の方法では、全ての関数のオブジェクトが記憶装置１３に格納されているため、関数が呼び出された際にコンパイルする手間を省くことができる。このため、図２に示すように、関数のオブジェクトをキャッシュメモリ１５上に展開するまでの時間（関数を実行可能な状態にするまでの時間）を短縮する（実行時の速度を向上させる）ことができる。しかし、第１の方法では記憶装置１３に記憶されるオブジェクトの所要記憶容量が多くなってしまう。
【００１６】
一方、第２の方法（たとえばＰｏｓｔｇｒｅＳＱＬ  ＰＬｐｇ／ＳＱＬなどで用いられる関数の保持方法）では、関数が記憶装置１３に登録される際に、記憶装置１３はソースのみを保持しオブジェクト（構文解析結果）は保持しないようになっている。
【００１７】
この第２の方法では、図２に示すように、記憶装置１３の記憶容量を圧迫しないものの、記憶装置１３にはオブジェクトが保持されない。このため、ユーザにより呼び出された関数のオブジェクトがキャッシュメモリ１５に保持されていない場合は、記憶装置１３に記憶された関数のソースからオブジェクトを生成する手間と、このオブジェクトをキャッシュメモリ１５に与える手間とが必要となってしまう。したがって、関数のオブジェクトをキャッシュメモリ１５上に展開するまでの時間（関数を実行可能な状態にするまでの時間）が増加（実行時の速度が低下）してしまう。
【００１８】
実行時の速度向上と記憶装置１３に記憶されるオブジェクトの所要記憶容量の削減とを同時に達成する方法としては、記憶装置１３に格納するオブジェクトおよびキャッシュメモリ１５に格納するオブジェクトを厳選することが考えられる。
【００１９】
たとえば、記憶装置１３にソースが登録された全ての関数から所定数の関数をランダムに抽出する場合には、記憶装置１３に記憶されるオブジェクトの所要記憶容量と実行速度との関係は図２に破線で示した直線となることが予想される。また、関数の呼出確率に偏りがある場合には、この関係は図２に実線で示した曲線となることが予想される。
【００２０】
そこで、本実施形態に係るデータベース装置１０は、統計的な情報にもとづいて関数の呼び出されやすさを予測し、呼び出されやすいと予測される関数のオブジェクトのみを記憶装置１３およびキャッシュメモリ１５に格納する。統計的な情報としては、たとえば関数の実行履歴を用いるとよい。以下の説明では、所定の期間ごとに関数の実行履歴を求め、複数の実行履歴と直前の期間の実行履歴とにもとづいて次の期間の関数の呼び出されやすさを予測する場合の例について示す。
【００２１】
また、データベースサーバ１１の再起動時には、キャッシュメモリ１５の記憶内容が一度揮発してしまう。このため、本実施形態に係るデータベース装置１０は、データベースサーバ１１の通常稼動時はもちろん、データベースサーバ１１の起動時にも、記憶装置１３に記憶された呼び出されやすい関数のオブジェクトの一部または全部をキャッシュメモリ１５に複製することで、ユーザからの操作端末１２を介した関数の呼び出し要求に備える。
【００２２】
図３は、過去の複数の実行履歴にもとづいて次の期間の関数の呼び出されやすさを予測する様子の一例を示す説明図である。
【００２３】
記憶装置１３に登録された関数の総数をｆ１、ｆ２、・・・、ｆｋのｋ個とすると、期間ｔｎにおいて呼び出された関数の実行履歴ｈｔｎ（ただしｎは正整数）は、各関数ｆ１、ｆ２、・・・、ｆｋがそれぞれ期間ｔｎに呼び出された回数ｍｎ１、ｍｎ２、・・・、ｍｎｋを内容とする情報である。
【００２４】
本実施形態に係るデータベース装置１０は、あらかじめ定められた予測処理を開始すべき期間（以下、予測処理期間という）に入ると、過去の直近期間（以下、今回期間という）の実行履歴（図３に示す例では期間ｔ２の実行履歴ｈｔ２）を含む過去の実行履歴にもとづいて、今回期間の次の期間（以下、次回期間という）（図３に示す例では期間ｔ３）の関数の呼び出されやすさを予測する。
【００２５】
なお、予測処理期間は、たとえば、データベースサーバ１１のシステム状態がアイドル状態である期間や、起動直後の期間などの、関数の呼び出しが行われることが少ない期間に設定するとよい。
【００２６】
ただし、実行履歴のパターン数は、記憶装置１３に登録された関数の総数に応じて非常に多くなる。このため、今回期間の実行履歴（今回の実行履歴）から次回期間の実行履歴（次回の実行履歴）を直接予測することは非常に難しい。
【００２７】
そこで、本実施形態に係るデータベース装置１０は、まず、潜在的な関数の実行パターンが存在することを仮定し、関数の実行履歴を所定数のクラスタに分類して、前後の期間におけるクラスタの遷移を予測することによって次回期間の関数の呼び出されやすさを予測する。
【００２８】
図４（ａ）は、関数が複数の潜在的実行パターンに属する様子を説明するための図であり、（ｂ）は、関数の実行履歴を３つのクラスタに分類する場合において次回期間の関数の呼び出されやすさを予測する様子の一例を示す説明図であり、（ｃ）は、（ｂ）に示す例におけるクラスタ間の遷移確率の一例を示す説明図である。
【００２９】
図４（ａ）に示すように、まず、潜在的な関数の実行パターンが存在することを仮定する。潜在的実行パターンが存在する場合、複数の実行履歴は所定数のクラスタに分類できると考えられる。
【００３０】
そこで、図４（ｂ）に破線で示すように、複数の実行履歴を所定数のクラスタに分類する。図４（ｂ）には、記憶装置１３にｆ１とｆ２の２つの関数のみが記憶されている場合の例について示した。なお、図４（ｂ）および（ｃ）には、この所定数を３とし、実行履歴をＣ１、Ｃ２、Ｃ３の３つのクラスタに分類する場合の例について示した。また、
【００３１】
実行履歴ｈｔｎは、各関数が期間ｔｎ内に呼び出される回数を内容とする。このため、実行履歴ｈｔｎは、関数の総数ｋと同数の要素を有するｋ次元ベクトルとして定義することができる。また、各クラスタの中心ベクトル（中心値、セントロイド）μを各クラスタに属する実行履歴ベクトルの平均値として定義することができる（図４（ｂ）の星印参照）。
【００３２】
また、隣り合う２期間のうちの前の期間の実行履歴が属するクラスタ（遷移前クラスタ）から、隣り合う２期間のうちの次の期間の実行履歴が属するクラスタ（遷移後クラスタ）に遷移した事象を蓄積することで、図４（ｃ）に示すクラスタ間の遷移確率を得ることができる。
【００３３】
たとえば、図４（ｂ）に示すように、今回期間ｔｎの実行履歴ｈｔｎが属するクラスタがＣ１である場合、図４（ｃ）に示すクラスタ間の遷移確率から、次回期間ｔｎ＋１の実行履歴ｈｔｎ＋１はクラスタＣ３に属することがもっともらしいと予測される。このため、次回期間ｔｎ＋１における関数の呼び出されやすさを、クラスタＣ３の中心ベクトルμ３にもとづいて予測することができる。なお、クラスタ間の遷移確率は、直前の状態（遷移前の実行履歴）のみによって決まるものとする。
【００３４】
このように、本実施形態に係るデータベース装置１０は、関数の実行履歴を所定数のクラスタに分類し、今回の実行履歴と過去のクラスタ間の遷移確率とにもとづいて次回期間における関数の呼び出されやすさを予測する。
【００３５】
構成の説明に戻り、操作端末１２は、パーソナルコンピュータなどの一般的な情報処理装置により構成され、入力部および表示部を有し、入力部を介して受け付けたユーザによる操作内容をデータベースサーバ１１に与えるとともに、データベースサーバ１１から受けた情報を、表示部を介してユーザに提示する。
【００３６】
記憶装置１３は、磁気的もしくは光学的記録媒体または半導体メモリなどの、ＣＰＵにより読み取り可能な記録媒体を含んだ構成を有し、記憶装置１３に格納されるプログラムおよびデータの一部は電子ネットワークを介してダウンロードされるように構成してもよい。記憶装置１３は、ソーステーブル２１、ディスクオブジェクトテーブル２２、クラスタ情報２３および遷移確率情報２４を記憶する。
【００３７】
ソーステーブル２１は、ユーザから操作端末１２を介してデータベースサーバ１１に登録するよう要求のあった全ての関数の名称と関数のソースとを関連付けて格納する。
【００３８】
ディスクオブジェクトテーブル２２は、制御部１４により次の期間に呼び出されやすいと予測された所定数の関数のオブジェクト（構文解析結果）を格納する。
【００３９】
クラスタ情報２３は、各クラスタの要素数と中心ベクトルとを関連付けた情報（クラスタ情報）である。また、遷移確率情報２４は、クラスタ間の遷移確率を示す情報（図４（ｃ）参照）である。
【００４０】
データベースサーバ１１の制御部１４は、ＣＰＵなどの演算処理装置により構成され、記憶装置１３などの記憶媒体に記憶された最適化プログラムに従って、関数の呼び出されやすさを予測し、予測した関数の呼び出されやすさに応じてオブジェクトを記憶装置１３およびキャッシュメモリ１５に保持させる。
【００４１】
図１に示すように、制御部１４は、最適化プログラムによって少なくとも実行部３１、構文解析部３２、ＬＲＵ部３３、予測開始部３４および予測処理部３５として機能する。また、予測処理部３５は、実行履歴取得部４１、クラスタ情報更新部４２、クラスタ選択部４３、遷移確率更新部４４、予測部４５および最適化部４６を有する。この各部３１〜３５および４１〜４６は、ＣＰＵなどの演算処理装置を用いることなく回路などのハードウエアロジックによって構成してもよい。
【００４２】
データベースサーバ１１のキャッシュメモリ１５は、半導体メモリなどのＣＰＵにより読み取り可能な記録媒体を含んだ構成を有する。キャッシュメモリ１５は、制御部１４によるアクセス速度が記憶装置１３よりも速い揮発性の記憶媒体である。キャッシュメモリ１５は、キャッシュオブジェクトテーブル５１を記憶するとともに、今回の実行履歴を記憶する。今回の実行履歴は、対象期間中に記憶装置１３に登録された関数（ソーステーブル２１に格納された関数）のそれぞれが呼び出された回数を蓄積することにより、対象期間終了と同時に生成される。
【００４３】
（１−２．動作（期間ｔｎ中の関数実行処理））
図５は、図１に示すデータベースサーバ１１の制御部１４により期間ｔｎにおいて実行される関数実行処理の手順を示すフローチャートである。図５において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。
【００４４】
まず、ステップＳ１において、実行部３１は、関数ｆｎの呼び出し要求（実行要求）を受け付ける。
【００４５】
次に、ステップＳ２において、実行部３１は、キャッシュメモリ１５に記憶された現在の期間ｔｎの実行履歴ｈｔｎにおける関数ｆｎの呼び出し回数ｍｎを１増加させる。
【００４６】
次に、ステップＳ３において、実行部３１は、実行要求があった関数ｆｎに対応するオブジェクトＯｎがキャッシュオブジェクトテーブル５１にあるか否かを判定する。オブジェクトＯｎがキャッシュオブジェクトテーブル５１にある場合は、ステップＳ６に進む。一方、ない場合はステップＳ４に進む。
【００４７】
次に、ステップＳ４において、実行部３１は、オブジェクトＯｎがディスクオブジェクトテーブル２２にあるか否かを判定する。オブジェクトＯｎがディスクオブジェクトテーブル２２にある場合は、このオブジェクトＯｎをキャッシュメモリ１５に複製してステップＳ６に進む。一方、オブジェクトＯｎがディスクオブジェクトテーブル２２にない場合はステップＳ５に進む。
【００４８】
次に、ステップＳ５において、構文解析部３２はソーステーブル２１に格納された関数ｆｎのソースＳｎを用いてオブジェクトＯｎを生成し、キャッシュメモリ１５に展開する。
【００４９】
次に、ステップＳ６において、実行部３１は、キャッシュメモリ１５にあるオブジェクトＯｎを実行する。
【００５０】
次に、ステップＳ７において、ＬＲＵ部３３は、キャッシュオブジェクトテーブル５１をＬｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄアルゴリズム（ＬＲＵアルゴリズム）を用いて更新する。
【００５１】
以上の手順により、関数の呼び出し（実行要求）に応じて関数のオブジェクトを実行することができるとともに、期間ｔｎの実行履歴ｈｔｎを更新することができる。
【００５２】
（１−３．動作（第１実施形態に係る予測処理））
図６は、第１実施形態に係る予測処理の手順を示すフローチャートである。図６において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。
【００５３】
この手順は、予測開始部３４により、あらかじめ定められた予測処理期間に入ったと判定されてスタートとなる。予測処理期間は、たとえば、データベースサーバ１１のシステム状態がアイドル状態である期間や、起動直後の期間などの、関数の呼び出しが行われることが少ない期間に設定される。
【００５４】
なお、システム状態がアイドル状態となることで予測処理期間に入ったと判定した場合、予測開始部３４は、以下の手順に並行してシステム状態を監視し、アイドル状態ではなくなると以下の手順を中断して一時保留とするか、または中止してキャンセルするよう、予測処理部３５に指示する。また、図６の説明においては、今回期間（過去の直近期間）がｔｎであるものとする。
【００５５】
まず、ステップＳ１１において、実行履歴取得部４１は、キャッシュメモリ１５から今回の実行履歴ｈｔｎを取得する。
【００５６】
次に、ステップＳ１２において、クラスタ情報更新部４２は、今回の実行履歴ｈｔｎを含む過去の複数の実行履歴を再度クラスタリングすることにより、クラスタ情報２３を更新する。
【００５７】
図７は、クラスタ情報２３の一例を示す説明図である。図７に示すように、クラスタ情報２３には、各クラスタの要素数と、各クラスタの中心ベクトルμとが含まれる。
【００５８】
次に、ステップＳ１３において、クラスタ選択部４３は、今回の実行履歴ｈｔｎが属するクラスタを１つ選択する。選択方法としては、実行履歴ｈｔｎを正規化したベクトルと正規化した中心ベクトルとの内積にもとづいて、最も内積が大きくなる中心ベクトルに対応するクラスタを選択する方法などが挙げられる。
【００５９】
次に、ステップＳ１４において、遷移確率更新部４４は、今回の実行履歴ｈｔｎが属するクラスタの情報と前回の実行履歴ｈｔｎ−１が属していたクラスタの情報にもとづいて、クラスタ間の遷移確率を示す遷移確率情報２４を更新する。
【００６０】
次に、ステップＳ１５において、予測部４５は、遷移確率情報２４にもとづいて、次回期間ｔｎ＋１の実行履歴ｈｔｎ＋１が属するクラスタを予測し、このクラスタの中心ベクトルの情報をクラスタ情報２３から取得する。
【００６１】
そして、予測部４５は、このクラスタの中心ベクトルにもとづいて、次回期間ｔｎ＋１における複数の関数のそれぞれの呼び出されやすさを予測する。各クラスタの中心ベクトルは、各クラスタに属する複数の実行履歴の平均ベクトルである。したがって、中心ベクトルの各要素の大きさは、各要素が対応する関数の呼び出されやすさ（呼出確率）を表すといえる。
【００６２】
したがって、クラスタＣの正規化済みの中心ベクトルのｉ番目の要素（関数ｆｉに係る要素）をμｃ（ｉ）とすると、予測部４５は、μｃ（ｉ）／Σｓμｃ（ｓ）で関数ｆｉの呼び出される確率を近似すればよい（ただしｓは１〜ｋ）。
【００６３】
次に、ステップＳ１６において、最適化部４６は、次回期間ｔｎ＋１における複数の関数のそれぞれの呼び出されやすさにもとづいて、呼び出されやすい関数から順に所定数の関数のオブジェクトをディスクオブジェクトテーブル２２に格納する。より具体的には、最適化部４６は、実行履歴ｈｔｎ＋１が属すると予想されたクラスタの中心ベクトルの各要素が大きいものから順に、所定数の関数のブジェクトをディスクオブジェクトテーブル２２に格納する。
【００６４】
このとき、ディスクオブジェクトテーブル２２には、呼出期待値順にオブジェクトを並べて格納してもよいし、各オブジェクトと各オブジェクトの呼出期待値の順位の情報とを関連付けて格納してもよい。
【００６５】
なお、所定数の関数のうち、オブジェクトがディスクオブジェクトテーブル２２およびキャッシュオブジェクトテーブル５１のいずれにも無い場合には、最適化部４６は、構文解析部３２に対して対象となる関数のソースをソーステーブル２１から読み出してオブジェクトを生成するよう指示する。
【００６６】
以上の手順により、予測処理期間において、次回期間に呼び出されやすいと予測される所定数の関数のオブジェクトをディスクオブジェクトテーブル２２に格納することができる。このため、記憶装置１３にはデータベースサーバ１１に登録された全ての関数のオブジェクトではなく、次回期間に呼び出されやすいと予測される厳選された関数のオブジェクトのみが記憶される。したがって、本実施形態に係るデータベース装置１０によれば、記憶装置１３にオブジェクトが占める記憶容量を削減しつつ実行速度の低下を防ぐことができる。
【００６７】
また、最適化部４６は、図６に示す手順の終了後かつ予測処理期間に、またはデータベースサーバ１１の再起動時に、ディスクオブジェクトテーブル２２に記憶された所定数のオブジェクトの全部または呼び出されやすさが上位の一部をキャッシュオブジェクトテーブル５１に複製する。このため、キャッシュメモリ１５には、次回期間に呼び出されやすいと予測される厳選された関数のオブジェクトを記憶させることができる。
【００６８】
（１−４．動作（第１実施形態に係るクラスタ情報更新処理））
図８は、図６のステップＳ１２でクラスタ情報更新部４２により実行されるクラスタ情報更新処理の手順を示すサブルーチンフローチャートである。
【００６９】
ステップＳ１２１において、クラスタ情報更新部４２は、記憶装置１３から現在のクラスタ情報２３（図７参照）を取得する。
【００７０】
次に、ステップＳ１２２において、クラスタ情報更新部４２は、キャッシュメモリ１５から今回の実行履歴ｈｔｎの情報を取得し、この実行履歴ｈｔｎを正規化する。実行履歴ｈを正規化する際には、実行履歴を１次元ベクトルｈ＝（ｍｎ１、ｍｎ２、・・・、ｍｎｋ）とみなし、たとえば次の式（１）を用いて長さ１に正規化するとよい（ただし、ｋは記憶装置１３に登録された関数の総数を表す）。
【数１】
2013239039.tif 000003
【００７１】
次に、ステップＳ１２３において、クラスタ情報更新部４２は、正規化した実行履歴ｈｔｎと現在のクラスタ情報２３とにもとづいて、クラスタ情報２３を更新し、図６のステップＳ１３に進む。なお、クラスタ情報２３の更新方法としては、たとえばオンラインＫ平均法などの、クラスタの総数が維持される非階層的クラスタリングアルゴリズムを用いるとよい。
【００７２】
以上の手順により、今回の実行履歴を反映してクラスタ情報２３を更新することができる。
【００７３】
（１−５．動作（第１実施形態に係る遷移確率情報更新処理））
図９は、図６のステップＳ１４で遷移確率更新部４４により実行される遷移確率情報更新処理の手順を示すサブルーチンフローチャートである。
【００７４】
ステップＳ１４１において、遷移確率更新部４４は、記憶装置１３から遷移確率情報２４を取得する。
【００７５】
次に、ステップＳ１４２において、遷移確率更新部４４は、前回の実行履歴ｈｔｎ−１が属していたクラスタと、今回の実行履歴ｈｔｎが属するクラスタとにもとづいて、遷移確率情報２４（図４（ｃ）参照）を更新する。以下、図１０を用いてより具体的に説明する。
【００７６】
図１０は、第１実施形態に係る遷移確率情報更新処理により遷移確率情報２４が更新される様子の一例を示す説明図である。図１０には、クラスタ総数が３であり、前回の実行履歴ｈｔｎ−１が属していたクラスタをＣ１、今回の実行履歴ｈｔｎが属するクラスタがＣ３である場合の例について示した。
【００７７】
今回の実行履歴ｈｔｎが属するクラスタが確定した時点で、前回の実行履歴ｈｔｎ−１が属していたクラスタを遷移前クラスタとし今回の実行履歴ｈｔｎが属するクラスタを遷移後クラスタとする事象が１つ増えたことになる。
【００７８】
したがって、たとえば図１０に示すように、遷移前クラスタＣ１に係る事象の総数が２０であり、前回の実行履歴ｈｔｎ−１が属していたクラスタがＣ１である場合は、遷移前クラスタＣ１に係る事象の総数は２１に増加する。その上で、今回の実行履歴ｈｔｎが属するクラスタがＣ３であれば、遷移前クラスタがＣ１であり遷移後クラスタがＣ３であった事象が１増加する。遷移確率更新部４４は、クラスタ間遷移（たとえばＣ１からＣ３など）の事象数を、各遷移前クラスタに係る事象の総数で除することにより新たにクラスタ間の遷移確率を求めて、遷移確率情報２４を更新する。
【００７９】
図９に示す手順により、今回の実行履歴を反映して遷移確率情報２４を更新することができる。
【００８０】
本実施形態に係るデータベース装置１０は、関数の実行履歴にもとづいて呼び出されやすい関数を予測し、予測した呼び出されやすい関数のオブジェクトをキャッシュメモリ１５および記憶装置１３に保持させることができる。このため、本実施形態に係るデータベース装置１０は、呼び出される可能性の高い関数のオブジェクトだけを記憶装置１３に格納することができる。したがって、全ての関数のオブジェクトを記憶装置１３に格納する場合に比べてオブジェクトの所要記憶容量が少なくてすむとともに、記憶装置１３に記憶されたオブジェクトは呼び出される可能性の高い厳選された関数のオブジェクトとすることができる。
【００８１】
また、本実施形態に係るデータベース装置１０は、アイドリング状態にある時や起動時などに、呼び出される可能性の高い関数のオブジェクトだけをキャッシュメモリ１５に格納することができる。
【００８２】
一般に、キャッシュメモリ１５の記憶容量は小さく、データベース装置１０に登録された全てのオブジェクトを格納することは難しい。この点、本実施形態に係るデータベース装置１０は、呼び出される可能正の高い厳選された関数のオブジェクトのみをキャッシュメモリ１５に格納することができるため、ランダムに格納する場合やＬＲＵアルゴリズムで更新する場合に比べ、実行時間を短縮することができる。また、この厳選された関数は、直近に呼び出されたか否かによらないため、キャッシュメモリ１５の内容はＬＲＵアルゴリズムよりも優れたものとすることができる。
【００８３】
また、たとえばキャッシュオブジェクトテーブル５１に格納されたオブジェクト数がディスクオブジェクトテーブル２２に格納されたオブジェクト数よりも少なく、キャッシュオブジェクトテーブル５１に呼び出された関数のオブジェクトがない場合であっても、ディスクオブジェクトテーブル２２には対象のオブジェクトが格納されている確率が高いため、再度構文解析する必要が生じる可能性が低い。
【００８４】
また、本実施形態に係るデータベース装置１０は、起動時に、呼び出される可能性の高い関数のオブジェクトを揮発性のキャッシュメモリ１５に格納することができる。このため、起動時において、いまだ関数を呼び出していない段階でも、キャッシュメモリ１５の内容が充実しており、実行時間が低下してしまうことがない。
【００８５】
また、本実施形態に係るデータベース装置１０は、遷移確率情報２４を用いることにより、次回期間の実行履歴が属するクラスタを予測することができる。このため、期間ごとの実行履歴が属するクラスタが同一（期間ごとの関数の実行パターンが同一）でなくても、次回期間に呼び出されやすい関数を記憶装置１３およびキャッシュメモリ１５に格納することができる。
【００８６】
（２．第２の実施形態）
次に、本発明に係るデータベース装置およびデータベース装置の制御方法の第２実施形態について説明する。
【００８７】
図１１は、本発明の第２実施形態に係るデータベース装置１０Ａの一例を示す全体構成図である。また、図１２（ａ）は、第２実施形態に係る記憶装置１３Ａの遷移確率情報２４Ａの遷移確率累積情報６１の一例を示す説明図であり、（ｂ）は、遷移確率情報２４Ａの前回クラスタ所属確率ｑ（ｃ）６２の一例を示す説明図である。
【００８８】
この第２実施形態に示すデータベース装置１０Ａは、制御部１４Ａの予測処理部３５Ａが、今回の実行履歴ｈｔｎが属するクラスタを１つ選択するのではなく、所定数のクラスタのそれぞれに対して属する確率（以下、クラスタ所属確率という）を求め、クラスタ所属確率と遷移確率情報２４Ａとを用いて次回期間の関数の呼び出されやすさを予測する点で第１実施形態に示すデータベース装置１０と異なる。他の構成および作用については図１に示すデータベース装置１０と実質的に異ならないため、同じ構成には同一符号を付して説明を省略する。
【００８９】
本実施形態に係る予測処理部３５Ａは、図１１に示すように、実行履歴取得部４１、クラスタ情報更新部４２のほか、クラスタ選択部４３Ａ、遷移確率更新部４４Ａ、予測部４５Ａおよび最適化部４６Ａを有する。また、本実施形態に係る記憶装置１３Ａの遷移確率情報２４Ａは、遷移確率情報２４Ａの遷移確率累積情報６１および前回の実行履歴が各クラスタに属する確率（以下、前回クラスタ所属確率という）ｑ（ｃ）６２を有する。
【００９０】
たとえば、実行履歴ベクトルが２つのクラスタの中心ベクトルのほぼ中間にある場合（実行履歴ベクトルと複数のクラスタの中心ベクトルとの内積がほぼ等しい値となる場合）には、実行履歴を１つのクラスタに属すると仮定するよりも、内積の値に応じて実行履歴が各クラスタに属する確率（クラスタ所属確率）を求め、この確率を用いて予測処理を行ったほうがより的確な予測を行うことができるといえる。
【００９１】
実行履歴が各クラスタに属する確率を用いて予測処理を行う場合には、次の式（２）を用いるとよい。
【数２】
2013239039.tif 000004
【００９２】
ここで、ｐｔｎ＋１（ｆ｜ｈｔｎ）は、今回期間ｔｎの実行履歴ｈｔｎが得られた際に次回期間ｔｎ＋１で関数ｆが呼び出される確率を表す。また、ｐｔｎ＋１（ｆ｜ｃ）は、次回期間ｔｎ＋１において、クラスタＣのもとで関数ｆが呼び出される確率を表す。また、ｐｔｎ→ｔｎ＋１（ｃ｜ｃ'）は、今回期間ｔｎのクラスタＣ'から次回期間のクラスタＣに遷移する確率（クラスタ間の遷移確率）を表す。また、ｐ（ｃ'｜ｈｔｎ）は、今回期間ｔｎの実行履歴ｈｔｎがクラスタＣ’に属する確率を表す。
【００９３】
本実施形態に係るデータベース装置１０Ａが求めたい確率は、ｐｔｎ＋１（ｆ｜ｈｔｎ）（式（１）の左辺）である。このため、本実施形態に係るデータベース装置１０Ａは、ｐｔｎ＋１（ｆ｜ｃ）、ｐｔｎ→ｔｎ＋１（ｃ｜ｃ'）およびｐ（ｃ'｜ｈｔｎ）をそれぞれ個別に算出し、式（２）を用いてｐｔｎ＋１（ｆ｜ｈｔｎ）を求める。
【００９４】
図１３は、第２実施形態に係る予測処理の手順を示すフローチャートである。図１３において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。図６と同等のステップには同一符号を付し、重複する説明を省略する。
【００９５】
この手順は、予測開始部３４により、あらかじめ定められた予測処理期間に入ったと判定されてスタートとなる。予測処理期間は、たとえば、データベースサーバ１１のシステム状態がアイドル状態である期間や、起動直後の期間などの、関数の呼び出しが行われることが少ない期間に設定される。
【００９６】
なお、システム状態がアイドル状態となることで予測処理期間に入ったと判定した場合、予測開始部３４は、以下の手順に並行してシステム状態を監視し、アイドル状態ではなくなると以下の手順を中断して一時保留とするか、または中止してキャンセルするよう、予測処理部３５Ａに指示する。また、図１３の説明においては、今回期間がｔｎであるものとする。
【００９７】
ステップＳ１２でクラスタ情報２３を更新した後、ステップＳ２１において、クラスタ選択部４３Ａは、今回期間ｔｎの実行履歴ｈｔｎがクラスタＣ’に属する確率ｐ（ｃ'｜ｈｔｎ）を算出する。
【００９８】
ここで、ｐ（ｃ'｜ｈｔｎ）の算出方法について具体的に説明する。
【００９９】
各クラスタの中心ベクトルμは、クラスタ情報２３に長さ１で正規化されて保持されている（図７参照）。また、各クラスタの要素数もクラスタ情報２３に保持されている。これらの情報から、次の式（３）を用いてｐ（ｃ'｜ｈｔｎ）を算出する。
【数３】
2013239039.tif 000005
【０１００】
すなわち、クラスタ選択部４３Ａは、各中心ベクトルμと正規化したｈｔｎとの内積にもとづいて今回期間ｔｎの実行履歴ｈｔｎがクラスタＣ’に属する確率ｐ（ｃ'｜ｈｔｎ）を算出する。
【０１０１】
なお、実行履歴の各要素ｍｎ１、・・・、ｍｎｋは、０〜１のランダムな値で初期化しておくとよい。また、各クラスタの要素数は、実行履歴を取得する前（たとえばデータベースサーバ１１の最初の起動時）に全て１で初期化しておくとよい。
【０１０２】
なお、ｐ（ｃ｜ｈ）は最尤推定により確率分布まで考慮して求めてもよい。この場合、まず、次の式（４）に示すように混合係数をｐ（ｃ）とするｐ（ｈ｜ｃ）の混合分布としてｐ（ｈ）をモデル化し、ＥＭアルゴリズム（期待値ステップと最大化ステップとを交互に繰り返して最適解に収束させるアルゴリズム）を使ってｐ（ｃ）およびｐ（ｈ｜ｃ）を求める。
【数４】
2013239039.tif 000006
【０１０３】
ここで、ｐ（ｃ）はクラスタＣである確率を表し、ｐ（ｈ｜ｃ）はクラスタＣである場合に実行履歴ｈとなる確率を表す。ｐ（ｃ）とｐ（ｈ｜ｃ）が求まれば、ベイズの定理から次の式（５）を用いてｐ（ｃ｜ｈ）を求めることができる。
【数５】
2013239039.tif 000007
【０１０４】
次に、ステップＳ２２において、遷移確率更新部４４Ａは、遷移確率累積情報６１および前回クラスタ所属確率ｑ（ｃ）６２を用いて遷移確率情報２４Ａを更新する。
【０１０５】
図１４は、図１３のステップＳ２２で遷移確率更新部４４Ａにより実行される遷移確率情報更新処理の手順を示すサブルーチンフローチャートである。
【０１０６】
ステップＳ２２１において、遷移確率更新部４４Ａは、遷移確率情報２４Ａの遷移確率累積情報６１および前回クラスタ所属確率ｑ（ｃ）６２を取得する。
【０１０７】
次に、ステップＳ２２２において、遷移確率更新部４４Ａは、前回クラスタ所属確率ｑ（ｃ）６２を用いて遷移確率累積情報６１を更新し、図１４のステップＳ２３に進む。
【０１０８】
ここで、遷移確率累積情報６１の更新方法について説明する。
【０１０９】
前回の実行履歴をｈ’とすると、前回クラスタ所属確率ｑ（ｃ）６２は次の式（６）のように書ける。
【数６】
2013239039.tif 000008
【０１１０】
クラスタＣ’からクラスタＣに遷移する累積頻度（遷移確率累積情報６１）をｑ（ｃ、ｃ’）とすると、全クラスタの組み合わせに対して、ｑ（ｃ，ｃ’）は次の式（７）のように近似して更新すればよい。
【数７】
2013239039.tif 000009
【０１１１】
なお、ｑ（ｃ）は、実行履歴を取得する前（たとえばデータベースサーバ１１の最初の起動時）に全て等確率で初期化しておくとよい。また、ｑ（ｃ，ｃ’）はたとえば全て１で初期化しておくとよい（図１２（ａ）参照）。
【０１１２】
次に、図１３のステップＳ２３において、遷移確率更新部４４Ａは、遷移確率累積情報６１を正規化し、クラスタ間の遷移確率ｐ（ｃ｜ｃ’）を算出する。
【０１１３】
具体的には、遷移確率更新部４４Ａは、式（７）で更新された累積頻度ｑ（ｃ，ｃ’）を、次の式（８）を用いて正規化することによってｐ（ｃ｜ｃ’）を求める。
【数８】
2013239039.tif 000010
【０１１４】
また、遷移確率更新部４４Ａは、クラスタ間の遷移確率ｐ（ｃ｜ｃ’）を求めた後、記憶装置１３Ａに記憶された前回クラスタ所属確率ｑ（ｃ）６２を、今回の実行履歴のクラスタ所属確率で置き換えて更新する。
【０１１５】
次に、ステップＳ２４において、予測部４５Ａは、図６のステップＳ１５と同様に、μｃ（ｉ）／Σｓμｃ（ｓ）を用いて、実行履歴がクラスタＣに属する際に関数ｆが呼び出される確率ｐ（ｆ｜ｃ）を算出する。
【０１１６】
次に、ステップＳ２５において、予測部４５Ａは、ステップＳ２１で求めたｐ（ｃ'｜ｈｔｎ）、ステップＳ２３で求めたｐ（ｃ｜ｃ'）、ステップＳ２４で求めたｐ（ｆ｜ｃ）から、今回期間ｔｎの実行履歴ｈｔｎが得られた際に次回期間ｔｎ＋１で関数ｆが呼び出される確率ｐ（ｆ｜ｈｔｎ）を算出する。
【０１１７】
次に、ステップＳ２６において、最適化部４６Ａは、ｐ（ｆ｜ｈｔｎ）にもとづいて、各関数の呼出確率の上から所定数の関数のオブジェクトをディスクオブジェクトテーブル２２に格納する。
【０１１８】
以上の手順によっても、予測処理期間において、次回期間に呼び出されやすいと予測される所定数の関数のオブジェクトをディスクオブジェクトテーブル２２に格納することができる。また、最適化部４６Ａは、第１実施形態に係る最適化部４６と同様に、図１３に示す手順の終了後かつ予測処理期間に、またはデータベースサーバ１１の再起動時に、ディスクオブジェクトテーブル２２に記憶された所定数のオブジェクトの全部または呼び出されやすさが上位の一部をキャッシュオブジェクトテーブル５１に複製する。
【０１１９】
本実施形態に係るデータベース装置１０Ａによっても、第１実施形態に係るデータベース装置１０と同様の効果を奏する。また、本実施形態に係るデータベース装置１０Ａは、実行履歴ベクトルと各クラスタの中心ベクトルとの内積の値に応じてクラスタ所属確率ｐ（ｃ｜ｈ）を求め、この確率ｐ（ｃ｜ｈ）を用いて予測処理を行う。このため、実行履歴が１つのクラスタに属すると仮定する第１実施形態に係るデータベース装置１０よりも、より的確な予測を行うことができる。
【０１２０】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１２１】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【０１２２】
１０、１０Ａ  データベース装置
１１  データベースサーバ
１２  操作端末
１３、１３Ａ  記憶装置
１４、１４Ａ  制御部
１５  キャッシュメモリ
２２  ディスクオブジェクトテーブル
２３  クラスタ情報
２４、２４Ａ  遷移確率情報
３５、３５Ａ  予測処理部
４１  実行履歴取得部
４２  クラスタ情報更新部
４３、４３Ａ  クラスタ選択部
４４、４４Ａ  遷移確率更新部
４５、４５Ａ  予測部
４６、４６Ａ  最適化部
５１  キャッシュオブジェクトテーブル
６１  遷移確率累積情報
６２  前回クラスタ所属確率ｑ（ｃ）
【図１】
2013239039.tif 000011
【図２】
2013239039.tif 000012
【図３】
2013239039.tif 000013
【図４】
2013239039.tif 000014
【図５】
2013239039.tif 000015
【図６】
2013239039.tif 000016
【図７】
2013239039.tif 000017
【図８】
2013239039.tif 000018
【図９】
2013239039.tif 000019
【図１０】
2013239039.tif 000020
【図１１】
2013239039.tif 000021
【図１２】
2013239039.tif 000022
【図１３】
2013239039.tif 000023
【図１４】
2013239039.tif 000024