(57)【要約】データベースが格納された記憶装置と、記憶装置に格納されたデータベースの一部を記憶するメモリと、を備え、記憶装置及びメモリに格納されたデータにアクセスしてデータを処理するデータベースシステムで、表及びインデクスをメモリに記憶した場合に、インデクスを使用する場合の処理コストとインデクスを使用しない場合の処理コストとを統計情報に基づいて算出し、算出された処理コスト及びインデクスのメモリ使用量に基づいて、インデクスをメモリに配置するか否かを決定する。
2012017529.tif 000002
【特許請求の範囲】
【請求項１】
データベースシステムにおいて、データを格納する表及び当該データの格納位置を示すインデクスを含むデータベースを管理する方法であって、
前記データベースシステムは、
前記データベースを管理するデータベース管理装置と、
前記データベースを格納する記憶装置と、を有し、
前記データベース管理装置は、
前記データベースを管理するデータベース管理部と、
前記記憶装置に格納されたデータベースの一部を記憶するメモリと、を備え、
前記データベース管理部は、前記記憶装置に格納されたデータベースに含まれる表及びインデクスごとのアクセス時間を含む統計情報を管理し、
前記方法は、
前記データベースに含まれる表を選択する第１のステップと、
前記選択された表に定義可能なインデクスを特定する第２のステップと、
前記選択された表及び前記特定されたインデクスを前記メモリに記憶した場合に、前記特定されたインデクスの一部又は全部を使用して前記選択された表にアクセスするための処理コストと、前記特定されたインデクスを使用せずに前記選択された表にアクセスするための処理コストとを、前記統計情報に基づいて算出する第３のステップと、
前記選択された表を前記メモリに配置可能か否かを、前記選択された表のメモリ使用量に基づいて判定する第４のステップと、
前記選択された表を前記メモリに配置可能な場合に、前記算出された処理コスト及び前記特定されたインデクスのメモリ使用量に基づいて、前記特定されたインデクスを前記メモリに配置するか否かを決定する第５のステップと、を含むデータベース管理方法。
【請求項２】
請求項１に記載の方法であって、
前記第２のステップは、
前記選択された表に定義されたインデクスを抽出するステップと、
前記抽出されたインデクスが複数存在する場合に、当該複数のインデクスを併合することによって、新たなインデクスを生成するステップと、を含み、
前記特定されたインデクスは、前記定義されたインデクスと、前記生成されたインデクスとを含むデータベース管理方法。
【請求項３】
請求項２に記載の方法であって、
前記第３のステップは、
前記選択された表にアクセスするためのＳＱＬを抽出するステップと、
前記抽出されたＳＱＬを処理する場合に使用するインデクスを前記特定されたインデクスから選択し、前記選択された表及び前記使用するインデクスにアクセスする順序を定義したアクセスパスを生成するステップと、
前記アクセスパスごとに前記処理コストを算出する第６のステップと、を含むデータベース管理方法。
【請求項４】
請求項３に記載の方法であって、
前記統計情報は、前記抽出されたＳＱＬを処理するための第１の総所要時間をさらに含み、
前記第６のステップは、
前記第１の総所要時間と、前記アクセスパスに含まれる表及びインデクスの各アクセス時間とに基づいて、前記抽出されたＳＱＬを前記メモリに格納された表及びインデクスにアクセスして処理するための第２の総所要時間を算出するステップと、
前記第２の総所要時間に基づいて、前記アクセスパスごとの処理コストを算出するステップと、を含むデータベース管理方法。
【請求項５】
請求項４に記載の方法であって、
前記表には、前記メモリに配置する優先度が設定され、
前記第１のステップは、前記優先度に基づいて前記表を選択するデータベース管理方法。
【請求項６】
請求項５に記載の方法であって、
前記第５のステップは、
前記特定されたインデクスの少なくとも１つを使用し、かつ、前記処理コストが最小となるアクセスパスを選択するステップと、
前記選択されたアクセスパスの処理コストと、前記特定されたインデクスを使用せずに前記選択された表のみを含むアクセスパスの処理コストとの差を、第１の効果として算出するステップと、
前記優先度に基づいて前記選択された表よりも後に選択される表を、前記メモリに記憶した場合の処理コストと、前記メモリに記憶しなかった場合の処理コストとの差を、第２の効果として算出するステップと、
前記第１の効果が前記第２の効果よりも大きい場合に、前記選択されたアクセスパスに含まれるインデクスを前記メモリに配置するステップと、を含むデータベース管理方法。
【請求項７】
請求項５に記載の方法であって、
前記第１のステップは、前記優先度の指定を受け付けるステップを含むデータベース管理方法。
【請求項８】
請求項５に記載の方法であって、
前記優先度は、前記表のデータ量に基づいて設定されるデータベース管理方法。
【請求項９】
請求項５に記載の方法であって、
前記統計情報は、前記表に対するアクセス頻度を含み、
前記優先度は、前記アクセス頻度に基づいて設定されるデータベース管理方法。
【請求項１０】
請求項９に記載の方法であって、
前記アクセス頻度は、前記表に格納されたデータを参照する頻度である参照アクセス頻度と、前記表に格納されたデータを更新する頻度である更新アクセス頻度と、を含み、
前記優先度は、前記参照アクセス頻度及び前記更新アクセス頻度に基づいて設定されるデータベース管理方法。
【請求項１１】
請求項１に記載の方法であって、
前記データベースに含まれる表の指定を受け付ける第７のステップと、
前記指定された表を前記メモリに配置するか否かを示す情報を出力する第８のステップと、をさらに含むデータベース管理方法。
【請求項１２】
請求項１に記載の方法であって、
前記データベースに含まれる各表及びインデクスについて、前記メモリに配置するか否かを判定する第９のステップと、
前記メモリに配置すると判定された表及びインデクスを前記メモリに配置する第１０のステップと、をさらに含むデータベース管理方法。
【請求項１３】
データを格納する表及び当該データの格納位置を示すインデクスを含むデータベースを格納する記憶装置に接続され、前記データベースに格納された表及びインデクスの一部を記憶可能なメモリを備えるデータベース管理装置であって、
前記データベースを管理するデータベース管理部と、
前記記憶装置に格納されたデータベースの一部を記憶するメモリと、を備え、
前記データベース管理部は、
前記メモリに配置する対象となる表及びインデクスを抽出する配置対象データ情報生成部と、
前記抽出された表及びインデクスを前記メモリ配置した場合の処理コストを算出する処理コスト算出部と、
前記算出された処理コストに基づいて、前記メモリに配置する表及びインデクスを示すデータ配置プランを決定するデータ配置プラン決定部と、を有し、
前記記憶装置に格納されたデータベースに含まれる表及びインデクスごとのアクセス時間を含む統計情報を管理し、
前記配置対象データ情報生成部は、
前記データベースに含まれる表を選択し、
前記選択された表に定義可能なインデクスを特定し、
前記処理コスト算出部は、前記選択された表及び前記特定されたインデクスを前記メモリに記憶した場合に、前記特定されたインデクスの一部又は全部を使用して前記選択された表にアクセスするための処理コストと、前記特定されたインデクスを使用せずに前記選択された表にアクセスするための処理コストとを、前記統計情報に基づいて算出し、
前記データ配置プラン決定部は、
前記選択された表を前記メモリに配置可能な否かを、前記選択された表のメモリ使用量に基づいて判定し、
前記選択された表を前記メモリに配置可能な場合に、前記算出された処理コスト及び前記特定されたインデクスのメモリ使用量に基づいて、前記特定されたインデクスを前記メモリに配置するか否かを決定するデータベース管理装置。
【請求項１４】
データを格納する表及び当該データの格納位置を示すインデクスを含むデータベースを格納する記憶装置に接続され、前記データベースに格納された表及びインデクスの一部を記憶可能なメモリを備えるデータベース管理装置で実行されるプログラムであって、
前記データベース管理装置は、前記記憶装置に格納されたデータベースに含まれる表及びインデクスごとのアクセス時間を含む統計情報を管理し、
前記プログラムは、
前記データベースに含まれる表を選択する手順と、
前記選択された表に定義可能なインデクスを特定する手順と、
前記選択された表及び前記特定されたインデクスを前記メモリに記憶した場合に、前記特定されたインデクスの一部又は全部を使用して前記選択された表にアクセスするための処理コストと、前記特定されたインデクスを使用せずに前記選択された表にアクセスするための処理コストとを、前記統計情報に基づいて算出する手順と、
前記選択された表を前記メモリに配置可能な否かを、前記選択された表のメモリ使用量に基づいて判定する手順と、
前記選択された表を前記メモリに配置可能な場合に、前記算出された処理コスト及び前記特定されたインデクスのメモリ使用量に基づいて、前記特定されたインデクスを前記メモリに配置するか否かを決定する手順と、を含むデータベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに含まれるデータ及びインデクスをメモリに配置して処理可能なデータベースシステムに関する。
【背景技術】
【０００２】
近年、インメモリデータベースとディスク型データベースとを組み合わせることによって、データベースシステムの性能の向上を図る技術が提案されている。この技術は、ハードディスク（外部記憶装置、ストレージ装置）に格納されたデータの一部をメモリに配置することによってディスクアクセスの負荷を低減させ、データベース全体の性能を向上させる。【０００３】
したがって、ハードディスクに格納されたデータをすべてメモリに配置すれば、さらに性能を向上させることも可能である。しかし、データ量が増大すると、メモリ使用量も増大する。また、データベースシステムが稼働する計算機のリソースには制限がある。そのため、限られたリソースを最大限に活かすために、メモリにデータを適切に配置する必要がある。【０００４】
そこで、特許文献１には、アクセス頻度の高い表又はインデクスを優先して配置することによって、データベースに対するアクセスを高速化する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２０３６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、インメモリデータベースとディスク型データベースとを組み合わせた構成に対し、特開２０００−２０３６０号公報に開示された技術を適用しても必ずしも有効であるとは限らない。例えば、インメモリデータベースは、データの入出力時の負荷が小さいため、インデクスの使用による効果が小さい場合がある。そのため、インデクスを使用しないでデータを検索するアクセスプランを選択し、インデクスの代わりにより多くの表をメモリに配置することによって、より性能を向上させることができる場合がある。【０００７】
本発明は、インメモリデータベースとディスク型データベースとを併用する構成において、メモリ使用量を抑制しながらデータベースの性能を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一形態では、データベースシステムにおいて、データを格納する表及び当該データの格納位置を示すインデクスを含むデータベースを管理する方法であって、前記データベースシステムは、前記データベースを管理するデータベース管理装置と、前記データベースを格納する記憶装置と、を有し、前記データベース管理装置は、前記データベースを管理するデータベース管理部と、前記記憶装置に格納されたデータベースの一部を記憶するメモリと、を備え、前記データベース管理部は、前記記憶装置に格納されたデータベースに含まれる表及びインデクスごとのアクセス時間を含む統計情報を管理し、前記方法は、前記データベースに含まれる表を選択する第１のステップと、前記選択された表に定義可能なインデクスを特定する第２のステップと、前記選択された表及び前記特定されたインデクスを前記メモリに記憶した場合に、前記特定されたインデクスの一部又は全部を使用して前記選択された表にアクセスするための処理コストと、前記特定されたインデクスを使用せずに前記選択された表にアクセスするための処理コストとを、前記統計情報に基づいて算出する第３のステップと、前記選択された表を前記メモリに配置可能か否かを、前記選択された表のメモリ使用量に基づいて判定する第４のステップと、前記選択された表を前記メモリに配置可能な場合に、前記算出された処理コスト及び前記特定されたインデクスのメモリ使用量に基づいて、前記特定されたインデクスを前記メモリに配置するか否かを決定する第５のステップと、を含む。
【発明の効果】
【０００９】
本発明の代表的な一形態によれば、インデクスの使用効果に基づいて当該インデクスをメモリに配置するか否かを決定することによって、メモリ使用量を抑制しながらデータベースの性能を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施の形態に係るデータ配置決定方法の概要を説明する図である。
【図２】本発明の第１の実施の形態に係るデータベースシステムの構成を示す機能ブロック図である。
【図３】本発明の第１の実施の形態に係るデータベース管理システムの構成を示す機能ブロック図である。
【図４】本発明の第１の実施の形態に係る表定義情報の一例を示す図である。
【図５】本発明の第１の実施の形態に係るインデクス定義情報の一例を示す図である。
【図６】本発明の第１の実施の形態に係る統計情報の一例を示す図である。
【図７】本発明の第１の実施の形態に係る配置対象データリストの一例を示す図である。
【図８】本発明の第１の実施の形態に係るアクセスパス候補リストの一例を示す図である。
【図９】本発明の第１の実施の形態に係るＳＱＬ実行コストリストの一例を示す図である。
【図１０】本発明の第１の実施の形態に係るデータ配置プラン決定ユーティリティ処理部の処理手順を示すフローチャートである。
【図１１】本発明の第１の実施の形態に係る配置対象データ情報生成処理の詳細な処理手順を示すフローチャートである。
【図１２】本発明の第１の実施の形態に係るアクセスパス生成処理の詳細な処理手順を示すフローチャートである。
【図１３】本発明の第１の実施の形態に係るＳＱＬ実行コスト算出処理の詳細な処理手順を示すフローチャートである。
【図１４】本発明の第１の実施の形態に係るデータ配置プラン決定処理の詳細な処理手順を示すフローチャートである。
【図１５】本発明の第１の実施の形態に係るデータ配置プラン決定処理におけるデータごとのインメモリデータベース配置効果算出処理を示すフローチャートである。
【図１６】本発明の第１の実施の形態に係るデータ配置プラン決定処理におけるインデクス選択処理を示すフローチャートである。
【図１７】本発明の第１の実施の形態に係るデータ配置プラン決定ユーティリティの出力内容の一例を示す図である。
【図１８】本発明の第２の実施の形態に係るデータベースシステムの構成を示す機能ブロック図である。
【図１９】本発明の第２の実施の形態に係るデータベース管理システムの構成を示す機能ブロック図である。
【図２０】本発明の第２の実施の形態に係るデータ配置定義処理部の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を参照しながら説明する。まず、本発明におけるデータ配置を決定する手順の概要について説明する。
【００１２】
本発明を適用するデータベース管理システムは、ハードディスクなどの外部記憶装置（ストレージ装置）に格納されたデータを処理するディスク型データベースと、ＲＡＭなどのメモリに格納されたデータを処理するインメモリデータベースとが併存している。そして、所定の条件を満たす表（テーブル）及びインデクスをメモリに配置することによってシステム全体の性能を向上させる。
【００１３】
（第１の実施の形態）
図１は、本発明の第１の実施の形態に係るデータ配置決定方法の概要を説明する図である。なお、図１に示す各構成の詳細については後述する。
【００１４】
本発明の第１の実施の形態のデータ配置決定方法は、データ配置プラン決定ユーティリティ処理部１２１３によって実行される。
【００１５】
まず、データ配置プラン決定ユーティリティ処理部１２１３は、データベース（ＤＢ）定義情報４０２０、データ量６０１０、及びメモリ配置優先度６０２０に基づいて、配置対象データリスト６０５０を生成する（Ｓ１００）。配置対象データリスト６０５０は、メモリ１２００（図２参照）に格納可能な表及びインデクスのリストであり、表及びインデクスごとのメモリ使用量を含む。配置対象データリスト６０５０の詳細については図７にて後述する。
【００１６】
データベース定義情報４０２０には、表及びインデクスの定義情報が含まれる。データベース定義情報４０２０の詳細については後述する。インデクスは、表に格納された各レコードの格納位置を示す情報であり、インデクスを経由してデータを検索することによって、高速にデータを表から取得することが可能になる。インデクスは、レコードに含まれるフィールドに対応して定義される。また、複数のフィールドに対してインデクスを定義してもよい。
【００１７】
配置対象データリスト６０５０に含まれるインデクスは、データベース定義情報４０２０に定義済みのインデクスだけでなく、データベース定義情報４０２０に定義済みのインデクスを組み合わせることによって新たに定義されたインデクスであってもよい。
【００１８】
データ量６０１０は、表及びインデクスごとの記憶容量である。例えば、運用中のデータベースのデータ配置プランを決定する場合には、ディスク型データベース４０1０、またはインメモリデータベース１２２０に実際に格納されている各表及びインデクスの容量を取得すればよい。また、将来的なデータ量の増大に対応可能なデータ配置プランを決定する場合には、例えば、ユーザからデータ件数（レコード件数）の入力を受け付け、入力されたデータ件数及びデータベース定義情報４０２０に基づいてデータ量を算出することも可能である。
【００１９】
メモリ配置優先度６０２０は、メモリ１２００に配置する表を選択するための優先順位であり、メモリに配置させたい、すなわち、性能を向上させたい表の優先度を高く設定する。メモリ配置優先度６０２０は、ユーザが設定するものであってもよいし、統計情報４０３０などに基づいて、データ配置プラン作成時に自動的に設定するようにしてもよい。
【００２０】
例えば、外部記憶装置に格納された表のデータを読み書きする時間（アクセス時間）に基づいて、優先度を設定すればよい。メモリに表を配置することによって、アクセス時間を大幅に削減することができるからである。
【００２１】
さらに、ＳＱＬの実行頻度などに基づいて、アクセス頻度の高い表の優先度を高く設定するようにしてもよい。また、データ量の多い表の優先度を高く設定するようにしてもよいし、アクセス頻度とデータ量に基づいて優先度を設定するようにしてもよい。また、参照頻度の多い表の優先度を高く設定するようにしてもよいし、更新頻度が多い表の優先度を高く設定するようにしてもよい。
【００２２】
データ配置プラン決定ユーティリティ処理部１２１３は、ユーザーアプリケーション（ＵＡＰ）で実行されるＳＱＬを取得する。そして、取得されたＳＱＬの実行時にアクセスする表を特定し、特定された表に対応するインデクスを利用するか否かを示す情報を含むアクセスパスを生成する（Ｓ２００）。アクセスパスとは、ＳＱＬで指定されたデータを取得するために、表及びインデクスにアクセスする経路である。
【００２３】
データ配置プラン決定ユーティリティ処理部１２１３は、ディスク型データベースではアクセスパス生成時に通常選択されないアクセスパスも含めて生成する。ディスク型データベースでは、外部記憶装置に格納されたデータをアクセスする際に生じるオーバーヘッドが大きいため、通常、外部記憶装置にアクセスする頻度が大きいアクセスパスを選択しないように制御される。前述したインデクスを使用すると、表に格納されたデータをすべて読み込む（フルスキャンする）必要がなくなるため、外部記憶装置に対するアクセス頻度を少なくすることができる。
【００２４】
一方、インメモリデータベースは、前述のように、メモリ１２００に記憶されたデータを入出力するため、オーバーヘッドが少なく、インデクスを使用しなくても性能が著しく悪化するとは限らない。さらに、インデクスを使用しなければ、メモリ１２００にインデクスを格納する必要がないため、メモリ使用量を削減することが可能となる。
【００２５】
以上のように、データ配置プラン決定ユーティリティ処理部１２１３は、すべてのアクセスパスを含むアクセスパス候補リスト６０６０を生成する。アクセスパス候補リスト６０６０の詳細については図８にて後述する。
【００２６】
次に、データ配置プラン決定ユーティリティ処理部１２１３は、統計情報４０３０に基づいて、アクセスパス候補リスト６０６０に含まれる各アクセスパスについて、ＳＱＬ実行コスト（処理コスト）、及び外部記憶装置に対するアクセスコスト（Ｉ／Ｏコスト）を算出する（Ｓ３００）。ＳＱＬ実行コスト及びＩ／Ｏコストは主として当該ＳＱＬの処理時間に基づいて算出されるが、当該ＳＱＬの実行頻度などに基づいて算出してもよく、また、メモリ使用量などを加味してもよい。
【００２７】
統計情報４０３０には、ディスク型データベースにおいて実行されたＳＱＬごとに、実行頻度及び処理時間などが格納されている。統計情報４０３０の詳細については図６にて後述する。また、各ＳＱＬにはアクセスパスが対応付けられており、統計情報４０３０は、アクセスされた表及びインデクスごとのＩ／Ｏ処理時間を格納されている。なお、統計情報４０３０に格納されていないアクセスパスの処理コストは、対応するＳＱＬの実行コストなどに基づいて推定する。
【００２８】
以上のように、データ配置プラン決定ユーティリティ処理部１２１３は、各アクセスパスのＳＱＬ実行コストを算出すると、算出されたＳＱＬ実行コストを格納するＳＱＬ実行コストリスト６０７０を生成する。ＳＱＬ実行コストリスト６０７０には、アクセスパスごとに、Ｉ／Ｏ処理コスト及びＩ／Ｏ以外の処理コストが格納される。なお、ＳＱＬ実行コストリスト６０７０の詳細については図９にて後述する。
【００２９】
配置対象データリスト６０５０及びＳＱＬ実行コストリスト６０７０が生成されると、データ配置プラン決定ユーティリティ処理部１２１３は、配置対象データリスト６０５０、ＳＱＬ実行コストリスト６０７０及びメモリ使用量上限値６０３０に基づいて、データ配置プランを決定する（Ｓ４００）。
【００３０】
データ配置プランを決定する手順の概要について説明すると、まず、データ配置プラン決定ユーティリティ処理部１２１３は、配置対象データリスト６０５０に基づいて優先度の高い表から順に、メモリ使用量上限値６０３０の範囲内でメモリ１２００に配置するデータとして選択する。図１に示した配置対象データリスト６０５０では、表Ｔ２、表Ｔ１、表Ｔ３の順に選択する。
【００３１】
次に、データ配置プラン決定ユーティリティ処理部１２１３は、メモリ使用量上限値を超えない範囲で、選択された表のインデクスをメモリに配置する効果と、優先度が次位の表をメモリに配置する効果とを比較する。このとき、表をメモリに配置した場合のＩ／Ｏ処理コストは、外部記憶装置に配置した場合のＩ／Ｏ処理コストと比較すると非常に小さいため、Ｉ／Ｏ処理コストを除いた処理コストをメモリに配置された場合の処理コストとして効果を比較する。
【００３２】
そして、データ配置プラン決定ユーティリティ処理部１２１３は、インデクスをメモリに配置する効果が、優先度が次位の表をメモリに配置する効果よりも低い場合に、メモリに配置する対象から除外する。具体的に説明すると、図１に示すＳＱＬ実行コストリスト６０７０では、インデクスＩ２をメモリに配置する（すなわち、インデクスＩ２を使用する）ことによって処理コストを４０から３０に削減することができる。一方、表Ｔ２をメモリに配置した場合には、処理コストを２００から８０に削減することができるため、インデクスＩ２をメモリに配置するよりも表Ｔ２をメモリに配置したほうが効果を高い。したがって、インデクスＩ２をメモリに配置せずに、表Ｔ２をメモリに配置する。
【００３３】
以上のようにして、データ配置プラン決定ユーティリティ処理部１２１３は、決定データ配置プラン６０４０を生成する。決定データ配置プラン６０４０の詳細については後述する。図１の決定データ配置プラン６０４０では、表Ｔ２、Ｔ１、Ｔ３及びインデクスＩ３ａｂをメモリ１２００に配置する。
【００３４】
決定データ配置プラン６０４０が生成されると、生成された決定データ配置プラン６０４０をユーザに提示し、ユーザが決定データ配置プラン６０４０に基づいてデータ配置定義情報４０４０を生成するためにデータ配置定義処理を実行する（６１４０）。そして、データ配置実行部１２１５は、生成されたデータ配置定義情報４０４０に基づいて、外部記憶装置に格納された表及びインデクスをメモリに配置する（６１５０）。
【００３５】
以上、図１を参照しながら本発明の第１の実施の形態によるデータ配置決定方法の概要について説明した。以下、図２を参照しながらデータ配置決定方法が実行されるデータベースシステムの構成について説明する。
【００３６】
図２は、本発明の第１の実施の形態のデータベースシステムの構成を示す機能ブロック図である。
【００３７】
本発明の第１の実施の形態のデータベースシステムは、データベース管理装置１０００、端末装置２０００、ユーザーアプリケーション（ＵＡＰ）３０００及び外部記憶装置（ストレージ装置）４０００を備える。なお、外部記憶装置４０００の代わりにデータベース管理装置１０００に記憶媒体を備え、外部記憶装置４０００に格納される情報を当該記憶装置に格納する構成としてもよい。
【００３８】
データベース管理装置１０００は、データベースを管理する計算機である。データベース管理装置１０００は、プロセッサ１１００、メモリ１２００、外部記憶装置入出力インターフェース１３００及びネットワークインターフェース１４００を備える。
【００３９】
プロセッサ１１００は、メモリ１２００に記憶されたプログラムであるデータベース管理システム１２１０を実行することによって、インメモリデータベース（ＤＢ）１２２０及びディスク型データベース（ＤＢ）４０１０を管理する。
【００４０】
メモリ１２００は、データベース管理システム１２１０及びインメモリデータベース１２２０を記憶する。データベース管理システム１２１０は、データベースを管理するために必要なプログラム及びデータを含む。データベース管理システム１２１０の詳細については図３にて後述する。
【００４１】
インメモリデータベース１２２０は、データを格納する表１２２１と、表１２２１に含まれるレコードの格納位置を示す情報を含むインデクス１２２２とを含む。インメモリデータベース１２２０は、データベース管理システム１２１０に含まれるインメモリデータベース管理部１２１２（図３）によって管理される。
【００４２】
外部記憶装置入出力インターフェース１３００は、外部記憶装置（ストレージ装置）４０００に接続するためのインターフェースである。また、外部記憶装置４０００とは、イーサネット（登録商標）によって接続してもよいし、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）によって接続してもよい。
【００４３】
ネットワークインターフェース１４００は、イーサネットなどによってネットワーク５０００に接続されるインターフェースである。データベース管理装置１０００は、ネットワーク５０００を介して端末装置２０００及びＵＡＰ３０００に接続される。
【００４４】
端末装置２０００は、ネットワーク５０００を介してデータベース管理装置１０００に接続された計算機である。端末装置２０００は、データベースを操作するためのコマンドを入力したり、データベースの管理情報を参照したりする。
【００４５】
本発明の第１の実施の形態では、端末装置２０００からデータ配置プラン決定ユーティリティ実行要求を送信し、データベース管理システム１２１０に含まれるデータ配置プラン決定ユーティリティ処理部１２１３（図３）によって生成された決定データ配置プランを受信し、ユーザに提示する。
【００４６】
データ配置プラン決定ユーティリティ実行要求は、メモリに配置される表の優先順位が定義されたメモリ配置優先度６０２０と、表及びインデクスを配置可能な容量を示すメモリ使用量上限値６０３０とを含む。
【００４７】
ＵＡＰ３０００は、データベース管理装置１０００で管理されるデータベースに格納されたデータを利用することによって業務を遂行するためのアプリケーションである。ＵＡＰ３０００は、例えば、計算機によって実行されるプログラムであり、ネットワーク５０００を介してデータベース管理装置１０００にアクセスし、データベースから必要なデータを取得する。
【００４８】
ＵＡＰ３０００には、データベースからデータを取得するためのＳＱＬ（Structured Query Language）を実行する処理が含まれている。また、ＳＱＬの実行は、ＵＡＰ３０００の内部に定義されたＳＱＬをデータベース管理装置１０００に送信するようにしてもよいし、データベース管理装置１０００にあらかじめ定義されたＳＱＬの実行を指示するようにしてもよい。
【００４９】
外部記憶装置４０００は、いわゆるストレージ装置であり、大容量のデータを格納可能な不揮発性の記憶媒体を備えている。本発明の第１の実施の形態では、不揮発性の記憶媒体として、ハードディスクドライブ（ＨＤＤ）が搭載されているが、ハードディスクドライブのような磁気記憶媒体ではなく、フラッシュメモリチップなどによって構成されたＳＳＤなどの半導体記憶媒体などであってもよい。
【００５０】
外部記憶装置４０００は、ディスク型データベース４０１０、データベース定義情報４０２０、及び統計情報４０３０（図６）を格納する。
【００５１】
ディスク型データベース４０１０は、データを格納する表４０１１と、表４０１１に含まれるレコードの格納位置を示す情報を含むインデクス４０１２とを含む。表４０１１及びインデクス４０１２の構成は、インメモリデータベース１２２０に含まれる表１２２１及びインデクス１２２２と同じである。また、インメモリデータベース１２２０に含まれる表１２２１及びインデクス１２２２は、ディスク型データベース４０１０にも格納される。なお、インメモリデータベース１２２０に含まれる表１２２１及びインデクス１２２２が更新された場合であっても、ディスク型データベース４０１０の対応する表４０１１及びインデクス４０１２に随時反映させる必要はなく、バックアップ時など所定のタイミングで同期させればよい。
【００５２】
データベース定義情報４０２０は、表定義情報４０２１（図４）及びインデクス定義情報４０２２（図５）を含む。表定義情報４０２１は、表４０１１の定義情報である。表定義情報４０２１には、表４０１１を構成するフィールドのデータ型などが定義される。インデクス定義情報４０２２は、インデクス４０１２の定義情報である。インデクス定義情報４０２２には、インデクスを生成するために必要な情報、例えば、インデクスを付与する表及びフィールドなどが定義される。表定義情報４０２１及びインデクス定義情報４０２２の詳細については後述する。
【００５３】
統計情報４０３０は、ディスク型データベース４０１０に格納されるデータにアクセスするＳＱＬの実行時に蓄積される情報であり、ＳＱＬごとの処理時間など、様々な情報が含まれる。ＳＱＬの処理時間には、演算処理などの時間の他に記憶媒体に対する入出力処理に要する時間（Ｉ／Ｏ処理時間）が含まれる。本発明の第１の実施の形態の統計情報４０３０には、Ｉ／Ｏ処理時間と演算処理時間（Ｉ／Ｏ処理以外の処理時間）とがそれぞれ把握可能に記録される。統計情報４０３０の詳細については後述する。
【００５４】
以上、図２を参照しながら本発明の第１の実施の形態のデータベースシステムの構成について説明した。続いて、図３を参照しながら、本発明の第１の実施の形態のデータベース管理システム１２１０の構成について説明する。
【００５５】
図３は、本発明の第１の実施の形態のデータベース管理システム１２１０の構成を示すブロック図である。
【００５６】
データベース管理システム１２１０は、前述のように、データベース管理装置１０００のメモリ１２００に記憶されたプログラムである。データベース管理システム１２１０には、データベースを管理するためにプロセッサ１１００によって実行されるプログラムと、当該プログラムの実行に必要な情報と含まれる。
【００５７】
データベースを管理及び実行するためのプログラムには、ディスク型データベース管理部１２１１、インメモリデータベース管理部１２１２、データ配置プラン決定ユーティリティ処理部１２１３、及びデータ配置実行部１２１５が含まれる。
【００５８】
ディスク型データベース管理部１２１１は、外部記憶装置４０００に格納されたディスク型データベース４０１０を管理するプログラムである。一方、インメモリデータベース管理部１２１２は、インメモリデータベース１２２０を管理するプログラムである。
【００５９】
データベース管理システム１２１０は、ＵＡＰ３０００などによってＳＱＬの実行を指示されると、処理対象の表が管理されているデータベースを特定する。そして、特定されたデータベースに対応するデータベース管理部に処理の実行を指示する。このとき、最初にインメモリデータベース管理部１２１２によってＳＱＬを処理し、インメモリデータベース１２２０に表が存在しない場合にディスク型データベース管理部１２１１が処理するように構成してもよい。
【００６０】
データ配置プラン決定ユーティリティ処理部１２１３は、データベースに含まれる表及びインデクスをディスク型データベース４０１０に配置するか、インメモリデータベース１２２０によって配置するかを決定するデータ配置プランを作成するプログラムである。
【００６１】
データ配置プラン決定ユーティリティ処理部１２１３は、データベース管理装置１０００が端末装置２０００から送信されたデータ配置プラン決定ユーティリティ実行要求を受け付けると、データ配置プラン決定ユーティリティ実行要求に含まれるメモリ配置優先度６０２０及びメモリ使用量上限値６０３０に基づいて決定データ配置プラン６０４０が生成される。データ配置プラン決定ユーティリティ処理部１２１３による処理は図１０にて後述する。
【００６２】
データ配置プラン決定ユーティリティ処理部１２１３は、配置対象データ情報生成部１２１６、アクセスパス生成部１２１７、アクセスパス実行コスト算出部１２１８、及びデータ配置プラン決定部１２１９を含む。
【００６３】
配置対象データ情報生成部１２１６は、優先度が付与された配置対象のデータリストを生成する。処理の詳細については、図１１にて後述する。アクセスパス生成部１２１７は、ＵＡＰ３０００から取得されたＳＱＬに基づいてアクセスパスを生成する。処理の詳細については、図１２にて後述する。
【００６４】
アクセスパス実行コスト算出部１２１８は、生成されたアクセスパスに対し、実行コストを算出する。処理の詳細については、図１３にて後述する。データ配置プラン決定部１２１９は、アクセスパスの実行コストに基づいてデータ配置プランを決定する。処理の詳細については、図１４から図１６にて後述する。
【００６５】
データ配置実行部１２１５は、データ配置プラン決定ユーティリティ処理部１２１３によって生成された決定データ配置プラン６０４０に基づいて、ディスク型データベース４０１０に含まれる表４０１１及びインデクス４０１２をインメモリデータベース１２２０に移行させるプログラムである。
【００６６】
また、データベースを管理するための情報には、データ量６０１０、決定データ配置プラン６０４０、配置対象データリスト６０５０（図７）、アクセスパス候補リスト６０６０（図８）及びＳＱＬ実行コストリスト６０７０（図９）が含まれる。
【００６７】
データ量６０１０は、インメモリデータベース１２２０又はディスク型データベース４０１０によって管理されている表（１２２１、４０２１）及びインデクス（１２２２、４０２２）の記憶容量（メモリ使用量）を格納する。なお、前述のように、記憶容量ではなく、レコード数であってもよい。
【００６８】
決定データ配置プラン６０４０には、インメモリデータベース１２２０に配置される配置対象データ（表、インデクス）が定義される。決定データ配置プラン６０４０は、前述のように、データ配置プラン決定ユーティリティ処理部１２１３の実行結果として出力される情報である。
【００６９】
配置対象データリスト６０５０は、インメモリデータベース１２２０によって管理される候補となる表及びインデクスのリストである。配置対象データリスト６０５０には、表ごとにレコードが生成され、各レコードには表及び表に対応するインデクスが含まれる。
【００７０】
アクセスパス候補リスト６０６０は、ＵＡＰ３０００などによって実行されるＳＱＬのアクセスパスのリストである。１つのＳＱＬに複数のアクセスパスを生成可能な場合には、すべてのアクセスパスを格納するようにしてもよいし、所定の条件を満たすアクセスパスのみを格納するようにしてもよい。
【００７１】
ＳＱＬ実行コストリスト６０７０は、アクセスパスごとの実行コストである。実行コストは、主として処理時間に対応するが、メモリ使用量、アクセスする表又はインデクスの数などを含んでもよい。本発明の第１の実施の形態では、ディスク型データベース４０１０によってアクセスする表が管理されている場合のＩ／Ｏ処理コストと、Ｉ／Ｏ処理コストを除いた演算処理などによる処理コストが含まれている。なお、前述のように、実際に実行されていないアクセスパスの処理コストについては、実行されたアクセスパスの処理コストに基づいて推定する。
【００７２】
以上、図３に基づいてデータベース管理システム１２１０の構成について説明した。以下、図４から図６を参照しながら外部記憶装置４０００に格納された情報について説明する。
【００７３】
図４は、本発明の第１の実施の形態の表定義情報４０２１の一例を示す図である。
【００７４】
表定義情報４０２１は、ディスク型データベース４０１０に含まれる表４０１１及びインメモリデータベース１２２０に含まれる表１２２１の定義情報を含む。
【００７５】
表定義情報４０２１は、表ＩＤ４０２１１、表名４０２１２、構成フィールド数４０２１３、構成フィールド４０２１４及び定義インデクス数４０２１５を含む。
【００７６】
表ＩＤ４０２１１は、表を一意に識別するための識別子である。表名４０２１２は、表の名称である。構成フィールド数４０２１３は、表を構成するフィールドの数である。構成フィールド４０２１４は、表を構成するすべてのフィールドの名称又は識別子である。定義インデクス数４０２１５は、表に定義されているインデクスの数である。
【００７７】
具体的に説明すると、表ＩＤ４０２１１の値が"３"の場合、表名４０２１２は"Ｔ３"となる。表Ｔ３は、構成フィールド数４０２１３及び構成フィールド４０２１４に設定された値から、フィールド"Ｃ１"、フィールド"Ｃ２"、及びフィールド"Ｃ３"の３つのフィールドを有する。さらに、表Ｔ３に定義されているインデクスの数は２となる。実際に定義されているインデクスは、後述するインデクス定義情報４０２２に情報が格納される。
【００７８】
図５は、本発明の第１の実施の形態のインデクス定義情報４０２２の一例を示す図である。
【００７９】
インデクス定義情報４０２２は、ディスク型データベース４０１０に含まれるインデクス４０１２及びインメモリデータベース１２２０に含まれるインデクス１２２２の定義情報を含む。
【００８０】
インデクス定義情報４０２２は、インデクスＩＤ４０２２１、インデクス名４０２２２、構成フィールド数４０２２３、構成フィールド４０２２４及び表ＩＤ４０２２５を含む。
【００８１】
インデクスＩＤ４０２２１は、インデクスを一意に識別するための識別子である。インデクス名４０２２２は、インデクスの名称である。構成フィールド数４０２２３は、インデクスを構成するフィールドの数である。構成フィールド４０２２４は、インデクスを構成するすべてのフィールドの名称又は識別子である。表ＩＤ４０２２５は、インデクスが定義されている表の識別子である。
【００８２】
具体的に説明すると、インデクスＩＤ４０２２１の値が"２"の場合、インデクス名４０２２２は"Ｉ３ａ"となる。インデクスＩ３ａは、構成フィールド数４０２２３、構成フィールド４０２２４及び表ＩＤ４０２２５に設定された値から、表Ｔ３のフィールド"Ｃ１"及びフィールド"Ｃ２"の２つのフィールドに対して設定されている。
【００８３】
図６は、本発明の第１の実施の形態の統計情報４０３０の一例を示す図である。
【００８４】
統計情報４０３０は、前述のように、ディスク型データベース４０１０に格納されるデータにアクセスするＳＱＬの実行時に蓄積される情報である。統計情報４０３０は、ＳＱＬ４０３１、実行頻度４０３２、アクセスパス４０３３、Ｉ／Ｏ時間４０３４、及び処理時間合計４０３５を含む。
【００８５】
ＳＱＬ４０３１は、ＵＡＰ３０００によって実行されるＳＱＬを示す情報である。ＳＱＬ４０３１には、ＳＱＬそのものを格納してもよいし、ＳＱＬそのものを識別子とともに別の領域に格納し、ＳＱＬの識別子を格納するようにしてもよい。
【００８６】
実行頻度４０３２は、対応するＳＱＬが実行された回数である。格納される回数は、累積回数でもよいし、所定期間内の実行回数であってもよい。
【００８７】
アクセスパス４０３３は、ＳＱＬを実行する際にアクセスする表及びインデクスが定義される。本発明の第１の実施の形態では、アクセスパスの具体的な内容は別途保持されており、アクセスパス４０３３にはアクセスパスを特定する識別子が設定されている。
【００８８】
Ｉ／Ｏ時間４０３４は、表及びインデクスに対するアクセス時間である。Ｉ／Ｏ時間４０３４には、表及びインデクスごとにアクセス時間が格納される。Ｉ／Ｏ時間４０３４に設定される値は、ＳＱＬが１回実行された場合のアクセス時間であってもよいし、累積された時間であってもよい。累積された時間の場合には、実行頻度４０２３の値で除算することによって、ＳＱＬが１回実行された場合のアクセス時間を導出することができる。
【００８９】
処理時間合計４０３５は、ＳＱＬの処理に要する時間である。すなわち、処理時間合計４０３５からＩ／Ｏ時間４０３４を減算することによって、演算処理などのＩ／Ｏ処理以外の処理時間を算出することができる。なお、処理時間合計４０３５に設定される値についても、ＳＱＬが１回実行された場合の処理時間であってもよいし、累積された時間であってもよい。
【００９０】
さらに具体的に説明すると、ＳＱＬ４０３１の値が"ＳＱＬ３"の場合、実行頻度は２０となる。このとき、アクセスパス４０３３は"ＳＱＬ３−１"となる。Ｉ／Ｏ時間４０３４を参照すると、ＳＱＬ３がアクセスパスＳＱＬ３−１で実行された場合には、表Ｔ３、インデクスＩ３ａ及びインデクスＩ３ｂにアクセスされる。このとき、表Ｔ３に対するアクセス時間は３０、インデクスＩ３ａ及びインデクスＩ３ｂに対するアクセス時間は６０となる。処理時間合計４０３５は、５００となっているため、Ｉ／Ｏ処理時間を除く処理時間は１００となる。
【００９１】
以上、図４から図６を参照しながら外部記憶装置４０００に格納された情報について説明した。以下、図７から図９を参照しながらデータ配置プラン決定ユーティリティ処理部１２１３の実行時に生成される情報について説明する。
【００９２】
図７は、本発明の第１の実施の形態の配置対象データリスト６０５０の一例を示す図である。
【００９３】
配置対象データリスト６０５０は、前述のように、インメモリデータベース１２２０によって管理される候補となる表及びインデクスのリストである。配置対象データリスト６０５０には、表ごとにレコードが生成され、各レコードには表及び表に定義可能なインデクスが含まれる。
【００９４】
配置対象データリスト６０５０は、外部記憶装置４０００に格納されたデータベース定義情報４０２０（表定義情報４０２１，インデクス定義情報４０２２）と、端末装置２０００から送信されたデータ配置プラン決定ユーティリティ実行要求に含まれるメモリ配置優先度６０２０及びメモリ使用量上限値６０３０に基づいて作成される。
【００９５】
配置対象データリスト６０５０は、優先度６０５１、配置対象データ６０５２、配置対象データの情報６０５３及びメモリ使用量６０５４を含む。
【００９６】
優先度６０５１は、端末装置２０００から送信されたメモリ配置優先度６０２０に基づいて設定される。メモリ配置優先度６０２０には、具体的には、インメモリデータベース１２２０に配置する表の優先順位が設定されている。本発明の第１の実施の形態では、優先度の高い順に表をインメモリデータベース１２２０の表１２２１に移行させる。
【００９７】
配置対象データ６０５２は、表ごとに定義され、表データの他に当該表に設定されているインデクスも含む。また、配置対象データの情報６０５３には、配置対象データに対する情報が設定される。
【００９８】
例えば、表Ｔ３では、配置対象データ６０５２として、表データの他にインデクスＩ３ａ、インデクスＩ３ｂ及びインデクスＩ３ａｂが含まれる。インデクスＩ３ａ及びインデクスＩ３ｂは、インデクス定義情報４０２２に定義されているインデクスである。
【００９９】
ここで、インデクスＩ３ａｂは、インデクスＩ３ａ及びインデクスＩ３ｂをマージしたインデクスである。すなわち、配置対象データ６０５２は、データベース定義情報４０２０に定義されたインデクス以外のインデクスを含んでもよい。表Ｔ３には、インデクスＩ３ａ及びインデクスＩ３ｂが設定されており、２つのインデクスをマージして新たなインデクスＩ３ａｂを生成し、メモリに配置することによって、インデクスＩ３ａ及びインデクスＩ３ｂ両方をメモリに配置するよりもメモリ使用量を抑えることができる。ただし、各インデクスをそれぞれ別に利用する場合よりも性能が低下する可能性がある。
【０１００】
なお、表にさらに多くのインデクスが設定されている場合には、さらに多くの組み合わせのインデクスを生成可能であるが、すべての組み合わせについて新たなインデクスを生成してもよいし、組み合わせるインデクスの数を限定するなどして所定の条件を満たす組み合わせのインデクスについてのみ生成するようにしてもよい。
【０１０１】
メモリ使用量６０５４は、表データ又はインデクスをインメモリデータベース１２２０で管理する場合、すなわち、メモリに配置した場合に使用されるメモリの容量である。データ配置プランは、メモリに配置する配置対象データのメモリ使用量の合計がメモリ使用量上限値６０３０を超えない範囲で決定される。
【０１０２】
図８は、本発明の第１の実施の形態のアクセスパス候補リスト６０６０の一例を示す図である。
【０１０３】
アクセスパス候補リスト６０６０は、ＵＡＰ３０００などによって実行されるＳＱＬごとのアクセスパスのリストである。アクセスパスは、前述のように、ＳＱＬで指定されたデータを取得するために、データベースに含まれる表及びインデクスにアクセスする経路を示すものである。また、アクセスパスは、表のアクセス順序及びインデクスを利用するか否かなどによって、１つのＳＱＬから複数のアクセスパスが生成可能である。
【０１０４】
アクセスパス候補リスト６０６０は、ＳＱＬ６０６１、アクセスする表６０６２、アクセスパス６０６３、アクセスパスの内容６０６４、及びアクセスするデータ６０６５を含む。
【０１０５】
ＳＱＬ６０６１は、ＵＡＰ３０００によって実行されるＳＱＬを示す情報である。アクセスする表６０６２は、ＳＱＬ６０６１に設定されたＳＱＬ実行時にアクセスされる表である。アクセスパス６０６３は、ＳＱＬ６０６１に設定されたＳＱＬを実行するためのアクセスパスの識別子である。アクセスパスの内容６０６４は、アクセスパス６０６３の内容を示す情報である。例えば、インデクスの使用有無などが含まれる。アクセスするデータ６０６５は、アクセスする表に加えてアクセスするインデクスも含む。
【０１０６】
インメモリデータベースにおけるデータのアクセスは、ディスク型データベースにおけるデータアクセスと比較して、表又はインデクスに対するＩ／Ｏ処理時間が非常に少ない。したがって、前述のように、ディスク型データベースにおけるアクセスパスを生成する場合には通常選択されないアクセスパスも含めて生成する。さらに、前述のように、本発明の第１の実施の形態では、複数のインデクスをマージすることによって新たなインデクスを生成する。このとき、新たに生成されたインデクスを利用するアクセスパスも生成される。
【０１０７】
図８を参照しながらさらに具体的に説明すると、ＳＱＬ６０６１が"ＳＱＬ３"の場合、アクセスする表は"Ｔ３"となる。このとき、アクセスパス６０６３として、"ＳＱＬ３−１"、"ＳＱＬ３−２"及び"ＳＱＬ３−３"が生成される。
【０１０８】
アクセスパス"ＳＱＬ３−１"は、マージしていないインデクスＩ３ａ及びインデクスＩ３ｂをそれぞれ使用するアクセスパスである。このとき、アクセスするデータ６０６５は、表Ｔ３、インデクスＩ３ａ、インデクスＩ３ｂとなる。そして、ＳＱＬ３をアクセスパス"ＳＱＬ３−１"を選択して実行する場合には、アクセスするデータ６０６５に含まれるすべての表及びインデクスにアクセスされるため、これらの表及びインデクスをすべてインメモリデータベース１２２０で管理する必要がある。いずれか１つの表又はインデクスが外部記憶装置４０００に格納されていると、外部記憶装置４０００にアクセスするためのＩ／Ｏ処理がボトルネックとなってしまうためである。
【０１０９】
アクセスパス"ＳＱＬ３−２"は、インデクスＩ３ａ及びインデクスＩ３ｂがマージされたインデクスＩ３ａｂを使用するアクセスパスである。同様に、アクセスパス"ＳＱＬ３−２"に基づいてＳＱＬ３を実行する場合には、表Ｔ３及びインデクスＩ３ａｂがアクセスするデータ６０６５に設定される。このとき、インデクスＩ３ａｂの定義情報をインデクス定義情報４０２２に新たに格納する必要はなく、インデクスＩ３ａ及びインデクスＩ３ｂに基づいて必要に応じて生成すればよい。
【０１１０】
アクセスパス"ＳＱＬ３−３"は、インデクスを使用せずに表Ｔ３にアクセスするアクセスパスである。ディスク型データベースにおける検索では、表Ｔ３の全レコードにアクセス（フルスキャン）しなければならない場合があるため、Ｉ／Ｏ処理時間が増大し、通常、このようなアクセスパスが選択されることはない。しかし、インメモリデータベースではＩ／Ｏ処理時間が小さいためディスク型データベースの場合と比較して処理時間の増大を抑えることができ、さらに、インデクスを使用しない分だけメモリ使用量を抑えることができる。なお、レコード件数が多い表の検索でインデクスを使用しない場合は、全レコードで値を比較する必要があるなどＩ／Ｏ処理時間以外の処理時間も増大する。
【０１１１】
図９は、本発明の第１の実施の形態のＳＱＬ実行コストリスト６０７０の一例を示す図である。
【０１１２】
ＳＱＬ実行コストリスト６０７０は、統計情報４０３０に基づいて算出されたアクセスパスごとの実行コストを格納する。実行コストは、前述のように、主として処理時間に基づいて設定されるが、メモリ使用量、アクセスする表又はインデクスの数などをさらに加味して設定されてもよい。
【０１１３】
ＳＱＬ実行コストリスト６０７０は、ＳＱＬ６０７１、重要度６０７２、アクセスパス６０７３、Ｉ／Ｏコスト６０７４、処理コスト合計６０７５及び各データのＩ／Ｏを除いた処理コスト６０７６を含む。
【０１１４】
ＳＱＬ６０７１及びアクセスパス６０７３は、アクセスパス候補リスト６０６０のＳＱＬ６０６１及びアクセスパス６０６３と同じである。
【０１１５】
重要度６０７２は、対応するＳＱＬの重要度を示し、例えば、ＳＱＬの実行頻度が対応する。実行頻度を大きいＳＱＬにアクセスされる表をインメモリデータベース１２２０に配置すればＩ／Ｏ処理コストを小さくすることができるため、当該ＳＱＬの優先度を高く設定することによって、ユーザが各表に対するメモリ配置優先度を指定せずに自動的に設定することが可能となる。
【０１１６】
Ｉ／Ｏコスト６０７４には、統計情報４０３０のＩ／Ｏ時間４０３４が設定される。また、処理コスト合計６０７５には、統計情報４０３０の処理時間合計４０３５が設定される。Ｉ／Ｏコスト６０７４及び処理コスト合計６０７５には、処理時間がそのまま設定されているが、前述のように、他の要因を考慮して算出されたコストを設定するようにしてもよい。
【０１１７】
各データのＩ／Ｏを除いた処理コスト６０７６は、インメモリデータベースによって管理されるデータ（表、インデクス）の組み合わせに対応する列を含む。各列には、処理コスト合計６０７５から対応するＩ／Ｏコスト６０７４を減算した値が設定される。
【０１１８】
具体的に説明すると、アクセスパス６０７３が"ＳＱＬ３−２"の場合、表Ｔ３の処理コストが３０、インデクスＩ３ａ及びＩ３ｂの処理コストが６０となっている。したがって、表Ｔ２の各データのＩ／Ｏを除いた処理コスト６０７６は、ＳＱＬ３の処理で表Ｔ２にアクセスしないため、処理コスト合計６０７５の値２６０となる。これに対し、表Ｔ３の場合には、処理コスト合計６０７５の値２６０から表Ｔ２のＩ／Ｏコスト３０を減算した値２３０となる。さらに、表Ｔ３、インデクスＩ３ａ、インデクスＩ３ｂの場合には、処理コスト合計６０７５の値２６０から、表Ｔ３、インデクスＩ３ａ、インデクスＩ３ｂのＩ／Ｏコストの合計１５０（３０＋６０＋６０）を減算した値１１０となる。
【０１１９】
以上、図７から図９を参照しながらデータ配置プラン決定ユーティリティ処理部１２１３の実行時に生成される情報について説明した。以下、データ配置プラン決定ユーティリティ処理部１２１３を実行することによって、データ配置プランを決定する手順について説明する。
【０１２０】
図１０は、本発明の第１の実施の形態のデータ配置プラン決定ユーティリティ処理部１２１３による処理手順の概要を示すフローチャートである。
【０１２１】
データ配置プラン決定ユーティリティ処理部１２１３は、データベース管理システム１２１０に含まれるプログラムであり、データベース管理装置１０００のプロセッサ１１００によって実行される。
【０１２２】
データベース管理装置１０００のプロセッサ１１００は、端末装置２０００からデータ配置プラン決定ユーティリティ実行要求を受信すると、データ配置プラン決定ユーティリティ処理部１２１３を実行する。
【０１２３】
データ配置プラン決定ユーティリティ処理部１２１３による処理が開始されると、プロセッサ１１００は、配置対象データ情報生成部１２１６によって、配置対象データ情報生成処理を実行する（Ｓ１００）。配置対象データ情報生成処理は、データベース定義情報４０２０、データ量６０１０及びメモリ配置優先度６０２０を入力情報として、配置対象データ情報を生成し、配置対象データリスト６０５０を出力する。
【０１２４】
入力情報であるデータベース定義情報４０２０は、外部記憶装置４０００に格納されている。また、データ量６０１０は、前述のように、データベース管理システム１２１０で取得可能な表及びインデクスの記憶容量であってもよいし、ユーザによって入力されたレコード件数などに基づいて算出したものであってもよい。
【０１２５】
メモリ配置優先度６０２０は、ユーザによって設定され、データ配置プラン決定ユーティリティ実行要求とともに送信される。なお、メモリ配置優先度６０２０を自動的に設定するように構成してもよい。例えば、前述のように、統計情報４０３０に基づいて、ＳＱＬの実行頻度が大きいＳＱＬによってアクセスされる表の優先度を高く設定するようにしてもよいし、累積処理時間が長いＳＱＬによってアクセスされる表の優先度を高く設定するようにしてもよい。
【０１２６】
配置対象データ情報生成処理が終了すると、プロセッサ１１００は、アクセスパス生成部１２１７によって、アクセスパス生成処理を実行する（Ｓ２００）。アクセスパス生成処理は、ＵＡＰ３０００によって実行されるＳＱＬを取得し、取得されたＳＱＬごとにアクセスパスを生成し、アクセスパス候補リスト６０６０を出力する。
【０１２７】
ＵＡＰ３０００がＪＡＶＡ（登録商標）によって作成されている場合には、ＵＡＰ３０００のバイトコードを解析することによってＳＱＬを抽出することが可能である。また、ＵＡＰ３０００によって実行されるＳＱＬが、データベース管理システム１２１０にあらかじめ定義されているＳＱＬ（ストアドプロシージャ）を呼び出すように実装されている場合には、データベース定義情報４０２０に含まれる定義情報に基づいて抽出することも可能である。
【０１２８】
アクセスパス生成処理が終了すると、プロセッサ１１００は、アクセスパス実行コスト算出部１２１８によって、アクセスパス実行コスト算出処理を実行する（Ｓ３００）。アクセスパス実行コスト算出処理は、アクセスパス生成処理によって出力されたアクセスパス候補リスト６０６０及び統計情報４０３０を入力情報として、アクセスパスごとの実行コストを算出し、ＳＱＬ実行コストリスト６０７０を出力する。
【０１２９】
アクセスパス実行コスト算出処理が終了すると、プロセッサ１１００は、データ配置プラン決定部１２１９によって、データ配置プラン決定処理を実行する（Ｓ４００）。データ配置プラン決定処理は、端末装置２０００からデータ配置プラン決定ユーティリティ実行要求とともに送信されたメモリ使用量上限値６０３０及びアクセスパス実行コスト算出処理によって出力されたＳＱＬ実行コストリスト６０７０を入力情報とし、インメモリデータベース１２２０に配置された表及びインデクスを定義するデータ配置プランを決定する。そして、決定されたデータ配置プランを出力する。
【０１３０】
なお、メモリ使用量上限値６０３０は、データベース管理装置１０００のメモリ容量に基づいて自動的に決定されるようにしてもよいし、デフォルト値をデータベース管理システム１２１０で保持しておくことによって、入力を省略できるように実装してもよい。
【０１３１】
データ配置プラン決定処理が終了し、決定データ配置プラン６０４０が出力されると、端末装置２０００に送信し、決定したデータ配置プランの内容を表示する（Ｓ５００）。表示画面の例については図１７にて後述する。
【０１３２】
図１１は、本発明の第１の実施の形態の配置対象データ情報生成処理の詳細な処理手順を示すフローチャートである。
【０１３３】
データベース管理装置１０００のプロセッサ１１００は、まず、メモリ配置優先度６０２０を参照し、優先度の高い表から順に選択し、選択された表に対応する配置対象データ情報を生成する（Ｓ１０１、Ｓ１１０）。
【０１３４】
プロセッサ１１００は、選択された表の定義情報をデータベース定義情報４０２０の表定義情報４０２１から取得する（Ｓ１０２）。さらに、プロセッサ１１００は、選択された表のデータ量をデータ量６０１０から取得する（Ｓ１０３）。
【０１３５】
プロセッサ１１００は、選択された表に定義されたインデクスの定義情報を、データベース定義情報４０２０のインデクス定義情報４０２２から取得する（Ｓ１０４）。さらに、プロセッサ１１００は、選択された表に定義されたインデクスのデータ量をデータ量６０１０から取得する（Ｓ１０５）。
【０１３６】
プロセッサ１１００は、選択された表に定義されたインデクスの中にマージ可能なインデクスが含まれているか否かを判定する（Ｓ１０６）。例えば、一方のインデクスの構成フィールドが他方のインデクスの構成フィールドに包含される場合にマージ可能と判定する。具体的には、構成フィールドがＣ１のインデクスＩ３ａと、構成フィールドがＣ１、Ｃ２のインデクスＩ３ｂが含まれている場合、インデクスＩ３ａとインデクスＩ３ｂをマージしてＩ３ａｂを生成する。
【０１３７】
プロセッサ１１００は、マージ可能なインデクスが含まれている場合には（Ｓ１０６の結果が「ＹＥＳ」）、マージしたインデクスの定義情報を生成する（Ｓ１０７）。さらに、プロセッサ１１００は、マージしたインデクスのデータ量を算出する（Ｓ１０８）。
【０１３８】
プロセッサ１１００は、マージ可能なインデクスが含まれていない場合（Ｓ１０６の結果が「ＮＯ」）、又は、マージしたインデクスのデータ量の算出が終了した場合には、選択された表の情報及びデータ量、選択された表に定義されたインデクスの情報及びデータ量、マージしたインデクスの情報及びデータ量を配置対象データリスト６０５０に追加する（Ｓ１０９）。
【０１３９】
プロセッサ１１００は、Ｓ１０９の処理が終了すると、メモリ配置優先度６０２０から次に優先度の高い表を選択し、Ｓ１０２の処理を実行する（Ｓ１０１、Ｓ１１０）。
【０１４０】
図１２は、本発明の第１の実施の形態のアクセスパス生成処理の詳細な処理手順を示すフローチャートである。
【０１４１】
データベース管理装置１０００のプロセッサ１１００は、ＵＡＰ３０００で実行されるＳＱＬを順次選択し、選択されたＳＱＬに対応するアクセスパスを生成する（Ｓ２０１、Ｓ２０３）。
【０１４２】
アクセスパスを生成する対象のＳＱＬが選択されると、プロセッサ１１００は、選択されたＳＱＬを解析し、インデクスを使用しない場合、及び、定義済みのインデクスを使用する場合についてアクセスパスの候補を生成する。さらに、プロセッサ１１００は、配置対象データ情報生成処理でマージされ、当該ＳＱＬの実行に使用可能なインデクスを使用する場合についてもアクセスパスの候補を生成する（Ｓ２０２）。生成されたアクセスパスの候補は、アクセスパス候補リスト６０６０に追加される。
【０１４３】
図１３は、本発明の第１の実施の形態のＳＱＬ実行コスト算出処理の詳細な処理手順を示すフローチャートである。
【０１４４】
データベース管理装置１０００のプロセッサ１１００は、アクセスパス候補リスト６０６０を参照し、ＳＱＬごとに（Ｓ３１０、Ｓ３７０）、統計情報４０３０から当該ＳＱＬの実行頻度を取得し、重要度を割り当てる（Ｓ３２０）。
【０１４５】
プロセッサ１１００は、選択されたＳＱＬの各アクセスパス候補から順次アクセスパスを選択し（Ｓ３３０、Ｓ３６０）、アクセスパスごとに、統計情報４０３０に基づいて選択されたＳＱＬの実行コスト（処理コスト）を算出する（Ｓ３４０）。さらに、プロセッサ１１００は、アクセスする表及びインデクスごとのＩ／Ｏコストを算出する（Ｓ３５０）。なお、コストは、前述のように、処理時間そのものであってもよいし、処理時間の他に別の要因を考慮したものであってもよい。
【０１４６】
アクセスパス候補リスト６０６０に格納されたＳＱＬのアクセスパス候補の実行コスト及び表及びインデクスごとのＩ／Ｏコストの算出が終了すると、プロセッサ１１００は、算出したコストを含むＳＱＬ実行コストリスト６０７０を作成する（Ｓ３８０）。
【０１４７】
図１４は、本発明の第１の実施の形態のデータ配置プラン決定処理の詳細な処理手順を示すフローチャートである。
【０１４８】
データベース管理装置１０００のプロセッサ１１００は、まず、各データ（表、インデクス）をインメモリデータベース１２２０に配置する効果を算出する（Ｓ４０１０）。なお、各データのインメモリデータベース配置効果算出処理の詳細については図１５にて後述する。
【０１４９】
次に、プロセッサ１１００は、配置対象データリスト６０５０を参照し、優先度の高い表から順に、インメモリデータベース１２２０に配置する処理を実行する（Ｓ４０２０〜Ｓ４１２０）。
【０１５０】
プロセッサ１１００は、インメモリデータベース１２２０に配置するデータとして既に選択済みのデータと、処理対象の表とをインメモリデータベース１２２０に配置可能か否かを判定する（Ｓ４０３０）。換言すると、プロセッサ１１００は、インメモリデータベース１２２０に配置するデータの容量と、処理対象の表の容量との合計がメモリ使用量上限値６０３０以下であるか否かを判定する。
【０１５１】
そして、プロセッサ１１００は、処理対象の表をインメモリデータベース１２２０に配置可能な場合には（Ｓ４０３０の結果が「ＹＥＳ」）、処理対象の表をインメモリデータベース１２２０に配置するデータとして選択する（Ｓ４０４０）。
【０１５２】
続いて、プロセッサ１１００は、処理対象の表に定義されたインデクスをインメモリデータベース１２２０に配置するか否か、又はいずれのインデクスをインメモリデータベース１２２０に配置するかを判定するインデクス選択処理を実行する（Ｓ４０４５）。
【０１５３】
Ｓ４０４５処理が終了すると、プロセッサ１１００は、処理対象の表の次に優先度の高い表を新たな処理対象の表として選択し、処理対象の表が存在しなくなるまで処理を継続する。
【０１５４】
プロセッサ１１００は、Ｓ４０４０の処理でインメモリデータベース１２２０に配置するデータとして選択された表と、Ｓ４０４５のインデクス選択処理でインメモリデータベース１２２０に配置するデータとして選択されたインデクスを含むデータ配置プランを生成する（Ｓ４１３０）。
【０１５５】
図１５は、本発明の第１の実施の形態のデータ配置プラン決定処理におけるデータごとのインメモリデータベース配置効果算出処理を示すフローチャートである。
【０１５６】
データベース管理装置１０００のプロセッサ１１００は、配置対象データリスト６０５０を参照し、データ（表又はインデクス）を選択して、インメモリデータベース１２２０に配置する効果をデータごとに算出する（Ｓ４０１１〜Ｓ４０１６）。
【０１５７】
具体的には、プロセッサ１１００は、ＳＱＬ実行コストリスト６０７０を参照し、選択されたデータにアクセスするＳＱＬを抽出する。そして、抽出されたＳＱＬについて、選択されたデータをインメモリデータベース１２２０に配置しない場合に処理コストが最小になるアクセスパスの処理コストと、当該データをインメモリデータベース１２２０に配置する場合に処理コストが最小になるアクセスパスの処理コストとの差を算出する（Ｓ４０１３）。ここで算出された処理コストの差が抽出されたＳＱＬにおける処理コストの削減効果となる。
【０１５８】
さらに、プロセッサ１１００は、各ＳＱＬの重要度（実行頻度）、各ＳＱＬにおけるコストの削減効果、及び選択されたデータのメモリ使用量に基づいて、システム全体に対する効果を算出する（Ｓ４０１５）。例えば、処理コストの削減量は、ＳＱＬの実行頻度（重要度）と処理コストの削減量との積とすることができる。さらに、選択されたデータのメモリ使用量が少なければ、より多くのデータをインメモリデータベースに配置することが可能となるため、より効果が高いと判定することができる。
【０１５９】
以上のように、プロセッサ１１００は、Ｓ４０１２からＳ４０１５の処理を実行することによって、インメモリデータベース１２２０への配置効果をデータごとに算出する。
【０１６０】
図１６は、本発明の第１の実施の形態のデータ配置プラン決定処理におけるインデクス選択処理を示すフローチャートである。
【０１６１】
データベース管理装置１０００のプロセッサ１１００は、処理対象の表に定義されたインデクス（マージしたインデクスも含む）を、インメモリデータベース１２２０に配置する効果が高い順に選択し、Ｓ４０６０からＳ４１００までの処理を実行する（Ｓ４０５０、Ｓ４１１０）。
【０１６２】
プロセッサ１１００は、処理対象のインデクスをマージしたインデクスが、インメモリデータベース１２２０に配置するデータとして選択済みか否かを判定する（Ｓ４０６０）。処理対象のインデクスをマージしたインデクスが選択済みの場合には（Ｓ４０６０の結果が「ＹＥＳ」）、次のインデクスを処理対象のインデクスとする。
【０１６３】
一方、プロセッサ１１００は、処理対象のインデクスをマージしたインデクスが選択済みでない場合には（Ｓ４０６０の結果が「ＮＯ」）、処理対象のインデクスをインメモリデータベース１２２０に配置可能か否かを判定する（Ｓ４０７０）。すなわち、インメモリデータベース１２２０に配置するデータとして選択されたデータの容量と、処理対象のインデクスの容量との合計がメモリ使用量上限値６０３０以下であるか否かを判定する。プロセッサ１１００は、処理対象のインデクスをインメモリデータベース１２２０に配置可能でない場合には（Ｓ４０７０の結果が「ＮＯ」）、次のインデクスを処理対象のインデクスとする。
【０１６４】
プロセッサ１１００は、処理対象のインデクスをインメモリデータベース１２２０に配置可能な場合には（Ｓ４０７０の結果が「ＹＥＳ」）、処理対象のインデクスをインメモリデータベース１２２０に配置する効果と、未選択、かつ、インメモリデータベース１２２０に配置可能な表をインメモリデータベース１２２０に配置する効果とを比較する（Ｓ４０８０）。未選択、かつ、インメモリデータベース１２２０に配置可能な表とは、インデクス選択処理実行時の処理対象の表よりも優先度の低い表であって、インメモリデータベース１２２０に配置してもメモリ使用量が上限値を超えない表である。
【０１６５】
プロセッサ１１００は、処理対象のインデクスよりもインメモリデータベース１２２０に配置する効果の高い未選択の表が存在するか否かを判定する（Ｓ４０９０）。処理対象のインデクスよりもインメモリデータベース１２２０に配置する効果の高い未選択の表が存在する場合には（Ｓ４０９０の結果が「ＹＥＳ」）、次のインデクスを処理対象のインデクスとする。
【０１６６】
一方、プロセッサ１１００は、処理対象のインデクスよりもインメモリデータベース１２２０に配置する効果の高い未選択の表が存在しない場合には（Ｓ４０９０の結果が「ＮＯ」）、処理対象のインデクスをインメモリデータベース１２２０に配置するデータとして選択する（Ｓ４１００）。
【０１６７】
本発明の第１の実施の形態では、ユーザが端末装置２０００からメモリ配置優先度６０２０及びメモリ使用量上限値６０３０を入力し、データベース管理装置１０００にデータ配置プラン決定ユーティリティ実行要求を送信する。データベース管理装置１０００は、データ配置プラン決定ユーティリティ処理部１２１３によって決定されたデータ配置プランを端末装置２０００に表示する。このとき、実際にデータ配置は変更されていないため、端末装置２０００に表示された決定データ配置プラン６０４０をユーザが確認し、ユーザがデータベース管理装置１０００にデータ配置の実行を指示する。データベース管理装置１０００は、データ配置の変更の指示を受け付けると、データ配置実行部１２１５によって、指示された内容で表及びインデクスを配置する。
【０１６８】
なお、決定データ配置プラン６０４０が生成されると、ユーザに確認せずにデータ配置を実行するように指示するようにしてもよい。例えば、データ配置プラン決定ユーティリティ実行要求に、データ配置の実行を指示する項目を含めるようにすればよい。
【０１６９】
図１７は、本発明の第１の実施の形態のデータ配置プラン決定ユーティリティの出力画面７０００の一例を示す図である。
【０１７０】
画面７０００の上段には、ユーザによって指定された表の優先度７００１が表示される。また、画面７０００の下段には、決定データ配置プラン６０４０の内容であるデータ配置７００２が表示される。
【０１７１】
データ配置７００２には、配置されるオブジェクト（データ、表及びインデクス）に対し、推奨配置先、メモリ使用量、現在のデータ配置定義及び優先度が表示される。
【０１７２】
また、各オブジェクトは、インメモリデータベース１２２０に配置することが決定した順序で表示され、ディスク型データベース４０１０に配置されるオブジェクトはその後に表示される。オブジェクトをインメモリデータベース１２２０に配置するか否かは優先度の高い順に決定されるため、通常、優先度の高い順に表示される。優先度が高いにもかかわらず、オブジェクトがディスク型データベース４０１０に配置された場合には、優先度に"＊"を付加して表示する。
【０１７３】
推奨配置先及び現在のデータ配置定義には、インメモリデータベース１２２０（ＭＥＭＯＲＹ）に配置するか、ディスク型データベース４０１０（ＤＩＳＫ）に配置するかが表示される。
【０１７４】
また、優先度は、ユーザが指定した優先度に対応する値が表示される。なお、インデクスの優先度は、当該インデクスが定義された表の優先度が表示される。
【０１７５】
なお、表がインメモリデータベース１２２０に配置され、インデクスがディスク型データベース４０１０に配置されている場合には、インデクスを利用しないと判断することができる。
【０１７６】
データ配置７００２の下方には、データ配置変更後の合計メモリ使用量と、データ配置変更後の合計コストが表示される。合計メモリ使用量には、ユーザが指定したメモリ使用量上限値６０３０を併記してもよい。メモリ使用量上限値６０３０が自動的に決定された場合についても同様に併記してもよい。また、合計コストについては、現在のデータ配置における合計コストを併記するようにしてもよい。
【０１７７】
本発明の第１の実施の形態では、端末装置２０００からデータ配置プラン決定処理実行要求が送信されると、決定されたデータ配置プランを利用者に提示していたが、決定されたデータ配置プランに基づいて、そのままデータ配置を変更するようにしてもよい。また、複数のデータ配置プランを提示して、利用者に選択させるようにしてもよい。
【０１７８】
本発明の第１の実施の形態によれば、インメモリデータベースとディスク型データベースとが混在する構成において、使用可能なメモリを最大限に活用しながら、インメモリデータベースの特性を考慮して処理性能を向上させることができる。したがって、メモリ容量の追加など、ハードウェアに対する追加投資を行うことなく現有のハードウェア構成で可能な限り性能を向上させることができる。
【０１７９】
また、本発明の第１の実施の形態によれば、インメモリデータベースとディスク型データベースとが混在する構成において、表及びインデクスをインメモリデータベースに配置するか、ディスク型データベースに配置するかを自動的に決定することができるため、データベースを設計するために必要なコストを削減することができる。
【０１８０】
（第２の実施の形態）
本発明の第１の実施の形態では、データベース全体における表及びインデクスの配置を決定していたが、第２の実施の形態では、現在のデータ配置において、ユーザが指定したデータ配置が適正であるか否かをチェックする。
【０１８１】
なお、第２の実施の形態では、第１の実施の形態と共通する構成及び処理については、同一の符号を付与して説明を省略する。
【０１８２】
図１８は、本発明の第２の実施の形態のデータベースシステムの構成を示す機能ブロック図である。
【０１８３】
第１の実施の形態では、メモリ配置優先度６０２０及びメモリ使用量上限値６０３０を指定して、すべての表及びインデクスのデータ配置プランを決定していたが、第２の実施の形態では、端末装置２０００からユーザが指定した表を含むデータ配置定義実行要求が送信される。
【０１８４】
また、外部記憶装置４０００には、現在稼働しているデータベースのデータ配置の定義情報を格納するデータ配置定義情報４０４０が含まれる。
【０１８５】
データベース管理装置１０００は、データ配置定義要求を受信すると、図２０にて後述するデータ配置定義処理を実行することによって新たにデータ配置を決定する。このとき、データ配置定義実行要求で指定された表をインメモリデータベース１２２０に配置されている表に続く優先度を設定する。そして、新たに決定されたデータ配置プランにおいて、指定された表がインメモリデータベース１２２０に配置されているか否かを判定し、判定結果を含むデータ配置定義実行結果を端末装置２０００に応答する。
【０１８６】
図１９は、本発明の第２の実施の形態のデータベース管理システム１２１０の構成を示すブロック図である。
【０１８７】
第２の実施の形態では、データ配置プラン決定ユーティリティ処理部１２１３の代わりにデータ配置定義処理部１２１４がデータベース管理システム１２１０に含まれる。その他の構成については、第１の実施の形態と同じである。
【０１８８】
また、データ配置定義処理部１２１４には、データ配置プラン決定ユーティリティ処理部１２１３と同様に、配置対象データ情報生成部１２１６、アクセスパス生成部１２１７、アクセスパス実行コスト算出部１２１８、及びデータ配置プラン決定部１２１９が含まれる。各部の構成については第１の実施の形態と同じである。
【０１８９】
図２０は、本発明の第２の実施の形態のデータ配置定義処理部１２１４による処理手順の概要を示すフローチャートである。
【０１９０】
データ配置定義処理部１２１４は、データベース管理システム１２１０に含まれるプログラムであり、データベース管理装置１０００のプロセッサ１１００によって実行される。
【０１９１】
データベース管理装置１０００のプロセッサ１１００は、端末装置２０００からデータ配置定義実行要求を受信すると、データ配置定義処理部１２１４を実行する。
【０１９２】
データ配置定義処理部１２１４による処理が開始されると、プロセッサ１１００は、データ配置定義実行要求に含まれるデータ配置定義文を解析する（Ｓ１００１）。データ配置定義文には、ユーザが指定したデータ配置をチェックするか否かを指定する項目が含まれる。
【０１９３】
プロセッサ１１００は、データ配置定義文に指定したデータ配置をチェックする指定が含まれているか否かを判定する（Ｓ１００２）。プロセッサ１１００は、データ配置定義をチェックする指定がない場合には（Ｓ１００２の結果が「ＮＯ」）、Ｓ１００５以降の処理を実行する。
【０１９４】
一方、データ配置定義をチェックする指定がある場合には（Ｓ１００２の結果が「ＹＥＳ」）、プロセッサ１１００は、インメモリデータベース１２２０に配置されている表、データ配置定義文で指定された表、その他の表の順で優先度を設定する（Ｓ１００３）。
【０１９５】
プロセッサ１１００は、設定された優先度に基づいてデータ配置プランを決定するために、配置対象データ情報生成処理（Ｓ１００）、アクセスパス生成処理（Ｓ２００）、アクセスパス実行コスト算出処理（Ｓ３００）、データ配置プラン決定処理（Ｓ４００）を順に実行する。なお、配置対象データ情報生成処理（Ｓ１００）、アクセスパス生成処理（Ｓ２００）、アクセスパス実行コスト算出処理（Ｓ３００）、データ配置プラン決定処理（Ｓ４００）は、第１の実施の形態と同様である。
【０１９６】
決定データ配置プラン６０４０が生成されると、プロセッサ１１００は、決定データ配置プラン６０４０と、指定されたデータ配置とが一致するか否かを判定する（Ｓ１００４）。
【０１９７】
プロセッサ１１００は、決定データ配置プラン６０４０と、指定されたデータ配置とが一致する場合には（Ｓ１００４の結果が「ＹＥＳ」）、決定データ配置プラン６０４０をデータ配置定義情報４０４０に格納する（Ｓ１００５）。このとき、決定データ配置プラン６０４０が稼働中のデータベースにおけるデータ配置と相違する場合には、データ配置実行部１２１５によってデータ配置を実行してもよい。プロセッサ１１００は、指定されたデータ配置定義が正常に実行されたことを示すメッセージを端末装置２０００に送信する（Ｓ１００６）。
【０１９８】
一方、決定データ配置プラン６０４０と、指定されたデータ配置とが一致しない場合には（Ｓ１００４の結果が「ＮＯ」）、プロセッサ１１００は、指定されたデータ配置定義が推奨できないデータ配置である旨のメッセージを端末装置２０００に送信する（Ｓ１００７）。
【０１９９】
なお、インメモリデータベース１２２０に配置するすべての表をデータ配置定義に指定する必要はなく、指定された表が新たに決定されたデータ配置定義にすべて含まれていれば、指定されたデータ配置を推奨できると判定してもよい。
【０２００】
また、指定されたデータ配置が推奨されるデータ配置ではないと判定された場合には、推奨するデータ配置との処理コストの差を表示するようにしてもよい。さらに、指定されたデータ配置と推奨されるデータ配置を比較可能に表示し、指定するデータ配置を再定義して再チェックできるように構成してもよい。
【０２０１】
本発明の第２の実施の形態によれば、ユーザが指定したデータ配置が推奨されるデータ配置であるか否かをチェックすることが可能となるため、性能の劣化を抑えながら、データ配置の自由度を高くすることができる。
【０２０２】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【産業上の利用可能性】
【０２０３】
本発明は、ストレージ装置に格納されたデータベースの一部をメモリに記憶して稼働可能なデータベースシステムに利用可能である。
【図１】
2012017529.tif 000003
【図２】
2012017529.tif 000004
【図３】
2012017529.tif 000005
【図４】
2012017529.tif 000006
【図５】
2012017529.tif 000007
【図６】
2012017529.tif 000008
【図７】
2012017529.tif 000009
【図８】
2012017529.tif 000010
【図９】
2012017529.tif 000011
【図１０】
2012017529.tif 000012
【図１１】
2012017529.tif 000013
【図１２】
2012017529.tif 000014
【図１３】
2012017529.tif 000015
【図１４】
2012017529.tif 000016
【図１５】
2012017529.tif 000017
【図１６】
2012017529.tif 000018
【図１７】
2012017529.tif 000019
【図１８】
2012017529.tif 000020
【図１９】
2012017529.tif 000021
【図２０】
2012017529.tif 000022
【国際調査報告】
2012017529.tif 000023
2012017529.tif 000024