(57)【要約】【課題】ハイブリッド型データベースが使用するメモリの容量を有効に利用しながらも、迅速にインメモリ型データベースのメモリ領域を確保する。【解決手段】プロセッサとメモリとストレージ装置を備えた計算機で、メモリ上の第１のメモリ領域に表とインデックスを格納するインメモリＤＢと、メモリ上の第２のメモリ領域にストレージ装置に格納された表の一部とインデクスを格納するディスクＤＢと、を制御するデータベースの管理方法であって、計算機は、インメモリ型ＤＢの第１のメモリ領域が不足することを検知したときに、ディスクＤＢの第２のメモリ領域に格納された表またはインデクスから削除する対象を選択し、削除する対象として選択された表またはインデクスを第２のメモリ領域から削除し、第２のメモリ領域から削除された表またはインデクスの領域を解放して、当該解放した領域を前記第１のメモリ領域に付加する。【選択図】図２
2012247901.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリとストレージ装置に接続されたインターフェースを備えた計算機で、前記メモリ上の第１のメモリ領域に表とインデックスを格納するインメモリデータベースと、前記メモリ上の第２のメモリ領域に前記ストレージ装置に格納された表の一部とインデクスを格納するディスク型データベースと、を制御するデータベースの管理方法であって、
前記計算機が、前記インメモリ型データベースの第１のメモリ領域が不足することを検知する第１のステップと、
前記計算機が、第１のメモリ領域が不足することを検知したときに、前記ディスク型データベースの第２のメモリ領域に格納された表またはインデクスから削除する対象を選択する第２のステップと、
前記計算機が、前記削除する対象として選択された表またはインデクスを前記第２のメモリ領域から削除する第３のステップと、
前記計算機が、前記第２のメモリ領域から削除された表またはインデクスの領域を解放して、当該解放した領域を前記第１のメモリ領域に付加する第４のステップと、
を含むことを特徴とするデータベースの管理方法。
【請求項２】
請求項１に記載のデータベースの管理方法であって、
前記第２のステップは、
前記計算機が、前記第１のメモリ領域に追加する領域のサイズを拡張サイズとして演算する第５のステップと、
所定の順序で前記第２のメモリ領域に格納された表またはインデクスを削除する対象として順次選択する第６のステップと、を含み、
前記削除対象として選択された表またはインデクスの容量の総和が前記拡張サイズ以上となるまで前記第６のステップを繰り返すことを特徴とするデータベースの管理方法。
【請求項３】
請求項２に記載のデータベースの管理方法であって、
前記第２のステップは、
前記ディスク型データベースの表へのアクセス頻度を取得する第７のステップを含み、
前記第６のステップは、
前記アクセス頻度の低い順に前記表またはインデクスを前記削除する対象として順次選択することを特徴とするデータベースの管理方法。
【請求項４】
請求項２に記載のデータベースの管理方法であって、
前記第６のステップは、
前記第２のメモリ領域に格納されたインデクスにセカンダリインデクスが存在する場合には、当該セカンダリインデクスを削除対象として選択することを特徴とするデータベースの管理方法。
【請求項５】
請求項２に記載のデータベースの管理方法であって、
前記第６のステップは、
前記表ごとに削除比率を予め設定し、前記第２のメモリ領域に格納された表を前記所定の順序で選択し、当該選択した表が第２のメモリ領域で使用する容量に前記削除比率を乗じた容量を削除対象として選択することを特徴とするデータベースの管理方法。
【請求項６】
請求項１に記載のデータベースの管理方法であって、
前記第３のステップは、
前記削除する対象として選択された表またはインデクスを、前記ストレージ装置に移動する指令を前記インターフェースに送信することを特徴とするデータベースの管理方法。
【請求項７】
プロセッサとメモリとストレージ装置に接続されたインターフェースとを備え、
前記メモリ上の第１のメモリ領域に表とインデックスを格納するインメモリデータベースと、
前記メモリ上の第２のメモリ領域に前記ストレージ装置に格納された表の一部とインデクスを格納するディスク型データベースと、
前記インメモリデータベースとディスク型データベースを制御する管理部と、
を備えたデータベースの管理装置であって、
前記管理部は、
前記インメモリ型データベースの第１のメモリ領域が不足することを検知したときに、前記ディスク型データベースの第２のメモリ領域に格納された表またはインデクスから削除する対象を選択する対象決定部と、
前記削除する対象として選択された表またはインデクスを前記第２のメモリ領域から削除して、前記第２のメモリ領域から削除された表またはインデクスの領域を解放し、当該解放した領域を前記第１のメモリ領域に付加する解放実行部と、
を備えたことを特徴とするデータベースの管理装置。
【請求項８】
請求項７に記載のデータベースの管理装置であって、
前記対象決定部は、
前記第１のメモリ領域に追加する領域のサイズを拡張サイズとして演算し、前記削除対象として選択された表またはインデクスの容量の総和が前記拡張サイズ以上となるまで、所定の順序で前記第２のメモリ領域に格納された表またはインデクスを削除する対象として順次選択することを特徴とするデータベースの管理装置。
【請求項９】
請求項８に記載のデータベースの管理装置であって、
前記対象決定部は、
前記ディスク型データベースの表へのアクセス頻度を取得して、前記アクセス頻度の低い順に前記表またはインデクスを前記削除する対象として順次選択することを特徴とするデータベースの管理装置。
【請求項１０】
請求項８に記載のデータベースの管理装置であって、
前記対象決定部は、
前記第２のメモリ領域に格納されたインデクスにセカンダリインデクスが存在する場合には、当該セカンダリインデクスを削除対象として選択することを特徴とするデータベースの管理装置。
【請求項１１】
請求項８に記載のデータベースの管理装置であって、
前記対象決定部は、
前記表ごとに削除比率を予め設定し、前記第２のメモリ領域に格納された表を前記所定の順序で選択し、当該選択した表が第２のメモリ領域で使用する容量に前記削除比率を乗じた容量を削除対象として選択することを特徴とするデータベースの管理装置。
【請求項１２】
請求項７に記載のデータベースの管理装置であって、
前記解放実行部は、
前記削除する対象として選択された表またはインデクスを、前記ストレージ装置に移動する指令を前記インターフェースに送信することを特徴とするデータベースの管理装置。
【請求項１３】
プロセッサとメモリとストレージ装置に接続されたインターフェースを備えた計算機で、前記メモリ上の第１のメモリ領域に表とインデックスを格納するインメモリデータベースと、前記メモリ上の第２のメモリ領域に前記ストレージ装置に格納された表の一部とインデクスを格納するディスク型データベースと、を制御するデータベースのプログラムであって、
前記インメモリ型データベースの第１のメモリ領域が不足することを検知する第１の手順と、
前記第１のメモリ領域が不足することを検知したときに、前記ディスク型データベースの第２のメモリ領域に格納された表またはインデクスから削除する対象を選択する第２の手順と、
前記削除する対象として選択された表またはインデクスを前記第２のメモリ領域から削除する第３の手順と、
前記第２のメモリ領域から削除された表またはインデクスの領域を解放して、当該解放した領域を前記第１のメモリ領域に付加する第４の手順と、
を前記計算機に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主記憶上にデータを配置するインメモリ型データベースと、ストレージ装置に格納したデータの一部を主記憶上のバッファ領域に配置するストレージ型データベースをひとつのデータベース管理システムで制御するデータベースに関する。
【背景技術】
【０００２】
従来から、ディスクドライブ等で構成されたストレージ装置にデータを格納し、計算機の主記憶上にバッファ領域（またはキャッシュ領域）を設け、計算機がアクセス要求を受け付けたデータをバッファ領域（以下、ＤＢバッファとする）に読み込んで、再利用または更新を行うディスク型（オンディスク）データベース（ＤＢ）が広く普及している。
【０００３】
近年、半導体製造技術の向上などにより、大容量のメモリを搭載した計算機が普及しつつあり、ストレージ装置に代わって主記憶上にデータを配置して高速にアクセスを行うインメモリ型データベースが知られている。
【０００４】
一方、ストレージ装置とＤＢバッファを用いるディスク型データベースにおいても高速化が検討されており、ＤＢバッファを複数の領域に分割し、リクエストに対する応答時間に基づいて動的に分割比率を変更するものが知られている（例えば、特許文献１）。特許文献１では、ＤＢバッファ内を複数の領域に分割し、分割領域毎に応答時間を維持するように分割比率を決定している。
【０００５】
上記従来のインメモリ型データベースでは、有限の主記憶上にデータを配置するため、取り扱うデータの数やサイズに限りがある。このため、インメモリ型データベースの管理部と、ディスク型データベースの管理部を組み合わせたハイブリッド型データベースが提案されている。ハイブリッド型データベースでは、インメモリ型データベースで高速にアクセスするデータを管理し、レガシーなデータベースで主記憶の容量に制限されない大量のデータを管理する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３２７１３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来のハイブリッド型データベースでは、インメモリ型データベースが使用する領域と、ディスク型データベースが使用するＤＢバッファの領域を、データベース管理システムが主記憶上にそれぞれ設定する。データベース管理システムは、主記憶上に設定された領域のサイズを上限としてインメモリ型データベースの領域と、ディスク型データベースのＤＢバッファを配置して、データのアクセスを行う。
【０００８】
インメモリ型データベースにアクセスが集中した場合や、インメモリ型データベースの表にデータを追加するために領域が不足する場合には、予め用意しておいた領域をインメモリ型データベースの領域に加える必要がある。
【０００９】
このため、従来のハイブリッド型データベースでは、インメモリ型データベースが使用する領域を拡張するため、主記憶に予め記憶領域を確保しておく必要があり、計算機資源を有効に利用できない、という問題があった。
【００１０】
そこで本発明は、ハイブリッド型データベースが使用する主記憶の容量を有効に利用しながらも、インメモリ型データベースのデータ量が増大する場合でも、迅速にインメモリ型データベースのメモリ領域を確保することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、プロセッサとメモリとストレージ装置に接続されたインターフェースを備えた計算機で、前記メモリ上の第１のメモリ領域に表とインデックスを格納するインメモリデータベースと、前記メモリ上の第２のメモリ領域に前記ストレージ装置に格納された表の一部とインデクスを格納するディスク型データベースと、を制御するデータベースの管理方法であって、前記計算機が、前記インメモリ型データベースの第１のメモリ領域が不足することを検知する第１のステップと、前記計算機が、第１のメモリ領域が不足することを検知したときに、前記ディスク型データベースの第２のメモリ領域に格納された表またはインデクスから削除する対象を選択する第２のステップと、前記計算機が、前記削除する対象として選択された表またはインデクスを前記第２のメモリ領域から削除する第３のステップと、前記計算機が、前記第２のメモリ領域から削除された表またはインデクスの領域を解放して、当該解放した領域を前記第１のメモリ領域に付加する第４のステップと、を含む。
【発明の効果】
【００１２】
したがって、本発明は、メモリの容量を有効に利用しながらも、インメモリ型データベースのデータ量が増大する場合には、迅速にインメモリ型データベースが使用するメモリ領域を拡張することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態を示し、計算機システムの一例を示すブロック図である。
【図２】本発明の実施形態を示し、データベース管理システムで行われるメモリ操作の概要を示す図である。
【図３】本発明の実施形態を示し、データベース管理システムで行われるメモリ操作の一例を示すフローチャートである。
【図４】本発明の実施形態を示し、図３のステップＳ６００で行われるＤＢバッファ解放対象の決定処理の一例を示すフローチャートである。
【図５】本発明の実施形態を示し、図３のステップＳ６６０、図４のステップＳ６０４、Ｓ６０９で行われる解放操作リストの計算処理の一例を示すフローチャートである。
【図６】本発明の実施形態を示し、図３のステップＳ７００で行われるＤＢバッファ解放操作の一例を示すフローチャートである。
【図７】本発明の実施形態を示し、表情報の一例を示す図である。
【図８】本発明の実施形態を示し、インデクス情報の一例を示す図である。
【図９】本発明の実施形態を示し、メモリ領域情報の一例を示す図である。
【図１０】本発明の実施形態を示し、表アクセス頻度情報の一例を示す図である。
【図１１】本発明の実施形態を示し、ＤＢバッファ解放対象リストの一例を示す図である。
【図１２】本発明の実施形態を示し、ＤＢバッファ解放操作リストの一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１５】
図１は、本発明の実施形態におけるハイブリッド型データベースを提供する計算機システムの構成の一例を示すブロック図である。計算機システムは、データベース管理装置２１００と、管理者などが利用する端末装置２１４０と、データベースのユーザが利用するクライアント端末装置２１６０と、データベース管理装置２１００と端末装置２１４０及びクライアント端末装置２１６０を接続するネットワーク２１５０と、データベース管理装置２１００に接続されてデータやプログラムを格納する外部記憶装置２２００から構成される。
【００１６】
データベース管理装置２１００は、プロセッサ２１０２と主記憶装置２１０４とネットワークインターフェース２１０１と外部記憶装置入出力インターフェース２１０３とを備えた計算機で構成されて、インメモリ型データベースとディスク型（オンディスク）データベースからなるハイブリッド型データベースを提供する。
【００１７】
ネットワークインターフェース２１０１は、ネットワーク２１５０に接続されて端末装置２１４０やクライアント端末装置２１６０と通信を行う。
【００１８】
外部記憶装置入出力インターフェース２１０３は、外部記憶装置２２００に接続されており、プロセッサ２１０２からの指令に応じて外部記憶装置２２００との間でデータの読み書きや、プログラムの読み込みを行う。外部記憶装置２２００は、ディスクドライブや不揮発性の半導体記憶装置を含むストレージ装置で構成される。
【００１９】
外部記憶装置２２００には、上記データベース管理装置２１００が提供するディスク型データベースのデータ（表情報８０１０、インデクス情報８０２０）１００１と、インメモリ型データベース（またはディスク型データベース）の定義情報等が格納される。なお、データベース管理装置２１００の停止中は、外部記憶装置２２００にインメモリ型データベースのデータを格納する。外部記憶装置２２００はネットワークを介してデータベース管理装置２１００に接続されるＮＡＳ等の装置で構成してもよい。
【００２０】
データベース管理装置２１００のプロセッサ２１０２は、インメモリ型データベースとディスク型（オンディスク）データベースを提供するデータベース管理システム２１１０を実行する。データベース管理システム２１１０は外部記憶装置２２００の所定の領域（図示省略）に格納されたプログラムで構成され、プロセッサ２１０２が主記憶装置２１０４へ当該プログラムを読み込んでから実行される。なお、外部記憶装置２２００はデータベース管理システム２１１０のプログラムを格納する記憶媒体としても機能する。
【００２１】
データベース管理システム２１１０は、主記憶装置２１０４上に、インメモリ型データベースのメモリ領域２１２０と、ディスク型データベースのデータを入出力するためのバッファ領域（以下、ＤＢバッファ）２１３０と、ＤＢバッファ２１３０の表やインデクスなどを管理する表・インデクス情報８０４０と、インメモリ型データベースのメモリ領域２１２０の設定に関するメモリ領域情報８０５０を格納する。
【００２２】
また、主記憶装置２１０４上には、データベース管理システム２１１０がＤＢバッファ２１３０及びインメモリ型データベースのメモリ領域２１２０を操作する際に生成するＤＢバッファ解放対象リスト８０６０とＤＢバッファ解放操作リスト８０７０が保持される。
【００２３】
データベース管理システム２１１０は、起動するとインメモリ型データベースのメモリ領域２１２０とＤＢバッファ２１３０を予め設定した容量または端末装置２１４０から指定された容量で主記憶装置２１０４上にそれぞれ設定する。
【００２４】
そして、データベース管理システム２１１０は、インメモリ型データベースのメモリ領域２１２０に予め設定された表（テーブル）２１２１または端末装置２１４０から指定された表２１２１とインデックス２１２２を外部記憶装置２２００から読み込む。そして、クライアント端末装置２１６０で実行されるＵＡＰ（User Application Program）からのアクセス要求がインメモリ型データベースの場合には、メモリ領域２１２０をアクセスしてクライアント端末装置２１６０に応答する。
【００２５】
また、データベース管理システム２１１０は、ディスク型データベースを稼動させ、クライアント端末装置２１６０のＵＡＰ（User Application Program）からのアクセス要求を受け付けて、アクセス要求の対象がディスク型データベースの場合には、表２１３１及びインデックス２１３２を、外部記憶装置２２００のディスクＤＢデータ１００１のうち必要な部分のみを取得してＤＢバッファ２１３０に読み込む。そして、データベース管理システム２１１０は、ＤＢバッファ２１３０に読み込んだデータについてクライアント端末装置２１６０からの要求を処理する。なお、ＤＢバッファ２１３０に読み込んだ表２１３１及びインデックス２１３２は、外部記憶装置２２００のディスクＤＢデータ１００１の一部分である。
【００２６】
データベース管理システム２１１０が提供するハイブリッド型データベースが、クライアント端末装置２１６０のＵＡＰからのリクエストに応答するデータの処理については、公知または周知のインメモリ型データベースとディスク型データベースの処理を適用すればよい。
【００２７】
なお、ＤＢバッファ２１３０及びインメモリ型データベースのメモリ領域２１２０の操作については後述する。
【００２８】
端末装置２１４０は、データベース管理装置２１００の管理者などが利用する計算機で、入力装置と出力装置を備える。クライアント端末装置２１６０は、ハイブリッド型データベースの利用者などが使用する計算機で、入力装置と出力装置を備える。
【００２９】
＜ソフトウェアの概要＞
データベース管理システム２１１０は、インメモリ型データベースとディスク型データベースを管理する。このため、データベース管理システム２１１０は、インメモリ型データベースのメモリ領域２１２０とディスク型データベースのＤＢバッファ２１３０を管理するＤＢバッファ管理部２１１１と、メモリ領域２１２０を拡張する際に解放可能なＤＢバッファ２１３０の要素を格納するＤＢバッファ解放対象リスト８０６０と、ＤＢバッファ２１３０から解放してインメモリ型データベースのメモリ領域２１２０加えるＤＢバッファ２１３０の要素を格納するＤＢバッファ解放操作リスト８０７０と、を有する。
【００３０】
データベース管理システム２１１０は、クライアント端末装置２１６０からアクセス要求を受け付けると、アクセスの対象となる表がインメモリ型データベースとディスク型データベースの何れかを判定する。アクセスの対象となる表（テーブル）がインメモリ型データベースの場合にはインメモリ型データベースのメモリ領域２１２０にアクセスする。また、データベース管理システム２１１０は、アクセスの対象となる表がディスク型データベースの場合にはＤＢバッファ２１３０にアクセスする。
【００３１】
データベース管理システム２１１０は、インメモリ型データベースへのアクセス要求を受け付けると、メモリ領域２１２０のインデックス２１２２または表２１２１を検索してデータを取得し、クライアント端末装置２１６０に応答する。図２の例では、インメモリ型データベースは、メモリ領域２１２０に表Ｔ１、表Ｔ３と、これらの表に対応するインデックスをメモリ領域２１２０に配置した例を示す。
【００３２】
一方、データベース管理システム２１１０は、ディスク型データベースに対するアクセス要求を受け付けるとＤＢバッファ２１３０のインデックス２１３２または表２１３１あるいは外部記憶装置２２００を検索してデータを取得し、クライアント端末装置２１６０に応答する。外部記憶装置２２００には、図１で示したように、ディスク型データベースのデータである表８０１０とインデックス８０２０からなるディスクＤＢデータ１００１が格納される。
【００３３】
ＤＢバッファ管理部２１１１は、ＤＢバッファ２１３０に読み込む表２１３１及びインデックス２１３２とインメモリ型データベースのメモリ領域２１２０を管理する。ＤＢバッファ管理部２１１１は、データベース管理システム２１１０がアクセスする表２１３１の部分（レコード）がＤＢバッファ２１３０にない場合には外部記憶装置２２００のディスクＤＢデータ１００１から表２１３１とインデックス２１３２のうち必要とする部分を読み込んで、ＤＢバッファ２１３０に格納する。
【００３４】
このとき、ＤＢバッファ管理部２１１１は、ＤＢバッファ２１３０内で不要となったデータ（表を構成するレコードまたはインデックスの一部）を外部記憶装置２２００に書き戻すか、破棄する。不要となったデータの判定は、ＬＲＵ（Least Recently Used）方式など周知または公知の手法を用いることができる。図２の例では、ＤＢバッファ管理部２１１１が、外部記憶装置２２００に格納されたディスクＤＢデータ１００１のうち表Ｔ２の一部と表Ｔ２に対応するインデックスをＤＢバッファ２１３０に読み込んだ例を示す。
【００３５】
また、ＤＢバッファ管理部２１１１は、後述するように、インメモリ型データベースへのアクセスの増大または表２１２１の増大によって、インメモリ型データベースのメモリ領域２１２０が不足することを検知すると、ＤＢバッファ解放対象決定部２１１２とＤＢバッファ解放操作実行部２１１３を起動してＤＢバッファ２１３０を縮小させる。そして、ＤＢバッファ管理部２１１１は、ＤＢバッファ２１３０から削減した容量をインメモリ型データベースのメモリ領域２１２０に割り当てて、メモリ領域２１２０を拡張する。
【００３６】
ＤＢバッファ管理部２１１１は、インメモリ型データベースのメモリ領域２１２０の使用率が予め設定した閾値を超えたときにメモリ領域２１２０が不足すると判定する。なお、閾値は、図９で示すように、メモリ領域情報８０５０の容量不足検知割合８０５４に格納しておくことができる。
【００３７】
そして、インメモリ型データベースのメモリ領域２１２０の不足が判定されると、ＤＢバッファ解放対象決定部２１１２で、ＤＢバッファ２１３０から削減する要素（インデクス）を後述するように決定する。そして、ＤＢバッファ解放操作実行部２１１３が決定された要素を主記憶装置２１０４から解放して、インメモリ型データベースのメモリ領域２１２０に加える。これによりＤＢバッファ管理部２１１１は、ＤＢバッファ２１３０から削減した容量（領域）をメモリ領域２１２０に加えてメモリ領域２１２０を拡張する。
【００３８】
本発明は、インメモリ型データベースとディスク型データベースの双方を備えるハイブリッド型データベースにおいて、インメモリ型データベースのメモリ領域２１２０が不足する可能性があると判定されたときに、ＤＢバッファ２１３０の要素のうちインデックス２１３２等が使用する領域を削減する。そして、削減によりインデックス２１３２から取得した主記憶装置２１０４の領域をインメモリ型データベースのメモリ領域２１２０に加える。
【００３９】
インメモリ型データベースのメモリ領域２１２０に領域を追加することで、インメモリ型データベースの性能（例えば、応答）は向上する。一方、ＤＢバッファ２１３０の削減によりディスク型データベースの性能は低下する。したがって、前記従来例のように予め拡張用の記憶領域を用意することなく、ハイブリッド型データベース全体の性能を確保しながらインメモリ型データベースの性能を向上させることができる。これにより、計算器資源を有効に利用することができる。
【００４０】
つまり、本発明では、ＤＢバッファ２１３０のインデックス領域を削減することでディスク型データベースの性能を低下させる一方で、インメモリ型データベースのメモリ領域２１２０の拡張によりインメモリ型データベースの性能を向上させることで、ハイブリッド型データベース全体の性能を維持する。
【００４１】
ＤＢバッファ管理部２１１１は、ディスク型データベースとインメモリ型データベースの性能を監視するため、ＤＢバッファ２１３０の要素に関する表・インデクス情報８０４０と、インメモリ型データベースのメモリ領域２１２０に関する情報をメモリ領域情報８０５０と、を主記憶装置２１０４上に配置する。
【００４２】
表・インデクス情報８０４０は、図１で示すように、ＤＢバッファ２１３０に格納された表の情報を保持する表情報８０４１と、表情報８０４１の表に定義されたインデクスの情報を保持するインデクス情報８０４２と、表情報８０４１の表に対するアクセスの頻度を保持する表アクセス頻度情報８０４３と、から構成される。
【００４３】
一方、メモリ領域情報８０５０は、図９で示すように、インメモリ型データベースのメモリ領域２１２０に割り当てられた容量を保持するインメモリＤＢ容量８０５１と、容量不足または不足する兆候を検知する閾値（割合）を保持する容量不足検知割合８０５４と、メモリ領域の拡張量を保持するメモリＤＢ拡張割合８０５２と、メモリ領域２１２０に追加する主記憶装置２１０４の容量を保持するメモリ領域拡張サイズ８０５３から構成される。なお、容量不足を検知する閾値は、インメモリＤＢ容量８０５１に対して実際に使用中の領域の割合の例を示す。この他、実際に使用中の領域の容量の上限値を閾値として設定してもよい。
【００４４】
また、メモリＤＢ拡張割合８０５２は、１回の操作でインメモリ型データベースのメモリ領域２１２０に付加する容量の比率を示し、この比率は、インメモリＤＢ容量８０５１に乗ずる値が格納される。そして、メモリ領域拡張サイズ８０５３は、インメモリＤＢ容量８０５１にメモリＤＢ拡張割合８０５２を格納する。
【００４５】
図７は、表・インデクス情報８０４０を構成する表情報８０４１の一例を示す図である。
【００４６】
表情報８０４１は、表の識別子を格納する表ＩＤ８０４１１と、表の名称を格納する表名８０４１２と、表に定義されたインデクスの数を格納する定義インデクス数８０４１３と、表が使用しているＤＢバッファ内の容量を格納するＤＢバッファ容量８０４１４と、１回の操作で削減可能なＤＢバッファ容量８０４１４の比率を格納する削減割合８０４１５からひとつのエントリが構成される。
【００４７】
図８は、表・インデクス情報８０４０を構成するインデクス情報８０４２の一例を示す図である。
【００４８】
インデクス情報８０４２は、インデクスの識別子を格納するインデクスＩＤ８０４２１と、インデクスの名称を格納するインデクス名８０４２２と、当該インデクスが参照する表の識別子を格納する表ＩＤ８０４２３と、当該インデクスがセカンダリインデクスであるか否かを識別するセカンダリインデクス識別８０４２４と、当該インデクスが使用するＤＢバッファ２１３０上の容量を格納するＤＢバッファ容量８０４２５からひとつのエントリが構成される。セカンダリインデクス識別８０４２４が「１」であれば、当該インデクスはセカンダリインデクスであることを示し、「０」であればプライマリインデクスであることを示す。
【００４９】
図９は、メモリ領域２１２０の設定に関する情報を格納するメモリ領域情報８０５０の一例を示す図である。
【００５０】
メモリ領域情報８０５０は、インメモリ型データベースのメモリ領域２１２０の容量を格納するインメモリＤＢ容量８０５１と、インメモリ型データベースのメモリ領域２１２０の不足を判定するために、メモリ領域２１２０の容量に対する実際の容量の比を使用率として、この使用率の閾値を格納する容量不足検知割合８０５４と、メモリ領域２１２０を拡張する際の比率を格納するメモリＤＢ拡張割合８０５２と、メモリ領域２１２０を拡張する容量を格納するメモリ領域拡張サイズ８０５３と、を含む。
【００５１】
メモリＤＢ拡張割合８０５２は、インメモリ型データベースに割り当てられた容量（インメモリＤＢ容量８０５１）に対してメモリ領域２１２０を拡張する割合を予め格納しておく。メモリ領域拡張サイズ８０５３は、データベース管理システム２１１０が、インメモリ型データベースに割り当てられた領域２１２０の容量に対してメモリＤＢ拡張割合８０５２を乗じた値を格納する。
【００５２】
上記メモリ領域情報８０５０の内容は、管理者などが操作する端末装置２１４０から入力しても良いし、所定のファイルからデータベース管理システム２１１０が読み込んで設定してもよい。
【００５３】
なお、上記図７、図８の表情報８０４１及びインデクス情報８０４２は、データベース管理システム２１１０によってデータの設定や更新を行うことができる。
【００５４】
図１０は、表・インデクス情報８０４０を構成する表アクセス頻度情報８０４３の一例を示す図である。
【００５５】
表アクセス頻度情報８０４３は、表の識別子を格納する表ＩＤ８０４３１と、当該表ＩＤに対する１日当たりのアクセスの回数を格納するアクセス頻度８０４３２と、から一つのエントリが構成される。
【００５６】
データベース管理システム２１１０は、クライアント端末２１６０等からの要求に応じてディスク型データベースへのアクセスを受け付ける度に、表アクセス頻度情報８０４３の表ＩＤ８０４３１に対応するアクセス頻度８０４３２を更新する。
【００５７】
図１１は、ＤＢバッファ解放対象決定部２１１２が生成するＤＢバッファ解放対象リスト８０６０の一例を示す図である。
【００５８】
ＤＢバッファ解放対象リスト８０６０は、解放の対象となるディスク型データベースの要素の種別を格納する解放対象種別８０６１と、解放の対象となる要素の名称を格納する解放対象名８０６２と、解放の対象となる要素のＤＢバッファ２１３０上の容量を格納する解放サイズ８０６３と、から一つのエントリが構成される。
【００５９】
図１２は、ＤＢバッファ解放操作実行部２１１３が生成するＤＢバッファ解放操作リスト８０７０の一例を示す図である。
【００６０】
ＤＢバッファ解放操作リスト８０７０は、解放の対象となるディスク型データベースの要素の名称を格納する解放対象８０７１と、解放の対象となる要素のＤＢバッファ２１３０上の容量を格納する解放容量８０７２と、から一つのエントリが構成される。
【００６１】
＜処理の概要＞
図２は、本発明のデータベース管理システム２１１０が、インメモリ型データベースのメモリ領域２１２０が不足すると判定したときに、ディスク型データベースのＤＢバッファ２１３０の一部を削減し、削減した領域をインメモリ型データベースのメモリ領域２１２０に加えて拡張するメモリ操作の概要を示す図である。
【００６２】
データベース管理システム２１１０のＤＢバッファ管理部２１１１は、インメモリ型データベースのメモリ領域２１２０の使用率を監視して、メモリ領域２１２０の使用率が所定の閾値（容量不足検知割合８０５４）を超えると、インメモリ型データベースのメモリ領域２１２０が不足することを検出する。
【００６３】
インメモリ型データベースのメモリ領域２１２０の不足を検出するとＤＢバッファ管理部２１１１は、ＤＢバッファ解放対象決定部２１１２を起動して、図４に示すＤＢバッファ解放対象決定処理（Ｓ６００）を開始する。なお、ＤＢバッファ解放対象決定処理（Ｓ６００）は図１に示したＤＢバッファ解放対象決定部２１１２で行われる処理である。
【００６４】
ＤＢバッファ解放対象決定処理Ｓ６００では、メモリ領域情報８０５０のインメモリＤＢ容量８０５１とメモリＤＢ拡張割合８０５２からメモリ領域拡張サイズ８０５３を演算する。本実施形態では、１回の拡張でメモリ領域拡張サイズ８０５３ずつインメモリ型データベースのメモリ領域２１２０を拡張する例を示す。
【００６５】
次に、ＤＢバッファ解放対象決定部２１１２は、メモリ削減操作の対象となるディスク型データベースの要素を抽出するため、表・インデクス情報８０４０から表情報８０４１、インデクス情報８０４２、表アクセス頻度情報８０４３を読み込む。ＤＢバッファ解放対象決定部２１１２は、読み込んだ情報からＤＢバッファ解放対象リスト８０６０を後述するように生成する。
【００６６】
ＤＢバッファ解放対象決定部２１１２は、ＤＢバッファ解放対象リスト８０６０を参照して、メモリ領域拡張サイズ８０５３を満たす容量になるまでディスク型データベースの要素を抽出する。そして、ＤＢバッファ解放対象決定部２１１２は、抽出したディスク型データベースの要素からＤＢバッファ解放操作リスト８０７０を生成する。
【００６７】
ＤＢバッファ管理部２１１１は、ＤＢバッファ解放対象決定部２１１２の処理が完了すると、ＤＢバッファ解放操作実行部２１１３を起動してＤＢバッファ解放操作を後述するように実行する（Ｓ７００）。
【００６８】
ＤＢバッファ解放操作実行部２１１３は、ＤＢバッファ解放操作リスト８０７０を読み込んで、解放対象となるディスク型データベースの要素をＤＢバッファ２１３０から削除して外部記憶装置２２００へ書き戻す。ＤＢバッファ解放操作実行部２１１３は、ＤＢバッファ２１３０から削除された領域を解放する。そして、ＤＢバッファ解放操作実行部２１１３は、ＤＢバッファ２１３０上で解放した領域を、インメモリ型データベースのメモリ領域２１２０に加えて、メモリ領域２１２０の拡張を行う（Ｓ８００）。
【００６９】
以上の処理によって、データベース管理システム２１１０は、ＤＢバッファ２１３０からディスク型データベースの要素の一部を削除して、インメモリ型データベースのメモリ領域２１２０に加えることで、主記憶装置２１０４の領域を無駄なく利用しながらも、インメモリ型データベースのメモリが不足することを防止できる。
【００７０】
＜処理の詳細＞
以下、データベース管理システム２１１０で行われるディスク型データベースのＤＢバッファ２１３０の一部を削減し、削減した記憶領域をインメモリ型データベースのメモリ領域２１２０に追加する処理の詳細を説明する。
【００７１】
図３は、データベース管理システム２１１０で行われるメモリ操作の全体的な処理の一例を示すフローチャートである。この処理は、所定の周期（例えば、１分毎）で実行される。
【００７２】
ステップＳ２００では、ＤＢバッファ管理部２１１１が、メモリ領域情報８０５０を読み込んで、インメモリＤＢ容量８０５１のうち実際に使用されている領域を監視して、実際に使用されている領域の比率が閾値である容量不足検知割合８０５４を超えていれば、インメモリ型データベースのメモリ領域２１２０が不足（または不足の予兆）することを検知する。メモリ領域２１２０が不足することを検知すると、データベース管理システム２１１０は、ＤＢバッファ解放対象決定部２１１２を起動してステップＳ３００へ進む。
【００７３】
ステップＳ３００では、ＤＢバッファ解放対象決定部２１１２がメモリ領域情報８０５０を読み込んでインメモリＤＢ容量８０５１にメモリＤＢ拡張割合８０５２を乗じて、メモリ領域拡張サイズ８０５３を演算する。
【００７４】
ステップＳ４００では、ＤＢバッファ解放対象決定部２１１２が表・インデクス情報８０４０から表情報８０４１とインデクス情報８０４２を取得して、ＤＢバッファ２１３０上に存在する表とインデクスを特定する。
【００７５】
ステップＳ６００では、ＤＢバッファ解放対象決定部２１１２が、ＤＢバッファ２１３０上に存在する表とインデクスから後述する図４の処理によって、ＤＢバッファ解放対象となるディスク型データベースの要素を抽出してＤＢバッファ解放操作リスト８０６０を生成する。
【００７６】
ステップＳ６６０では、ＤＢバッファ管理部２１１１が、ＤＢバッファ解放操作リスト８０７０を構成するディスク型データベースの要素の容量（解放容量８０７２）の合計をＤＢバッファ解放サイズとして演算する。
【００７７】
ステップＳ６９０では、ＤＢバッファ管理部２１１１が、ステップＳ３００で求めたメモリ領域拡張サイズ８０５３とステップＳ６６０で求めたＤＢバッファ解放サイズを比較して、ＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３以上であるか否かを判定する。そして、ＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３以上であれば、ＤＢバッファ管理部２１１１は、ＤＢバッファ解放操作実行部２１１３を起動してステップＳ７００へ進む。一方、ＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３未満であれば、ＤＢバッファ管理部２１１１は、ステップＳ６９２へ進んでインメモリ型データベースのメモリ領域２１２０を拡張できないことを通知するエラー処理を実行する。
【００７８】
ステップＳ７００では、ＤＢバッファ解放操作実行部２１１３が後述する図６のように、ＤＢバッファ解放操作リスト８０７０の要素をＤＢバッファ２１３０から削除する。
【００７９】
そして、ステップＳ８００では、ＤＢバッファ解放操作実行部２１１３は、ステップＳ７００でＤＢバッファ２１３０から削除した領域を、インメモリ型データベースのメモリ領域２１２０に付加して拡張させる。ＤＢバッファ解放操作実行部２１１３は、メモリ領域拡張サイズ８０５３をインメモリＤＢ容量８０５１に加算し、その後、メモリ領域拡張サイズ８０５３をクリアする。
【００８０】
以上の処理により、ＤＢバッファ２１３０上から解放対象の要素が削除され、削除された領域がインメモリ型データベースのメモリ領域２１２０に加えられる。
【００８１】
＜ＤＢバッファ解放対象決定処理＞
図４は上記図３のステップＳ６００で行われるＤＢバッファ解放対象決定処理の一例を示すフローチャートである。
【００８２】
ステップＳ６０１では、ＤＢバッファ解放対象決定部２１１２が、図３のステップＳ４００で取得した表とインデクスから、図１１に示すＤＢバッファ解放対象リスト８０６０を生成する。次に、ＤＢバッファ解放対象決定部２１１２は、図１０に示した表アクセス頻度情報８０４３を読み込んで、ＤＢバッファ解放対象リスト８０６０をアクセス頻度８０４３２の昇順でソートする。このとき、解放対象種別８０６１がテーブルの場合は、解放対象名８０６２に含まれるテーブルの識別子に対応するアクセス頻度情報８０４３を用いる。また、解放対象種別８０６１がインデクスの場合は、解放対象名８０６２に含まれるテーブルの識別子を、当該インデクスのアクセス頻度情報８０４３として扱うようにしてもよい。
【００８３】
ステップＳ６０２では、ＤＢバッファ解放対象決定部２１１２が、上記ステップＳ６０１で生成したＤＢバッファ解放対象リスト８０６０の先頭のエントリからステップＳ６０３〜Ｓ６０６の処理を繰り返す。
【００８４】
ステップＳ６０３では、ＤＢバッファ解放対象決定部２１１２が、上記ステップＳ６０１でアクセス頻度８０４３２の昇順でＤＢバッファ解放対象リスト８０６０のエントリを読み込む。そして、ＤＢバッファ解放対象決定部２１１２は、詠み込んだＤＢバッファ解放対象リスト８０６０のエントリの解放対象種別８０６１が「インデクス」であるか否かを判定する。「インデクス」であれば、ＤＢバッファ解放対象決定部２１１２は、解放対象名８０６２で図８のインデクス情報８０４２のインデクス名８０４２２と表ＩＤ８０４２３を検索し、当該インデクスのセカンダリインデクス識別８０４２４を取得する。
【００８５】
ＤＢバッファ解放対象決定部２１１２は、セカンダリインデクス識別８０４２４が「１」であるか否かを判定し、「１」であれば当該解放対象名８０６２のインデクスはセカンダリであるので、当該解放対象名８０６２でＤＢバッファ解放操作リスト８０７０にエントリを追加する。つまり、ＤＢバッファ解放対象決定部２１１２は、当該解放対象名８０６２をＤＢバッファ解放操作リスト８０７０の解放対象８０７１に設定し、インデクス情報８０４２のＤＢバッファ容量８０４２５からセカンダリインデクスが使用していた容量を取得し、この容量をＤＢバッファ解放操作リスト８０７０の解放容量８０７２に設定する。
【００８６】
ステップＳ６０４では、ＤＢバッファ解放対象決定部２１１２が、ＤＢバッファ解放操作リスト８０７０に加えられたセカンダリインデクスの容量（解放容量８０７２）の合計をＤＢバッファ解放サイズとして演算する。
【００８７】
ステップＳ６０５では、ＤＢバッファ解放対象決定部２１１２が、ステップＳ３００で求めたメモリ領域拡張サイズ８０５３と、ステップＳ６０４で求めたＤＢバッファ解放サイズを比較して、ＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３以上であるか否かを判定する。
【００８８】
ＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３以上であれば、ＤＢバッファ解放対象決定部２１１２は、ＤＢバッファ２１３０から削減する領域がメモリ領域拡張サイズ８０５３以上になったので図４の処理を終了して図３の処理に戻る。
【００８９】
一方、ＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３未満であれば、ＤＢバッファ解放対象決定部２１１２はステップＳ６０３に戻って、ＤＢバッファ解放対象リスト８０６０の次のエントリについて上記処理を繰り返す（Ｓ６０６）。
【００９０】
ＤＢバッファ解放対象決定部２１１２は、ＤＢバッファ解放対象リスト８０６０の全てのエントリについて処理が終了してもＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３未満であればステップＳ８０６へ進む。つまり、現在生成されたセカンダリインデクスのみのＤＢバッファ解放操作リスト８０７０では、ＤＢバッファ解放サイズが要求されるメモリ領域拡張サイズ８０５３に達しない場合である。
【００９１】
ステップＳ６０７では、ＤＢバッファ解放対象決定部２１１２が、上記ステップＳ６０１で生成したＤＢバッファ解放対象リスト８０６０の先頭のエントリからステップＳ６０８〜Ｓ６１１の処理を繰り返す。なお、ＤＢバッファ解放対象リスト８０６０は上述のようにアクセス頻度が低い順から高い順にソートされている。
【００９２】
ステップＳ６０８では、ＤＢバッファ解放対象決定部２１１２が、上記ステップＳ６０１でアクセス頻度８０４３２の昇順でＤＢバッファ解放対象リスト８０６０のエントリを読み込む。そして、ＤＢバッファ解放対象決定部２１１２は、詠み込んだＤＢバッファ解放対象リスト８０６０のエントリの解放対象種別８０６１が「テーブル」（表）であるか否かを判定する。「テーブル」であれば、ＤＢバッファ解放対象決定部２１１２は、解放対象名８０６２で図７の表情報８０４１の表ＩＤ８０４１１を検索し、当該テーブルの削減割合８０４１５と、当該テーブルが使用中のＤＢバッファ容量８０４１４を取得する。ＤＢバッファ解放対象決定部２１１２は、当該テーブルが使用中のＤＢバッファ容量８０４１４に削減割合８０４１５を乗じた値を解放容量として求める。
【００９３】
ＤＢバッファ解放対象決定部２１１２は、当該テーブルの解放対象名８０６２でＤＢバッファ解放操作リスト８０７０にエントリを追加する。つまり、ＤＢバッファ解放対象決定部２１１２は、当該テーブルの解放対象名８０６２をＤＢバッファ解放操作リスト８０７０の解放対象８０７１に設定し、上記削減割合８０４１５から求めた容量をＤＢバッファ解放操作リスト８０７０の解放容量８０７２に設定する。なお、削減割合８０４１５は、図７で示すように例えば、３０％で、使用中のＤＢバッファ容量８０４１４が例えば、３００ＭＢの場合、解放容量８０７２は９０Ｍｂｙｔｅとなる。ＤＢバッファ解放操作リスト８０７０のテーブルの解放容量８０７２は、解放対象８０７１の表がＤＢバッファ２１３０使用中の領域のうち外部記憶装置２２００へ書き戻す容量を示す。
【００９４】
ステップＳ６０９では、ＤＢバッファ解放対象決定部２１１２が、ＤＢバッファ解放操作リスト８０７０に加えられたテーブルを含む解放容量８０７２の合計をＤＢバッファ解放サイズとして演算する。
【００９５】
ステップＳ６１０では、ＤＢバッファ解放対象決定部２１１２が、ステップＳ３００で求めたメモリ領域拡張サイズ８０５３と、ステップＳ６０８で求めたＤＢバッファ解放サイズを比較して、ＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３以上であるか否かを判定する。
【００９６】
ＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３以上であれば、ＤＢバッファ解放対象決定部２１１２は、ＤＢバッファ２１３０から削減する領域がメモリ領域拡張サイズ８０５３以上になったので図４の処理を終了して図３の処理に戻る。
【００９７】
一方、ＤＢバッファ解放サイズがメモリ領域拡張サイズ８０５３未満であれば、ＤＢバッファ解放対象決定部２１１２はステップＳ６０７に戻って、ＤＢバッファ解放対象リスト８０６０の次のエントリについて上記処理を繰り返す（Ｓ６１１）。
【００９８】
ＤＢバッファ解放対象決定部２１１２は、上記図４の処理によって、ＤＢバッファ２１３０のうちセカンダリインデクスをＤＢバッファ解放操作リスト８０７０に抽出して、ＤＢバッファ解放サイズがメモリ領域拡張サイズ未満であれば、ＤＢバッファ２１３０を使用中の表から所定の削減割合８０４１５を削減してＤＢバッファ解放操作リスト８０７０に加えていく。
【００９９】
＜ＤＢバッファ解放操作リストの計算処理＞
図５は、上記図３のステップＳ６６０、図４のステップＳ６０４、Ｓ６０９で行われるＤＢバッファ解放操作リスト８０７０の計算処理の一例を示すフローチャートである。
【０１００】
ＤＢバッファ解放対象決定部２１１２またはＤＢバッファ管理部２１１１は、ステップＳ６６１、Ｓ６６２、Ｓ６６３を繰り返すことで、ＤＢバッファ解放操作リスト８０７０の先頭から終端までのエントリを読み込んで、解放容量８０７２の総和をＤＢバッファ解放サイズとして演算する。
【０１０１】
＜ＤＢバッファ解放操作実行処理＞
図６は、上記図３のステップＳ７００で行われるＤＢバッファ解放操作実行処理の一例を示すフローチャートである。
【０１０２】
ステップＳ７１１では、ＤＢバッファ解放操作実行部２１１３が、ＤＢバッファ解放操作リスト８０７０を読み込む。そして、ステップＳ７１２では、ＤＢバッファ解放操作実行部２１１３が、ＤＢバッファ解放操作リスト８０７０の先頭から終端までのエントリについてステップＳ７１３〜Ｓ７１６の処理を繰り返す。
【０１０３】
ステップＳ７１３では、ＤＢバッファ解放操作実行部２１１３が解放操作リスト８０７０から一つのエントリを読み込んで、解放対象８０７１と解放容量８０７２を取得する。
【０１０４】
ステップＳ７１４では、ＤＢバッファ解放操作実行部２１１３が上記読み込んだ解放対象８０７１を外部記憶装置２２００のディスクＤＢデータ１００１に書き戻す。このとき、ＤＢバッファ解放操作実行部２１１３が外部記憶装置２２００へＤＢバッファ２１３０の一部を書き戻す場合には、書き戻す対象をＬＲＵ（Least Recently Used）等の周知または公知の手法で決定すればよい。
【０１０５】
なお、ＤＢバッファ解放操作実行部２１１３は上記読み込んだ解放対象８０７１がセカンダリインデクスの場合には、外部記憶装置２２００へ書き戻さずに削除するようにしても良い。
【０１０６】
次に、ステップＳ７１５では、ＤＢバッファ解放操作実行部２１１３は、解放対象８０７１が使用していたＤＢバッファ２１３０上の領域を解放する。このとき、ＤＢバッファ解放操作実行部２１１３は、解放対象８０７１が「テーブル」の場合、表が使用中のＤＢバッファ容量８０４１４から、このＤＢバッファ容量８０４１４に削減割合８０４１５を乗じた値を差し引いてＤＢバッファ容量８０４１４を更新する。ＤＢバッファ解放操作実行部２１１３は、解放対象８０７１が「インデクス」の場合、インデクス情報８０４２から該当するインデクスＩＤ８０４２１またはインデクス名８０４２２のエントリを削除する。あるいは、インデクスの一部を解放した場合には、インデクス情報８０４２の使用中のＤＢバッファ容量８０４２５を更新するようにしてもよい。
【０１０７】
上記ステップＳ７１３〜Ｓ７１４の処理を、ＤＢバッファ解放操作リスト８０７０の全てのエントリについて完了すると、ステップＳ７２０に進む。ステップＳ７２０では、ＤＢバッファ解放操作実行部２１１３は、ＤＢバッファ解放操作リスト８０７０の全エントリを削除して初期化する。また、ＤＢバッファ解放操作実行部２１１３は、メモリ領域情報８０５０のインメモリＤＢ容量８０５１に、上記図３のステップＳ６６０で求めたＤＢバッファ解放サイズを加算して更新する。また、ＤＢバッファ解放操作実行部２１１３は、メモリ領域情報８０５０のメモリ領域拡張サイズ８０５３をクリアする。
【０１０８】
以上の処理により、ＤＢバッファ解放操作リスト８０７０に加えられたディスク型データベースの要素は、外部記憶装置２２００へ書き戻されてからＤＢバッファ２１３０上で使用していた領域が解放される。
【０１０９】
＜まとめ＞
以上のように、本発明では、インメモリ型データベースのメモリ領域２１２０の実際の使用量が閾値（容量不足検知割合８０５４）を超えると、ＤＢバッファ管理部２１１１はインメモリ型データベースのメモリ領域の不足または不足の予兆を検知する。
【０１１０】
メモリ領域２１２０の不足が検知されると、ＤＢバッファ管理部２１１１は、ＤＢバッファ２１３０の容量を削減して、インメモリ型データベースのメモリ領域２１２０に加えることで、主記憶装置２１０４の資源を無駄なく利用しながらインメモリ型データベースの性能を確保することができる。
【０１１１】
ＤＢバッファ管理部２１１１は、インメモリ型データベースのメモリ領域２１２０を拡張する単位（比率）をメモリ領域情報８０５０のメモリＤＢ拡張割合８０５２として保持する。そして、ＤＢバッファ管理部２１１１のＤＢバッファ解放対象決定部２１１２は、メモリ領域２１２０を拡張する度に、現在のメモリ領域２１２０の容量８０５１にメモリＤＢ拡張割合８０５２を乗じて、今回追加するメモリ領域拡張サイズ８０５３を求める。
【０１１２】
ＤＢバッファ解放対象決定部２１１２は、まず、アクセス頻度の少ない順にセカンダリインデクスを解放対象としてＤＢバッファ解放操作リスト８０７０に追加する。そして、ＤＢバッファ解放対象決定部２１１２は、解放するセカンダリインデクスの容量の総和がメモリ領域拡張サイズ８０５３に満たない場合は、ＤＢバッファ２１３０上の表の一部を外部記憶装置２２００に書き戻すよう外部記憶装置入出力インターフェース２１０３に指令した後、当該表の一部を削除する。ここで、表情報８０４１には、各表ＩＤ８０４１１毎に１回の削減操作でＤＢバッファ２１３０から書き戻す比率を削減割合８０４１５として予め設定しておく。そして、ＤＢバッファ解放対象決定部２１１２は、ＤＢバッファ解放対象リスト８０６０からアクセス頻度の低い順に解放容量８０７２を順次決定してＤＢバッファ解放操作リスト８０７０に追加する処理を、メモリ領域拡張サイズ８０５３を満たすまで繰り返す。
【０１１３】
このような処理により、まずアクセス頻度の低い順にセカンダリインデクスをＤＢバッファ２１３０から削除し、さらに、アクセス頻度の低い順に表の一部を所定の比率で削除することでＤＢバッファ２１３０の領域を解放することができる。なお、削除するデータは外部記憶装置２２００へ書き戻しておく。
【０１１４】
そして、ＤＢバッファ２１３０から解放した領域を、インメモリ型データベースのメモリ領域２１２０に追加することで、主記憶装置２１０４の資源を無駄なく利用しながら、インメモリ型データベースに必要な領域を迅速に確保することが可能となるのである。
【０１１５】
なお、上記実施形態では、アクセス頻度の低い表の一部を外部記憶装置２２００へ書き戻す例を示したが、アクセス頻度の低い表の全てを外部記憶装置２２００へ書き戻すようにしてもよい。
【０１１６】
また、上記実施形態では、アクセス頻度の低い順にセカンダリインデクスをＤＢバッファ解放操作リスト８０７０へ加える例を示したが、セカンダリインデクスを用いたヒット率を監視してヒット率の低いセカンダリインデクスをＤＢバッファ２１３０から削除するようにしてもよい。
【０１１７】
また、上記実施形態では、外部記憶装置２２００にデータベースを格納する例を示したが、データベース管理装置２１００内のストレージ装置またはストレージデバイスにデータベースを格納するようにしても良い。
【０１１８】
また、上記実施形態では、ＤＢバッファ解放操作リスト８０７０の表またはインデクスを外部記憶装置２２００に書き戻す例を示したが、データベース管理装置２１００のストレージ装置にＤＢバッファ解放操作リスト８０７０の表またはインデクスを移動するようにしてもよい。
【０１１９】
また、上記実施形態では、インメモリ型データベースのメモリ領域２１２０の不足または不足の予兆を契機に、ＤＢバッファ２１３０の一部を開放してメモリ領域２１２０に追加する例を示したが、データベース管理システム２１１０がインメモリ型データベースの表のデータを追加する指令を受けたときにＤＢバッファ２１３０の一部を開放してメモリ領域２１２０に追加するようにしてもよい。
【産業上の利用可能性】
【０１２０】
本発明は、インメモリ型データベースとディスク型データベースとを有するハイブリッド型データベースを提供する計算機に適用することができる。
【符号の説明】
【０１２１】
２１００  データベース管理装置
２１０２  プロセッサ
２１０３  外部記憶装置入出力インターフェース
２１０４  主記憶装置
２１１０  データベース管理システム
２１１１  ＤＢバッファ管理部
２１１２  ＤＢバッファ解放対象決定部
２１１３  ＤＢバッファ解放操作実行部
２１２０  メモリ領域
２１３０  ＤＢバッファ
２２００  外部記憶装置
８０４０  表・インデクス情報
８０５０  メモリ領域情報
【図１】
2012247901.tif 000003
【図２】
2012247901.tif 000004
【図３】
2012247901.tif 000005
【図４】
2012247901.tif 000006
【図５】
2012247901.tif 000007
【図６】
2012247901.tif 000008
【図７】
2012247901.tif 000009
【図８】
2012247901.tif 000010
【図９】
2012247901.tif 000011
【図１０】
2012247901.tif 000012
【図１１】
2012247901.tif 000013
【図１２】
2012247901.tif 000014