(57)【要約】【課題】  稼働直後におけるディスクＩ／Ｏによるボトルネックを解消するデータベース管理システム等を提供する。【解決手段】  データベース管理システム１００は、不揮発性記録媒体に格納されたデータベースのデータを格納するメモリデータ格納部１３０と、データベースの起動時に、データベースの稼働情報に関する統計情報を基に特定されたデータに対する優先順位を決定し、その優先順位が所定の順位よりも高いデータを、不揮発性記録媒体１４０からメモリデータ格納部１３０に読み込むように制御し、さらに、データのメモリデータ格納部１３０への読み込み状態を管理する制御部１１０とを含む。【選択図】  図１
2016184272.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記録媒体に格納されたデータベースのデータを格納するメモリデータ格納部と、
前記データベースの起動時に、前記データベースの稼働情報に関する統計情報を基に特定された前記データに対する優先順位を決定し、その優先順位が所定の順位よりも高い前記データを、前記不揮発性記録媒体から前記メモリデータ格納部に読み込むように制御し、さらに、前記データの前記メモリデータ格納部への読み込み状態を管理する制御部と
を備える
データベース管理システム。
【請求項２】
前記制御部は、前記統計情報である前記データへのアクセス回数が多い前記データを優先して、前記メモリデータ格納部に読み込むように制御する
請求項１記載のデータベース管理システム。
【請求項３】
前記制御部は、前記統計情報である前記データへのアクセス回数を前記データのサイズで割ることにより求めた参照密度が高い前記データを優先して、前記メモリデータ格納部に読み込むように制御する
請求項１記載のデータベース管理システム。
【請求項４】
前記制御部は、前記統計情報の一部に相当する、収集された時期がある時期から現在までの前記統計情報を基に、前記メモリデータ格納部に読み込むように制御する
請求項１乃至３の何れか一項に記載のデータベース管理システム。
【請求項５】
前記制御部は、あらかじめ定めた前記データに対する優先度が高いデータを優先して、前記メモリデータ格納部に読み込むように制御する
請求項１乃至４の何れか一項に記載のデータベース管理システム。
【請求項６】
請求項１乃至５の何れか一項に記載の前記データベース管理システムは、インメモリデータベース管理システムである。
【請求項７】
不揮発性記録媒体に格納されたデータベースのデータを格納するメモリデータ格納部へのバッファリング方法であって、
前記データベースの起動時に、前記データベースの稼働情報に関する統計情報を基に特定された前記データに対する優先順位を決定し、その優先順位が所定の順位よりも高い前記データを、前記不揮発性記録媒体から前記メモリデータ格納部に読み込むように制御し、さらに、前記データの前記メモリデータ格納部への読み込み状態を管理する
バッファリング方法。
【請求項８】
不揮発性記録媒体に格納されたデータベースのデータを格納するメモリデータ格納部を備えるコンピュータに、
前記データベースの起動時に、前記データベースの稼働情報に関する統計情報を基に特定された前記データに対する優先順位を決定し、その優先順位が所定の順位よりも高い前記データを、前記不揮発性記録媒体から前記メモリデータ格納部に読み込むように制御し、さらに、前記データの前記メモリデータ格納部への読み込み状態を管理する制御機能と
を、実現させる
コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理システムおよびそのバッファリング方法に関する。
【背景技術】
【０００２】
近年の半導体技術の進歩により、コンピュータシステムのメモリに格納可能なデータ量が、飛躍的に増大している。メモリのデータ容量の増大を利用して、ハードディスクなどのストレージ内のデータベースのデータを全てメモリに格納することにより、ストレージのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）負荷を削減し性能を向上させるインメモリデータベース管理システムが登場している。
【０００３】
インメモリデータベース管理システムは、格納しているデータをメモリに保有することによりハードディスクなどに代表されるストレージのＩ／Ｏ負荷を削減し、また、データベースの演算処理性能を向上させている。しかしながら、例えば、セキュリティパッチを適用時にＯＳを再起動した場合、データベース管理システムを再起動する必要がある。また、サーバを冗長化させたクラスタリングシステムにおいて主系のシステムに故障が発生したためにフェイルオーバを行う場合にもデータベース管理システムを再起動する必要がある。データベース管理システムを再起動した場合に、データベース全体のデータをハードディスクなどのストレージからメモリに再度読み込むことが必要となる。メモリにデータを読み込んでいる途中で、メモリに存在しないデータ（まだメモリに読み込んでいないデータ）に対して演算処理が発行されると、そのデータベースは、インメモリデータベースの特性が生かされず、期待される性能を発揮できない。
【０００４】
例えば、２０１４年現在では１台のサーバに４テラバイトのメモリを搭載可能なコンピュータがある。仮に、４テラバイトのメモリ容量を有するデータベースにおいて、１秒間に４００メガバイトのデータを読み込むとすると、ストレージからメモリへ読み込むために約１万秒の時間が必要となる。つまり、メモリへの読み込みを開始してから約３時間は、演算処理で使用するデータがメモリに格納されていない可能性がある。
【０００５】
この間に、メモリに格納されていないデータへのクエリが複数参照された場合、ストレージ内のテーブルデータを読み込む処理は、各々のクエリにより、並列に実行されることになる。そのため、ランダムアクセス性能が高くないハードディスクを利用する場合、起動直後のデータベース管理システムの性能は、さらに劣化することになってしまう。
【０００６】
ここで、関連技術としては、例えば以下の特許文献がある。
【０００７】
特許文献１は、データベース管理システムの起動時に、情報処理装置に対するユーザの用途に応じたデータをキャッシュに読み込むデータベース管理システムを開示している。
【０００８】
特許文献２は、あるデータファイルに対する検索の後に、次に検索されるデータファイルを示す情報を基に、あるデータファイルに対する検索が行われた時点で、次に検索されると予想されるデータファイルをキャッシュに読み出すデータベース検索システムを開示している。
【０００９】
特許文献３および特許文献４は、クエリを実行するためにデータベース管理システムがデータベース（ＤＢ）のデータにアクセスする場合、ＤＢへアクセス要求を発行する前に、クエリの実行時にアクセスするＤＢのデータを予測し、そのデータをキャッシュに読み出すデータベース管理システムを開示している。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００５−２６７２３２号公報
【特許文献２】特開２００４−３１０６３０号公報
【特許文献３】特開２００５−２５８７３５号公報
【特許文献４】特開２００３−１５０４１９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１乃至４に提案されている技術は、データベースに格納されているデータのうちで、一部の特定されるデータをキャッシュに読み込むことを目的としており、すべてのデータをメモリに読み込むことについては、考慮していない。
【００１２】
そこで、本発明は、稼働直後におけるディスクＩ／Ｏによるボトルネックを解消するデータベース管理システム等の提供を主たる目的とする。
【課題を解決するための手段】
【００１３】
上記の目的を達成すべく、本発明の一態様に係るデータベース管理システムは、以下の構成を備える。
【００１４】
即ち、本発明の一態様に係るデータベース管理システムは、
不揮発性記録媒体に格納されたデータベースのデータを格納するメモリデータ格納部と、
前記データベースの起動時に、前記データベースの稼働情報に関する統計情報を基に特定された前記データに対する優先順位を決定し、その優先順位が所定の順位よりも高い前記データを、前記不揮発性記録媒体から前記メモリデータ格納部に読み込むように制御し、さらに、前記データの前記メモリデータ格納部への読み込み状態を管理する制御部と
を備える。
【００１５】
同目的を達成する本発明の一態様に係るバッファリング方法は、
不揮発性記録媒体に格納されたデータベースのデータを格納するメモリデータ格納部へのバッファリング方法であって、
前記データベースの起動時に、前記データベースの稼働情報に関する統計情報を基に特定された前記データに対する優先順位を決定し、その優先順位が所定の順位よりも高い前記データを、前記不揮発性記録媒体から前記メモリデータ格納部に読み込むように制御し、さらに、前記データの前記メモリデータ格納部への読み込み状態を管理する。
【００１６】
更に、同目的は、上記構成を有するデータベース管理システム、或いは、バッファリング方法を、コンピュータによって実現するコンピュータ・プログラム、及びそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１７】
上記の本発明によれば、データベース管理システムの稼働直後におけるディスクＩ／Ｏによるボトルネックを解消することができるという効果がある。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態に係るデータベース管理システムの構成を示すブロック図である。
【図２】本発明の第２の実施形態に係るデータベース管理システムの構成を示すブロック図である。
【図３】本発明の第２の実施形態に係るデータベース管理システムが管理するテーブルを説明する図である。
【図４】本発明の第２の実施形態に係る統計情報の一例を説明する図である。
【図５】本発明の第２の実施形態に係るメモリ情報の一例を説明する図である。
【図６】本発明の第２の実施形態に係るメモリデータ格納部にデータを読み込む処理を示すフローチャートである。
【図７】本発明の第２の実施形態に係る統計情報の一例を説明する図である。
【図８】本発明の第３の実施形態に係るメモリデータ格納部にデータを読み込む処理を示すフローチャートである。
【図９】本発明の第４の実施形態に係るデータベース管理システムの構成を示すブロック図である。
【図１０】本発明の第４の実施形態に係るメモリデータ格納部にデータを読み込む処理を示すフローチャートである。
【図１１】本発明の第４の実施形態に係る優先度情報の一例を説明する図である。
【図１２】本発明の第１乃至４の実施形態を実現可能なコンピュータ（情報処理装置）のハードウェア構成を例示的に説明する図である。
【発明を実施するための形態】
【００１９】
次に、本発明を実施する形態について図面を参照して詳細に説明する。
【００２０】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係るデータベース管理システムの構成を示すブロック図である。
【００２１】
本実施形態に係るデータベース管理システム１００は、制御部１１０と、メモリデータ格納部１３０とを有する。
【００２２】
メモリデータ格納部１３０は、不揮発性記録媒体１４０に格納されたデータベースのデータを格納する。
【００２３】
制御部１１０は、データベースの起動時に、データベースの稼働情報に関する統計情報を基に特定されたデータに対する優先順位を決定する。そして、制御部１１０は、その優先順位が所定の順位よりも高いデータを、制御部１１０が不揮発性記録媒体１４０からメモリデータ格納部１３０に読み込む（ロードする）ように制御し、そのデータのメモリデータ格納部１３０への読み込み（ロード）状態を管理する。
【００２４】
以上、説明したように、第１の実施形態には、データベース管理システムの稼働直後におけるディスクＩ／Ｏによるボトルネックを解消することができるという効果がある。
【００２５】
その理由は、データベース管理システム１００においてデータベースの稼働情報に関する統計情報を基に決定した優先順位が高いデータから優先してメモリデータ格納部１３０に読み込むことにより、データベース管理システム１００が受け付けた問い合わせを処理するために必要なデータがメモリに存在する可能性が高まるからである。
【００２６】
＜第２の実施形態＞
次に上述した第１の実施形態に係るデータベース管理システム１００を基本とする第２の実施形態について説明する。図２は、本発明の第２の実施形態に係るデータベース管理システムの構成を示すブロック図である。ただし、図２に示す構成は、一例であって、本発明は、図２に示すデータベース管理システム２に限定されない。
【００２７】
図２を参照すると、本実施形態は、データベースクライアント１と、データベース管理システム２とを含む。本実施形態におけるデータベース管理システム２は、１台の情報処理装置としているが、これに限らず、分散データベース管理システムのように複数の情報処理装置から構成されるデータベース管理システムでもよい。また、データベースクライアント１とデータベース管理システム２は、ネットワークによって接続されていても、同一情報処理装置であっても構わない。
【００２８】
データベース管理システム２は、解析部２１と、計画部２２と、実行部２３と、メモリデータ格納部２４と、ストレージデータ格納部２５とを備えている。解析部２１と、計画部２２と、実行部２３とは、第１の実施形態の制御部１１０の一例である。ストレージデータ格納部２５は、第１の実施形態の不揮発性記録媒体１４０の一例である。データベース管理システム２は、データベースクライアント１から問い合わせ（クエリ）を受ける。そして、データベース管理システム２は、問い合わせの内容に応じて、データの挿入や検索、更新を行った結果をデータベースクライアント１に返却する。
【００２９】
データベース管理システム２は、データベースクライアント１から、ユーザが必要とするテーブルを使用可能とするために、データベースのスキーマ定義を作成するように指示を受ける。スキーマ定義は、一般的に、ＳＱＬ言語によって行われる場合が多いが、その手法は、限定されない。このスキーマ定義情報は、解析部２１、計画部２２および実行部２３を経由して表定義情報２４１１に格納されている。
【００３０】
解析部２１は、データベースクライアント１から発行されたＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）などの問い合わせ言語の内容を確認し、その内容について構文解析を実行する。
【００３１】
計画部２２は、解析部２１により解析した問い合わせの内容を、どのような順番や方法で実行すれば最も効率的であるかを判定し、その実行計画を作成する。
【００３２】
なお、データベースクライアント１からのクエリが、ＳＱＬ言語ではなく、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）等による実行部２３へのデータ操作命令である場合、そのクエリは、解析部２１ではなく、実行部２３に入力される。
【００３３】
実行部２３は、計画部２２で作成した実行計画によるデータ操作命令、またはデータベースクライアント１から入力されたデータ操作命令を受けて、メモリデータ格納部２４の管理情報２４１やユーザ情報２４２に向けてクエリを実行する。実行部２３は、一般に、データベースのエグゼキュータと言われる部分に相当する。
【００３４】
実行部２３は、管理部２３１を有する。管理部２３１は、ストレージデータ格納部２５からメモリデータ格納部２４へのデータの読み込み状態を管理する。すなわち、管理部２３１は、メモリデータ格納部２４へのデータの読み込みや、メモリデータ格納部２４からのデータの読み出し、メモリデータ格納部２４に格納されたデータの入替などを制御する。データベース管理システム２の起動時に、管理部２３１は、ストレージデータ格納部２５に格納されたデータのうちで、起動直後に利用される可能性の高いデータから順番に、メモリデータ格納部２４に読み込むように制御する。
【００３５】
メモリデータ格納部２４は、データベース管理システム２が利用するメモリ領域またはメモリデバイスである。メモリデータ格納部２４は、管理情報２４１と、ユーザ情報２４２とを含む。
【００３６】
管理情報２４１は、表定義情報２４１１と、統計情報２４１２と、メモリ情報２４１３とを含む。表定義情報２４１１は、リレーショナルデータモデルでの表（テーブル）やインデックスなどの定義や、それらのデータがどのデバイスのどの位置に格納されているかという、データベースにおいて一般的に保持される情報である。これは、一般的にシステム表やシステムカタログなどと呼ばれる。統計情報２４１２は、ある特定の期間のデータベースの稼働情報の統計情報であり、データベースの使用状況を示す情報である。統計情報２４１２は、例えば、テーブルのデータ量やアクセス回数、レコード件数やレコード長などのデータベースに関する情報が含まれる。これは、一般的なリレーショナルデータベースにおいて収集される情報である。メモリ情報２４１３は、表定義情報２４１１で定義されたテーブルのデータが、ストレージデータ格納部２５からテーブルデータ２４２１に読み込まれているか否かを示す情報である。
【００３７】
ユーザ情報２４２は、テーブルデータ２４２１と、一時情報２４２２とを含む。テーブルデータ２４２１は、表定義情報２４１１に基づいたデータベースの実データやインデックスデータである。一時情報２４２２は、クエリを実行する際に一時的に発生するデータである。一時情報２４２２は、例えば、複数のステップからなるクエリを実行したときに、途中のステップを実行した結果を表すデータである。
【００３８】
ストレージデータ格納部２５は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの不揮発性の特性を持つ外部記憶装置である。ストレージデータ格納部２５は、管理情報２５１と、テーブルデータ２５２とを含む。管理情報２５１は、表定義情報２５１１と、統計情報２５１２と、メモリ情報２５１３とを含む。
【００３９】
これにより、データベース管理システム２は、データベース管理システム２の停止などにより、メモリデータ格納部２４に格納された情報がなくなった場合にも、データを失うことがない。データベース管理システム２を再起動した場合、前述したように、ストレージデータ格納部２５に格納されたデータは、メモリデータ格納部２４へ読み込まれる。これにより、データベース管理システム２は、クエリの実行に必要なメモリデータ格納部２４内のデータを、停止する前と同様の状態にして稼働することが可能になる。データベース管理システム２は、メモリデータ格納部２４内のデータを使用することにより動作し、例えば、チェックポイントで、そのデータをストレージデータ格納部２５に格納する。
【００４０】
図３は、本発明の第２の実施形態に係るデータベース管理システムが管理するテーブルを説明する図である。図３に示すように、データベース管理システム２は、顧客マスタテーブル、商品カテゴリテーブル、商品マスタテーブル、店舗マスタテーブルおよび担当者マスタテーブルという各種マスタテーブルと、２０１４年１月〜２０１５年１月までの月ごとの売上テーブルとを含む。具体的には、顧客マスタテーブルは、格納平均レコード長が約２００ｂｙｔｅのレコードを１千万件保有している。商品カテゴリテーブルは、格納平均レコード長が約５０Ｂｙｔｅのレコードを２０００件保有している。商品マスタテーブルは、格納平均レコード長が２５０ｂｙｔｅのレコードを５００万件保有している。店舗マスタテーブルは、格納平均レコード長が４００ｂｙｔｅのレコードを２０００件保有している。担当者マスタテーブルは、格納平均レコード長が４００ｂｙｔｅのレコードを５０００件保有している。これらのテーブルは、いわゆるＤＷＨ（Ｄａｔａ  Ｗａｒｅ  Ｈｏｕｓｅ）でのスタースキーマをイメージしている。
【００４１】
図４は、本発明の第２の実施形態に係る統計情報の一例を説明する図である。図４によれば、統計情報２４１２は、テーブル名と、アクセス回数と、テーブルサイズとを含む。すなわち、テーブル名と、アクセス回数と、テーブルサイズとは、統計情報２４１２において、図４に概念的に示すテーブルの如く関連付けされていることとする。テーブル名は、テーブルを一意に識別可能な値である。アクセス回数は、テーブルに対してアクセスした回数である。テーブルサイズは、テーブルのデータサイズを表す値である。
【００４２】
図５は、本発明の第２の実施形態に係るメモリ情報の一例を説明する図である。メモリ情報２４１３は、テーブル名と、メモリ読み込み状態とを含む。すなわち、テーブル名と、メモリ読み込み状態とは、メモリ情報２４１３において、図５に概念的に示すテーブルの如く関連付けされていることとする。テーブル名は、テーブルを一意に識別可能な値である。メモリ読み込み状態は、ストレージデータ格納部２５のテーブルデータ２５２の、メモリデータ格納部２４のテーブルデータ２４２１への読み込みがどのような状態になっているかを示す値が設定される。すなわち、メモリ読み込み状態は、読み込み済の場合に「読み込み済」を、まだ読み込んでいない場合に「未読み込み」を、または、クエリの実行に必要なため読み込んでいる場合に「クエリ対応で読み込み中」を示す値が設定される。
【００４３】
図６を用いて、データベース管理システム２が起動直後にメモリデータ格納部２４にデータを読み込む処理の流れを説明する。図６は、本発明の第２の実施形態に係るメモリデータ格納部にデータを読み込む処理を示すフローチャートである。
【００４４】
起動後、実行部２３は、管理部２３１を経由して、ストレージデータ格納部２５から、管理情報２５１を読み出す(ステップＳ１１０）。そして、実行部２３は、読み出した管理情報２５１を、メモリデータ格納部２４に格納する(ステップＳ１２０）。すなわち、実行部２３は、ストレージデータ格納部２５から管理情報２５１をメモリデータ格納部２４に読み込む。これによって、表定義情報２５１１は、表定義情報２４１１に、統計情報２５１２は、統計情報２４１２に、メモリ情報２５１３は、メモリ情報２４１３に反映される。すなわち、データベース管理システム２は、いわゆるデータベースのスキーマ情報を取得する。この時点で、データベース管理システム２は、データベースクライアント１からのクエリを受け付けることが可能になる。
【００４５】
これ以降、クエリが発行されて必要となるテーブルがユーザ情報２４２に存在しない場合、実行部２３は、管理部２３１を経由して、ステップＳ１３０以降で説明するテーブルデータ２５２をメモリデータ格納部２４へ読み込む処理とは別に（読み込む処理と並行して）、ストレージデータ格納部２５から、そのテーブルのデータを読み出す。この場合、管理部２３１は、該当のテーブルデータの読み込みを開始したことをメモリ情報２４１３に記録する。すなわち、管理部２３１は、該当のテーブルに対応するメモリ読み込み状態に、「クエリ対応で読み込み中」を示す値を設定する。
【００４６】
実行部２３は、管理部２３１を経由して、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」で、統計情報２４１２のアクセス回数が一番多いテーブル名を有するストレージデータ格納部２５のテーブルデータ２５２を読み出す（ステップＳ１３０）。例えば、メモリ情報２４１３が図５、統計情報２４１２が図４に示す内容である場合、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」であるテーブルのうち、統計情報２４１２のアクセス回数が一番多いテーブルは、商品カテゴリテーブルである。よって、実行部２３は、商品カテゴリテーブルを読み出す。
【００４７】
そして、実行部２３は、読み出したテーブルデータ２５２を、メモリデータ格納部２４のテーブルデータ２４２１に格納する(ステップＳ１４０）。データを格納後、管理部２３１は、メモリ情報２４１３の該当するテーブルに対応するメモリ読み込み状態を、「読み込み済」を示す値に更新する。データを読み込む単位は、テーブルが挙げられるが、例えば、カラムストア型データモデルを採用している場合、列であることも可能であり、固定されるものではない。また、データを読み込む対象となるテーブルは、ユーザが作成したテーブルに限らず、インデックスなどのようにユーザがデータの格納を指示することがないテーブルも含まれる。
【００４８】
すべてのデータの読み込みが完了するまで（ステップＳ１５０にて「Ｙｅｓ」）、すなわち、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」であるテーブルがなくなるまで、実行部２３は、ステップＳ１３０からステップＳ１５０までの処理を繰り返す。
【００４９】
また、管理部２３１は、メモリ読み込み状態を「クエリ対応で読み込み中」と設定したテーブルについても、読み込みが完了したら、「読み込み済」と設定する。
【００５０】
ここまでは、管理部２３１が、統計情報２４１２のアクセス回数を基に、データを読み込む順番を決定する方式について説明した。しかし、順番の決定に用いるデータは、アクセス回数に限定されない。
【００５１】
例えば、読み込みにかかる時間を考えると、実行部２３は、単にアクセス回数が多いデータを読み込むよりも、サイズあたりのアクセス回数が多いデータを優先して読み込んだほうが効率が良い。そこで、管理部２３１は、統計情報２４１２に含まれるアクセス回数をテーブルサイズで割った値を求め、求めた値（ここでは参照密度と呼ぶ）が高いデータを優先して読み込むように制御してもよい。
【００５２】
図７は、本発明の第２の実施形態に係る統計情報の一例を説明する図である。図７は、図４に示した統計情報２４１２に、参照密度を追加したものである。図７に示すように、参照密度は、テーブルごとに、アクセス回数をテーブルサイズで割ることにより求めた値である。管理部２３１は、図６のＳ１３０において、アクセス回数が多いデータの代わりに、参照密度が高いデータを優先して読み込む。
【００５３】
参照密度を用いた場合、テーブルサイズに対してアクセス回数が多いデータが優先してメモリデータ格納部２４に読み込まれるようになり、読み込みが効率的に行われる。ただし、メモリデータ格納部２４に読み込みデータ量が大きいものが格納されているほうが性能への効果がより発揮されるため、一概に小さいテーブルを優先させるのが正しいとは限らない。これについては、データベースの利用特性に合わせて選択をすればよい。
【００５４】
本実施形態は、テーブルデータ２５２のすべてのデータをメモリデータ格納部２４に格納しているが、通常のデータベースのキャッシュとして一部のテーブルデータを格納してもよい。
【００５５】
以上、説明したように、第２の実施形態には、データベース管理システムの稼働直後におけるディスクＩ／Ｏによるボトルネックを解消することができるという効果がある。
【００５６】
その理由は、データベース管理システム２においてデータベースの稼働情報に関する統計情報を基に決定した優先順位が高いデータから優先してメモリデータ格納部２４に読み込むことにより、データベース管理システム２が受け付けた問い合わせを処理するために必要なデータがメモリに存在する可能性が高まるからである。
【００５７】
＜第３の実施形態＞
次に上述した第２の実施形態に係るデータベース管理システム２を基本とする第２の実施形態について説明する。
【００５８】
本実施形態の構成は、図２に示した第２の実施形態と同じである。
【００５９】
第３の実施形態は、管理部２３１がテーブルデータ２４２１にストレージデータ格納部２５からデータを読み込む際に、管理部２３１は、まず、直近の一定時間（例えば１０分間など）にアクセスしたテーブルについて、アクセス回数の多いテーブルから読み込みを行うように制御する。そして、直近の一定時間にアクセスしたテーブルのすべての読み込みが完了した後で、管理部２３１は、読み込みを行っていないテーブルの中で、改めてアクセス回数の多いテーブルから読み込むように制御する。
【００６０】
図８を用いて、データベース管理システム２が起動直後にメモリデータ格納部２４にデータを読み込む処理の流れを説明する。図８は、本発明の第３の実施形態に係るメモリデータ格納部にデータを読み込む処理を示すフローチャートである。
【００６１】
起動後、実行部２３は、管理部２３１を経由して、ストレージデータ格納部２５から、管理情報２５１を読み出す(ステップＳ２１０）。そして、実行部２３は、読み出した管理情報２５１を、メモリデータ格納部２４に格納する(ステップＳ２２０）。すなわち、実行部２３は、ストレージデータ格納部２５から管理情報２５１をメモリデータ格納部２４に読み込む。これによって、表定義情報２５１１は、表定義情報２４１１に、統計情報２５１２は、統計情報２４１２に、メモリ情報２５１３は、メモリ情報２４１３に反映される。すなわち、データベース管理システム２は、いわゆるデータベースのスキーマ情報を取得する。この時点で、データベース管理システム２は、データベースクライアント１からのクエリを受け付けることが可能になる。
【００６２】
これ以降、クエリが発行されて必要となるテーブルがユーザ情報２４２に存在しない場合、実行部２３は、管理部２３１を経由して、ステップＳ２３０以降で説明するテーブルデータ２５２をメモリデータ格納部２４へ読み込む処理とは別に（読み込む処理と並行して）、ストレージデータ格納部２５から、そのテーブルのデータを読み出す。この場合、管理部２３１は、該当のテーブルデータの読み込みを開始したことをメモリ情報２４１３に記録する。すなわち、管理部２３１は、該当のテーブルに対応するメモリ読み込み状態に、「クエリ対応で読み込み中」を示す値を設定する。
【００６３】
管理部２３１は、直近の一定時間（例えば１０分間）にアクセスしたテーブルの一覧を取得する（ステップＳ２３０）。すなわち、管理部２３１は、直近の一定時間の稼働状況に関する統計情報２４１２を基に、アクセスしたテーブルを求め、そのテーブルの一覧を作成する。
【００６４】
実行部２３は、管理部２３１を経由して、その一覧にあるテーブルのうち、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」で、統計情報２４１２のアクセス回数が一番多いテーブル名を有するストレージデータ格納部２５のテーブルデータ２５２を読み出す（ステップＳ２４０）。
【００６５】
そして、実行部２３は、読み出したテーブルデータ２５２を、メモリデータ格納部２４のテーブルデータ２４２１に格納する(ステップＳ２５０）。データを格納したら、管理部２３１は、メモリ情報２４１３の該当するテーブルに対応するメモリ読み込み状態を、「読み込み済」を示す値に更新する。
【００６６】
一覧にあるすべてのテーブルのデータの読み込みが完了するまで（ステップＳ２６０にて「Ｙｅｓ」）、すなわち、一覧にあるテーブルに、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」であるテーブルがなくなるまで、実行部２３は、ステップＳ２４０からステップＳ２６０までの処理を繰り返す。
【００６７】
次に、実行部２３は、管理部２３１を経由して、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」で、統計情報２４１２のアクセス回数が一番多いテーブル名を有するストレージデータ格納部２５のテーブルデータ２５２を読み出す（ステップＳ２７０）。
【００６８】
そして、実行部２３は、読み出したテーブルデータ２５２を、メモリデータ格納部２４のテーブルデータ２４２１に格納する(ステップＳ２８０）。データを格納したら、管理部２３１は、メモリ情報２４１３の該当するテーブルに対応するメモリ読み込み状態を、「読み込み済」を示す値に更新する。データを読み込む単位は、まずテーブルが挙げられるが、例えば、カラムストア型データモデルを採用している場合、列であることも可能であり、固定されるものではない。また、データを読み込むテーブルは、ユーザが作成したテーブルに限らず、インデックスなどのようにユーザがデータの格納を指示することがないテーブルも含まれる。
【００６９】
すべてのデータの読み込みが完了するまで（ステップＳ２９０にて「Ｙｅｓ」）、すなわち、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」であるテーブルがなくなるまで、実行部２３は、ステップＳ２７０からステップＳ２９０までの処理を繰り返す。
【００７０】
また、管理部２３１は、メモリ読み込み状態を「クエリ対応で読み込み中」と設定したテーブルについても、読み込みが完了したら、「読み込み済」と設定する。
【００７１】
ステップＳ２７０において、実行部２３は、アクセス回数が多いデータから読み込むこととして説明したが、アクセス回数が多いデータから読み込むと限定しない。実行部２３は、上述の参照密度を用いてもよいし、統計情報２４１２を基にした他の値により判定してもよい。
【００７２】
以上、説明したように、第３の実施形態には、データベース管理システムの稼働直後におけるディスクＩ／Ｏによるボトルネックを解消することができるという効果がある。
【００７３】
その理由は、データベース管理システム２において、直近で参照されたデータを優先してメモリデータ格納部２４に読み込むことにより、データベースクライアント１から発行されるクエリに必要なデータがメモリに存在する可能性が高まるからである。
【００７４】
第３の実施形態は、データベース管理システム２を停止する直前のアクセス状況がデータベース管理システム２の起動直後にアクセスされる傾向と同様である場合、例えばクラスタ構成によるフェイルオーバ直後の場合に、メモリに読み込む効率が高まることが可能となる。
【００７５】
＜第４の実施形態＞
次に上述した第２の実施形態に係るデータベース管理システムを基本とする第４の実施形態について説明する。
【００７６】
本発明の第４の実施形態の構成について図９を参照して説明する。
【００７７】
本発明の第４の実施形態の構成は、図２に示した第２の実施形態の構成に、優先度情報１４１４と、優先度情報２５１４を追加した構成である。
【００７８】
優先度情報２４１４は、データベース管理システム３が起動直後に読み出すデータの順番を指定している。
【００７９】
図１１は、本発明の第４の実施形態に係る優先度情報の一例を説明する図である。図１１によれば、優先度情報２４１４は、優先度と、テーブル名とを含む。すなわち、優先度と、テーブル名とは、優先度情報２４１４において、図１１に概念的に示すテーブルの如く関連付けされていることとする。優先度は、メモリデータ格納部２４に優先して読み込むことが必要とされる尺度である。テーブル名は、テーブルを一意に識別可能な値である。優先度情報２４１４を設定する方法は、限定されない。例えば、ユーザは、データベースクライアント１からクエリを発行して定義を行ってもよいし、データベース管理システム３の開発提供者が汎用的なルールをテンプレート化して提供してもよい。
【００８０】
図１０を用いて、データベース管理システム３が起動直後にメモリデータ格納部２４にデータを読み込む処理の流れを説明する。図１０は、本発明の第４の実施形態に係るメモリデータ格納部にデータを読み込む処理を示すフローチャートである。
【００８１】
起動後、実行部２３は、管理部２３１を経由して、ストレージデータ格納部２５から、管理情報２５１を読み出す(ステップＳ３１０）。そして、実行部２３は、読み出した管理情報２５１を、メモリデータ格納部２４に格納する(ステップＳ３２０）。すなわち、実行部２３は、ストレージデータ格納部２５から管理情報２５１をメモリデータ格納部２４に読み込む。これによって、表定義情報２５１１は、表定義情報２４１１に、統計情報２５１２は、統計情報２４１２に、メモリ情報２５１３は、メモリ情報２４１３に反映される。すなわち、データベース管理システム３は、いわゆるデータベースのスキーマ情報を取得する。この時点で、データベース管理システム３は、データベースクライアント１からのクエリを受け付けることが可能になる。
【００８２】
これ以降、クエリが発行されて必要となるテーブルがユーザ情報２４２に存在しない場合、実行部２３は、管理部２３１を経由して、ステップＳ３３０以降で説明するテーブルデータ２５２をメモリデータ格納部２４へ読み込む処理とは別に（読み込む処理と並行して）、ストレージデータ格納部２５から、そのテーブルのデータを読み出す。この場合、管理部２３１は、該当のテーブルデータの読み込みを開始したことをメモリ情報２４１３に記録する。すなわち、管理部２３１は、該当のテーブルに対応するメモリ読み込み状態に、「クエリ対応で読み込み中」を示す値を設定する。
【００８３】
実行部２３は、管理部２３１を経由して、優先度情報２４１４にあるテーブルのうち、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」で、優先度情報２４１４の優先度が一番高いテーブル名を有するストレージデータ格納部２５のテーブルデータ２５２を読み出す（ステップＳ３３０）。
【００８４】
そして、実行部２３は、読み出したテーブルデータ２５２を、メモリデータ格納部２４のテーブルデータ２４２１に格納する(ステップＳ３４０）。データを格納したら、管理部２３１は、メモリ情報２４１３の該当するテーブルに対応するメモリ読み込み状態を、「読み込み済」を示す値に更新する。
【００８５】
優先度情報２４１４にあるすべてのテーブルのデータの読み込みが完了するまで（ステップＳ３５にて「Ｙｅｓ」）、すなわち、優先度情報２４１４にあるテーブルに、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」であるテーブルがなくなるまで、実行部２３は、ステップＳ３３０からステップＳ３５０までの処理を繰り返す。
【００８６】
実行部２３は、管理部２３１を経由して、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」で、統計情報２４１２のアクセス回数が一番多いテーブル名を有するストレージデータ格納部２５のテーブルデータ２５２を読み出す（ステップＳ３６０）。
【００８７】
そして、実行部２３は、読み出したテーブルデータ２５２を、メモリデータ格納部２４のテーブルデータ２４２１に格納する(ステップＳ３７０）。データを格納したら、管理部２３１は、メモリ情報２４１３の該当するテーブルに対応するメモリ読み込み状態を、「読み込み済」を示す値に更新する。データを読み込む単位は、まずテーブルが挙げられるが、例えば、カラムストア型データモデルを採用している場合、列であることも可能であり、固定されるものではない。また、データを読み込むテーブルは、ユーザが作成したテーブルに限らず、インデックスなどのようにユーザがデータの格納を指示することがないテーブルも含まれる。
【００８８】
すべてのデータの読み込みが完了するまで（ステップＳ３８０にて「Ｙｅｓ」）、すなわち、メモリ情報２４１３のメモリ読み込み状態が「未読み込み」であるテーブルがなくなるまで、実行部２３は、ステップＳ３６０からステップＳ３８０までの処理を繰り返す。
【００８９】
また、管理部２３１は、メモリ読み込み状態を「クエリ対応で読み込み中」と設定したテーブルについても、読み込みが完了したら、「読み込み済」と設定する。
【００９０】
ステップＳ３６０において、実行部２３は、アクセス回数が多いデータから読み込むこととして説明したが、アクセス回数が多いデータから読み込むと限定しない。実行部２３は、上述の参照密度を用いてもよいし、統計情報２４１２を基にした他の値により判定してもよい。
【００９１】
統計情報は、過去の状態を一定間隔にわたって取得したものであり、今後のデータベースの利用状況とマッチするとは限らない。例えば、毎月１０日までに過去一か月の売上情報をもとにレポートが作成され、それ以降は過去のデータがあまり参照されないようなる業務ケースだった場合、１１日以降は、過去のアクセス回数などは参考にならない。そのような場合に、図１１に示す売上テーブルのように、場合分けして定義することにより、利用効率の高いテーブルが、メモリデータ格納部２４に読み込まれるようになる。
【００９２】
以上、説明したように、第４の実施形態には、データベース管理システムの稼働直後におけるディスクＩ／Ｏによるボトルネックを解消することができるという効果がある。
【００９３】
その理由は、データベース管理システム３において、あらかじめ指定した優先度が高いデータからメモリデータ格納部２４に読み込むことにより、クライアントから発行されるクエリに必要なデータがメモリに存在する可能性が高まるからである。
【００９４】
第４の実施形態は、起動直後のメモリの利用効率が高いテーブルがルール化できる場合には、そのルールを反映した優先度をユーザが定義することにより、データベース管理システム３の利用方法に即した起動直後のメモリへの読み込みが可能となる。
【００９５】
（ハードウェア構成）
上述した実施形態において図１、図２および図９に示した各部は、専用の装置によって実践してもよいが、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の実装に際しては、様々な構成が想定され得る。このような場合のハードウェア環境の一例を、図１２を参照して説明する。
【００９６】
図１２は、本発明の第１乃至４の実施形態を実現可能なコンピュータ（情報処理装置）のハードウェア構成を例示的に説明する図である。即ち、図１２は、図１に示したデータベース管理システム１００、図２に示したデータベース管理システム２および図９に示したデータベース管理システム３の全体または一部を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００９７】
図１２に示した情報処理装置９０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９００１、ディスプレイ９００２、通信インタフェース（Ｉ／Ｆ）９００３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９００４、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９００５、ハードディスク装置（ＨＤ）９００６を備え、これらがバス９００７を介して接続された構成を有する。ハードディスク装置（ＨＤ）９００６には、プログラム群９００６Ａと、各種の記憶情報９００６Ｂとが格納されている。プログラム群９００６Ａは、例えば、上述した図１に示したデータベース管理システム１００、図２に示したデータベース管理システム２および図９に示したデータベース管理システム３の各ブロック（各部）に対応する機能を実現するためのコンピュータ・プログラムである。各種の記憶情報９００６Ｂは、例えば、図１に示した不揮発性記録媒体１４０、図２および図９に示したストレージデータ格納部２５である。通信インタフェース９００３は、ネットワーク９１００を介して外部装置と通信を実現する一般的な通信手段である。
【００９８】
そして、情報処理装置９０００は、前述の実施形態の説明において参照したブロック図、あるいは、フローチャートの機能を実現可能なコンピュータ・プログラムを、当該ハードウェアのＣＰＵ９００１が実行する。すなわち、ＣＰＵ９００１は、コンピュータ・プログラムを、図８に示す情報処理装置９０００のハードウェア資源を用いて実行することによって本発明の実施形態の機能が達成される。具体的には、データベース管理システム２を、情報処理装置９０００によって実現する場合、情報処理装置９０００は、図６および図８に示すフローチャートの処理ステップを実行するためのコンピュータ・プログラムをＣＰＵ９００１が実行すればよい。データベース管理システム３を、情報処理装置９０００によって実現する場合、情報処理装置９０００は、図１０に示すフローチャートの処理ステップを実行するためのコンピュータ・プログラムをＣＰＵ９００１が実行すればよい。また、情報処理装置９０００内に供給されたコンピュータ・プログラムは、読み書き可能なＲＡＭ９００５、またはハードディスク装置９００６等の不揮発性の記憶デバイス（記憶媒体）に格納すればよい。
【００９９】
また、上述の場合において、当該装置内へのコンピュータ・プログラムの供給方法は、ＣＤ−ＲＯＭ等の各種記憶媒体を介して当該装置内にインストールする方法や、インターネット等のネットワーク９１００を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明の実施形態は、係るコンピュータ・プログラムを構成するコード或いは、そのコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
【符号の説明】
【０１００】
１    データベースクライアント
２    データベース管理システム
３    データベース管理システム
２１    解析部
２２    計画部
２３    実行部
２４    メモリデータ格納部
２５    ストレージデータ格納部
１００    データベース管理システム
１１０    制御部
１３０    メモリデータ格納部
１４０    不揮発性記録媒体
２３１    管理部
２４１    管理情報
２４２    ユーザ情報
２５１    管理情報
２５２    テーブルデータ
２４１１    表定義情報
２４１２    統計情報
２４１３    メモリ情報
２４１４    優先度情報
２４２１    テーブルデータ
２４２２    一時情報
２５１１    表定義情報
２５１２    統計情報
２５１３    メモリ情報
２５１４    優先度情報
９０００    情報処理装置（コンピュータ）
９００１    ＣＰＵ
９００２    ディスプレイ
９００３    通信インタフェース（Ｉ／Ｆ）
９００４    ＲＯＭ
９００５    ＲＡＭ
９００６    ハードディスク装置（ＨＤ）
９００６Ａ    プログラム群
９００６Ｂ    各種の記憶情報
９００７    バス
９１００    ネットワーク
【図１】
2016184272.tif 000003
【図２】
2016184272.tif 000004
【図３】
2016184272.tif 000005
【図４】
2016184272.tif 000006
【図５】
2016184272.tif 000007
【図６】
2016184272.tif 000008
【図７】
2016184272.tif 000009
【図８】
2016184272.tif 000010
【図９】
2016184272.tif 000011
【図１０】
2016184272.tif 000012
【図１１】
2016184272.tif 000013
【図１２】
2016184272.tif 000014