(57)【要約】【課題】キャッシュ領域を効率的に割り当て可能にすること。【解決手段】メモリ割当装置１０１は、キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得する。メモリ割当装置１０１は、取得したログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出する。メモリ割当装置１０１は、算出した時間間隔ごとの指標値に基づいて、キャッシュミスの改善対象時期を特定する。メモリ割当装置１０１は、特定した改善対象時期と同一時期の対象データへのアクセスに関するログ情報に基づいて、対象データに割り当てるキャッシュ領域のサイズを算出する。メモリ割当装置１０１は、算出したサイズのキャッシュ領域を、改善対象時期よりも前に対象データに割り当てるメモリ割当計画を作成する。【選択図】図１
2019082917.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
処理をコンピュータに実行させることを特徴とするメモリ割当プログラム。
【請求項２】
作成した前記メモリ割当計画に基づいて、前記対象データへのキャッシュ領域の割り当てを行う、処理を前記コンピュータに実行させることを特徴とする請求項１に記載のメモリ割当プログラム。
【請求項３】
前記ログ情報は、前記対象データにアクセスした際のアクセス時刻、アクセス処理時間、キャッシュヒット率、および、前記対象データに割り当てられたキャッシュ領域のサイズを含み、
前記指標値を算出する処理は、
前記ログ情報から特定される前記時間間隔ごとのアクセス数、アクセス処理時間、キャッシュヒット率、および、キャッシュ領域のサイズに基づいて、前記時間間隔ごとの前記指標値を算出する、ことを特徴とする請求項１または２に記載のメモリ割当プログラム。
【請求項４】
前記サイズを算出する処理は、
前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報から特定されるキャッシュヒット率およびキャッシュ領域のサイズに基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出する、ことを特徴とする請求項３に記載のメモリ割当プログラム。
【請求項５】
取得した前記ログ情報に基づいて、前記改善対象時期よりも前で、かつ、前記対象データへのアクセスが少ない閑散時期を特定する、処理を前記コンピュータに実行させ、
前記作成する処理は、
特定した前記閑散時期に、算出した前記サイズのキャッシュ領域を前記対象データに割り当てるメモリ割当計画を作成する、ことを特徴とする請求項１〜４のいずれか一つに記載のメモリ割当プログラム。
【請求項６】
前記コンピュータに、
キャッシュ領域を割り当てる複数の対象データの各対象データについて、前記取得する処理、前記指標値を算出する処理、前記特定する処理、前記サイズを算出する処理、および前記作成する処理を実行させることを特徴とする請求項１〜５のいずれか一つに記載のメモリ割当プログラム。
【請求項７】
前記特定する処理は、
前記各対象データについて、前記時間間隔ごとに算出した、前記各対象データの指標値と他の対象データの指標値とに基づいて、キャッシュミスの改善対象時期を特定する、ことを特徴とする請求項６に記載のメモリ割当プログラム。
【請求項８】
前記サイズを算出する処理は、
算出した前記各対象データのキャッシュ領域のサイズの合計値が、前記複数の対象データに割り当て可能な最大サイズを超える場合、前記改善対象時期に対応する前記各対象データの指標値の比率に応じて前記最大サイズを分配して、前記各対象データに割り当てるキャッシュ領域のサイズを再計算する、ことを特徴とする請求項６または７に記載のメモリ割当プログラム。
【請求項９】
キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
処理をコンピュータが実行することを特徴とするメモリ割当方法。
【請求項１０】
キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
制御部を有することを特徴とするメモリ割当装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ割当プログラム、メモリ割当方法、およびメモリ割当装置に関する。
【背景技術】
【０００２】
従来、メモリ上にキャッシュ領域を確保し、データベースのデータをディスク上の記憶領域からメモリ上のキャッシュ領域に読み込んでおくことで、データベースアクセスの性能向上を図る技術がある。
【０００３】
先行技術としては、キャッシュメモリを共用キャッシュ領域と専用キャッシュ領域とに分割して制御するものがある。具体的には、専用領域獲得要求に応答して、キャッシュ有効利用度が高いほど専用キャッシュ領域を割り当て、低いほど共用キャッシュ領域を割り当てる技術がある。キャッシュ有効利用度は、専用キャッシュ領域を割り当てた場合のキャッシュヒット率と共用キャッシュ領域を割り当てた場合のキャッシュヒット率との差と、メモリアクセス頻度とに基づくものである。また、内蔵メモリと外部メモリの利用状況の変化を検出するための計測部の計測結果を監視し、内蔵メモリの構成を変更、内蔵メモリと外部メモリに格納されたデータを移動する技術がある。また、広域ネットワークが空いている時間帯にアクセス頻度の高いファイルを先読みし、クライアントからの要求に対し先読みしたファイルを渡す技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−３６８７３号公報
【特許文献２】国際公開第２０１１／０４５９３１号
【特許文献３】特開平１１−２４９８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、アクセス性能を確保したいデータベース等に対して、キャッシュ領域を効率的に割り当てることが難しい。例えば、データベースの使用頻度は、１日の時間帯や日、週、月などの時期によって変動することが多い。このため、データベースに対して、専用のキャッシュ領域を静的に割り当てる方法では、時期によっては十分なキャッシュ領域が割り当てられないことがある。
【０００６】
一つの側面では、本発明は、キャッシュ領域を効率的に割り当て可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様では、キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成するメモリ割当プログラムが提供される。
【発明の効果】
【０００８】
本発明の一側面によれば、キャッシュ領域を効率的に割り当て可能にすることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるメモリ割当方法の一実施例を示す説明図である。
【図２】図２は、システム２００のシステム構成例を示す説明図である。
【図３】図３は、メモリ割当装置１０１等のハードウェア構成例を示すブロック図である。
【図４】図４は、トランザクションログＬの具体例を示す説明図である。
【図５】図５は、ログ集計ＤＢ２２０の記憶内容の一例を示す説明図である。
【図６】図６は、キャッシュ改善係数テーブル２３０の記憶内容の一例を示す説明図である。
【図７】図７は、改善対象テーブル２４０の記憶内容の一例を示す説明図である。
【図８】図８は、割り当てサイズテーブル２５０の記憶内容の一例を示す説明図である。
【図９】図９は、キャッシュ計画テーブル２６０の記憶内容の一例を示す説明図である。
【図１０】図１０は、メモリ割当装置１０１の機能的構成例を示すブロック図である。
【図１１】図１１は、改善対象時期を特定する配列を示す説明図である。
【図１２】図１２は、キャッシュ改善係数の算出例を示す説明図である。
【図１３】図１３は、改善対象時期の特定例を示す説明図（その１）である。
【図１４】図１４は、改善対象時期の特定例を示す説明図（その２）である。
【図１５】図１５は、改善対象時期の特定例を示す説明図（その３）である。
【図１６】図１６は、割り当てサイズの算出例を示す説明図である。
【図１７】図１７は、メモリ割当計画の作成例を示す説明図（その１）である。
【図１８】図１８は、メモリ割当計画の作成例を示す説明図（その２）である。
【図１９】図１９は、メモリ割当装置１０１のメモリ割当計画作成処理手順の一例を示すフローチャートである。
【図２０】図２０は、割り当てサイズ算出処理の具体的処理手順の一例を示すフローチャートである。
【図２１】図２１は、メモリ割当装置１０１の割り当て処理手順の一例を示すフローチャートである。
【図２２】図２２は、集計単位が月の日単位の場合のログ集計ＤＢ２２０の記憶内容の一例を示す説明図である。
【図２３】図２３は、集計単位が月の日単位の場合のキャッシュ改善係数の算出例を示す説明図である。
【図２４】図２４は、集計単位が月の日単位の場合のキャッシュ改善係数テーブル２３０の記憶内容の一例を示す説明図である。
【図２５】図２５は、集計単位が月の日単位の場合の改善対象時期の特定例を示す説明図である。
【図２６】図２６は、集計単位が月の日単位の場合の改善対象テーブル２４０の記憶内容の一例を示す説明図である。
【図２７】図２７は、集計単位が月の日単位の場合の割り当てサイズテーブル２５０の記憶内容の一例を示す説明図（その１）である。
【図２８】図２８は、集計単位が月の日単位の場合の割り当てサイズテーブル２５０の記憶内容の一例を示す説明図（その２）である。
【図２９】図２９は、曜日に応じたキャッシュ計画テーブル２６０の記憶内容の一例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、本発明にかかるメモリ割当プログラム、メモリ割当方法、およびメモリ割当装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態）
図１は、実施の形態にかかるメモリ割当方法の一実施例を示す説明図である。図１において、メモリ割当装置１０１は、対象データにキャッシュ領域を割り当てるメモリ割当計画を作成するコンピュータである。ここで、対象データは、キャッシュ領域を割り当てる対象となるデータであり、例えば、データベース、テーブル、ファイルなどである。
【００１２】
対象データは、例えば、ストレージ１０２に記憶される。ストレージ１０２は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの補助記憶装置である。キャッシュ領域は、対象データをキャッシュするための専用の記憶領域であり、例えば、メモリ１０３に設けられる。
【００１３】
メモリ１０３は、ストレージ１０２よりも高速にアクセス可能な記憶装置である。ストレージ１０２およびメモリ１０３は、メモリ割当装置１０１とは異なる他のコンピュータ（例えば、後述の図２に示す業務サーバ２０１）が有する。ただし、ストレージ１０２およびメモリ１０３は、メモリ割当装置１０１が有していてもよい。
【００１４】
なお、一般にキャッシュ領域には、複数の対象データで共有して使用する共有キャッシュ領域と、特定の対象データが専用で使用する固有キャッシュ領域がある。本実施の形態では、単に「キャッシュ領域」と表記した場合は、特定の対象データが専用で使用する固有キャッシュ領域を指す。
【００１５】
対象データ（データベース、テーブル、ファイル等）の使用頻度は、１日の時間帯や日、週、月などの時期によって変動することが多い。また、各時期によって、例えば、オンライン業務、バッチ業務など実行される業務は決まっていることが多い。また、実行される業務によってアクセスされる対象データが決まる。このため、対象データの時間経過に伴うアクセスパターンには業務システム固有のパターンが現れるという特性がある。
【００１６】
ここで、キャッシュ領域の既存のチューニング方法として、例えば、一定のアクセス性能を確保したいテーブル等に対して、専用のキャッシュ領域を静的に割り当てるものがある。しかし、キャッシュ領域を静的に割り当てる方法では、限られたキャッシュ領域から各テーブル等に対して固定のキャッシュ領域をそれぞれ割り当てる。このため、上述した特性から、時期によっては十分なキャッシュ領域が割り当てられないことがある。
【００１７】
また、テーブル等のアクセス状況を監視して、キャッシュ領域が不足したら、その都度、キャッシュ領域を動的に調整する方法がある。しかし、実際のデータはディスク上に存在しており、キャッシュ領域を使用するためには、ディスクからメモリへのデータの読み込みが必要となる。また、近年では扱うデータが大量になっており、キャッシュ領域も大規模化している。このため、データの読み込みに時間を要してしまい、キャッシュ領域がすぐに利用できないような状況が発生する。また、オンメモリデータベースにより全てのデータをメモリ上に展開する方法があるが、導入コストが大きく実用的ではない。
【００１８】
そこで、本実施の形態では、対象データへのキャッシュ領域の割り当てを動的に変化させて効率的な割り当てを可能にするメモリ割当方法について説明する。以下、メモリ割当装置１０１の処理例について説明する。
【００１９】
（１）メモリ割当装置１０１は、キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得する。ここで、ログ情報は、対象データへのアクセス状況を特定可能な情報である。ログ情報は、例えば、対象データにアクセスした際のアクセス時刻、アクセス処理時間、キャッシュヒット率、および、対象データに割り当てられたキャッシュ領域のサイズなどを含む。
【００２０】
アクセス処理時間は、対象データに対するアクセスの要求があってから応答を返すまでの時間である。なお、対象データにキャッシュ領域が割り当てられていない場合、キャッシュヒット率、および、対象データに割り当てられたキャッシュ領域のサイズは、「０」である。
【００２１】
図１の例では、対象データ１１０へのアクセスに関するログ情報１２０が取得された場合を想定する。ログ情報１２０は、例えば、ストレージ１０２およびメモリ１０３を有する他のコンピュータから取得されてもよく、また、ユーザの操作入力により取得されてもよい。
【００２２】
（２）メモリ割当装置１０１は、取得したログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出する。ここで、所定の時間間隔は、任意に設定可能であり、例えば、１日の時間単位、月の日単位、週単位、１年の月単位などに設定される。
【００２３】
キャッシュミスの改善度合いを示す指標値は、換言すれば、キャッシュ領域を増やすことによる処理性能の改善可能性の度合いを判断可能な値である。具体的には、例えば、メモリ割当装置１０１は、取得したログ情報から特定される所定の時間間隔ごとのアクセス数、アクセス処理時間、キャッシュヒット率、および、キャッシュ領域のサイズに基づいて、所定の時間間隔ごとの指標値を算出する。
【００２４】
図１の例では、対象データ１１０について、グラフＧに示すように、０時から２３時までの時間帯ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値が算出された場合を想定する。ただし、図１では、０時から２３時までの時間帯ごとの指標値の一部を抜粋して表示している。
【００２５】
（３）メモリ割当装置１０１は、算出した時間間隔ごとの指標値に基づいて、キャッシュミスの改善対象時期を特定する。ここで、キャッシュミスの改善対象時期とは、キャッシュミスを減らして処理性能を改善する対象となる時期である。具体的には、例えば、メモリ割当装置１０１は、算出した指標値が閾値以上となる時期を、改善対象時期として特定することにしてもよい。閾値は、任意に設定可能である。閾値は、例えば、所定の時間間隔ごとの指標値の平均値としてもよい。
【００２６】
図１の例では、指標値が閾値以上となっている３時の時間帯と４時の時間帯とが、キャッシュミスの改善対象時期として特定された場合を想定する。
【００２７】
（４）メモリ割当装置１０１は、特定した改善対象時期と同一時期の対象データへのアクセスに関するログ情報に基づいて、対象データに割り当てるキャッシュ領域のサイズを算出する。具体的には、例えば、メモリ割当装置１０１は、特定した改善対象時期ごとに、当該改善対象時期においてキャッシュヒット率が１００％になると予測されるキャッシュ領域のサイズを算出することにしてもよい。キャッシュヒット率が１００％になるキャッシュ領域のサイズは、例えば、改善対象時期と同一時期の対象データへのアクセスに関するログ情報から特定されるキャッシュヒット率およびキャッシュ領域のサイズから予測することができる。
【００２８】
図１の例では、改善対象時期である３時の時間帯と４時の時間帯それぞれについて、対象データ１１０のキャッシュヒット率が１００％になると予測されるキャッシュ領域のサイズとして、同じサイズＸが算出された場合を想定する。
【００２９】
（５）メモリ割当装置１０１は、算出したサイズのキャッシュ領域を、改善対象時期よりも前に対象データに割り当てるメモリ割当計画を作成する。ここで、メモリ割当計画は、対象データに対して、いつ、どのサイズのキャッシュ領域を割り当てるのかを示すスケジュールである。
【００３０】
図１の例では、対象データ１１０に対して、３時の時間帯および４時の時間帯よりも前の時間帯、例えば、２時の時間帯に、サイズＸのキャッシュ領域を割り当てるメモリ割当計画１３０が作成される。
【００３１】
このように、メモリ割当装置１０１によれば、キャッシュ領域を増やすことによる処理性能の改善可能性が高い時期を、対象データの改善対象時期として特定することができる。そして、メモリ割当装置１０１によれば、改善対象時期よりも前の時期から、対象テーブルＴに割り当てるキャッシュ領域の準備を始めて、改善対象時期となった際にキャッシュの効果を即時得られるようなメモリ割当計画を立てることができる。これにより、対象データへのキャッシュ領域の割り当てを動的に変化させて効率的な割り当てを可能にすることができる。
【００３２】
図１の例では、対象データ１１０へのアクセスパターンに応じて、時間帯ごとのキャッシュ領域の必要性を予測し、必要な時期（３時の時間帯）に必要な分（サイズＸ）のキャッシュ領域を事前（２時の時間帯）に準備可能なメモリ割当計画１３０を作成することができる。なお、ストレージ１０２とメモリ１０３との関係は、例えば、メインメモリとキャッシュメモリとの関係であってもよい。
【００３３】
（システム２００のシステム構成例）
つぎに、実施の形態にかかるシステム２００のシステム構成例について説明する。
【００３４】
図２は、システム２００のシステム構成例を示す説明図である。図２において、システム２００は、メモリ割当装置１０１と、業務サーバ２０１と、を含む。システム２００において、メモリ割当装置１０１および業務サーバ２０１は、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどを含む。
【００３５】
メモリ割当装置１０１は、業務サーバ２０１についてのメモリ割当計画を作成する。メモリ割当装置１０１は、ログ集計ＤＢ（Ｄａｔａｂａｓｅ）２２０、キャッシュ改善係数テーブル２３０、改善対象テーブル２４０、割り当てサイズテーブル２５０、およびキャッシュ計画テーブル２６０を有する。各種ＤＢ等の記憶内容については、図５〜図９を用いて後述する。
【００３６】
業務サーバ２０１は、キャッシュ領域の割り当てを制御する対象のコンピュータである。業務サーバ２０１は、例えば、データベースサーバ、ウェブサーバなどである。業務サーバ２０１は、ログ出力部２０２と、キャッシュ割当部２０３と、を有する。ログ出力部２０２は、対象データへのアクセスに関するログ情報を出力する。キャッシュ割当部２０３は、メモリ割当装置１０１からの指示に従って、対象データにキャッシュ領域を割り当てる。
【００３７】
また、業務サーバ２０１は、定期的または所定のタイミングで、ログ出力部２０２が出力したログ情報をメモリ割当装置１０１に送信する。具体的には、例えば、業務サーバ２０１は、集計期間内に出力されたログ情報を含むトランザクションログＬをメモリ割当装置１０１に送信する。集計期間は、任意に設定可能であり、例えば、１ヶ月、３ヶ月などの期間が設定される。トランザクションログＬの具体例については、図４を用いて後述する。
【００３８】
以下の説明では、対象データとして「テーブル」を例に挙げて説明する。また、対象データを「対象テーブルＴ」と表記する場合がある。なお、図２の例では、業務サーバ２０１を１台のみ表記したが、システム２００には２台以上の業務サーバ２０１が含まれていてもよい。
【００３９】
（メモリ割当装置１０１および業務サーバ２０１のハードウェア構成例）
つぎに、図２に示したメモリ割当装置１０１および業務サーバ２０１のハードウェア構成例について説明する。ここでは、メモリ割当装置１０１および業務サーバ２０１を「メモリ割当装置１０１等」と表記する。
【００４０】
図３は、メモリ割当装置１０１等のハードウェア構成例を示すブロック図である。図３において、メモリ割当装置１０１等は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、ディスクドライブ３０４と、ディスク３０５と、を有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００４１】
ここで、ＣＰＵ３０１は、メモリ割当装置１０１等の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００４２】
業務サーバ２０１のメモリ３０２には、対象テーブルＴに割り当てるキャッシュ領域が設けられる。図１に示したメモリ１０３は、例えば、業務サーバ２０１のメモリ３０２に相当する。なお、メモリ３０２には、キャッシュメモリが含まれることにしてもよい。この場合、対象テーブルＴに割り当てるキャッシュ領域は、キャッシュメモリに設けられることにしてもよい。
【００４３】
Ｉ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他の装置に接続される。そして、Ｉ／Ｆ３０３は、ネットワーク２１０と自装置内部とのインターフェースを司り、他の装置からのデータの入出力を制御する。Ｉ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４４】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリード／ライトを制御する。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する。ディスク３０５としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００４５】
なお、メモリ割当装置１０１等は、上述した構成部のほか、例えば、ＳＳＤ、入力装置、ディスプレイなどを有することにしてもよい。
【００４６】
（トランザクションログＬの具体例）
つぎに、業務サーバ２０１からメモリ割当装置１０１に送信されるトランザクションログＬの具体例について説明する。
【００４７】
図４は、トランザクションログＬの具体例を示す説明図である。図４において、トランザクションログＬは、複数のログ情報（例えば、ログ情報４０１〜４０４）を有する。ログ情報は、アクセス時刻、アクセス処理時間、キャッシュヒット率、キャッシュサイズおよびテーブルＩＤを含む。
【００４８】
ここで、アクセス時刻は、要求元（例えば、プログラム）から対象テーブルＴに対するアクセスを受け付けた日時である。アクセス処理時間は、対象テーブルＴに対するアクセスの要求を受け付けてから応答を返すまでの時間である（単位：ｍｓ）。アクセス処理時間は、例えば、ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）の処理時間である。
【００４９】
キャッシュヒット率は、要求されたデータがキャッシュ領域に存在する確率を示す（単位：％）。キャッシュ領域は、図３に示した業務サーバ２０１のメモリ３０２に設けられる対象テーブルＴに専用の記憶領域である。キャッシュサイズは、対象テーブルＴに割り当てられたキャッシュ領域のサイズである（単位：ＭＢ）。テーブルＩＤは、業務サーバ２０１が有する対象テーブルＴを一意に識別する識別子である。
【００５０】
例えば、ログ情報４０１は、対象テーブルＴ１のアクセス時刻「２０１７／４／１  ００：００：００」、アクセス処理時間「１００［ｍｓ］」、キャッシュヒット率「２０［％］」およびキャッシュサイズ「２０［ＭＢ］」を示す。なお、トランザクションログＬは、例えば、テーブル形式、テキストファイル形式、バイナリファイル形式などのいずれの形式であってもよい。
【００５１】
（各種ＤＢ等の記憶内容）
つぎに、メモリ割当装置１０１が有する各種ＤＢ等の記憶内容について説明する。各種ＤＢ等は、例えば、図３に示したメモリ割当装置１０１のメモリ３０２、ディスク３０５などの記憶装置により実現される。
【００５２】
図５は、ログ集計ＤＢ２２０の記憶内容の一例を示す説明図である。図５において、ログ集計ＤＢ２２０は、対象テーブルＴごとのログ集計データ（例えば、ログ集計データ５０１，５０２）を記憶する。ログ集計データは、テーブルＩＤと、時間帯ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを有する。
【００５３】
テーブルＩＤは、対象テーブルＴを一意に識別する識別子である。時間帯ごとのアクセス処理時間は、対象テーブルＴについての時間帯ごとのアクセス処理時間の平均値である（単位：ｍｓ）。アクセス数は、対象テーブルＴについての時間帯ごとのアクセス数の合計値である（単位：回）。キャッシュヒット率は、対象テーブルＴについての時間帯ごとのキャッシュヒット率の平均値である（単位：％）。キャッシュサイズは、対象テーブルＴについての時間帯ごとのキャッシュサイズの平均値である（単位：ＭＢ）。
【００５４】
図６は、キャッシュ改善係数テーブル２３０の記憶内容の一例を示す説明図である。図６において、キャッシュ改善係数テーブル２３０は、各対象テーブルＴについて、時間帯ごとのキャッシュ改善係数を記憶する。図６の例では、対象テーブルＴは、対象テーブルＴ１〜Ｔ４である。
【００５５】
ここで、キャッシュ改善係数は、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値である。例えば、テーブルＴ１の０時の時間帯のキャッシュ改善係数は「２７．９」である。
【００５６】
図７は、改善対象テーブル２４０の記憶内容の一例を示す説明図である。図７において、改善対象テーブル２４０は、各対象テーブルＴについて、時間帯ごとの改善対象フラグを記憶する。図７の例では、対象テーブルＴは、対象テーブルＴ１〜Ｔ４である。
【００５７】
ここで、改善対象フラグは、キャッシュミスの改善対象時期とするか否かを示す。改善対象フラグ「ｔｒｕｅ」は、キャッシュミスの改善対象時期とすることを示す。改善対象フラグ「ｆａｌｓｅ」は、キャッシュミスの改善対象時期としないことを示す。例えば、対象テーブルＴ１の０時の時間帯の改善対象フラグは「ｔｒｕｅ」である。
【００５８】
図８は、割り当てサイズテーブル２５０の記憶内容の一例を示す説明図である。図８において、割り当てサイズテーブル２５０は、各対象テーブルＴについて、時間帯ごとのキャッシュ領域の割り当てサイズを記憶する。図８の例では、対象テーブルＴは、対象テーブルＴ１〜Ｔ４である。
【００５９】
ここで、割り当てサイズは、対象テーブルＴに割り当てるキャッシュ領域の時間帯ごとのサイズである（単位：ＭＢ）。例えば、テーブルＴ１の０時の時間帯のキャッシュ領域の割り当てサイズは「４０［ＭＢ］」である。
【００６０】
図９は、キャッシュ計画テーブル２６０の記憶内容の一例を示す説明図である。図９において、キャッシュ計画テーブル２６０は、各対象テーブルＴ１〜Ｔ４のメモリ割当計画９０１〜９０４を記憶する。メモリ割当計画９０１〜９０４は、各対象テーブルＴについて、キャッシュ領域を割り当てる時間帯と、当該時間帯に割り当てるキャッシュ領域のサイズとを示す。
【００６１】
（メモリ割当装置１０１の機能的構成例）
図１０は、メモリ割当装置１０１の機能的構成例を示すブロック図である。図１０において、メモリ割当装置１０１は、取得部１００１と、指標算出部１００２と、特定部１００３と、サイズ算出部１００４と、作成部１００５と、計画実行部１００６と、を含む。取得部１００１〜計画実行部１００６は制御部となる機能であり、具体的には、例えば、図３に示したメモリ割当装置１０１のメモリ３０２、ディスク３０５などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、メモリ３０２、ディスク３０５などの記憶装置に記憶される。
【００６２】
取得部１００１は、対象テーブルＴへのアクセスに関するログ情報を取得する。ここで、対象テーブルＴは、キャッシュ領域を割り当てる対象データの一例である。具体的には、例えば、取得部１００１は、図４に示したようなトランザクションログＬを業務サーバ２０１から受信することにより、受信したトランザクションログＬに含まれるログ情報を取得する。
【００６３】
指標算出部１００２は、取得されたログ情報に基づいて、所定の時間間隔ごとに、対象テーブルＴのキャッシュ改善係数を算出する。ここで、キャッシュ改善係数は、対象テーブルＴに割り当てるキャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値である。また、所定の時間間隔は、ログ情報の集計単位であり、任意に設定可能である。所定の時間間隔としては、例えば、日の時間単位、月の日単位、週単位、年の月単位などが設定される。
【００６４】
所定の時間間隔は、例えば、対象テーブルＴのどのようなアクセスパターンを特定するかによって設定される。例えば、使用頻度が毎日同じような対象テーブルＴでは、日の時間単位で集計すれば、１日のうちの時間帯ごとのアクセスパターンを特定することができる。また、曜日や日で使用頻度に特徴がある対象テーブルＴでは、月の日単位で集計すれば、月内の曜日や日によるアクセスパターンを特定することができる。
【００６５】
以下の説明では、所定の時間間隔を「集計単位」と表記する場合がある。
【００６６】
具体的には、例えば、まず、指標算出部１００２は、取得されたログ情報に基づいて、対象データごとのログ集計データを生成する。より詳細に説明すると、例えば、指標算出部１００２は、トランザクションログＬを参照して、各対象テーブルＴについて、集計単位ごとのアクセス処理時間（平均値）、アクセス数（合計値）、キャッシュヒット率（平均値）およびキャッシュサイズ（平均値）を算出する。
【００６７】
アクセス処理時間（平均値）は、対象テーブルＴについての集計単位ごとのアクセス処理時間の平均値である。アクセス数（合計値）は、対象テーブルＴについての集計単位ごとのアクセス数の合計値である。キャッシュヒット率（平均値）は、対象テーブルＴについての集計単位ごとのキャッシュヒット率の平均値である。キャッシュサイズ（平均値）は、対象テーブルＴについての集計単位ごとのキャッシュサイズの平均値である。
【００６８】
そして、指標算出部１００２は、算出した対象テーブルＴについての集計単位ごとのアクセス処理時間（平均値）、アクセス数（合計値）、キャッシュヒット率（平均値）およびキャッシュサイズ（平均値）を含むログ集計データを生成する。生成されたログ集計データは、例えば、図５に示したログ集計ＤＢ２２０に記憶される。図５の例では、集計単位は「１日の時間単位」である。
【００６９】
つぎに、指標算出部１００２は、生成したログ集計データに基づいて、各対象テーブルＴについて、集計単位ごとのキャッシュ改善係数を算出する。キャッシュ改善係数は、例えば、下記式（１）を用いて算出することができる。
【００７０】
キャッシュ改善係数＝アクセス数×｛アクセス処理時間×（１−キャッシュヒット率）÷キャッシュサイズ｝      ・・・（１）
【００７１】
このキャッシュ改善係数は、各対象テーブルＴの１キャッシュサイズに対する１回のアクセス処理の改善時間予想値（＝キャッシュミスによるアクセス処理時間の増分予想値）の集計単位内の合計値を表す。このキャッシュ改善係数が大きいほど、キャッシュ領域を増やすことによる処理性能の改善可能性が高いことを示す。
【００７２】
より詳細に説明すると、例えば、指標算出部１００２は、ログ集計ＤＢ２２０を参照して、各対象テーブルＴについて、集計単位ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを上記式（１）に代入することにより、集計単位ごとのキャッシュ改善係数を算出する。
【００７３】
各対象テーブルＴについて算出された集計単位ごとのキャッシュ改善係数は、例えば、図６に示したキャッシュ改善係数テーブル２３０に記憶される。図６の例では、集計単位は「１日の時間単位」である。キャッシュ改善係数の算出例については、図１２を用いて後述する。
【００７４】
特定部１００３は、算出された対象テーブルＴの集計単位ごとのキャッシュ改善係数に基づいて、対象テーブルＴのキャッシュミスの改善対象時期を特定する。ここで、キャッシュミスの改善対象時期とは、対象テーブルＴにアクセスする際のキャッシュミスを減らして処理性能を改善する対象となる期間である。
【００７５】
具体的には、例えば、特定部１００３は、キャッシュ改善係数テーブル２３０を参照して、各対象テーブルＴについて、集計単位ごとのキャッシュ改善係数が、閾値α以上となる時期を、改善対象時期として特定することにしてもよい。閾値αは、対象テーブルＴごとに設定される閾値であり、任意に設定可能である。閾値αは、例えば、対象テーブルＴの集計単位ごとのキャッシュ改善係数の平均値であってもよい。
【００７６】
また、特定部１００３は、各対象テーブルＴについて、集計単位ごとに算出した、各対象テーブルＴのキャッシュ改善係数と他の対象テーブルＴのキャッシュ改善係数とに基づいて、改善対象時期を特定してもよい。より詳細に説明すると、例えば、特定部１００３は、キャッシュ改善係数テーブル２３０を参照して、各対象テーブルＴについて、集計単位ごとのキャッシュ改善係数が閾値β以上となる時期を、改善対象時期として特定してもよい。閾値βは、集計単位ごとに複数の対象テーブルＴに共通して設定される閾値であり、任意に設定可能である。閾値βは、例えば、複数の対象テーブルＴの各集計単位のキャッシュ改善係数の平均値である。
【００７７】
また、特定部１００３は、キャッシュ改善係数テーブル２３０を参照して、各対象テーブルＴについて、集計単位ごとのキャッシュ改善係数が、閾値α以上となり、かつ、閾値β以上となる時期を、改善対象時期として特定してもよい。また、特定部１００３は、キャッシュ改善係数テーブル２３０を参照して、各対象テーブルＴについて、キャッシュ改善係数が最大の時期を、改善対象時期として特定してもよい。
【００７８】
また、特定部１００３は、キャッシュ改善係数テーブル２３０を参照して、各対象テーブルＴについて、キャッシュ改善係数が大きい上位いくつかの時期（例えば、上位５位の時期）を、改善対象時期として特定してもよい。改善対象時期の特定例については、図１３〜図１５を用いて後述する。
【００７９】
特定された改善対象時期を示す情報は、例えば、図７に示した改善対象テーブル２４０に記憶される。ただし、メモリ割当装置１０１は、例えば、図１１に示すように、特定した改善対象時期を示す情報を配列形式でメモリ３０２に記憶することにしてもよい。
【００８０】
図１１は、改善対象時期を特定する配列を示す説明図である。図１１において、配列１１００は、テーブルＩＤと集計単位とを要素として、各対象テーブルＴについて特定された改善対象時期を示す情報である。配列１１００は、図７に示した改善対象テーブル２４０を配列形式で示したものに相当する。
【００８１】
図１０の説明に戻り、サイズ算出部１００４は、特定された改善対象時期ごとに、当該改善対象時期と同一時期の対象テーブルＴへのアクセスに関するログ情報に基づいて、改善対象時期の対象テーブルＴの割り当てサイズを算出する。ここで、割り当てサイズは、対象テーブルＴに割り当てるキャッシュ領域のサイズ（大きさ）である。
【００８２】
具体的には、例えば、サイズ算出部１００４は、ログ集計ＤＢ２２０を参照して、改善対象時期と同一時期の対象テーブルＴのキャッシュヒット率およびキャッシュサイズを特定する。そして、サイズ算出部１００４は、下記式（２）を用いて、特定したキャッシュヒット率およびキャッシュサイズに基づいて、改善対象時期における対象テーブルＴの割り当てサイズを算出する。
【００８３】
割り当てサイズ＝キャッシュサイズ÷キャッシュヒット率×１００  ・・・（２）
【００８４】
例えば、改善対象時期における対象テーブルＴのキャッシュヒット率が「５０［％］」であり、キャッシュサイズが「２０［ＭＢ］」であるとする。この場合、改善対象時期における対象テーブルＴの割り当てサイズは、「４０［ＭＢ］（＝２０÷０．５）」となる。
【００８５】
これにより、改善対象時期における対象テーブルＴのキャッシュヒット率が１００％となるキャッシュサイズを予測して、予測したキャッシュサイズを対象テーブルＴの割り当てサイズとすることができる。
【００８６】
ただし、業務サーバ２０１において割り当て可能なキャッシュサイズには上限がある。以下の説明では、業務サーバ２０１において割り当て可能なキャッシュサイズを「割り当て可能サイズ」と表記する場合がある。また、割り当て可能サイズの最大値を「最大キャッシュサイズ」と表記する場合がある。
【００８７】
業務サーバ２０１の最大キャッシュサイズは、業務サーバ２０１においてシステム固有の設定値として予め記憶されている。メモリ割当装置１０１は、例えば、業務サーバ２０１に問い合わせることにより、業務サーバ２０１の最大キャッシュサイズを特定することができる。また、業務サーバ２０１の最大キャッシュサイズは、メモリ割当装置１０１のメモリ３０２、ディスク３０５などの記憶装置に予め記憶されていてもよい。
【００８８】
ここで、業務サーバ２０１に複数の対象テーブルＴが存在する場合、ある改善対象時期の各対象テーブルＴの割り当てサイズの合計値（合計キャッシュサイズ）が最大キャッシュサイズを超える場合がある。このため、サイズ算出部１００４は、改善対象時期の合計キャッシュサイズが最大キャッシュサイズを超える場合、各対象テーブルＴの割り当てサイズを再計算することにしてもよい。
【００８９】
具体的には、例えば、サイズ算出部１００４は、改善対象時期に対応する各対象テーブルＴのキャッシュ改善係数の比率に応じて最大キャッシュサイズを分配して、各対象テーブルＴの割り当てサイズを再計算する。各対象テーブルＴの割り当てサイズの算出例については、図１６を用いて後述する。
【００９０】
算出された改善対象時期における各対象テーブルＴの割り当てサイズは、例えば、図８に示した割り当てサイズテーブル２５０に記憶される。
【００９１】
作成部１００５は、算出された割り当てサイズのキャッシュ領域を、改善対象時期よりも前に対象テーブルＴに割り当てるメモリ割当計画を作成する。ここで、メモリ割当計画は、例えば、対象テーブルＴにキャッシュ領域を割り当てるタイミングと、当該タイミングに割り当てるキャッシュ領域のキャッシュサイズとを示す情報である。
【００９２】
具体的には、例えば、作成部１００５は、算出した割り当てサイズのキャッシュ領域を、改善対象時期の直前の時期（１つ前の集計単位）に対象テーブルＴに割り当てるメモリ割当計画を作成することにしてもよい。例えば、図７に示した対象テーブルＴ１を例に挙げると、２２時、２３時、０時および１時の時間帯が改善対象時期である。また、図８に示すように、各改善対象時期の割り当てサイズが「４０［ＭＢ］」であるとする。この場合、作成部１００５は、例えば、２２時の時間帯の直前の２１時の時間帯に、４０［ＭＢ］のキャッシュ領域を対象テーブルＴ１に割り当てるメモリ割当計画９０１（図９参照）を作成する。
【００９３】
ただし、キャッシュ領域の割り当て処理にはオーバーヘッドが発生する。したがって、割り当て処理を実施する時期は、対象テーブルＴへのアクセスが少ない時期が好ましい。このため、作成部１００５は、ログ集計ＤＢ２２０を参照して、改善対象時期よりも前で、かつ、対象テーブルＴへのアクセスが少ない閑散時期を特定することにしてもよい。そして、作成部１００５は、特定した閑散時期に、算出された割り当てサイズのキャッシュ領域を対象テーブルＴに割り当てるメモリ割当計画を作成することにしてもよい。
【００９４】
閑散時期は、例えば、対象テーブルＴの集計単位ごとのアクセス処理時間やアクセス数から特定することにしてもよい。より詳細に説明すると、例えば、作成部１００５は、ログ集計ＤＢ２２０を参照して、アクセス処理時間が閾値γ１以下となる時期を、閑散時期として特定することにしてもよい。閾値γ１は、任意に設定可能であり、例えば、対象テーブルＴの集計単位ごとのアクセス処理時間の平均値であってもよい。なお、アクセス処理時間が閾値γ１以下となる時期が複数存在する場合、作成部１００５は、アクセス処理時間が最小となる時期を、閑散時期として特定することにしてもよい。
【００９５】
また、例えば、作成部１００５は、ログ集計ＤＢ２２０を参照して、アクセス数が閾値γ２以下となる時期を、閑散時期として特定することにしてもよい。閾値γ２は、任意に設定可能であり、例えば、対象テーブルＴの集計単位ごとのアクセス数の平均値であってもよい。なお、アクセス数が閾値γ２以下となる時期が複数存在する場合、作成部１００５は、アクセス数が最小となる時期を、閑散時期として特定することにしてもよい。
【００９６】
また、例えば、作成部１００５は、ログ集計ＤＢ２２０を参照して、アクセス処理時間とアクセス数との乗算値が閾値γ３以下となる時期を、閑散時期として特定することにしてもよい。閾値γ３は、任意に設定可能であり、例えば、対象テーブルＴの集計単位ごとのアクセス処理時間とアクセス数ｔとの乗算値の平均値であってもよい。なお、アクセス処理時間とアクセス数との乗算値が閾値γ３以下となる時期が複数存在する場合、作成部１００５は、当該乗算値が最小となる時期を、閑散時期として特定することにしてもよい。
【００９７】
また、対象テーブルＴの割り当てサイズが大きい場合、１集計単位に相当する時期では割り当て処理が完了しない場合がある。例えば、業務サーバ２０１の処理性能では、１時間に５００［ＭＢ］の割り当て処理が限界であるとする。このとき、集計単位を「１日の時間単位」として、１．５［ＧＢ］のキャッシュ領域を割り当てる場合、１時間では割り当て処理が完了しない。
【００９８】
このため、作成部１００５は、算出された対象テーブルＴの割り当てサイズが所定値Ｍ以上の場合、所定値Ｍに応じて割り当てサイズを分割した分割サイズを算出することにしてもよい。所定値Ｍは、任意に設定可能であり、例えば、業務サーバ２０１の処理性能を考慮して設定される。つぎに、作成部１００５は、割り当てサイズを分割サイズで除算した数に応じて、改善対象時期よりも前で、かつ、対象テーブルＴへのアクセスが少ない複数の閑散時期を特定する。そして、作成部１００５は、特定した複数の閑散時期それぞれに、算出した分割サイズのキャッシュ領域を対象テーブルＴに割り当てるメモリ割当計画を作成する。
【００９９】
メモリ割当計画の作成例については、図１７および図１８を用いて後述する。作成されたメモリ割当計画は、例えば、図９に示したキャッシュ計画テーブル２６０に記憶される。
【０１００】
計画実行部１００６は、作成されたメモリ割当計画に基づいて、対象テーブルＴへのキャッシュ領域の割り当てを行う。具体的には、例えば、計画実行部１００６は、キャッシュ計画テーブル２６０を参照して、キャッシュ領域の割り当てが必要な時期に、業務サーバ２０１のキャッシュ割当部２０３に対して、対象テーブルＴへの割り当てサイズ分のキャッシュ領域の割り当てを指示することにより割り当て処理を実行する。
【０１０１】
業務サーバ２０１のキャッシュ割当部２０３は、メモリ割当装置１０１から割り当てを指示されると、指示された割り当てサイズ分のキャッシュ領域をメモリ３０２上に確保して、対象テーブルＴに割り当てる。そして、キャッシュ割当部２０３は、割り当てたキャッシュ領域に、ディスク３０５から対象テーブルＴのデータを読み込む。
【０１０２】
業務サーバ２０１のログ出力部２０２およびキャッシュ割当部２０３は、業務サーバ２０１のメモリ３０２、ディスク３０５などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０３により、その機能を実現する。
【０１０３】
なお、メモリ割当装置１０１は、作成部１００５によって作成されたメモリ割当計画を他のコンピュータ（例えば、業務サーバ２０１）へ送信することにしてもよい。これにより、業務サーバ２０１において、メモリ割当計画に従って、対象テーブルＴへのキャッシュ領域の割り当てを行うことができる。
【０１０４】
また、メモリ割当装置１０１は、作成部１００５によって作成されたメモリ割当計画を不図示のディスプレイに表示することにしてもよい。これにより、システム２００の管理者等が、ディスプレイに表示されるメモリ割当計画を参照して、業務サーバ２０１における対象テーブルＴへのキャッシュ領域の割り当てを制御することができる。
【０１０５】
（キャッシュ改善係数の算出例）
つぎに、図１２を用いて、キャッシュ改善係数の算出例について説明する。ここでは、集計単位を「１日の時間単位」とし、対象テーブルＴ１を例に挙げて、時間帯ごとのキャッシュ改善係数を算出する場合について説明する。
【０１０６】
図１２は、キャッシュ改善係数の算出例を示す説明図である。図１２において、表１２００は、図５に示したログ集計データ５０１から特定される対象テーブルＴ１の時間帯ごとのアクセス処理時間（ｍｓ）、アクセス数（回）、キャッシュヒット率（％）およびキャッシュサイズ（ＭＢ）を示している。
【０１０７】
指標算出部１００２は、例えば、対象テーブルＴ１の時間帯ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを上記式（１）に代入することにより、時間帯ごとのキャッシュ改善係数を算出することができる。ただし、アクセス処理時間の単位は「ｓ」とする。また、小数点第２位以下は切り上げる。
【０１０８】
例えば、０時の時間帯を例に挙げると、対象テーブルＴ１のキャッシュ改善係数は、「２７．９（≒１００００［回］×｛０．１０３［ｓ］×（１−０．４６）÷２０［ＭＢ］｝）」となる。また、１時の時間帯を例に挙げると、対象テーブルＴ１のキャッシュ改善係数は、「２５．４（≒１２０００［回］×｛０．０９０［ｓ］×（１−０．５３）÷２０［ＭＢ］｝）」となる。
【０１０９】
（改善対象時期の特定例）
つぎに、図１３〜図１５を用いて、改善対象時期の特定例について説明する。ここでは、図６に示したキャッシュ改善係数テーブル２３０内の各対象テーブルＴ１〜Ｔ４の時間帯ごとのキャッシュ改善係数をもとに、各対象テーブルＴ１〜Ｔ４の改善対象時期を特定する場合について説明する。
【０１１０】
図１３は、改善対象時期の特定例を示す説明図（その１）である。図１３において、キャッシュ改善係数テーブル２３０内の各対象テーブルＴ１〜Ｔ４の時間帯ごとのキャッシュ改善係数が示されている。ここでは、各対象テーブルＴ１〜Ｔ４について、時間帯ごとのキャッシュ改善係数が、閾値α以上となり、かつ、閾値β以上となる時期を、改善対象時期として特定する場合について説明する。
【０１１１】
対象テーブルＴ１を例に挙げると、閾値αは、例えば、対象テーブルＴ１の時間帯ごとのキャッシュ改善係数の平均値である。ここでは、対象テーブルＴ１の閾値αは、「５．０」である。また、閾値βは、例えば、対象テーブルＴ１〜Ｔ４の各時間帯のキャッシュ改善係数の平均値である。例えば、０時の時間帯の閾値βは、「７．０」である。また、１時の時間帯の閾値βは、「６．４」である。
【０１１２】
対象テーブルＴ１の０時の時間帯の場合、キャッシュ改善係数は「２７．９」であり、閾値αは「５．０」であり、閾値βは「７．０」である。このため、特定部１００３は、対象テーブルＴ１について、キャッシュ改善係数「２７．９」が、閾値α以上となり、かつ、閾値β以上となる０時の時間帯を、対象テーブルＴ１の改善対象時期として特定する。
【０１１３】
例えば、対象テーブルＴ１の１時の時間帯の場合、キャッシュ改善係数は「２５．４」であり、閾値αは「５．０」であり、閾値βは「６．４」である。このため、特定部１００３は、対象テーブルＴ１について、キャッシュ改善係数「２５．４」が、閾値α以上となり、かつ、閾値β以上となる１時の時間帯を、改善対象時期として特定する。
【０１１４】
図１４は、改善対象時期の特定例を示す説明図（その２）である。図１４において、キャッシュ改善係数テーブル２３０内の各対象テーブルＴ１〜Ｔ４の時間帯ごとのキャッシュ改善係数が示されている。ここでは、各対象テーブルＴ１〜Ｔ４について、時間帯ごとのキャッシュ改善係数が大きい上位５位までの時期を、改善対象時期として特定する場合について説明する。なお、ここでのキャッシュ改善係数テーブル２３０内の各キャッシュ改善係数の値は、図６に示した値とは一部異なる値を用いている。
【０１１５】
例えば、対象テーブルＴ１の場合、キャッシュ改善係数が大きい上位５位までの時期は、０時、１時、２時／２３時、２０時／２２時の時間帯である。このため、特定部１００３は、０時、１時、２時／２３時、２０時／２２時の時間帯を、対象テーブルＴ１の改善対象時期として特定する。
【０１１６】
図１５は、改善対象時期の特定例を示す説明図（その３）である。図１５において、キャッシュ改善係数テーブル２３０内の各対象テーブルＴ１〜Ｔ４の時間帯ごとのキャッシュ改善係数が示されている。ここでは、各対象テーブルＴ１〜Ｔ４について、時間帯ごとのキャッシュ改善係数が最大の時期を、改善対象時期として特定する場合について説明する。
【０１１７】
例えば、対象テーブルＴ１の場合、キャッシュ改善係数が最大の時期は、０時の時間帯である。このため、特定部１００３は、０時の時間帯を、対象テーブルＴ１の改善対象時期として特定する。
【０１１８】
（割り当てサイズの算出例）
つぎに、図１６を用いて、改善対象時期における各対象テーブルＴの割り当てサイズの算出例について説明する。
【０１１９】
図１６は、割り当てサイズの算出例を示す説明図である。図１６において、上記式（２）を用いて算出された改善対象時期における各対象テーブルＴ１〜Ｔ４の割り当てサイズが示されている。図１６中、背景色が付された箇所は、改善対象時期を示す。ここでは、業務サーバ２０１の最大キャッシュサイズを「１００［ＭＢ］」とする。
【０１２０】
この場合、例えば、改善対象時期である２０時の時間帯は、対象テーブルＴ１〜Ｔ４の割り当てサイズの合計値（１６０［ＭＢ］）が最大キャッシュサイズ（１００［ＭＢ］）を超える。このため、サイズ算出部１００４は、各対象テーブルＴ１〜Ｔ４のキャッシュ改善係数の比率に応じて最大キャッシュサイズを分配して、各対象テーブルＴ１〜Ｔ４の割り当てサイズを再計算する。
【０１２１】
具体的には、例えば、サイズ算出部１００４は、キャッシュ改善係数テーブル２３０を参照して、２０時の時間帯の各対象テーブルＴ１〜Ｔ４のキャッシュ改善係数を特定する。ここでは、各対象テーブルＴ１〜Ｔ４のキャッシュ改善係数として、０．６，０．１，３１．０，０．５がそれぞれ特定されたとする。
【０１２２】
つぎに、サイズ算出部１００４は、特定した各対象テーブルＴ１〜Ｔ４のキャッシュ改善係数の比率に応じて最大キャッシュサイズ（１００［ＭＢ］）を分配する。対象テーブルＴ１〜Ｔ４に最大キャッシュサイズ（１００［ＭＢ］）を分配した結果は以下の通りである。
【０１２３】
対象テーブルＴ１：２［ＭＢ］（≒１００［ＭＢ］×０．６÷３２．２）
対象テーブルＴ２：０［ＭＢ］（≒１００［ＭＢ］×０．１÷３２．２）
対象テーブルＴ３：９６［ＭＢ］（≒１００［ＭＢ］×３１．０÷３２．２）
対象テーブルＴ４：１［ＭＢ］（≒１００［ＭＢ］×０．５÷３２．２）
【０１２４】
ここで、上記式（２）を用いて算出された対象テーブルＴ３の割り当てサイズは４０［ＭＢ］であり、分配して得られた９６［ＭＢ］は十分に大きい。この場合、サイズ算出部１００４は、例えば、４０［ＭＢ］を超えるサイズ分を含めた値（６０［ＭＢ］）を割り当て可能なキャッシュサイズとして、残りの対象テーブルＴ１，Ｔ２，Ｔ４のキャッシュ改善係数の比率に応じて分配することにしてもよい。対象テーブルＴ１，Ｔ２，Ｔ４に６０［ＭＢ］を分配した結果は以下の通りである。
【０１２５】
対象テーブルＴ１：３０［ＭＢ］（≒６０［ＭＢ］×０．６÷１．２）
対象テーブルＴ２：５［ＭＢ］（≒６０［ＭＢ］×０．１÷１．２）
対象テーブルＴ３：４０［ＭＢ］（≒６０［ＭＢ］×３１．０÷３２．２）
対象テーブルＴ４：２５［ＭＢ］（≒６０［ＭＢ］×０．５÷１．２）
【０１２６】
（メモリ割当計画の作成例）
つぎに、図１７および図１８を用いて、メモリ割当計画の作成例について説明する。
【０１２７】
図１７は、メモリ割当計画の作成例を示す説明図（その１）である。図１７の（１７−１）において、改善対象時期における各対象テーブルＴ１，Ｔ２の割り当てサイズが示されている。図１７中、背景色が付された箇所は、改善対象時期を示す。なお、改善対象時期以外の時間帯の割り当てサイズは、「０」となっている。「０」は、キャッシュ領域の割り当てを０に変更するという意味ではなく、必要ならばキャッシュサイズを０まで変更可能であることを意味する。
【０１２８】
まず、作成部１００５は、対象テーブルＴ１について、ログ集計ＤＢ２２０を参照して、改善対象時期よりも前で、かつ、対象テーブルＴ１へのアクセスが少ない閑散時期を特定する。ここでは、対象テーブルＴ１の改善対象時期である７時の時間帯（割り当てサイズ：２０［ＭＢ］）に対して、０時〜６時の時間帯が対象テーブルＴ１の閑散時期として特定された場合を想定する。
【０１２９】
この場合、作成部１００５は、例えば、改善対象時期の直前の時間帯、例えば、６時の時間帯に、２０［ＭＢ］のキャッシュ領域を対象テーブルＴ１に割り当てるメモリ割当計画１７０１を作成する（図１７中、（１７−２）参照）。
【０１３０】
なお、対象テーブルＴ１の改善対象時期の直前の時間帯として、６時の時間帯以外に１５時の時間帯がある。このため、作成部１００５は、１５時の時間帯に、２０［ＭＢ］のキャッシュ領域を対象テーブルＴ１に割り当てるメモリ割当計画を作成することにしてもよい。ただし、６時の時間帯に２０［ＭＢ］のキャッシュ領域が割り当てられた場合、そのキャッシュ領域が解放されない限り、１５時の時間帯に２０［ＭＢ］分のキャッシュ領域を再度割り当てる必要はない。
【０１３１】
つぎに、作成部１００５は、対象テーブルＴ２について、ログ集計ＤＢ２２０を参照して、改善対象時期よりも前で、かつ、対象テーブルＴ２へのアクセスが少ない閑散時期を特定する。ここでは、対象テーブルＴ２の改善対象時期である１１時の時間帯（割り当てサイズ：２０［ＭＢ］）に対して、０時〜１０時の時間帯が対象テーブルＴ２の閑散時期として特定された場合を想定する。
【０１３２】
この場合、作成部１００５は、例えば、対象テーブルＴ２の閑散時期のうち、対象テーブルＴ１の閑散時期と重複する時間帯、例えば、６時の時間帯に、２０［ＭＢ］のキャッシュ領域を対象テーブルＴ２に割り当てるメモリ割当計画１７０２を作成する（図１７中、（１７−２）参照）。
【０１３３】
これにより、対象テーブルＴ２のメモリ割当計画１７０２を作成する際に、対象テーブルＴ１のアクセス状況も考慮して、対象テーブルＴ１，Ｔ２へのアクセスがともに少ない時期に割り当て処理を実施する計画を立てることができる。
【０１３４】
なお、対象テーブルＴの改善対象時期によって必要となる割り当てサイズが異なる場合がある。この場合、作成部１００５は、例えば、割り当てサイズが最大の改善対象時期に着目して、メモリ割当計画を作成することにしてもよい。また、作成部１００５は、例えば、各改善対象時期の割り当てサイズに応じて、対象テーブルＴに割り当てるキャッシュ領域を追加したり解放したりするメモリ割当計画を作成することにしてもよい。
【０１３５】
また、業務システムの利用傾向は、各システムで固有のパターンがあるため、大きく変動することはない。このため、メモリ割当計画の作成頻度は、例えば、月に１回程度であってもよい。しかし、特殊な状況、例えば、アニバーサリーデーなど特定日などにアクセスが通常時よりも大幅に増加することが見込まれる場合などでは、必要に応じてキャッシュ計画テーブル２６０をマニュアルで変更することにしてもよい。
【０１３６】
図１８は、メモリ割当計画の作成例を示す説明図（その２）である。図１８の（１８−１）において、改善対象時期における対象テーブルＴ１の割り当てサイズが示されている。図１８中、背景色が付された箇所は、改善対象時期を示す。ここでは、所定値Ｍは、業務サーバ２０１の処理性能を考慮して、５００［ＭＢ］に設定されているとする。
【０１３７】
この場合、改善対象時期（０時、１時、２２時、２３時の時間帯）における対象テーブルＴ１の割り当てサイズ（１５００［ＭＢ］）が所定値Ｍを超えている。このため、作成部１００５は、例えば、割り当てサイズを所定値Ｍで分割した分割サイズを算出する。ここでは、分割サイズは、「５００［ＭＢ］」となる。また、割り当てサイズを分割サイズで除算した数（分割数）は「３」となる。
【０１３８】
つぎに、作成部１００５は、ログ集計ＤＢ２２０を参照して、改善対象時期よりも前で、かつ、対象テーブルＴへのアクセスが少ない閑散時期を特定する。ここでは、対象テーブルＴ１の改善対象時期である２２時の時間帯（割り当てサイズ：１５００［ＭＢ］）に対して、２時〜２１時の時間帯が対象テーブルＴ１の閑散時期として特定された場合を想定する。
【０１３９】
つぎに、作成部１００５は、特定した閑散時期のうち、分割数分の閑散時期を特定する。具体的には、例えば、作成部１００５は、２時〜２１時の閑散時期のうち、改善対象時期である２２時の時間帯の直前３つ分（分割数分）の１９時、２０時、２１時の閑散時期を特定する。そして、作成部１００５は、特定した１９時、２０時、２１時の閑散時期それぞれに、算出した分割サイズ（５００［ＭＢ］）のキャッシュ領域を対象テーブルＴ１に割り当てるメモリ割当計画１８０１を作成する。
【０１４０】
これにより、対象テーブルＴ１の割り当てサイズが大きく、１集計単位（１時間）では割り当て処理が完了しない場合は、複数の閑散時期に割り当て処理を分散して実施するメモリ割当計画１８０１を作成することができる。
【０１４１】
（メモリ割当装置１０１の各種処理手順）
つぎに、メモリ割当装置１０１の各種処理手順について説明する。まず、メモリ割当装置１０１のメモリ割当計画作成処理手順について説明する。
【０１４２】
図１９は、メモリ割当装置１０１のメモリ割当計画作成処理手順の一例を示すフローチャートである。図１９のフローチャートにおいて、まず、メモリ割当装置１０１は、業務サーバ２０１からのトランザクションログＬに含まれるログ情報に基づいて、対象テーブルＴごとのログ集計データを生成する（ステップＳ１９０１）。生成されたログ集計データは、ログ集計ＤＢ２２０に記憶される。
【０１４３】
そして、メモリ割当装置１０１は、生成した対象テーブルＴごとのログ集計データに基づいて、各対象テーブルＴについて、集計単位ごとのキャッシュ改善係数を算出する（ステップＳ１９０２）。各対象テーブルＴについて算出された集計単位ごとのキャッシュ改善係数は、キャッシュ改善係数テーブル２３０に記憶される。
【０１４４】
つぎに、メモリ割当装置１０１は、算出した各対象テーブルＴの集計単位ごとのキャッシュ改善係数に基づいて、各対象テーブルＴについて、キャッシュミスの改善対象時期を特定する（ステップＳ１９０３）。特定された改善対象時期を示す情報は、改善対象テーブル２４０に記憶される。
【０１４５】
つぎに、メモリ割当装置１０１は、割り当てサイズ算出処理を実行する（ステップＳ１９０４）。割り当てサイズ算出処理は、各対象テーブルＴについて、ステップＳ１９０３において特定された改善対象時期の割り当てサイズを算出する処理である。割り当てサイズ算出処理の具体的な処理手順については、図２０を用いて後述する。
【０１４６】
つぎに、メモリ割当装置１０１は、各対象テーブルＴについて、ログ集計ＤＢ２２０を参照して、改善対象時期よりも前で、かつ、対象テーブルＴへのアクセスが少ない閑散時期を特定する（ステップＳ１９０５）。
【０１４７】
そして、メモリ割当装置１０１は、各対象テーブルＴについて、算出した改善対象時期における割り当てサイズのキャッシュ領域を、特定した閑散時期に対象テーブルＴに割り当てるメモリ割当計画を作成し（ステップＳ１９０６）、本フローチャートによる一連の処理を終了する。作成されたメモリ割当計画は、キャッシュ計画テーブル２６０に記憶される。
【０１４８】
これにより、業務サーバ２０１の各対象テーブルＴについて、各業務システム固有のアクセスパターンを考慮したメモリ割当計画を作成することができる。
【０１４９】
つぎに、図１９のステップＳ１９０４に示した割り当てサイズ算出処理の具体的な処理手順について説明する。
【０１５０】
図２０は、割り当てサイズ算出処理の具体的処理手順の一例を示すフローチャートである。図２０のフローチャートにおいて、まず、メモリ割当装置１０１は、集計単位に対応する未選択の時期を選択する（ステップＳ２００１）。例えば、集計単位が「１日の時間単位」の場合、メモリ割当装置１０１は、０時の時間帯から順に未選択の時間帯を選択する。また、集計単位が「月の日単位」の場合、メモリ割当装置１０１は、１日から順に未選択の日を選択する。
【０１５１】
そして、メモリ割当装置１０１は、改善対象テーブル２４０を参照して、選択した時期が、少なくともいずれかの対象テーブルＴの改善対象時期であるか否かを判断する（ステップＳ２００２）。ここで、改善対象時期ではない場合（ステップＳ２００２：Ｎｏ）、メモリ割当装置１０１は、ステップＳ２００８に移行する。
【０１５２】
一方、改善対象時期の場合（ステップＳ２００２：Ｙｅｓ）、メモリ割当装置１０１は、選択した時期が改善対象時期である対象テーブルＴについて、ログ集計ＤＢ２２０を参照して、改善対象時期と同一時期のキャッシュヒット率およびキャッシュサイズを特定する（ステップＳ２００３）。
【０１５３】
そして、メモリ割当装置１０１は、選択した時期が改善対象時期である対象テーブルＴについて、上記式（２）を用いて、特定したキャッシュヒット率およびキャッシュサイズに基づいて、改善対象時期における割り当てサイズを算出する（ステップＳ２００４）。つぎに、メモリ割当装置１０１は、算出した改善対象時期における対象テーブルＴの割り当てサイズを足し合わせて合計キャッシュサイズを算出する（ステップＳ２００５）。
【０１５４】
そして、メモリ割当装置１０１は、算出した合計キャッシュサイズが、業務サーバ２０１の割り当て可能サイズを超えるか否かを判断する（ステップＳ２００６）。割り当て可能サイズは、業務サーバ２０１において割り当て可能なキャッシュサイズである。割り当て可能サイズの初期値は、業務サーバ２０１の最大キャッシュサイズである。
【０１５５】
ここで、割り当て可能サイズを超えない場合（ステップＳ２００６：Ｎｏ）、メモリ割当装置１０１は、算出した改善対象時期における対象テーブルＴの割り当てサイズを、割り当てサイズテーブル２５０に登録する（ステップＳ２００７）。そして、メモリ割当装置１０１は、集計単位に対応する未選択の時期があるか否かを判断する（ステップＳ２００８）。
【０１５６】
ここで、未選択の時期がある場合（ステップＳ２００８：Ｙｅｓ）、メモリ割当装置１０１は、ステップＳ２００１に戻る。一方、未選択の時期がない場合（ステップＳ２００８：Ｎｏ）、メモリ割当装置１０１は、割り当てサイズ算出処理を呼び出したステップに戻る。
【０１５７】
また、ステップＳ２００６において、割り当て可能サイズを超える場合（ステップＳ２００６：Ｙｅｓ）、メモリ割当装置１０１は、改善対象時期に対応する各対象テーブルＴのキャッシュ改善係数の比率に応じて割り当て可能サイズを分配して、各対象テーブルＴの割り当てサイズを再計算する（ステップＳ２００９）。ただし、分配対象となる対象テーブルＴは、ステップＳ２００１において選択された時期が改善対象時期である対象テーブルＴである。また、ステップＳ２０１１において割り当てサイズが確定した対象テーブルＴは除外する。
【０１５８】
つぎに、メモリ割当装置１０１は、再計算した割り当てサイズが、ステップＳ２００４において算出した元の割り当てサイズを超える対象テーブルＴがあるか否かを判断する（ステップＳ２０１０）。ここで、元の割り当てサイズを超える対象テーブルＴがない場合（ステップＳ２０１０：Ｎｏ）、メモリ割当装置１０１は、ステップＳ２００７に移行する。そして、メモリ割当装置１０１は、再計算した対象テーブルＴの割り当てサイズを、割り当てサイズテーブル２５０に登録する。
【０１５９】
一方、元の割り当てサイズを超える対象テーブルＴがある場合（ステップＳ２０１０：Ｙｅｓ）、メモリ割当装置１０１は、該当の対象テーブルＴの割り当てサイズを、ステップＳ２００４において算出した元の割り当てサイズで確定する（ステップＳ２０１１）。
【０１６０】
そして、メモリ割当装置１０１は、確定した割り当てサイズと再計算した割り当てサイズとの差分に基づいて、業務サーバ２０１の割り当て可能サイズを算出し（ステップＳ２０１２）、ステップＳ２００９に戻る。
【０１６１】
これにより、過去のアクセス状況をもとに、対象テーブルＴに対応する業務システム固有のアクセスパターンを考慮した割り当てサイズを予測することができる。
【０１６２】
つぎに、メモリ割当装置１０１の割り当て処理手順について説明する。
【０１６３】
図２１は、メモリ割当装置１０１の割り当て処理手順の一例を示すフローチャートである。図２１のフローチャートにおいて、まず、メモリ割当装置１０１は、集計単位に対応する時期の開始時刻となったか否かを判断する（ステップＳ２１０１）。ここで、メモリ割当装置１０１は、時期の開始時刻となるのを待つ（ステップＳ２１０１：Ｎｏ）。
【０１６４】
そして、時期の開始時刻となった場合（ステップＳ２１０１：Ｙｅｓ）、メモリ割当装置１０１は、キャッシュ計画テーブル２６０を参照して、対象テーブルＴへのキャッシュ領域の割り当てが必要な時期であるか否かを判断する（ステップＳ２１０２）。ここで、キャッシュ領域の割り当てが必要な時期ではない場合（ステップＳ２１０２：Ｎｏ）、メモリ割当装置１０１は、ステップＳ２１０１に戻る。
【０１６５】
一方、キャッシュ領域の割り当てが必要な時期の場合（ステップＳ２１０２：Ｙｅｓ）、メモリ割当装置１０１は、キャッシュ計画テーブル２６０を参照して、業務サーバ２０１に対して、対象テーブルＴへの割り当てサイズ分のキャッシュ領域の割り当てを指示する（ステップＳ２１０３）。
【０１６６】
そして、メモリ割当装置１０１は、割り当て処理を終了するか否かを判断する（ステップＳ２１０４）。例えば、メモリ割当装置１０１は、キャッシュ計画テーブル２６０内の全時期について、ステップＳ２１０１〜Ｓ２１０３の処理を実行した場合に、割り当て処理を終了する。
【０１６７】
ここで、割り当て処理を終了しない場合（ステップＳ２１０４：Ｎｏ）、メモリ割当装置１０１は、ステップＳ２１０１に戻る。一方、割り当て処理を終了する場合（ステップＳ２１０４：Ｙｅｓ）、メモリ割当装置１０１は、本フローチャートによる一連の処理を終了する。
【０１６８】
これにより、適時にキャッシュの効果を得られるようなキャッシュ領域の調整を自動で実施することができる。
【０１６９】
（実施例）
つぎに、図２２〜図２９を用いて、１日の時間単位に加えて、月の日単位の集計結果（ログ収集データ）も考慮して、メモリ割当計画を作成する場合について説明する。
【０１７０】
図２２は、集計単位が月の日単位の場合のログ集計ＤＢ２２０の記憶内容の一例を示す説明図である。図２２において、ログ集計ＤＢ２２０は、集計単位が月の日単位の場合の対象テーブルＴごとのログ集計データ（例えば、ログ集計データ２２０１，２２０２）を記憶する。
【０１７１】
指標算出部１００２は、ログ集計ＤＢ２２０を参照して、各対象テーブルＴについて、月の日単位ごとのキャッシュ改善係数を算出する。対象テーブルＴ１を例に挙げると、ログ集計データ２２０１をもとに算出される月の日単位ごとのキャッシュ改善係数は、図２３に示す通りである。
【０１７２】
図２３は、集計単位が月の日単位の場合のキャッシュ改善係数の算出例を示す説明図である。図２３において、表２３００は、図２２に示したログ集計データ２２０１から特定される対象テーブルＴ１の日ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを示している。
【０１７３】
指標算出部１００２は、例えば、対象テーブルＴ１の日ごとのアクセス処理時間、アクセス数、キャッシュヒット率およびキャッシュサイズを上記式（１）に代入することにより、日ごとのキャッシュ改善係数を算出することができる。
【０１７４】
例えば、１日（土）を例に挙げると、対象テーブルＴ１のキャッシュ改善係数は、「１００（≒４００００［回］×｛０．１００［ｓ］×（１−０．５）÷２０［ＭＢ］｝）」となる。また、２日（日）を例に挙げると、対象テーブルＴ１のキャッシュ改善係数は、「５（≒２０００［回］×｛０．１００［ｓ］×（１−０．５）÷２０［ＭＢ］｝）」となる。
【０１７５】
各対象テーブルＴについて算出された日ごとのキャッシュ改善係数は、例えば、図２４に示すようなキャッシュ改善係数テーブル２３０に記憶される。
【０１７６】
図２４は、集計単位が月の日単位の場合のキャッシュ改善係数テーブル２３０の記憶内容の一例を示す説明図である。図２４において、キャッシュ改善係数テーブル２３０は、各対象テーブルＴについて、日ごとのキャッシュ改善係数を記憶する。図２４の例では、対象テーブルＴは、対象テーブルＴ１〜Ｔ４である。
【０１７７】
特定部１００３は、図２４に示したキャッシュ改善係数テーブル２３０を参照して、各対象テーブルＴ１〜Ｔ４のキャッシュミスの改善対象時期を特定する。
【０１７８】
図２５は、集計単位が月の日単位の場合の改善対象時期の特定例を示す説明図である。図２５において、図２４に示したキャッシュ改善係数テーブル２３０内の各対象テーブルＴ１〜Ｔ４の日ごとのキャッシュ改善係数が示されている。ここでは、各対象テーブルＴ１〜Ｔ４について、日ごとのキャッシュ改善係数が、閾値α以上となり、かつ、閾値β以上となる時期を、改善対象時期として特定する場合について説明する。
【０１７９】
対象テーブルＴ１を例に挙げると、閾値αは、例えば、対象テーブルＴ１の日ごとのキャッシュ改善係数の１ヶ月平均値である。ここでは、対象テーブルＴ１の閾値αは、「２７．０」である。また、閾値βは、例えば、対象テーブルＴ１〜Ｔ４の各日のキャッシュ改善係数の平均値である。例えば、１日（土）の閾値βは、「２５．３」である。また、２日（日）の閾値βは、「１．５」である。
【０１８０】
対象テーブルＴ１の１日（土）の場合、キャッシュ改善係数は「１００」であり、閾値αは「２７．０」であり、閾値βは「２５．３」である。このため、特定部１００３は、対象テーブルＴ１について、キャッシュ改善係数「１００」が、閾値α以上となり、かつ、閾値β以上となる１日（土）を、対象テーブルＴ１の改善対象時期として特定する。図２５中、背景色が付された箇所は、改善対象時期を示す。
【０１８１】
特定された改善対象時期を示す情報は、例えば、図２６に示すような改善対象テーブル２４０に記憶される。
【０１８２】
図２６は、集計単位が月の日単位の場合の改善対象テーブル２４０の記憶内容の一例を示す説明図である。図２６において、改善対象テーブル２４０は、各対象テーブルＴについて、日ごとの改善対象フラグを記憶する。例えば、対象テーブルＴ１の１日（土）の改善対象フラグは「ｔｒｕｅ」であり、キャッシュミスの改善対象時期とすることを示す。
【０１８３】
サイズ算出部１００４は、改善対象時期の対象テーブルＴの割り当てサイズを算出する。具体的には、例えば、サイズ算出部１００４は、図２２に示したようなログ集計ＤＢ２２０を参照して、改善対象時期と同一時期の対象テーブルＴのキャッシュヒット率およびキャッシュサイズを特定する。そして、サイズ算出部１００４は、上記式（２）を用いて、特定したキャッシュヒット率およびキャッシュサイズに基づいて、改善対象時期における対象テーブルＴの割り当てサイズを算出する。
【０１８４】
算出された改善対象時期における各対象テーブルＴの割り当てサイズは、例えば、図２７に示すような割り当てサイズテーブル２５０に記憶される。
【０１８５】
図２７は、集計単位が月の日単位の場合の割り当てサイズテーブル２５０の記憶内容の一例を示す説明図（その１）である。図２７において、割り当てサイズテーブル２５０は、各対象テーブルＴについて、日ごとのキャッシュ領域の割り当てサイズを記憶する。図２７の例では、対象テーブルＴは、対象テーブルＴ１〜Ｔ４である。
【０１８６】
ここで、集計単位が１日の時間単位の場合の割り当てサイズテーブル２５０の記憶内容が、図８に示したものであったとする。この場合、対象テーブルＴ１に着目すると、月の日単位で見た場合、土曜日、日曜日（不要な日もある）にはキャッシュ領域の割り当てが必要だが、それ以外の曜日は必要ではない。また、対象テーブルＴ３に着目すると、土曜日、日曜日にはキャッシュ領域の割り当てが必要なく、その他の曜日は必要である。
【０１８７】
このため、サイズ算出部１００４は、図２８に示すように、各曜日の割り当てサイズテーブル２５０を作成することにしてもよい。
【０１８８】
図２８は、集計単位が月の日単位の場合の割り当てサイズテーブル２５０の記憶内容の一例を示す説明図（その２）である。図２８において、割り当てサイズテーブル２５０−１は、各対象テーブルＴ１〜Ｔ４について、土曜日と日曜日の時間帯ごとのキャッシュ領域の割り当てサイズを記憶する。また、割り当てサイズテーブル２５０−２は、各対象テーブルＴ１〜Ｔ４について、その他の曜日（月曜日、火曜日、水曜日、木曜日）の時間帯ごとのキャッシュ領域の割り当てサイズを記憶する。
【０１８９】
作成部１００５は、各対象テーブルＴ１〜Ｔ４について、算出された割り当てサイズのキャッシュ領域を、改善対象時期よりも前に各対象テーブルＴ１〜Ｔ４に割り当てるメモリ割当計画を作成する。具体的には、例えば、作成部１００５は、図８および図２７に示した割り当てサイズテーブル２５０を参照して、各対象テーブルＴ１〜Ｔ４について、曜日に応じてメモリ割当計画を作成することにしてもよい。
【０１９０】
例えば、各対象テーブルＴ１〜Ｔ４について、閑散時間帯が３時〜６時の時間帯で、かつ、割り当て可能サイズが十分大きいと想定した場合、各曜日のキャッシュ計画テーブル２６０は、図２９に示すようなものとなる。
【０１９１】
図２９は、曜日に応じたキャッシュ計画テーブル２６０の記憶内容の一例を示す説明図である。図２９において、キャッシュ計画テーブル２６０−１は、金曜日の各対象テーブルＴ１〜Ｔ４のメモリ割当計画２９０１〜２９０４を記憶する。また、キャッシュ計画テーブル２６０−２は、土曜日の各対象テーブルＴ１〜Ｔ４のメモリ割当計画２９０５〜２９０８を記憶する。
【０１９２】
また、キャッシュ計画テーブル２６０−３は、日曜日の各対象テーブルＴ１〜Ｔ４のメモリ割当計画２９０９〜２９１２を記憶する。また、キャッシュ計画テーブル２６０−４は、その他の曜日（月曜日、火曜日、水曜日、木曜日）の各対象テーブルＴ１〜Ｔ４のメモリ割当計画２９１３〜２９１６を記憶する。メモリ割当計画２９０１〜２９１６は、各対象テーブルＴ１〜Ｔ４について、キャッシュ領域を割り当てる時間帯と、当該時間帯に割り当てるキャッシュ領域のサイズとを示す。
【０１９３】
このように、対象テーブルＴへのアクセスパターンに曜日別の特徴がある場合などは、各曜日のキャッシュ計画テーブル２６０を作成することにしてもよい。
【０１９４】
以上説明したように、実施の形態にかかるメモリ割当装置１０１によれば、対象テーブルＴへのアクセスに関するログ情報を取得し、取得したログ情報に基づいて、集計単位ごとに、対象テーブルＴのキャッシュ改善係数を算出することができる。これにより、業務サーバ２０１の各対象テーブルＴについて、集計単位ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを判断可能な指標値を算出することができる。
【０１９５】
また、メモリ割当装置１０１によれば、算出した対象テーブルＴの集計単位ごとのキャッシュ改善係数に基づいて、キャッシュミスの改善対象時期を特定することができる。これにより、キャッシュ領域を増やすことによる処理性能の改善可能性（キャッシュ効果）が高い時期を、対象テーブルＴの改善対象時期として特定することができる。
【０１９６】
また、メモリ割当装置１０１によれば、特定した改善対象時期と同一時期の対象テーブルＴへのアクセスに関するログ情報に基づいて、改善対象時期の対象テーブルＴの割り当てサイズを算出することができる。これにより、過去のアクセス状況をもとに対象テーブルＴの割り当てサイズを算出することができ、業務システム固有のアクセスパターンを考慮した割り当てサイズを予測することが可能となる。
【０１９７】
また、メモリ割当装置１０１によれば、算出された割り当てサイズのキャッシュ領域を、改善対象時期よりも前に対象テーブルＴに割り当てるメモリ割当計画を作成することができる。これにより、改善対象時期よりも前の時期から、対象テーブルＴに割り当てるキャッシュ領域の準備を始めて、改善対象時期となった際にキャッシュの効果を即時得られるようなスケジュールを立てることができる。また、キャッシュ領域の割り当て量に対して処理時間の低減効果がより大きい時期にキャッシュ領域を優先的に割り当て可能となり、リソース割当効率がよい処理時間短縮を実現することができる。
【０１９８】
また、メモリ割当装置１０１によれば、作成したメモリ割当計画に基づいて、対象テーブルＴへのキャッシュ領域の割り当てを行うことができる。これにより、適時にキャッシュの効果を得られるようなキャッシュ領域の調整を自動で実施することができる。
【０１９９】
また、メモリ割当装置１０１によれば、対象テーブルＴの集計単位ごとのアクセス数、アクセス処理時間、キャッシュヒット率、および、キャッシュサイズに基づいて、対象テーブルＴの集計単位ごとのキャッシュ改善係数を算出することができる。これにより、アクセス数が多く、アクセス処理時間が長く、キャッシュヒット率が低いほど高くなるキャッシュ改善係数を算出することができる。
【０２００】
また、メモリ割当装置１０１によれば、改善対象時期と同一時期の対象テーブルＴへのアクセスに関するログ情報から特定されるキャッシュヒット率およびキャッシュサイズに基づいて、対象テーブルＴの割り当てサイズを算出することができる。これにより、過去のアクセス状況をもとに、改善対象時期におけるキャッシュヒット率が１００％になると予測される割り当てサイズを算出することができる。
【０２０１】
また、メモリ割当装置１０１によれば、取得したログ情報に基づいて、改善対象時期よりも前で、かつ、対象テーブルＴへのアクセスが少ない閑散時期を特定することができる。そして、メモリ割当装置１０１によれば、特定した閑散時期に、算出した割り当てサイズのキャッシュ領域を対象テーブルＴに割り当てるメモリ割当計画を作成することができる。これにより、対象テーブルＴへのアクセスが多い繁忙時期を避けて、キャッシュ領域の割り当て処理を実施することができ、対象テーブルＴのアクセス性能が低下するのを防ぐことができる。
【０２０２】
また、メモリ割当装置１０１によれば、対象テーブルＴの割り当てサイズが所定値Ｍ以上の場合、所定値Ｍに応じて割り当てサイズを分割した分割サイズを算出することができる。また、メモリ割当装置１０１によれば、対象テーブルＴの割り当てサイズを分割サイズで除算した数に応じて、改善対象時期よりも前で、かつ、対象テーブルＴへのアクセスが少ない複数の閑散時期を特定することができる。そして、メモリ割当装置１０１によれば、特定した複数の閑散時期それぞれに、算出した分割サイズのキャッシュ領域を対象テーブルＴに割り当てるメモリ割当計画を作成することができる。これにより、１集計単位に相当する時期では割り当て処理が完了しないほど割り当てサイズが大きい場合は、キャッシュ領域の割り当て処理を複数の閑散時期に分散して実施することができる。
【０２０３】
また、メモリ割当装置１０１によれば、各対象テーブルＴについて、集計単位ごとのキャッシュ改善係数が閾値α以上となる時期を、改善対象時期として特定することができる。閾値αは、例えば、対象テーブルＴの集計単位ごとのキャッシュ改善係数の平均値である。これにより、例えば、１日のうちキャッシュ改善係数が相対的に高くなっている時期を、改善対象時期として特定することができる。
【０２０４】
また、メモリ割当装置１０１によれば、各対象テーブルＴについて、集計単位ごとに算出した、各対象テーブルＴのキャッシュ改善係数と他の対象テーブルＴのキャッシュ改善係数とに基づいて、改善対象時期を特定することができる。具体的には、例えば、メモリ割当装置１０１によれば、集計単位ごとのキャッシュ改善係数が閾値β以上となる時期を、改善対象時期として特定することができる。閾値βは、例えば、複数の対象テーブルＴの各集計単位のキャッシュ改善係数の平均値である。これにより、各対象テーブルＴについて、当該対象テーブルＴのキャッシュ改善係数が複数の対象テーブルＴの中で相対的に高くなっている時期を、改善対象時期として特定することができる。
【０２０５】
また、メモリ割当装置１０１によれば、各対象テーブルＴについて、集計単位ごとのキャッシュ改善係数が、閾値α以上となり、かつ、閾値β以上となる時期を、改善対象時期として特定することができる。これにより、キャッシュ改善係数が、対象テーブルＴ単位では高くなっているものの、複数の対象テーブルＴ全体としては高いとはいえない時期が、改善対象時期として特定されるのを防ぐことができる。
【０２０６】
また、メモリ割当装置１０１によれば、改善対象時期の合計キャッシュサイズが最大キャッシュサイズを超える場合、改善対象時期に対応する各対象テーブルＴのキャッシュ改善係数の比率に応じて最大キャッシュサイズを分配して、各対象テーブルＴの割り当てサイズを再計算することができる。これにより、業務サーバ２０１において割り当て可能な最大キャッシュサイズを合計キャッシュサイズが超えている場合は、改善対象時期における各対象テーブルＴのキャッシュ効果の高さに応じてキャッシュリソースを適切に分配することができる。
【０２０７】
これらのことから、実施の形態にかかるメモリ割当装置１０１によれば、対象テーブルＴへのキャッシュ領域の割り当てを、業務システム固有のアクセスパターンに応じて動的に変化させて効率的な割り当てを可能にすることができる。また、キャッシュ領域の割り当て処理を実施するタイミングを、各対象テーブルＴへのアクセス状況を考慮して決めることができるため、業務サーバ２０１全体の負荷が高い時期に割り当て処理が実施されて、全体的な性能劣化を引き起こすのを防ぐことができる。
【０２０８】
なお、本実施の形態で説明したメモリ割当方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本メモリ割当プログラムは、ハードディスク、フレキシブルディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本メモリ割当プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２０９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２１０】
（付記１）キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
処理をコンピュータに実行させることを特徴とするメモリ割当プログラム。
【０２１１】
（付記２）作成した前記メモリ割当計画に基づいて、前記対象データへのキャッシュ領域の割り当てを行う、処理を前記コンピュータに実行させることを特徴とする付記１に記載のメモリ割当プログラム。
【０２１２】
（付記３）前記ログ情報は、前記対象データにアクセスした際のアクセス時刻、アクセス処理時間、キャッシュヒット率、および、前記対象データに割り当てられたキャッシュ領域のサイズを含み、
前記指標値を算出する処理は、
前記ログ情報から特定される前記時間間隔ごとのアクセス数、アクセス処理時間、キャッシュヒット率、および、キャッシュ領域のサイズに基づいて、前記時間間隔ごとの前記指標値を算出する、ことを特徴とする付記１または２に記載のメモリ割当プログラム。
【０２１３】
（付記４）前記サイズを算出する処理は、
前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報から特定されるキャッシュヒット率およびキャッシュ領域のサイズに基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出する、ことを特徴とする付記３に記載のメモリ割当プログラム。
【０２１４】
（付記５）取得した前記ログ情報に基づいて、前記改善対象時期よりも前で、かつ、前記対象データへのアクセスが少ない閑散時期を特定する、処理を前記コンピュータに実行させ、
前記作成する処理は、
特定した前記閑散時期に、算出した前記サイズのキャッシュ領域を前記対象データに割り当てるメモリ割当計画を作成する、ことを特徴とする付記１〜４のいずれか一つに記載のメモリ割当プログラム。
【０２１５】
（付記６）算出した前記サイズが所定値以上の場合、前記所定値に応じて前記サイズを分割した分割サイズを算出する、処理を前記コンピュータに実行させ、
前記閑散時期を特定する処理は、
前記サイズを前記分割サイズで除算した数に応じて、前記改善対象時期よりも前で、かつ、前記対象データへのアクセスが少ない複数の閑散時期を特定し、
前記作成する処理は、
特定した前記複数の閑散時期それぞれに、算出した前記分割サイズのキャッシュ領域を前記対象データに割り当てるメモリ割当計画を作成する、
ことを特徴とする付記５に記載のメモリ割当プログラム。
【０２１６】
（付記７）前記特定する処理は、
前記指標値が閾値以上となる時期を、前記改善対象時期として特定する、ことを特徴とする付記１〜６のいずれか一つに記載のメモリ割当プログラム。
【０２１７】
（付記８）前記コンピュータに、
キャッシュ領域を割り当てる複数の対象データの各対象データについて、前記取得する処理、前記指標値を算出する処理、前記特定する処理、前記サイズを算出する処理、および前記作成する処理を実行させることを特徴とする付記１〜７のいずれか一つに記載のメモリ割当プログラム。
【０２１８】
（付記９）前記特定する処理は、
前記各対象データについて、前記時間間隔ごとに算出した、前記各対象データの指標値と他の対象データの指標値とに基づいて、キャッシュミスの改善対象時期を特定する、ことを特徴とする付記８に記載のメモリ割当プログラム。
【０２１９】
（付記１０）前記サイズを算出する処理は、
算出した前記各対象データのキャッシュ領域のサイズの合計値が、前記複数の対象データに割り当て可能な最大サイズを超える場合、前記改善対象時期に対応する前記各対象データの指標値の比率に応じて前記最大サイズを分配して、前記各対象データに割り当てるキャッシュ領域のサイズを再計算する、ことを特徴とする付記８または９に記載のメモリ割当プログラム。
【０２２０】
（付記１１）キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
処理をコンピュータが実行することを特徴とするメモリ割当方法。
【０２２１】
（付記１２）キャッシュ領域を割り当てる対象データへのアクセスに関するログ情報を取得し、
取得した前記ログ情報に基づいて、所定の時間間隔ごとに、キャッシュ領域の増加に応じたキャッシュミスの改善度合いを示す指標値を算出し、
算出した前記指標値に基づいて、キャッシュミスの改善対象時期を特定し、
特定した前記改善対象時期と同一時期の前記対象データへのアクセスに関するログ情報に基づいて、前記対象データに割り当てるキャッシュ領域のサイズを算出し、
算出した前記サイズのキャッシュ領域を、前記改善対象時期よりも前に前記対象データに割り当てるメモリ割当計画を作成する、
制御部を有することを特徴とするメモリ割当装置。
【符号の説明】
【０２２２】
１０１  メモリ割当装置
１０２  ストレージ
１０３，３０２  メモリ
１１０  対象データ
１２０，４０１，４０２，４０３，４０４  ログ情報
１３０  メモリ割当計画
２００  システム
２０１  業務サーバ
２０２  ログ出力部
２０３  キャッシュ割当部
２１０  ネットワーク
２２０  ログ集計ＤＢ
２３０  キャッシュ改善係数テーブル
２４０  改善対象テーブル
２５０  割り当てサイズテーブル
２６０  キャッシュ計画テーブル
３００  バス
３０１  ＣＰＵ
３０３  Ｉ／Ｆ
３０４  ディスクドライブ
３０５  ディスク
５０１，５０２，２２０１，２２０２  ログ集計データ
１００１  取得部
１００２  指標算出部
１００３  特定部
１００４  サイズ算出部
１００５  作成部
１００６  計画実行部
【図１】
2019082917.tif 000003
【図２】
2019082917.tif 000004
【図３】
2019082917.tif 000005
【図４】
2019082917.tif 000006
【図５】
2019082917.tif 000007
【図６】
2019082917.tif 000008
【図７】
2019082917.tif 000009
【図８】
2019082917.tif 000010
【図９】
2019082917.tif 000011
【図１０】
2019082917.tif 000012
【図１１】
2019082917.tif 000013
【図１２】
2019082917.tif 000014
【図１３】
2019082917.tif 000015
【図１４】
2019082917.tif 000016
【図１５】
2019082917.tif 000017
【図１６】
2019082917.tif 000018
【図１７】
2019082917.tif 000019
【図１８】
2019082917.tif 000020
【図１９】
2019082917.tif 000021
【図２０】
2019082917.tif 000022
【図２１】
2019082917.tif 000023
【図２２】
2019082917.tif 000024
【図２３】
2019082917.tif 000025
【図２４】
2019082917.tif 000026
【図２５】
2019082917.tif 000027
【図２６】
2019082917.tif 000028
【図２７】
2019082917.tif 000029
【図２８】
2019082917.tif 000030
【図２９】
2019082917.tif 000031