(57)【特許請求の範囲】
【請求項１】
データベース管理システムが動作する計算機と、
前記計算機と接続され、前記データベース管理システムが管理するデータベースのデータ
を格納する記憶装置と、
前記計算機及び前記記憶装置と接続される管理装置を有し、
前記計算機は第一の記憶領域に分割される第一のキャッシュメモリを有し、
前記記憶装置は第二のキャッシュメモリを有し、
前記管理装置が、前記データベース管理システムから前記第一のキャッシュメモリの分
割に関する情報を取得し、
前記計算機及び前記記憶装置のそれぞれからデータのマッピングに関する情報を取得し
、
前記第一のキャッシュメモリの分割に関する情報及び前記データのマッピングに関する
情報を用いて前記記憶装置における前記第二のキャッシュメモリの分割方法を決定し、
前記記憶装置に対して、決定した前記分割方法に従って前記第二のキャッシュメモリを
第二の記憶領域に分割する、分割の設定を指示し、
前記管理装置は、前記第一の記憶領域又は前記第二の記憶領域の記憶容量の変更量に関
する情報を受信し、前記計算機から前記第一の記憶領域及び前記第二の記憶領域のキャッ
シュヒット率に関する情報を受信し、前記変更量に関する情報及び前記キャッシュヒット
率に関する情報とに基づいて、実際に前記第一の記憶領域又は前記第二の記憶領域の記憶
容量を前記変更量に基づいて変更した際の前記第一の記憶領域及び前記第二の記憶領域に
おけるキャッシュヒット率を予測する、
ことを特徴とする計算機システム。
【請求項２】
前記分割に関する情報は、前記データベース管理システムが管理するデータベースにおけるデータの種類又は前記データベース管理システムが利用する記憶領域管理構造を基に前記第一のキャッシュメモリを割り当てるという情報であることを特徴とする請求項１記載の計算機システム。
【請求項３】
前記管理装置は、前記マッピングに関する情報に基づいて、前記記憶装置が有する記憶領域を前記データの種類又は前記記憶領域管理構造の各々が格納されている記憶領域毎にグループ化し、前記グループ化された記憶領域毎に前記第二のキャッシュメモリの記憶領域を分割するという分割方法を決定することを特徴とする請求項２記載の計算機システム。
【請求項４】
前記第一の記憶領域は、前記データの種類又は前記記憶領域管理構造によって分割される前記第一のキャッシュメモリの前記データの種類又は前記記憶領域管理構造ごとに割り当てられた記憶領域であって、前記第二の記憶領域は、前記データの種類又は前記記憶領域管理構造によってグループ化された前記記憶装置の記憶領域に割り当てられた前記第二のキャッシュメモリの記憶領域であって、
前記管理装置は前記第一の記憶領域と第二の記憶領域とを対応付け、
前記計算機及び前記記憶装置に対して、前記第一の記憶領域及び前記第二の記憶領域に共通する所定のモードを指示することを特徴とする請求項３記載の計算機システム。
【請求項５】
前記所定のモードとは、前記計算機が前記第一の記憶領域からデータを削除する場合には、該計算機が前記記憶装置に削除された前記データを前記第二の記憶領域に保持することを指示し、前記第二の記憶領域から前記計算機がデータを読み出した場合は、前記記憶装置が前記読み出されたデータを前記第二の記憶領域から削除するという処理を指定するモードであることを特徴とする請求項４記載の計算機システム。
【請求項６】
前記管理装置は、受信した前記変更量に基づいて、前記計算機又は前記記憶装置に前記第一の記憶領域又は前記第二の記憶領域の記憶容量を変更する指示を送信することを特徴とする請求項５記載の計算機システム。
【請求項７】
前記管理装置は、前記第一の記憶領域及び前記第二の記憶領域とを一つの仮想的な記憶領域として取り扱い、前記仮想的な記憶領域にかかるキャッシュヒット率を計算することで前記第一の記憶領域及び前記第二の記憶領域のキャッシュヒット率を予測することを特徴とする請求項６記載の計算機システム。
【請求項８】
前記計算機は、前記第一の記憶領域におけるデータへのアクセス時のキャッシュの管理情報中の位置に関する統計情報であるキャッシュヒット数分布情報を取得し、
前記キャッシュヒット率に関する情報とは、前記キャッシュヒット数分布情報であり、
前記管理装置は、前記キャッシュヒット数分布情報を用いて、前記記憶装置の前記第二の記憶領域におけるキャッシュヒット数見積を計算することを特徴とする請求項７記載の計算機システム。
【請求項９】
前記記憶装置は、前記第二の記憶領域における第二のキャッシュヒット数分布情報を収集し、
前記管理装置は、前記記憶装置から前記第二のキャッシュヒット数分布情報を取得して前記第一及び第二の記憶領域のキャッシュヒット率を予測することを特徴とする請求項７記載の計算機システム。
【請求項１０】
第一のキャッシュメモリを有する計算機と、データベースのデータを格納し、第二のキャッシュメモリを有する記憶装置と、前記計算機と前記記憶装置と接続される管理装置とを有する計算機システムにおいて実行されるキャッシュ管理プログラムであって、
前記第一及び第二のキャッシュメモリに関するキャッシュヒット数分布情報を収集し、
前記計算機及び前記記憶装置からキャッシュの分割方法に関する情報を取得し、
前記計算機及び前記記憶装置からデータのマッピングに関する情報を取得し、
前記第一又は第二のキャッシュメモリのキャッシュ割当変更予定量を取得し、
前記分割方法に関する情報、前記マッピングに関する情報及び前記予定量を用いて前記データベース管理システムのキャッシュ割当量の変更した際の前記記憶装置における前記第二のキャッシュメモリにおけるキャッシュヒット数見積を計算し、前記見積を出力することを特徴とするキャッシュ管理プログラム。
【請求項１１】
前記キャッシュ管理プログラムは前記計算機で実行されることを特徴とする請求項１０記載のキャッシュ管理プログラム。
【請求項１２】
前記キャッシュ管理プログラムは前記管理装置で実行されることを特徴とする請求項１０記載のキャッシュ管理プログラム。
【請求項１３】
前記キャッシュ管理プログラムは前記記憶装置で実行されることを特徴とする請求項１０記載のキャッシュ管理プログラム。
【請求項１４】
データベース管理システムが動作する計算機と、
前記計算機と接続され、前記データベース管理システムが管理するデータベースのデータを格納する記憶装置と、
前記計算機及び前記記憶装置と接続される管理装置を有し、
前記計算機は第一のキャッシュメモリを有し、
前記記憶装置は第二のキャッシュメモリを有し、
前記管理装置が、前記データベース管理システムから、前記データベース管理システムが管理するデータベースにおけるデータの種類又は前記データベース管理システムが利用する記憶領域管理構造を基にした前記第一のキャッシュメモリの分割の情報を受信し、
前記計算機及び前記記憶装置のそれぞれからデータのマッピングに関する情報を取得し、
前記第一のキャッシュメモリの分割に関する情報及び前記データのマッピングに関する情報を用いて、前記記憶装置が有する記憶領域を前記データの種類又は前記記憶領域管理構造の各々が格納されている記憶領域毎にグループ化し、前記グループ化された記憶領域毎に前記第二のキャッシュメモリの記憶領域を分割するという分割方法を決定し、
前記記憶装置に対して、決定した前記分割方法に従って前記第二のキャッシュメモリの分割の設定を指示し、
前記データの種類によって分割される前記第一のキャッシュメモリの前記データの種類ごとに割り当てられた記憶領域（「第一の記憶領域」）と前記データの種類によってグループ化された前記記憶装置の記憶領域に割り当てられた前記第二のキャッシュメモリの記憶領域（「第二の記憶領域」）を対応付け、
前記計算機及び前記記憶装置に対して、前記第一の記憶領域及び前記第二の記憶領域に共通する所定のモードを指示し、
前記第一の記憶領域又は前記第二の記憶領域の記憶容量の変更量に関する情報を受信し、前記計算機及び前記記憶装置から前記第一の記憶領域及び前記第二の記憶領域のキャッシュヒット率に関する情報を受信し、前記変更量に関する情報及び前記キャッシュヒット率に関する情報とに基づいて、実際に前記第一の記憶領域又は前記第二の記憶領域の記憶容量を前記変更量に基づいて変更した際の前記第一の記憶領域及び前記第二の記憶領域におけるキャッシュヒット率を予測することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムの管理、特に、データベース管理システム(以下「DBMS」)が稼動する計算機システムが有するキャッシュの設定管理方法に関する。
【背景技術】
【０００２】
計算機システムで実行されるアプリケーションプログラムの多くがデータベース(以下「DB」)を利用している。したがって、DBに関する処理・管理を行うソフトウェアであるDBMSの性能は計算機システムにとって極めて重要である。DBMSの性能は、データへのアクセス性能に多大な影響を受ける。そのため、計算機システムにおいて、データを保持する記憶装置へのアクセス性能の向上がDBMSの性能向上に繋がる。
【０００３】
磁気ディスク装置を多数内蔵する記憶装置は、一般的に、アクセス性能を向上させるために半導体メモリ等のキャッシュメモリを有する。記憶装置は、磁気ディスク装置等に格納されるデータを一時的にキャッシュメモリに保管し、データの読み出し時にデータがキャッシュメモリに存在している（以下「リードヒット」又は「ヒット」）状態を作り出す。これにより、記憶装置が磁気ディスク装置からデータを読み出す必要がなくなるので、アクセス性能が向上する。最近、計算機が使用するデータ量が増加しており、それに従ってデータ量に対する相対的なキャッシュメモリの容量が減少している。したがって、記憶装置のアクセス性能を向上させるには有限のキャッシュメモリの記憶容量を有効利用することが極めて重要になる。
【０００４】
キャッシュメモリ一般における利用効率の向上に関しては以下のような従来技術が存在する。
特許文献１には、記憶装置においてLRU置換アルゴリズムを使用し、かつデータ種類毎にキャッシュメモリを区分して割り当てる場合に、ヒット時にLRU管理リスト中のどの位置にヒットしたデータが存在するかの情報を取得する。そして、その情報を用いてデータ種類へのキャッシュメモリの割当量を変更した時のヒット数を見積り、各データ種類へのキャッシュメモリの割当量を制御する技術が開示されている。なお、本文章中では、ある記憶領域に対するアクセスに関して、ある適当に定める時間内に行われるアクセスのうちキャッシュメモリにヒットしたアクセスの数を「ヒット数」と定義する。そして、ヒット数をその記憶領域に対して同じ時間内に行われた全アクセス数で除したものを「ヒット率」と定義する。
【０００５】
非特許文献１には、DBMSが実行される計算機が有するメモリに関して、DBMSが、メモリに確保されたキャッシュメモリの容量を変化させた際に記憶装置へのデータの入出力（以下「I/O」）数がどの程度変化するか（すなわち、メモリのヒット率がどう変化するか）予測する技術が開示されている。
【０００６】
非特許文献２には、通常の読み出しアクセスでは記憶装置はキャッシュメモリを使用せず、計算機から指示されたデータのみを記憶装置がキャッシュメモリに記憶する技術が開示されている。
【０００７】
【特許文献１】米国特許  第5、434、992号公報
【非特許文献１】Oracle Corporation、 “Oracle9i Database Daily Feature   Oracle9i Memory Management、”(http://otn.oracle.com/products/oracle9i/daily/apr15.html?_template=otn/content/print として入手)
【非特許文献２】Theodore M. Wong and John Wilkes、 “My cache or yours? Making storage more exclusive”、 USENIX Annual Technical Conference (USENIX 2002)、 pp. 161-175、 10-15 June 2002、 (http://www.pdl.cmu.edu/PDL-FTP/Storage/USENIX2002.pdf として入手)
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１に開示された技術と非特許文献２に開示された技術を組み合わせると、記憶装置においてより効率的にキャッシュメモリを利用できると考えられる。しかし、これらを組み合わせて利用する場合には、これまでにはない以下のような課題が発生する。
【０００９】
まず、特許文献１に開示されたキャッシュ分割について、計算機と記憶装置の双方でキャッシュ分割の対応関係を考慮する必要がある。特許文献１では記憶装置のことしか考慮していないため、上記技術の組み合わせではこの課題は解決されない。
【００１０】
また、非特許文献２に開示されたキャッシュメモリ割当量の制御（以下「キャッシュ量割当」）を計算機と記憶装置の双方で実施する必要が発生する。この場合、特に、記憶装置におけるキャッシュメモリ割当量を制御するためには、計算機におけるキャッシュ分割の内容を考慮しないといけないため、従来技術では対応できない。
【００１１】
本発明の目的は、DBMSが稼動する計算機システムにおいて、記憶装置へのアクセス性能を向上させることにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明の一実施態様として以下の構成を有する。すなわち、データベース管理システムが動作する計算機と、計算機と接続され、データベース管理システムが管理するデータベースのデータを格納する記憶装置と、計算機及び前記記憶装置と接続される管理装置を有する計算機システムである。本構成において、計算機は第一のキャッシュメモリを有し、記憶装置は第二のキャッシュメモリを有する。
【００１３】
そして、管理装置が、データベース管理システムから前記第一のキャッシュメモリの分割に関する情報を取得し、計算機及び前記記憶装置のそれぞれからデータのマッピングに関する情報を取得し、第一のキャッシュメモリの分割に関する情報及び前記データのマッピングに関する情報を用いて記憶装置における第二のキャッシュメモリの分割方法を決定し、記憶装置に対して、決定した前記分割方法に従って前記第二のキャッシュメモリの分割の設定を指示する。
【００１４】
更に、管理装置が第一のキャッシュメモリ又は第二のキャッシュメモリの変更予定量の情報を受信し、計算機及び記憶装置から第一のキャッシュメモリ及び第二のキャッシュメモリのキャッシュヒット率に関する情報を収集し、これらの情報に基づいてキャッシュメモリ量変更後の計算機システムにおける各キャッシュメモリのキャッシュヒット率を予測する構成としても良い。そして更に予測の結果に基づいて、管理装置が計算機と記憶装置にキャッシュメモリ量の変更を指示しても良い。
【００１５】
尚、管理装置は、キャッシュメモリのキャッシュヒット率の予測を行う際に、第一のキャッシュメモリと第二のキャッシュメモリを一括して一つの仮想的なキャッシュメモリとして扱って予測を行っても良い。
【００１６】
更に、計算機ではデータベースで使用されるデータの種類に応じて第一のキャッシュメモリを分割して各々のデータに割当てる。その際、データの記憶領域管理構造を用いて複数種類のデータによるグループを形成し、それを単位にキャッシュメモリを分割してもよい。一方、管理装置は記憶装置の記憶領域を格納されるデータの種類や記憶領域管理構造ごとに分割して各々を一つのグループとし、そのグループごとに第二のキャッシュメモリを分割して各々のグループに割当てるように記憶装置を制御する。そして、管理装置は、データの種類の各々に割当てられた第一のキャッシュメモリの領域と第二のキャッシュメモリの領域を関連付け、お互いが協調してキャッシュメモリの操作を行うように、所定のモードを指定する情報を計算機及び記憶装置に送信する構成としても良い。
【００１７】
又、以下の構成も考えられる。まず、DBMSと記憶装置での対応の取れたキャッシュ分割の設定に関しては、DBMSから記憶装置までの各レイヤにおけるデータ記憶領域のマッピング情報を取得し、取得した情報から対応関係を把握し、記憶装置におけるキャッシュ分割方法を決定し、それを記憶装置に対して設定する。
【００１８】
また、キャッシュ割当変更時の記憶装置におけるキャッシュ効果の予測に関しては、DBMSで取得するキャッシュ量割当の変更による効果見積のための情報を利用したキャッシュ効果予測を行う。
【発明の効果】
【００１９】
本発明により、記憶装置へのアクセス性能を向上させることができる。
【００２０】
また、性能チューニングのために記憶装置のキャッシュ量割当を変更する際に、その効果を容易に見積もれるようになる。これにより、キャッシュ量割当のチューニングが容易化され、性能管理コストが削減される。
【発明を実施するための最良の形態】
【００２１】
本発明では、DBMSを実行する計算機と記憶装置での対応の取れたキャッシュ分割の設定を容易化するため、管理用の計算機が、DBMSを実行する計算機から記憶装置までの各レイヤにおける記憶領域のマッピング情報を取得する。そして、管理用の計算機は、マッピング情報から、DBMSを実行する計算機における記憶領域と記憶装置における記憶領域の対応関係を把握する。その後、管理用の計算機は、把握した対応関係に基づいて、計算機と記憶装置におけるキャッシュ分割方法を決定し、計算機及び記憶装置に対してキャッシュ分割を設定する。また、DBMSが実行される計算機におけるキャッシュ割当量が変更される場合にも記憶装置におけるキャッシュメモリのヒット率の予測ができるようにするために、管理用の計算機は、DBMSで取得するキャッシュ量割当の変更による効果見積のための情報を利用して、記憶装置におけるヒット率予測を行う。尚、以下の記載はあくまで実施例であり、以下の記載と均等の構成も本発明に含まれることは言うまでも無い。
【実施例１】
【００２２】
図１は、実施例１における計算機システムの構成例を示す図である。計算機システムは、記憶装置40、記憶装置40を使用する計算機（以下「サーバ」）70及び計算機システムのキャッシュメモリの管理を行う計算機（以下「管理サーバ」）120を有する。各々の装置はネットワークI/F 22を有し、それを介してネットワーク24に接続され相互に通信可能である。
【００２３】
又、サーバ70及び記憶装置40は各々I/OパスI/F 32を有し、そこから通信線（以下「I/Oパス」）34を介してスイッチ60に接続される。サーバ70と記憶装置40間のI/O処理はこのI/Oパス34及びスイッチ60を介して行われる。尚、I/Oパス34は装置間で異なる物理媒体や異なるプロトコルでデータ転送を行う通信線が用いられてもよい。この場合、スイッチ60が各種のプロトコル変換を行う。また、ネットワーク24とI/Oパス34が同一の通信線でもよい。
【００２４】
記憶装置40は、CPU12、メモリ14、ディスク装置（以下「HDD」）16、ネットワークI/F22、I/OパスI/F32を有し、それらは内部バス18で接続される。なお、HDD16は単数でも複数でもよい。メモリ14はROM領域とRAM領域を有する。
【００２５】
記憶装置40を制御するプログラムである制御プログラム44はメモリ14のROM領域に記憶され、起動時にRAM領域へ移されCPU12により実行される。メモリ14の一部は外部装置からアクセス要求のあったデータを一時的に記憶しておく領域であるキャッシュメモリ（以下「データキャッシュ」とも言う）42に割り当てられる。記憶装置40は、制御プログラム44を実行することにより、種々の処理を行う。制御プログラム44は記憶装置40を制御・管理するために利用する管理情報46をメモリ14上に保持する。管理情報46は、領域マッピング情報310やキャッシュグループ情報410を含む。
【００２６】
記憶装置40は、HDD16が有する物理的な記憶領域から1又は複数の論理ディスク装置（以下、「LU」と称す）208を作成して、外部装置に対して提供する。LU208は、HDD16と一対一に対応してもよいし、複数のHDD16から構成される物理的な記憶領域に対応してもよい。また、１つのHDD16が複数のLU208に対応してもよい。その対応関係の情報は管理情報46中の領域マッピング情報310に保持される。
【００２７】
記憶装置40は、管理情報46に格納された情報を、外部装置（管理サーバ120等）からの要求に応じてネットワーク24を介して外部装置に送信する。また、外部装置からネットワーク24を介して受信した指示に従い、後述するキャッシュグループの設定等の記憶装置40における設定の変更や記憶装置40が行う各種処理の設定やその処理を実施する。
【００２８】
サーバ70は、CPU12、メモリ14、HDD16、ネットワークI/F22及びI/OパスI/F32を有し、それらは内部バス18で接続される。メモリ14上には、オペレーティングシステム(OS)72と管理エージェント144がHDD16から読み込まれる。読み込まれたOS72等は、CPU12により実行される。
【００２９】
OS72は、プログラム実行制御やハードウェア制御等、基本的な処理を行うために計算機が実行するプログラム群であり、ボリュームマネージャ78及びファイルシステム80を含む。OS72は、OS72を構成するプログラム群が利用する管理情報であるOS管理情報74を保持する。OS管理情報74には、サーバ70のハードウェア構成情報が含まれる。OS72は、OS管理情報74中に記憶されている情報を他のプログラムに提供するためのソフトウェアインターフェイスを有する。なお、本図ではサーバ70は1つのファイルシステム80しか有していないが、複数のファイルシステム80を有してもよい。
【００３０】
ボリュームマネージャ78は、サーバ70が、記憶装置40が提供するLU208の記憶領域から論理ボリューム204を作成し、その論理ボリューム204をファイルシステム80に提供する際に実行されるプログラムである。LU208と論理ボリューム204との対応関係の情報は、OS管理情報74中の領域マッピング情報310に保持される。
【００３１】
ファイルシステム80は、サーバ70が、記憶装置40が提供するLU208や論理ボリューム204の記憶領域からファイル202を作成し、ファイル202を他のプログラムに提供する際に実行されるプログラムである。LU208や論理ボリューム204とファイル202との対応関係の情報は、OS管理情報74中の領域マッピング情報310に保持される。尚、以下の説明では、ファイル202へのアクセスと同じソフトウェアインターフェイスで、論理ボリューム204、LU208の記憶領域に直接アクセスするためのローデバイス機能は、ファイルシステム80により実現されるものとする。
【００３２】
管理エージェント144は、サーバ70が、管理サーバ120上で実行されるキャッシュ管理プログラム140からネットワーク24を介して受け付けた処理要求をサーバ70で実行し、必要に応じてその結果をネットワーク24を介してキャッシュ管理プログラム140に返信する際に実行されるプログラムである。管理エージェント144が実施する処理は、（１）OS管理情報74中の情報の読み出し、（２）DBMS管理情報92中の情報の読み出し、（３）DBMS90へのキャッシュ94に関する設定指示、等である。
【００３３】
DBMS90は、サーバ70が、DBに関する処理・管理を実行する際に実行されるプログラムである。本プログラムは、HDD16もしくは記憶装置40からメモリ14に読み出されてCPU12により実行される。DBMS90はメモリ14上にキャッシュメモリ領域（以下「キャッシュ」）94を確保する。そしてDBMS90は、キャッシュ94に、自身の処理に利用するDBのデータを保持する。尚、本明細書においてプログラムが主語になる場合は、実際にはそのプログラムを実行するCPU等が処理を実行する。
【００３４】
DBMS90は、その管理情報であるDBMS管理情報92を有する。DBMS管理情報92は、データ記憶領域情報320や分割キャッシュ設定情報330、キャッシュモニタ情報510、ファイルI/Oモニタ情報530を含む。DBMS90は、DBMS管理情報92に含まれる情報を外部プログラムに提供したり、DBMS90が有する各種機能の設定を行うためのソフトウェアインターフェイスを有する。DBMS90は、1台のサーバ70上で複数同時に実行されることもできる。
【００３５】
DBMS90は、DBMS90自身が利用・管理する表・索引・ログ等（以下、まとめて「オブジェクト」222と称する）を記憶装置40に記憶する。なお、表・索引・ログ等を、ある属性の属性値等を条件にして複数のオブジェクト222に分割してもよい。DBMS90は、ファイルシステム80が提供するファイル202を用いてDB記憶領域224を作成する。そして、DBMS90は、DB記憶領域224を用いて自身が使用する記憶領域を管理する。DB記憶領域224には1つ以上のオブジェクト222が割り当てられる。DB記憶領域224とオブジェクト222との対応関係を管理する管理情報は、データ記憶領域情報320としてDBMS管理情報92中に保持される。
【００３６】
OS72、DBMS90及び管理エージェント144は、これらのプログラムを格納した可搬記憶媒体（CD-ROM等）から管理サーバ120が有するCD-ROMドライブ20を用いて読み出され、ネットワーク24を介してサーバ70内のHDD16もしくは記憶装置40にインストールされる。
【００３７】
管理サーバ120は、CPU12、メモリ14、HDD16、CD-ROMドライブ20、ネットワークI/F 22を有し、それらは内部バス18で相互に接続される。メモリ14上には、OS72とキャッシュ管理プログラム140がHDD16から読み込まれ、CPU12により実行される。CD-ROMドライブ20は、各種プログラムのインストールに用いられる。
【００３８】
管理サーバ120には、キーボード・マウス等の入力装置112および表示画面114を有する管理端末110がネットワーク24を介して接続される。管理サーバ120と管理端末110は、ネットワーク24とは異なる通信線を用いて接続されていてもよく、管理サーバ120と管理端末110が一体で構成されてもよい。管理者は、原則、情報・制御指示の入出力を管理端末110を介して行い、必要に応じてCD-ROMドライブ20等も用いる。
【００３９】
キャッシュ管理プログラム140は、管理サーバ120が、サーバ70及び記憶装置40が有するキャッシュ94及びデータキャッシュ42を管理する際に実行されるプログラムである。キャッシュ管理プログラム140は、HDD16からメモリ14上に読み込まれ、CPU12により実行される。キャッシュ管理プログラム140は、キャッシュ94等を管理するために必要な管理情報であるキャッシュ管理情報142を有する。キャッシュ管理プログラム140は、CD-ROMから管理サーバ120が有するCD-ROMドライブ20を用いて読み出され、HDD16にインストールされる。
【００４０】
キャッシュ管理プログラム140は、他の装置類から種々の情報を取得し、キャッシュに関する設定や処理の実行を指示する。このとき、記憶装置40に関しては、ネットワーク24を介してそれらの実行を指示し、必要な処理を実施する。また、サーバ70上で実行されるプログラムに関しては、ネットワーク24を介して管理エージェント144に対して処理指示を出す。
【００４１】
キャッシュ管理プログラム140は、記憶装置40、ボリュームマネージャ78、ファイルシステム80（以下、これらをまとめて「仮想化機構」と称する）が保持する領域マッピング情報310を、DBMS90からデータ記憶領域情報320を、記憶装置40からキャッシュグループ情報410を取得し、それらを取得元装置・プログラムの識別子とともにマッピング集約情報としてキャッシュ管理情報142中に記憶する。
【００４２】
キャッシュ管理プログラム140は、記憶装置40のキャッシュグループの管理において、ある特定のキャッシュグループを、キャッシュ割当量の調整で優先的に削減対象とする「フリーキャッシュグループ」として扱う。特にキャッシュの割り当て要求がない（デフォルト状態の、あるいはデータキャッシュ42が割り当てられていない）LU208は、フリーキャッシュグループに属するとして制御する。尚、キャッシュグループやキャッシュグループ情報410については後述する。
【００４３】
図２は、実施例１におけるDBMS90が管理するデータの対応関係（以下「データマッピング」）の階層構成を例示した図である。以下、ある２つの階層について、DBMS90に近い方を上位、HDD16に近い方を下位の階層と称する。ファイル202、論理ボリューム204及びLU208をまとめて「仮想構造」と称する。又、仮想構造にHDD16を加えたものをまとめて「管理構造」と称する。又、仮想構造間の階層を論理層212と称する。
【００４４】
オブジェクト222はDB記憶領域224の中に記憶される。DB記憶領域224は1つ以上のファイル202に対応付け（以下「マッピング」とも言う）られる。なお、複数のDB記憶領域224が1つのファイル202中の異なる領域にマッピングされてもよい。DBMS90がデータにアクセスする場合には、DB記憶領域224に対応するファイル202に対してアクセスを行う。
【００４５】
ファイルシステム80は、ファイル202に対するアクセスを、ファイル202に対応する論理ボリューム204へのアクセスに変換する。ボリュームマネージャ78は、論理ボリューム204に対するアクセスを、論理ボリュームに対応するLU208へのアクセスに変換する。記憶装置40は、LU208に対するアクセスを、LU208に対応するHDD16に対するアクセスに変換する。このように、仮想化機構は、仮想化機構自身が上位階層に提供する仮想構造のデータを下位階層に存在する1つ以上の管理構造の記憶領域（全部又は一部）にマッピングする。なお、DB記憶領域224からLU208の間でマッピングされる経路は複数存在してもよい。
【００４６】
本実施例では、論理層212における管理構造間のデータの対応関係が明確化されればよく、サーバ70でボリュームマネージャ78が使用されなくてもよい。また、仮想構造を提供する層が増えてもよい。例えば、スイッチ60の代わりに仮想化スイッチを利用し、仮想化スイッチが、記憶装置40が提供するLU208の記憶領域を仮想化して仮想ボリュームを作成する。そして、仮想ボリュームをサーバ70が認識するシステム構成が考えられる。この場合、論理層212において、論理ボリューム204の層とLU208の層の間に仮想ボリュームの層が追加される。仮想化スイッチは、仮想ボリュームの構成を管理するために領域マッピング情報310を保持する。キャッシュ管理プログラム140は仮想化スイッチからもマッピング情報310を取得する。これによりキャッシュ管理プログラム140は仮想スイッチが利用された場合でも論理層212におけるデータの対応関係を把握することができ、本実施例を適用することができる。
【００４７】
以下、本実施例におけるデータキャッシュ42とキャッシュ94の排他的利用制御に関して説明する。なお、ファイルシステム80もキャッシュを有することができるが、本実施例では、ローデバイス機構を利用する等でファイルシステム80のキャッシュを利用しない（存在しない）ものとする。
【００４８】
記憶装置40は、LU208を単位として記憶領域をグループ化する。そして、記憶領域40は、グループ毎に独立したデータキャッシュ42内の領域を割り当てる。以下、このLU208のグループを「キャッシュグループ」と称する。キャッシュグループの構成に関する情報は、管理情報46のキャッシュグループ情報410に保持される。記憶装置40は、キャッシュグループの作成・削除や、キャッシュグループに所属するLU208の追加・削除を動的（「動的」とは、「他の処理を停止させることなく実施される」ことを意味する）に行える。また、記憶装置40は、キャッシュグループへのデータキャッシュ42の割当量を動的に変更することができる。尚、上述したように、データキャッシュ42が割り当てられていない（或いは、他に割り当てられた領域を除いた余りの領域を利用する）キャッシュグループも存在する。これは上述したフリーキャッシュグループである。
【００４９】
記憶装置40は、キャッシュグループ毎にデータキャッシュ42に格納されるデータの置換の処理方法（以下「制御モード」）を変更することが出来る。記憶装置40は、各々のキャッシュグループに対して設定する制御モードの情報をキャッシュグループ情報410中の制御モード設定416に保持する。制御モードとしては以下のものが存在する。一つはデフォルト状態である”Normal”モードである。このモードの場合、記憶装置40は、一般的なLRU置換アルゴリズムによりデータキャッシュ42に格納されるデータを置換（データキャッシュからのデータのパージングをLRUで管理）する。もう一つは”Exclusive”モードである。このモードの場合、記憶装置40は、DBMS90のキャッシュ94と記憶装置40のデータキャッシュ42とを排他的に利用するためのデータの置換制御を実施する。
【００５０】
Exclusiveモードとは、具体的には以下のような置換方法である。Exclusiveモードは、基本的にはLRU置換アルゴリズムによるデータの置換制御である。更にExclusiveモードでは、以下のような制御が行われる。サーバ70に読み出された（以下「リード」）されたデータに関しては、記憶装置40は、処理完了後にデータキャッシュ42からリードされたデータを破棄する、もしくは、記憶装置40は、リードされたデータをLRU置換アルゴリズムにおける管理情報中でLRU状態に、つまり、最もそのキャッシュ領域が再利用されやすい状態に遷移させる。
【００５１】
更にExclusiveモードでは、サーバ70からデータのキャッシュ化要求を受け付けた場合、記憶装置40が、要求のあったデータをデータキャッシュ42に読み出し、更に読み出したデータをMRU状態に、つまり、その時点で最もキャッシュ化されている期間が長くなる状態に遷移させる。なお、サーバ70は、キャッシュ化要求の対象となるデータをキャッシュ化要求に付加して記憶装置40に送付しても良い。この場合、記憶装置40は指示されたデータをHDD16からデータキャッシュ40に読み出す必要は無い。
【００５２】
又、サーバ70は、記憶装置40の制御モードの如何に関わらず、データの書き込み（以下「ライト」）要求の中に、ライト対象となるデータをデータキャッシュ42に残すこと（以下「キャッシュ化」）を示す情報（以下「ヒント情報」）を埋め込む。ヒント情報付きのライト要求を受け取った記憶装置40は、ライト対象のデータが書き込まれるLU208が属するキャッシュグループの制御モードがExclusiveモードである場合、ヒント情報によりキャッシュ化すべきと指示されたデータをMRU状態に遷移させる。
【００５３】
又、記憶装置40は、ヒント情報のない通常のライト要求に関しては、対応するキャッシュグループがExclusiveモードに設定されている場合には書き込まれたデータをLRU状態（又はLRU状態に近い状態）に遷移させる。尚、ライト制御の簡略化のために、記憶装置40がヒント情報を利用せず、ライト要求の対象となるデータ全てをMRU状態に遷移させる制御方法を用いることもできる。
【００５４】
一方DBMS90は、オブジェクト222もしくはDB記憶領域224を単位としてキャッシュ94の記憶領域を分割する。分割化されたキャッシュ94の個々の記憶領域を「分割キャッシュ」と称する。DBMS90は、それぞれの分割キャッシュで、LRU置換アルゴリズムを利用してデータの置換制御を行う。
【００５５】
ある分割キャッシュに対応するオブジェクト224を記憶するLU208が属するキャッシュグループがExclusiveモードにある、つまり、排他的制御を実施可能な場合、DBMS90は、分割キャッシュ設定情報330中の対応する排他制御モード設定334の値を”On”に設定する。尚、デフォルトでは排他制御モード設定334の値は“Off”に設定されている。排他制御モード334はキャッシュ94の分割キャッシュからデータを破棄する際の制御をどのようにするかを示す情報である。排他制御モード設定334の値が”On”のときには、DBMS90は、データをキャッシュ94から破棄する際に以下の処理を実施する。
【００５６】
破棄されるデータが記憶装置40に書き込み済みの場合、DBMS90は、破棄されるデータのキャッシュ化要求を記憶装置40に発行する。一方、破棄されるデータが記憶装置40に未書き込みの場合には、DBMS90は、ヒント情報付のライト要求を記憶装置40に発行する。なお、記憶装置40でライト制御を簡略化している場合には、DBMS90は、ライト要求は通常のものを利用する。
【００５７】
キャッシュを分割化することによりキャッシュを効率的に利用しようとする場合、アクセス特性の異なるデータを異なる記憶領域に割り当てたほうが良い。本実施例のDBMS90のキャッシュ94においては、少なくても異なるDB記憶領域224に属するデータは異なる分割キャッシュに割り当てられる。また、本実施例のDBMS90における記憶領域の管理方法では、DB記憶領域224以上の解像度で記憶領域を制御することはできない。一方、記憶装置40のキャッシュグループの設定単位はLU208である。つまり、１つのLU208を1つのDB記憶領域224にのみ対応させると、記憶装置40におけるキャッシュグループを設定する（特定データが利用するキャッシュ量を外的に制御する）ことによるキャッシュ効率の向上効果を最大限に得ることができると考えられる。
【００５８】
次に、本実施例における、キャッシュ量変更時のキャッシュヒット数の見積方法について説明する。なお、以下のキャッシュヒット数の見積もり時には、キャッシュヒット数の見積りに関連する分割キャッシュとキャッシュグループに割り当てられたデータキャッシュ42の領域（以下「キャッシュグループキャッシュ」）それぞれのキャッシュ量変更後の割り当てキャッシュ量があらかじめ管理者から管理サーバ１２０に与えられるものとする。
【００５９】
前述のキャッシュ制御を実施すると、exclusiveモードの場合、DBMS90のキャッシュ94から破棄されるデータが記憶装置40のデータキャッシュ42にキャッシュ化される。本実施例においては、キャッシュ94もデータキャッシュ42も共にLRU置換アルゴリズムでデータの置換制御が行われる。したがって、キャッシュ94中の分割キャッシュとデータキャッシュ42中のキャッシュグループキャッシュとが一対一の対応関係を有する場合、一対一に対応する分割キャッシュとキャッシュグループキャッシュは、LRU置換アルゴリズムで管理される大きな1つのキャッシュメモリとみなすことができる。このとき、1つの分割キャッシュがキャッシュ94全体に対応したり、1つのキャッシュグループキャッシュがデータキャッシュ42全体に対応していてもよい。
【００６０】
この条件が成立する場合、DB記憶領域224に割り当てられる分割キャッシュの割当量を変更した際に、対応するキャッシュグループキャッシュにおけるキャッシュヒット数を以下のように見積ることができる。
【００６１】
前述のように、双方の対応するキャッシュをまとめて1つのLRU置換アルゴリズムで管理されるキャッシュ（以下「仮想キャッシュ」）と考えることができる。そこで、DBMS90が、仮想キャッシュに関して、LRU置換アルゴリズムで利用する形式での仮想的な管理情報（仮想LRU管理リスト5000）を設けて管理する。仮想LRU管理リスト5000には、分割キャッシュに割り当てられる記憶領域の量を増やした場合のキャッシュヒット数も見積るため、実際にキャッシュ化可能なデータ量よりも多くのデータを管理できるエントリ数を持たせる。なお、DBMS90は、仮想LRU管理リスト5000を分割キャッシュ毎に保持する。このとき、DBMS90は、分割キャッシュにおけるLRU置換アルゴリズムによるデータ置換管理に仮想LRU管理リスト5000を利用することができる。
【００６２】
以下、仮想LRU管理リスト5000を利用した分割キャッシュに対する記憶領域の割当量を変化させたときのキャッシュヒット数の見積方法を、分割キャッシュへの記憶領域の割当量（以下「キャッシュ割当量」とも言う）を削減する前後の比較を例に説明する。
【００６３】
図３は、分割キャッシュへのキャッシュ割当量を削減した場合の、仮想LRU管理リスト5000中のエントリの位置と、そこで管理されるデータが保持されている場所（分割キャッシュまたはキャッシュグループキャッシュ）の変化を例示した図である。仮想LRU管理リスト5000aはキャッシュ割当量縮小前の状態、仮想LRU管理リスト5000bは割当量縮小後の状態を示す。分割キャッシュに存在するデータは、仮想LRU管理リスト5000中のMRU側のその割当量分に対応し（領域5010a、領域5010b）、キャッシュグループキャッシュに存在するデータは、仮想LRU管理リスト5000中のMRU側から分割キャッシュに対応するデータに引き続いたその割当量分に対応する（領域5012a、領域5012b）。
【００６４】
つまり、仮想LRU管理リストにおけるキャッシュヒット数の分布がわかっていれば、上記のマッピングに対応する部分の値の和としてキャッシュヒット数を見積ることができる。この分割キャッシュのキャッシュ割当量縮小に関しては、分割キャッシュのキャッシュ割当量縮小分に相当する仮想管理リスト5000b中の領域5020に対応するデータは、縮小前は分割キャッシュ（キャッシュ94）でヒットしていたが縮小後はキャッシュグループキャッシュ（データキャッシュ42）でヒットするようになる。また、キャッシュ割当量縮小分に相当してずれた領域5022に対応するデータは、縮小前はキャッシュグループキャッシュ（データキャッシュ42）でヒットするが、縮小後はヒットしなくなる（以下「ミスする」とも言う）ようになる。
【００６５】
この方法は、分割キャッシュのキャッシュ割当量縮小の時だけではなく、分割キャッシュ・キャッシュグループキャッシュのキャッシュ割当量の縮小・拡大の全てに当てはめることができる。例えば、分割キャッシュのキャッシュ割当量の拡大では、仮想管理リスト5000bは分割キャッシュのキャッシュ割当量拡大前の状態、仮想管理リスト5000aは拡大後の状態となる。
【００６６】
これまでは、キャッシュ94中の分割キャッシュとデータキャッシュ42中のキャッシュグループキャッシュが1対1に対応する場合を考えてきた。しかし、全ての場合でこの条件が成立するわけではない。この場合でも、仮想LRU管理リスト5000の保持方法から、分割キャッシュに関しては1対1に対応する場合と同様にして直接仮想LRU管理リスト5000からキャッシュヒット数を見積ることができる。キャッシュグループキャッシュのキャッシュヒット数は以下のように見積る。
【００６７】
1つのキャッシュグループキャッシュに対して複数の分割キャッシュが対応する場合には以下のようにする。
（a-1）対象となるキャッシュグループキャッシュに対する、各分割キャッシュに対応するデータによるアクセス数を把握する。これは、分割キャッシュに対応するデータへの参照回数のモニタ値から、分割キャッシュでヒットすると見積られる値を引いたものとして計算する。
【００６８】
（a-2）キャッシュグループキャッシュとして現在割り当てられているキャッシュ量を、（a-1)で求めたアクセス数に比例するように対応する分割キャッシュに割り当てる。
（a-3）割り当てられたキャッシュ量を用いて、分割キャッシュとキャッシュグループキャッシュが1対1に対応するとしてキャッシュヒット数を見積る。この値が分割キャッシュに対応するデータにおけるキャッシュヒット数の見積値となる。
なお、キャッシュグループキャッシュ全体でのキャッシュヒット数の見積値が必要な場合、対応する分割キャッシュにおけるキャッシュヒット数の見積値の総和を計算する。
【００６９】
1つの分割キャッシュに対して複数のキャッシュグループキャッシュが対応する場合には以下のように扱う。
（b-1）分割キャッシュに対応するデータの参照に関して、それぞれのキャッシュグループキャッシュに対応するアクセス数をモニタする。分割キャッシュへのキャッシュ割当量の変更によりキャッシュヒット数が変化してもアクセス数モニタ値に比例してキャッシュグループキャッシュへのアクセスがあると近似し、キャッシュグループキャッシュ毎の重みを計算する。なお、重みが0のキャッシュグループキャッシュに関しては、以降の計算を実施しない。
【００７０】
（b-2）各々のキャッシュグループキャッシュに関して、分割キャッシュに関しては管理者等からあらかじめ与えられた指定キャッシュ量が、キャッシュグループキャッシュに関しては指定キャッシュ量を（b-1)で求めた重みで割った量のキャッシュが割り当てられているとして、それらが1対1に対応するとしてキャッシュヒット数を見積る。
（b-3）（b-2）で求めたキャッシュヒット数の見積値に（b-1）で求めた重みを掛け合わせた値が、分割キャッシュに対応するデータのキャッシュグループキャッシュにおけるキャッシュヒット数見積値となる。
【００７１】
なお、分割キャッシュに対応するデータ全体でのキャッシュグループキャッシュにおけるキャッシュヒット数の見積値が必要な場合、対応するキャッシュグループキャッシュにおけるキャッシュヒット数の見積値の総和を計算する。
【００７２】
分割キャッシュとキャッシュグループキャッシュが多対多に対応する場合は、各対応関係における分割キャッシュ・キャッシュグループキャッシュの重み計算（b-1）、（a-1）（分割キャッシュに対応するアクセス数の把握時に（b-1）で求めた重みによる重み付けを実施））、キャッシュグループキャッシュのキャッシュ量の分割キャッシュへの分配（a-2））、割り当てられたキャッシュ量によるキャッシュヒット数の見積と重みによるキャッシュヒット数見積り値の補正（（a-3）、（b-2）、（b-3)）の順で処理を実施し、更に求めようとするキャッシュヒット数に応じて総和計算を実施する。
【００７３】
本見積方法では、各分割キャッシュにおいて、計算機におけるデータへの総参照数や仮想LRU管理リスト5000中の位置におけるキャッシュヒット数の分布を把握する必要がある。本実施例においては、仮想LRU管理リスト5000をM個の等サイズ区間に区分し、それぞれの区間でのキャッシュヒット数をDBMS90がモニタし、DB管理情報94に含まれるキャッシュモニタ情報510中に記憶する。そして、DBMS90は、このキャッシュモニタ情報510を仮想LRU管理リスト5000におけるキャッシュヒット数の分布情報として利用する。
【００７４】
なお、データがどの区間に属するかは、各区間毎に分割されたLRU管理リストを用いることにより把握することができる。このとき、各区間内でのキャッシュヒット数の変化率は一様であると近似して見積処理を実施する。なお、この近似の精度が悪いことも考えられ、区間の端点で階段状にキャッシュヒット数が変化するとしてキャッシュヒット数の上限・下限値を求めてそれらを利用してもよい。
【００７５】
また、DBMS90は、分割キャッシュに対応するキャッシュグループキャッシュへのアクセス数を把握する必要がある。DBMS90は、DB記憶領域224毎にそれに対応するファイル202に対するアクセス回数をモニタし、DB管理情報94に含まれるファイルI/Oモニタ情報520中に記憶する。DBMS90は、これらの値を利用してキャッシュヒット数の見積処理を実施する。
【００７６】
以下、各装置やプログラムが保持するデータの構造に関して説明する。
図４は、領域マッピング情報310のデータ構造を示す図である。領域マッピング情報310は、仮想化機構が提供する仮想構造の領域と、それが利用する管理構造の領域の対応を保持するものであり、仮想化機構が提供する仮想構造毎に、エントリ312とエントリ314を有する。エントリ312には仮想化機構が上位階層に提供する仮想構造の領域に関する情報が登録される。具体的には、エントリ312は、仮想構造の識別子である仮想構造IDを保持するエントリ、その構造内の領域を示すエントリの組を有する。エントリ314には、エントリ312に対応する下位階層の管理構造の領域に関する情報が登録される。具体的には、エントリ314は、管理構造を提供する仮想化機構の識別子である仮想化機構IDを保持するエントリ、管理構造の識別子である管理構造IDを保持するエントリ、その構造内の領域を示すエントリの組を有する。なお、記憶装置40においては、仮想化機構IDを有するエントリを保持しない。
【００７７】
図５は、データ記憶領域情報320のデータ構造を示す図である。データ記憶領域情報320は、DBMS90が管理する表・索引・ログ等のオブジェクト222の記憶領域管理に用いる２種類の情報を有する。１つは、オブジェクト222が対応するDB記憶領域224を管理する情報である。本情報は、オブジェクト222の名前であるオブジェクト名322を保持するエントリ、そのオブジェクト222が記憶されるDB記憶領域224の名前であるDB記憶領域名324を保持するエントリの組をDB記憶領域224毎に有する。オブジェクト名322はDBMS90内で一意に定まる名前であるとし、DBMS90内でDB毎に同じ名前が許される場合にはDBの識別子も含めたものを利用する。
【００７８】
もう1つの情報は、DB記憶領域324の対応するファイル202に関する情報で、DB記憶領域名324を保持するエントリとデータ記憶位置328を保持するエントリの組をDB記憶領域224毎に有する。データ記憶位置328は、対応するオブジェクト322がどのファイル202のどの位置に記憶されているかの情報で、ファイル202のパス名であるファイルパス326とファイル中の記憶位置を示すオフセットからなる。
【００７９】
図６は、分割キャッシュ設定情報330のデータ構造を示す図である。分割キャッシュ設定情報330はDBMS90がキャッシュ94を分割して利用する際の管理情報である。分割キャッシュ設定情報330は、分割されたキャッシュ94の記憶領域の識別子であるキャッシュID332を保持するエントリ、その領域へのキャッシュの割当量であるキャッシュ量334を保持するエントリ、対応するDB記憶領域224の記憶領域名324を保持するエントリ、対応するオブジェクト222のオブジェクト名322を保持するエントリ、排他制御モード336を保持するエントリを分割キャッシュごとに有する。前述のようにキャッシュ94の分割はオブジェクト222やDB記憶領域224を単位として行われるが、DB記憶領域224により対応キャッシュ領域が定まる場合には、オブジェクト名322には無効値が記憶される。
【００８０】
図７は、キャッシュグループ情報410のデータ構造を示す図である。キャッシュグループ情報410は記憶装置40がキャッシュグループの管理に用いる情報である。キャッシュグループ情報410は、キャッシュグループの識別子であるキャッシュグループID412を保持するエントリと、そのキャッシュグループに対して割り当てられたキャッシュ量334を保持するエントリ、そのキャッシュグループに属するLU208の識別子であるLUID364を保持するエントリ、制御モード設定416を保持するエントリの組をキャッシュグループごとに有する。
【００８１】
以下、キャッシュ割当量の変更（以下「チューニング」とも言う）処理に利用する、DBMS90が収集するモニタ情報のデータ構造例を説明する。
【００８２】
図８は、キャッシュモニタ情報510のデータ構造を示す図である。キャッシュモニタ情報510は、DBMS90が参照するデータがキャッシュ94にヒットしたか、また、分割キャッシュ毎に仮想LRU管理リスト5000においてどの位置でヒットしたかに関する統計情報である。キャッシュモニタ情報510は、分割キャッシュのキャッシュID332を保持するエントリ、その分割キャッシュに対応するデータへの参照累積回数である累積回数514を保持するエントリ、その分割キャッシュにおけるヒット回数の累計値であるヒット回数累計516を保持するエントリの組を分割キャッシュごとに有する。ヒット回数累計516には、実際に分割キャッシュ上にデータが存在していた場合の回数である実ヒット数と、M個に区分された仮想LRU管理リスト5000の各区間におけるヒット数の値を保持するエントリを含む。本実施例では、M個の区間には通番が付加され、最も最近利用されたデータが存在する区間を第1区間、以下小さい通番の区間ほど最近利用されたデータを管理する区間であるとする。
【００８３】
図９は、ファイルI/Oモニタ情報520のデータ構造を示す図である。ファイルI/Oモニタ情報520は、DB記憶領域224に対応するファイル202へのアクセス数に関する統計情報である。ファイルI/Oモニタ情報520は、DB記憶領域224のDB記憶領域名324を保持するエントリ、それに対応するファイル202のファイルパス326を保持するエントリ、それに対応するデータにおけるファイル202へのアクセス回数の累積値である累積回数514を保持するエントリの組をDB記憶領域224毎に有する。
【００８４】
以下、本実施例におけるキャッシュの管理手順について説明する。
まず、管理者が記憶装置40におけるキャッシュグループの初期設定を行う処理について説明する。
【００８５】
図１０は、キャッシュグループ初期設定処理の処理フロー例を示す図である。本処理は、管理者等で指定されたDBMS90の分割キャッシュの設定を基にキャッシュグループの設定を行うものであり、管理サーバ120がキャッシュ管理プログラム140を実行することで実施する。なお、本処理の実施前に、DBの定義とDB記憶領域224の設定（LU208上の記憶領域の対応まで含む）が完了していることを前提とする。
【００８６】
尚、DBMS90の分割キャッシュの分割方法決定まで自動化するには、DBMS90で設定されている表・索引毎に独立した分割キャッシュを割り当てることにより実現することができる。この際、DBMS90は、DBの定義からそれぞれの表・索引・ログ毎にDB記憶領域224を1つづつ割り当て、また、1つのLU208に1種類の表・索引・ログのうちいずれか1つのみが記憶されるように自動で決定する。
【００８７】
管理者からの指示を受けた管理サーバ120は、キャッシュグループ設定の基となる分割キャッシュの設定を有するDBMS90（以下「対象」DBMS90と称する）の識別子を管理者から受信する（ステップ1101）。
【００８８】
次に、管理サーバ120は、記憶装置40、ボリュームマネージャ78及びファイルシステム80が管理する領域マッピング情報310と識別子で指定されるDBMS90が管理するデータ記憶領域情報320を収集し、キャッシュ管理情報142中に記憶したマッピング集約情報を最新の状態にする。また、現在のキャッシュ設定の情報として、記憶装置40が管理するキャッシュグループ情報410と、対象DBMS90から分割キャッシュ設定情報330を取得する。尚、DBMS90の分割キャッシュの設定が管理サーバ120経由で行われ、かつその設定情報が残っている場合には、その情報を用いることで、分割キャッシュ設定情報330の取得を省略することが出来る（ステップ1102）。
【００８９】
次に管理サーバ120は、対象DBMS90の各DB記憶領域224に関して、それに対応するLU208を、更新したマッピング集約情報を用いて全て求める。そして管理サーバ120は、求めたLU208が属するキャッシュグループをステップ1102で取得したキャッシュグループ情報410から求める。更に管理サーバ120は、求めたLU208が属するキャッシュグループが、フリーキャッシュグループとして扱うものに属するか確認する。なお、求めたLU208がフリーキャッシュグループに属しない場合、それが属するキャッシュグループの変更は行わないものとし、その旨を管理者に通知する（ステップ1103）。
【００９０】
ステップ1103で求めたLU208のうち、フリーキャッシュグループに属するLU208に関して、管理サーバ1120は、記憶装置40毎に対応するDB記憶領域224が同一のLU208をそれぞれグループ化する。このとき、ある記憶装置40において1つのLU208が複数のDB記憶領域224に対応する場合には、管理サーバ120は、その記憶装置40においてはそのLU208に対応する全てのDB記憶領域224に対応する全てのLU208で1つのグループを、そのまま新規のキャッシュグループとして設定する（ステップ1104）。
【００９１】
ステップ1104で決定したキャッシュグループの設定を実現するよう、管理サーバ120は、対応する記憶装置40に対してキャッシュグループの設定を指示する。また、ステップ1104で決定したキャッシュグループ設定において、あるDB記憶領域224に対応するキャッシュグループの全てが、本ステップで新規に作成されるように指示される、もしくは、既に制御モードがExclusiveモードにある場合、管理サーバ120は、その状態にあるDB記憶領域224に対応する新規に作成されるキャッシュグループの制御モードをExclusiveモードにするように、そのキャッシュグループの作成直後に、対応する記憶装置40に指示する（ステップ1105）。
【００９２】
続いて管理サーバ120は、対応するキャッシュグループが全てステップ1105でExclusiveモードに設定されたか、もしくは本処理開始前に既に制御モードがExclusiveモードにある、のいずれかである分割キャッシュに関して、排他制御モードで処理するように、つまり、対応する排他制御モード設定334の値を”On”に設定するように対象DBMS90に対して指示を出す（ステップ1106）。その後、管理サーバ120は、初期設定処理を完了する。（ステップ1107）
上述の処理により、分割キャッシュとキャッシュグループキャッシュとが、DB記憶領域とLUとの対応関係に基づいて対応付けられる。これはつまり、個々のDB記憶領域がオブジェクトの種類毎に使い分けられている場合、データの種類に応じて、分割キャッシュ及びその分割キャッシュに対応付けられるキャッシュグループキャッシュを設定することができることを意味する。したがって、管理者等は、特定のデータのみ（あるいは特定のDB記憶領域のみ）について、キャッシュメモリの排他使用を指示することができる。
【００９３】
次に、本実施例におけるキャッシュ割当量変更の処理手順について説明する。尚、キャッシュ割当量の変更は、例えば、以下のような契機で行われる。（１）計算機システム構築直後や計算機システム内で実施される処理に追加・削除・変更等があった場合に、現在の処理内容に最適化されるようにキャッシュのチューニングを行う。この場合は、それらの構築・変更処理を管理者が行った後に、一定期間モニタ情報を収集し、その後に管理者の指示によりキャッシュ割当量の変更の処理が開始される。（２）（特にDBを利用するアプリケーションにおいて）性能問題が発生した（事前に指定された性能が得られていない、性能低下を検知した）場合に、キャッシュのチューニングにより性能向上を図る。この場合は、性能モニタプログラム等により性能問題を検知し、それを通知された管理者の指示によりキャッシュ割当量の変更処理が開始される。モニタ情報は、それまでに取得していたもの（性能問題が発生する前としたときの双方）が利用される。
【００９４】
図１１は、キャッシュ割当量変更処理の処理フロー例を示す図である。本処理では、モニタ情報を基にしたキャッシュ割当量変更時のキャッシュヒット率の変化見積を利用して、管理サーバ120がキャッシュ割当ての変更をDBMS90に指示する。本処理は、管理サーバ120がキャッシュ管理プログラム140を実行することで行う。
【００９５】
本処理の実施前、管理サーバ120は、DBMS90からキャッシュモニタ情報510とファイルI/Oモニタ情報520を定期的に取得し、ある2時刻間のデータの差分として、ある期間内におけるデータの参照回数、ヒット数、キャッシュグループへのアクセス数を把握し、キャッシュ管理情報142内に保持する。また、必要であれば、管理サーバ120は、記憶装置40からもキャッシュグループキャッシュにおけるアクセス回数とキャッシュヒット数の累積値を取得し、同様にそのキャッシュヒット数も計算し、保持する。
【００９６】
管理者からの指示を受けた管理サーバ120は（ステップ1201）、まず、記憶装置40、ボリュームマネージャ78及びファイルシステム80が管理する領域マッピング情報310とDBMS90が管理するデータ記憶領域情報320を収集し、キャッシュ管理情報142中に記憶したマッピング集約情報を最新の状態にする。また管理サーバ120は、現在のキャッシュ設定の情報として、記憶装置40が管理するキャッシュグループ情報410及びDBMS90の分割キャッシュ設定情報330を収集する（ステップ1202）。
【００９７】
続いて、管理サーバ120は、キャッシュ割当量を変更する対象を決定する画面を管理端末110の表示画面114に提示し、それによりキャッシュ割当量変更対象とする分割キャッシュ等を管理者に指示してもらう。その後、管理サーバ120は、指定されたキャッシュ割当量の変更対象向けにキャッシュ量割当変更画面710を表示画面114に表示する（ステップ1203）。
【００９８】
図１２は、表示画面114に表示されるキャッシュ量割当変更画面710の例を示す図である。キャッシュ量割当変更画面710には、キャッシュ量割当変更の対象となるDB記憶領域224及び記憶装置40のキャッシュグループ等の情報を表示する対象情報領域712、キャッシュヒット率を計算するモニタデータの期間を表示しその期間の変更入力を受け付けるデータ期間領域714、現在のキャッシュ構成とそのキャッシュヒット率を示す現キャッシュ構成表示領域716、新しいキャッシュ量割当の入力を受け付け、その割当量によるキャッシュヒット率見積値を表示する新規キャッシュ量割当入力領域718及びキャッシュ量割当変更画面710の次動作の指示を受け付けるボタン720a、720b、720cを有する。
【００９９】
管理サーバ120は、現キャッシュ構成表示領域716と新規キャッシュ量割当入力領域718において、変更対象として指定されたものに対応する分割キャッシュとキャッシュグループの全ての情報を表示し、新規キャッシュ量割当入力領域718では管理者等からの入力を受け付ける。現キャッシュ構成表示領域716に表示するキャッシュヒット率は実測値から計算するのが好ましいが、前述の仮想LRU管理リスト5000によるキャッシュヒット数見積方法による見積値から計算したものでもよい。キャッシュ量割当変更画面710を最初に表示するとき、管理サーバ120は、新規キャッシュ量割当入力領域718には初期値として現在の構成における値を設定し、表示する。なお、表示されるキャッシュヒット率は、データ期間領域714に表示されたデータ期間内のデータを利用して求める。データ期間領域714には直近数時間分、等の初期値が設定され、管理者からの入力を受け付けて変更することができる。
【０１００】
続いて管理サーバ120は、キャッシュ量割当変更画面710において、データ期間領域714によるキャッシュヒット率の見積りに用いるデータ期間の変更と、新規キャッシュ量割当入力領域718によるキャッシュ割当量の変更方法と、キャッシュ量割当変更画面710の次動作を指示するボタン720a、720b又は720cの入力を受け付ける。なお、例えばキャッシュ割当量の変更方法が入力された場合に新規キャッシュ量割当入力領域718における入力値の色を変える等、値が入力により変更された場合にはその値が更新されたことがわかるようにする（ステップ1204）。
【０１０１】
ボタン入力があったとき、管理サーバ120は、次動作の判別を行う。処理のキャンセルを指示するボタン720aが入力された場合には、管理サーバはステップ1221の処理を行う。指定されたキャッシュ構成に変更することを指示するボタン720bが入力された場合には、管理サーバ120は、ステップ1211の処理を行う。入力されたキャッシュ構成におけるキャッシュヒット率見積処理を行うことを指示するボタン720cが入力された場合には、管理サーバ120は、ステップ1206の処理を行う。なお、入力された構成によるステップ1206が実施される前にボタン720bが入力された場合に、管理サーバ120がステップ1204の処理に戻る制御を加えてもよい（ステップ1205）。
【０１０２】
管理サーバ120は、入力されたキャッシュ量割当に従って、データ期間領域714に設定されたデータ期間のデータを用いて前述のキャッシュヒット数の見積処理を実施し、その値からキャッシュヒット率を計算する。このとき、キャッシュヒット数の上限値・下限値を同時に求めてもよい。その後、管理サーバ120は、新規キャッシュ構成入力領域718中のキャッシュヒット率の値を計算値に更新し、ステップ1204の処理に戻る（ステップ1206）。
【０１０３】
その後、管理サーバ120は、DBMS90と記憶装置40に対して、入力されたキャッシュ量割当に従って分割キャッシュとキャッシュグループキャッシュへのキャッシュ量割当の変更を指示する（ステップ1211）。そして、キャッシュ量割当変更画面710を閉じて処理を完了する（ステップ1221）。
【０１０４】
これまで、キャッシュ管理プログラム140は管理サーバ120上で実行されるとして説明してきたが、キャッシュ管理プログラム140は任意のサーバ70、記憶装置40上で実行されてもよい。このとき、キャッシュ管理プログラム140は、サーバ70ではHDD16に記憶され、メモリ14に読み出された後にCPU12により実行される。キャッシュ管理プログラム140は、記憶装置40ではメモリ14のROM領域に記憶され、RAM領域に移された後にCPU12により実行される。また、キャッシュ管理プログラム140により実現される処理は、他のプログラムの一部として実現することもできる。特に、必要となる情報を多数保持するDBMS90にキャッシュ管理プログラム140を組み込むことが考えられる。この場合は、DBMS90は自身が管理するオブジェクトに関連する情報のみを収集して本発明による処理を実施することもできる。
【０１０５】
更に、上述した説明では、記憶装置40はLU208を外部装置に提供し、I/Oパス34を経由してアクセスされるとしてきた。しかし、記憶装置40がファイル202を外部装置に提供し、そのファイル202がネットワークファイルシステムプロトコルを用いてネットワーク24経由でアクセスされてもよい。図１３は、実施例１において、記憶装置40がファイル202を外部装置に提供する場合の計算機システムの構成を示す図である。この場合には、上述した説明と以下のような差が生じる。
【０１０６】
サーバ70は、I/OパスI/F32を有さなくてもよい。OS72は外部装置が提供するファイル202をネットワークファイルシステムプロトコルを用いてネットワークI/F22、ネットワーク24経由でアクセスするネットワークファイルシステム82を有する。その代わり、OS72は、ボリュームマネージャ78やファイルシステム80を有さなくともよい。ネットワークファイルシステムは領域マッピング情報300をOS管理情報74中に有する。DBMS90により認識されるファイル202と記憶装置40から提供されるファイル202があるルールに従って対応する場合、その対応関係を定めるルールの情報のみがOS管理情報74中に保持されても良い。この場合には、キャッシュ管理プログラム140は対応関係を定める情報を取得し、それから領域マッピング情報310を作成し、マッピング集約情報中に記憶する。
【０１０７】
一方、記憶装置40はI/OパスI/F32を有さなくてもよい。記憶装置40の制御プログラム44はファイルシステム80が提供する処理を実行する。具体的には、制御プログラム44は、記憶装置40が保持するLU208の記憶領域を仮想化したファイル202を外部装置に提供する。また、制御プログラム44は1つ以上のネットワークファイルシステムプロトコルを解釈し、ネットワーク24、ネットワークI/F22経由で外部装置からそのプロトコルを用いて要求されるファイルアクセス処理を実施する。記憶装置40では、キャッシュグループのメンバの管理単位をLU208ではなくファイル202とする。
【０１０８】
データのマッピングに関しては、図２で説明したデータのマッピング階層構成において、ファイル202以下が全て記憶装置40により提供されるようになり、サーバ70はOS72内のネットワークファイルシステム82を用いて記憶装置40上にあるファイル202をアクセスする。
【０１０９】
記憶装置40がファイル202を外部装置に提供する場合、本実施例において実施する処理においては、LU208で説明されている部分が記憶装置40上のファイル202に置き換えられる。
【実施例２】
【０１１０】
実施例１では、DBMS90が仮想LRU管理リスト5000を管理してその位置に対するキャッシュヒット数の分布情報を取得していた。実施例２では、DBMS90と記憶装置40がそれぞれで管理するLRU管理リストを基にしたキャッシュヒット数の統計情報をDBMS90と記憶装置40がそれぞれで取得し、それから仮想LRU管理リスト5000の位置に対するキャッシュヒット数の分布情報を求める。実施例２は、実施例1と多くの部分が共通しており、以下その差異点のみ説明する。
【０１１１】
DBMS90は、実施例１と同様にキャッシュモニタ情報510を取得する。実施例１では実際の分割キャッシュへの割当量以上のキャッシュ94の記憶領域の部分に関してもヒット数を取得するが、実施例２においては実際の分割キャッシュにおける部分のみを考えるため、実際の分割キャッシュに割り当てられた部分のみ取得していればよい。
【０１１２】
実施例２においては、記憶装置40はキャッシュモニタ情報510と同形式のキャッシュの稼動モニタ情報を取得する。キャッシュモニタ情報510では分割キャッシュ単位でヒット数を計測しているが、記憶装置40ではキャッシュグループキャッシュ単位でヒット数を計測する。なお、記憶装置40においては、キャッシュ割当量の増加に対応するため、実施例１におけるキャッシュモニタ情報510と同様に、実際のキャッシュグループへの割当量以上のデータキャッシュ42の記憶領域の部分のヒット数の統計値も取得する。
【０１１３】
図１４は、実施例２におけるキャッシュヒット数見積のための仮想LRU管理リスト5000の位置に対するキャッシュヒット数分布情報と、DBMS90で取得するキャッシュモニタ情報510と記憶装置40で取得するキャッシュの稼動モニタ情報との対応関係を例示する図である。ここでは、分割キャッシュとキャッシュグループキャッシュが1対1に対応する最も基本的な場合を考える。キャッシュヒット数分布情報の仮想LRU管理リスト5000のMRU端から分割キャッシュへのキャッシュ割当量分（領域5110）の部分がキャッシュモニタ情報510に対応し、それに後続する部分（領域5112）が記憶装置40で取得するキャッシュの稼動モニタ情報に対応する。
【０１１４】
分割キャッシュへのキャッシュ割当量を削減したときには、キャッシュモニタ情報510中のLRU端から割当削減量分の部分（領域5120）に対応するヒット数がキャッシュグループキャッシュでヒットするようになる。また、キャッシュグループキャッシュの稼動モニタ情報で、キャッシュグループキャッシュに実際にキャッシュが割り当たっている部分のLRU端からMRU方向に分割キャッシュの削減量分の部分（領域5122）に対応するヒット数分キャッシュグループキャッシュでキャッシュミス化する。
【０１１５】
一方、分割キャッシュの割当量が増加したときには、キャッシュグループキャッシュの稼動モニタ情報中のMRU端から分割キャッシュの増加量分の部分（領域5124）に対応するヒット数が分割キャッシュでヒットするようになる。また、キャッシュグループキャッシュの稼動モニタ情報で、キャッシュグループに実際にキャッシュが割り当たっている部分のLRU端からLRU方向に分割キャッシュの増加量分の部分（領域5126）に対応するヒット数分キャッシュグループキャッシュでキャッシュヒット化する。
【０１１６】
1つのキャッシュグループキャッシュに対して複数の分割キャッシュが対応する場合には以下のようにヒット数の変化を見積る。
（c-1）対象となるキャッシュグループキャッシュに対する、各分割キャッシュからのアクセス数をファイルI/Oモニタ情報520から把握し、各分割キャッシュの重みを計算する（分割キャッシュのキャッシュ割当量が変化してもこの重みは変化しないと近似する）。なお、重みが0の分割キャッシュに関しては、（c-2）の計算を実施しない。
【０１１７】
（c-2）まず、ある分割キャッシュへの割当量を増減した場合に、キャッシュグループキャッシュにおいては、その増減量を（c-1）で計算した重みで割った量のキャッシュ量の変化があるとして1対1に対応する場合と同様にキャッシュヒット数の変化を見積る。求めた値に（c-1）で計算した重みを乗じた値が、その分割キャッシュに対応するキャッシュグループキャッシュにおけるキャッシュヒット数の変化の見積値となる。キャッシュグループキャッシュ全体のキャッシュヒット数の変化を求めるには、各分割キャッシュに対応するヒット数変化の総和を計算する。
（c-3）各分割キャッシュにおいて、以下のような見積をそれぞれ独立に計算する。分割キャッシュへの割当量を削減した場合には、その割当量が全て分割キャッシュから削減されるとしてキャッシュモニタ情報510からそのヒット数削減分を見積る。分割キャッシュへの割当量を増加した場合には、（c-2）におけるキャッシュグループキャッシュにおける分割キャッシュへの移行分として分割キャッシュのヒット数増加分を見積る。
【０１１８】
1つの分割キャッシュに対して複数のキャッシュグループキャッシュが対応する場合には以下のようにヒット数の変化を見積る。
（d-1）分割キャッシュに対応するデータの参照に関して、ファイルI/Oモニタ情報520から各キャッシュグループキャッシュへのアクセス数を把握し、それによりそれぞれのキャッシュグループキャッシュの重みを計算する（分割キャッシュのキャッシュ割当量が変化してもこの重みは変化しないと近似する）。
【０１１９】
（d-2）分割キャッシュへの割当量を増減した場合に、各キャッシュグループキャッシュにおいてはその増減量に（d-1）で計算した重みを乗じた値分キャッシュ割当量が変化するとして1対1に対応する場合と同様にキャッシュヒット数の変化を見積る。この見積値が各キャッシュグループキャッシュにおけるキャッシュヒット数の変化の見積値となる。
【０１２０】
（d-3）分割キャッシュへの割当量を削減した場合には、その割当量が全て分割キャッシュから削減されるとしてキャッシュモニタ情報510からそのヒット数削減分を見積る。分割キャッシュへの割当量を増加した場合には、（d-2）における各キャッシュグループキャッシュにおける分割キャッシュへの移行分の総和が分割キャッシュのヒット数増加の見積値となる。
【０１２１】
分割キャッシュとキャッシュグループキャッシュが多対多に対応する場合は、各対応関係における分割キャッシュ・キャッシュグループキャッシュの重み計算（（c-1）、（d-1））、分割キャッシュ変化量のキャッシュグループキャッシュへの分配（d-2）、指定された分割キャッシュの変化量によるキャッシュグループキャッシュにおけるキャッシュヒット数変化の計算（c-2）、分割キャッシュにおけるキャッシュヒット数変化の計算（c-3）、（d-3）の順に処理を実施する。
【図面の簡単な説明】
【０１２２】
【図１】実施例１における計算機システムの構成例を示す図である。
【図２】DBMS90が管理するデータのデータマッピングの階層構成を例示する図である。
【図３】分割キャッシュ割当量を削減した場合の、仮想LRU管理リスト5000中のエントリ位置と、そこで管理されるデータが保持されている場所の変化を例示する図である。
【図４】領域マッピング情報310のデータ構造例を示す図である。
【図５】データ記憶領域情報320のデータ構造例を示す図である。
【図６】分割キャッシュ設定情報330のデータ構造例を示す図である。
【図７】キャッシュグループ情報410のデータ構造例を示す図である。
【図８】キャッシュモニタ情報510のデータ構造例を示す図である。
【図９】ファイルI/Oモニタ情報520のデータ構造例を示す図である。
【図１０】キャッシュグループ初期設定処理の処理フロー例を示す図である。
【図１１】キャッシュ割当量変更処理の処理フロー例を示す図である。
【図１２】キャッシュ量割当変更画面710を示す図である。
【図１３】実施例１において、記憶装置40がファイル202を外部装置に提供する場合の計算機システムの構成例を示す図である。
【図１４】実施例２における、取得したキャッシュの稼動モニタ情報とキャッシュヒット数分布情報との対応を例示する図である。
【符号の説明】
【０１２３】
16・・・HDD、22・・・ネットワークI/F、24・・・ネットワーク、32・・・I/OパスI/F、34・・・I/Oパス、40・・・記憶装置、60・・・スイッチ、70・・・サーバ、90・・・DBMS、120・・・管理サーバ、140・・・キャッシュ管理プログラム。
【図１】
0004631301.tif 000002
【図２】
0004631301.tif 000003
【図３】
0004631301.tif 000004
【図４】
0004631301.tif 000005
【図５】
0004631301.tif 000006
【図６】
0004631301.tif 000007
【図７】
0004631301.tif 000008
【図８】
0004631301.tif 000009
【図９】
0004631301.tif 000010
【図１０】
0004631301.tif 000011
【図１１】
0004631301.tif 000012
【図１２】
0004631301.tif 000013
【図１３】
0004631301.tif 000014
【図１４】
0004631301.tif 000015