(57)【要約】【課題】データベースにおいてデータベースアクセス手順のキャッシュ管理を効果的に行い、データベース操作を高性能化することが可能な技術を提供する。【解決手段】データベースにアクセスする際の手順を示すデータベースアクセス手順を格納バッファで管理するデータベース管理方法において、ＳＱＬ文の比較基準とその優先順位を示す分別条件表を保持するステップと、入力されたＳＱＬ文に該当するデータベースアクセス手順が前記格納バッファ中に存在していない場合に、そのデータベースアクセス手順を生成するステップと、前記格納バッファに空きが無い場合に、前記入力されたＳＱＬ文の比較基準値に対応する優先順位を前記分別条件表により判定するステップと、前記判定された優先順位よりも低い優先順位のデータベースアクセス手順を前記格納バッファから破棄して、前記生成したデータベースアクセス手順を前記格納バッファに格納するステップとを有するものである。【選択図】        図１
2004199302.tif 000002
【特許請求の範囲】
【請求項１】
データベースにアクセスする際の手順を示すデータベースアクセス手順を格納バッファで管理するデータベース管理方法において、
ＳＱＬ文の比較基準とその優先順位を示す分別条件表を保持するステップと、入力されたＳＱＬ文に該当するデータベースアクセス手順が前記格納バッファ中に存在していない場合に、そのデータベースアクセス手順を生成するステップと、
前記格納バッファに空きが無い場合に、前記入力されたＳＱＬ文の比較基準値に対応する優先順位を前記分別条件表により判定するステップと、前記判定された優先順位よりも低い優先順位のデータベースアクセス手順を前記格納バッファから破棄して、前記生成したデータベースアクセス手順を前記格納バッファに格納するステップとを有することを特徴とするデータベース管理方法。
【請求項２】
前記分別条件表による判定では、ＳＱＬ文の種類、ＳＱＬ文の解析時間またはＳＱＬ文の使用するリソースの少なくともいずれかを示す比較基準に対応した優先順位を判定することを特徴とする請求項１に記載されたデータベース管理方法。
【請求項３】
前記ＳＱＬ文の解析時間に対応した優先順位の判定では、そのＳＱＬ文のデータベースアクセス手順の実行時間に対するＳＱＬ文の解析時間の割合を比較基準として判定を行うことを特徴とする請求項２に記載されたデータベース管理方法。
【請求項４】
データベースにアクセスする際の手順を示すデータベースアクセス手順を格納バッファで管理するデータベース管理装置において、
入力されたＳＱＬ文に該当するデータベースアクセス手順が前記格納バッファ中に存在していない場合に、そのデータベースアクセス手順を生成する生成部と、
ＳＱＬ文の比較基準とその優先順位を示す分別条件表を保持し、前記格納バッファに空きが無い場合に、前記入力されたＳＱＬ文の比較基準値に対応する優先順位を前記分別条件表により判定し、その優先順位よりも低い優先順位のデータベースアクセス手順を前記格納バッファから破棄して、前記生成したデータベースアクセス手順を前記格納バッファに格納する管理部とを備えることを特徴とするデータベース管理装置。
【請求項５】
データベースにアクセスする際の手順を示すデータベースアクセス手順を格納バッファで管理するデータベース管理装置としてコンピュータを機能させる為のプログラムにおいて、
入力されたＳＱＬ文に該当するデータベースアクセス手順が前記格納バッファ中に存在していない場合に、そのデータベースアクセス手順を生成する生成部と、
ＳＱＬ文の比較基準とその優先順位を示す分別条件表を保持し、前記格納バッファに空きが無い場合に、前記入力されたＳＱＬ文の比較基準値に対応する優先順位を前記分別条件表により判定し、その優先順位よりも低い優先順位のデータベースアクセス手順を前記格納バッファから破棄して、前記生成したデータベースアクセス手順を前記格納バッファに格納する管理部としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータベースを管理するデータベース管理装置に関し、特にデータベースへのアクセス手順を管理し、そのオブジェクトコードであるＳＱＬオブジェクトのキャッシング機能を有するデータベース管理装置に適用して有効な技術に関するものである。
【０００２】
【従来の技術】
ユーザがＳＱＬ文を実行する際、データベース管理装置は、ＳＱＬ文をコンパイルしてオブジェクトコード（以後、本明細書では便宜上これをＳＱＬオブジェクトと呼称する）に変換した後、データベース管理装置が管理している主記憶領域に格納しておくキャッシングを行う。同じＳＱＬ文を実行する際には、該当するＳＱＬオブジェクトを主記憶から検索し、そのＳＱＬオブジェクトを使用することで、コンパイル処理を省略してＳＱＬ文を実行することができる。
【０００３】
また、上記の形態ではＳＱＬオブジェクトを保持できる量に限界がある為、ＳＱＬオブジェクトを新たに保持する領域が無くなった場合にデータベース管理装置は、ＬＲＵ(Least Recently Used)によって置き換えられるＳＱＬオブジェクトを決定し、その決定されたＳＱＬオブジェクトを新しいＳＱＬオブジェクトで置き換えている（例えば特許文献１参照）。
【０００４】
【特許文献１】
特開平０７−０６４８３７号公報（第４頁）
【０００５】
【発明が解決しようとする課題】
上記の従来技術では、次の様な問題がある。
▲１▼  ＳＱＬ文の実行をＳＱＬ文の解析とＳＱＬオブジェクトの実行とに分けたとき、ＳＱＬオブジェクトの実行に長い時間を要するＳＱＬ文では、キャッシングにより省略できる解析時間に比較して実行時間が長い為、解析の省略による実行高速化の効果が薄い。
▲２▼  ▲１▼の問題を持つＳＱＬ文が多い場合、高速化の効果が薄いＳＱＬオブジェクトが主記憶を占領する為、主記憶の使用効率が悪くなる。
▲３▼  また、特に高速に実行したいＳＱＬ文であっても、そのＳＱＬオブジェクトは他のＳＱＬオブジェクトと同じ基準で主記憶から破棄されてしまう。
本発明の目的は上記問題を解決し、データベースにおいてデータベースアクセス手順のキャッシュ管理を効果的に行い、データベース操作を高性能化することが可能な技術を提供することにある。
【０００６】
【課題を解決するための手段】
本発明は、データベースにアクセスする際の手順を示すデータベースアクセス手順を格納バッファで管理するデータベース管理装置において、入力されたＳＱＬ文の比較基準値に対応する優先順位に応じてそのデータベースアクセス手順を格納バッファに格納するものである。
【０００７】
本発明では、まずＳＱＬ文の特徴を示す比較基準とそのデータベースアクセス手順であるＳＱＬオブジェクトの優先順位の入力を受け付けて、その内容を示す分別条件表を保持しておく。
【０００８】
データベース問い合せの為のＳＱＬ文が入力されると、その入力されたＳＱＬ文に該当するＳＱＬオブジェクトがＳＱＬオブジェクト格納バッファ中に存在しているかどうかを調べ、存在していない場合には、そのＳＱＬ文を解析してＳＱＬオブジェクトを生成する。
【０００９】
そして、ＳＱＬオブジェクト格納バッファに空きが有るかどうかを調べ、空きが無い場合には、前記入力されたＳＱＬ文の比較基準値に対応する優先順位を前記分別条件表により判定した後、その判定された優先順位よりも低い優先順位のＳＱＬオブジェクトをＳＱＬオブジェクト格納バッファから破棄して、前記生成したＳＱＬオブジェクトをＳＱＬオブジェクト格納バッファに格納する。
【００１０】
このデータベース管理装置によれば、ＳＱＬ文の種類、解析時間または使用リソースをＳＱＬ文の比較基準として指定することにより、特定の操作や特定の対象に対するＳＱＬ文の優先順位をユーザが変化させることが可能であり、ＳＱＬオブジェクト格納バッファにユーザの所望するＳＱＬ文のオブジェクトが残留する可能性が高くなって、ユーザが特に高速に実行したい問い合わせに対するデータベース操作を効率良く行うことができる。
【００１１】
また、ＳＱＬ文の比較基準として実行時間に対する解析時間の割合を指定することにより、解析の省略による実行高速化が効果的であるＳＱＬ文のオブジェクトを優先して残すこともできる為、複数のＳＱＬの実行が全体として早くなる場合もある。
【００１２】
前記の様に本発明のデータベース管理装置によれば、データベースにおけるＳＱＬオブジェクトの管理方法をＳＱＬ文毎に変えることができるので、主記憶等の記憶装置を効率的に使用することができ、特定のＳＱＬ文に対する実行の高速化を図ることができる。
【００１３】
以上の様に本発明のデータベース管理装置によれば、入力されたＳＱＬ文の比較基準値に対応する優先順位に応じてそのデータベースアクセス手順を格納バッファに格納するので、データベースにおいてデータベースアクセス手順のキャッシュ管理を効果的に行い、データベース操作を高性能化することが可能である。
【００１４】
【発明の実施の形態】
以下にデータベースにおけるデータベースアクセス手順であるＳＱＬオブジェクトを主記憶中のＳＱＬオブジェクト格納バッファに格納して管理する一実施形態のデータベース管理装置について説明する。
【００１５】
図１は本実施形態のＳＱＬオブジェクトキャッシング処理の概要を示す図である。図１に示す様に本実施形態では、入力ＳＱＬ文１１１の比較基準値に対応する優先順位に応じて、そのデータベースアクセス手順であるＳＱＬオブジェクトをＳＱＬオブジェクト格納バッファに格納する。なお本実施形態では、ＳＱＬ文をコンパイルし、データベースアクセス手順等をオブジェクトコードにしたものをＳＱＬオブジェクトと呼称する。
【００１６】
図２は本実施形態のデータベース管理装置の概略構成を示す図である。図２の様に本実施形態のデータベース管理装置２０１は、コントロール部２１１と、ＳＱＬ文解析部２１２と、ＳＱＬオブジェクト生成部２１３と、ＳＱＬオブジェクト実行部２１４と、ＳＱＬオブジェクト管理部２１５と、ＳＱＬオブジェクト格納バッファ２１６を有している。
【００１７】
コントロール部２１１は、各処理のフロー制御と処理に必要な情報を受け渡す処理部である。ＳＱＬ文解析部２１２は、入力されたＳＱＬ文に該当するデータベースアクセス手順であるＳＱＬオブジェクトがＳＱＬオブジェクト格納バッファ２１６中に存在していない場合に、その字句解析や構文解析等を行って当該ＳＱＬ文の意味を解析する処理部である。ＳＱＬオブジェクト生成部２１３は、ＳＱＬ文解析部２１２の解析結果を基にデータベースのアクセス手順を決定し、その結果をＳＱＬオブジェクトとして生成する処理部である。
【００１８】
ＳＱＬオブジェクト実行部２１４は、ＳＱＬオブジェクト生成部２１３で生成されたＳＱＬオブジェクト、または、ＳＱＬオブジェクト管理部２１５がＳＱＬオブジェクト格納バッファ２１６から探し出したＳＱＬオブジェクトを実行する処理部である。
【００１９】
ＳＱＬオブジェクト管理部２１５は、ＳＱＬオブジェクトの検索と格納と破棄を行う処理部であり、ＳＱＬ文の比較基準とその優先順位を示す分別条件表を保持し、入力されたＳＱＬ文のＳＱＬオブジェクトがＳＱＬオブジェクト格納バッファ２１６に格納されておらず、ＳＱＬオブジェクト格納バッファ２１６に空きが無い場合に、入力されたＳＱＬ文の比較基準値に対応する優先順位を前記分別条件表により判定し、その優先順位よりも低い優先順位のＳＱＬオブジェクトをＳＱＬオブジェクト格納バッファ２１６から破棄して、入力されたＳＱＬ文のＳＱＬオブジェクトをＳＱＬオブジェクト格納バッファ２１６に格納する管理部である。
【００２０】
またＳＱＬオブジェクト管理部２１５は、検索部２２１、格納部２２２、主記憶管理部２２３を有しており、格納部２２２は、分別部２３１と分別条件部２３２を有している。検索部２２１は、ＳＱＬオブジェクト格納バッファ２１６から入力ＳＱＬ文に該当するＳＱＬオブジェクトを探す処理部である。格納部２２２は、分別条件部２３２に格納されている分別条件表を分別部２３１により検索してＳＱＬオブジェクトのキャッシング方法を判定した後、その判定に従ってＳＱＬオブジェクト格納バッファ２１６にＳＱＬオブジェクトを格納する処理部である。主記憶管理部２２３は、ＳＱＬオブジェクトの優先順位に従ってＳＱＬオブジェクトを破棄する処理部である。
【００２１】
そしてＳＱＬオブジェクト格納バッファ２１６は、入力されたＳＱＬ文のＳＱＬオブジェクトを格納する主記憶領域である。ここで主記憶装置以外の記憶装置上にＳＱＬオブジェクト格納バッファ２１６を設けることとしても良い。
【００２２】
データベース管理装置２０１を、コントロール部２１１、ＳＱＬ文解析部２１２、ＳＱＬオブジェクト生成部２１３、ＳＱＬオブジェクト実行部２１４、ＳＱＬオブジェクト管理部２１５として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、主記憶にロードされて実行されるものとする。なお前記プログラムを記録する記録媒体は、ＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また、前記プログラムを記録する当該記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するとしても良い。
【００２３】
また本実施形態において、ＳＱＬ文や制御文は入力装置２４１から入力され、データの情報はディクショナリ格納媒体２５１、データ本体はデータ格納媒体２５２に格納される。
【００２４】
次に本実施形態の概要を、図１を用いて説明する。データベース管理装置２０１の構成は前述の通りであるものとする。ここでは本実施形態の特徴のみを説明する。
【００２５】
入力ＳＱＬ文１１１は、入力装置２４１より入力されるＳＱＬ文の表である。ＳＱＬ文の比較基準はＳＱＬ文の優先順位を判定する際に必要な情報で、ＳＱＬ文の種類、解析時間や使用するリソース名等がこれにあたる。ＳＱＬ文１（１２１）は、比較基準がＣ２で、そのＳＱＬオブジェクトがＳ１であることを表している。
【００２６】
分別条件表１１２はＳＱＬ文に優先順位を付ける為の表である。ＳＱＬ文解析部２１２で取得したＳＱＬ文の比較基準をキーにしてそのＳＱＬ文の優先順位とキャッシング方法を判定するのに使用する。
【００２７】
本実施形態では、ＳＱＬオブジェクト格納バッファ２１６に格納されるＳＱＬオブジェクトＳ１（１３１）からＳ７（１３７）には優先順位が付けられる。ここでは図の上方ほど優先順位が高いものとする。また、説明の便宜上、本実施形態では、ＳＱＬオブジェクト格納バッファ２１６に格納できるＳＱＬオブジェクトは５個までとし、各オブジェクトのサイズは同じであるものとする。
【００２８】
図６は本実施形態のＳＱＬオブジェクト管理処理の処理手順を示すフローチャートである。図６のフローを参照して、本実施形態のＳＱＬオブジェクト管理処理の処理手順を説明する。
【００２９】
ステップ６０１でデータベース管理装置２０１のＳＱＬオブジェクト管理部２１５は、ユーザがＳＱＬ文の比較基準とその優先順位をデータベース管理装置２０１に登録すると、その入力されたＳＱＬ文の比較基準と優先順位の情報を受け付ける。
【００３０】
その後ステップ６０２では、優先順位とその優先順位に対するキャッシング方法の指定を受け付ける。指定の方法は、データベース管理装置２０１起動時に制御文等で行っても良いし、データベース管理装置２０１起動後に入力装置２４１から入力しても良い。また、ＳＱＬ文の優先順位ではなくキャッシング方法を直接指定しても良く、優先順位に対するキャッシング方法はシステムが予め規定しておいても良い。
ステップ６０３でＳＱＬオブジェクト管理部２１５は、前記の様にして受け付けた優先順位とキャッシング方法を分別条件部２３２に表形式で保持する。
【００３１】
次にステップ６０４では、実行対象のＳＱＬ文の入力を受け付け、ステップ６０５では、前記受け付けたＳＱＬ文に該当するＳＱＬオブジェクトがＳＱＬオブジェクト格納バッファ２１６に存在しているかどうかを調べる。
【００３２】
前記受け付けたＳＱＬ文に該当するＳＱＬオブジェクトがＳＱＬオブジェクト格納バッファ２１６に存在している場合にはステップ６１５へ進み、そのＳＱＬオブジェクト格納バッファ２１６に存在しているＳＱＬオブジェクトをＳＱＬオブジェクト実行部２１４により実行する。
【００３３】
また、該当するＳＱＬオブジェクトがＳＱＬオブジェクト格納バッファ２１６に存在していない場合にはステップ６０６へ進み、前記受け付けたＳＱＬ文をＳＱＬ文解析部２１２により解析して比較基準に該当する情報の取得し、その字句解析や構文解析等を行って当該ＳＱＬ文の意味を解析する。ステップ６０７では、ＳＱＬオブジェクト生成部２１３により、ＳＱＬ文解析部２１２の解析結果を基にデータベースのアクセス手順を決定し、ＳＱＬオブジェクトを生成する。
【００３４】
その後、ステップ６０８でＳＱＬオブジェクト管理部２１５は、ＳＱＬ文解析部２１２で取得した比較基準値をキーとして分別条件部２３２の分別表を検索してそのＳＱＬ文の優先順位を判定する。
【００３５】
ステップ６０９では、前記判定した優先順位をキーにしてキャッシング方法を求め、ステップ６１０では、その求めたキャッシング方法中にキャッシングすることが示されているかどうかを調べる。その結果、そのキャッシング方法中にキャッシングしないことが示されている場合、すなわちそのキャッシング方法として「なし」と記載されている場合には、そのＳＱＬオブジェクトをステップ６１５で実行後、ＳＱＬオブジェクト格納バッファ２１６に格納せずに破棄する。
【００３６】
前記求めたキャッシング方法中にキャッシングすることが示されている場合、すなわちそのキャッシング方法に対する優先順位が示されている場合にはステップ６１１へ進み、ＳＱＬオブジェクト格納バッファ２１６に空きがあるかどうかを調べる。
【００３７】
ＳＱＬオブジェクト格納バッファ２１６に空きがある場合にはステップ６１４へ進み、そのＳＱＬオブジェクトをＳＱＬオブジェクト格納バッファ２１６へ格納する。空きが無い場合にはステップ６１２へ進み、ＳＱＬオブジェクト格納バッファ２１６に格納されているＳＱＬオブジェクトの内で最も優先順位の低いＳＱＬオブジェクトを破棄する候補にした後、前記生成した格納しようとしているＳＱＬオブジェクトと優先順位を比較する。
【００３８】
前記比較の結果、格納しようとしている方の優先順位が低い場合には格納せずにステップ６１５へ進み、格納しようとしている方の優先順位が高い場合にはステップ６１３へ進み、そのＳＱＬオブジェクトが格納できるだけの領域が確保できるまで優先順位の低いＳＱＬオブジェクトをＳＱＬオブジェクト格納バッファ２１６から破棄した後、ステップ６１４では、前記生成したＳＱＬオブジェクトをその空いたところに格納する。
【００３９】
以上の処理手順によりＳＱＬ文１（１２１）を入力装置２４１から入力すると、ＳＱＬ文解析部２１２の処理により優先順位の比較基準値Ｃ２を取得し、この値をキーにした分別条件表の検索の結果、ＳＱＬオブジェクトＳ１のキャッシング方法が「高」であると判定できる（ステップ６０４からステップ６０９）。この結果に従って、ＳＱＬオブジェクトＳ１（１３１）は優先順位：高でキャッシュされる（ステップ６１４）。
【００４０】
同様にＳＱＬ文２（１２２）からＳＱＬ文７（１２７）を入力すると、ＳＱＬオブジェクトＳ２（１３２）は優先順位：低、Ｓ３（１３３）は優先順位：最高、Ｓ４（１３４）は優先順位：中、Ｓ５（１３５）はキャッシュされず、Ｓ６（１３６）は優先順位：中でキャッシュされる。Ｓ７（１３７）をキャッシュするときに、優先順位の最も低いＳ２（１３２）がＳＱＬオブジェクト格納バッファ２１６から破棄され、Ｓ７（１３７）が新たにキャッシュされる。
この結果、優先順位を高く設定したＳＱＬ文３（１２１）やＳＱＬ文１（１２１）はＳＱＬオブジェクト格納バッファ２１６に残留する可能性が高くなる。
【００４１】
この様に、ＳＱＬオブジェクト格納バッファ２１６に入るオブジェクトをユーザが指定することで、特定のＳＱＬ文の応答が高速化でき、データベースのアクセスを効率良く行うことができる。
【００４２】
次に図３を用いてＳＱＬ文の種類による分別方法について説明する。データベース管理装置２０１の構成は図２の通りであり、ＳＱＬオブジェクト実行の手順は図１に従うものとして、ＳＱＬオブジェクトの分別方法を説明する。
【００４３】
図３は本実施形態のＳＱＬ文の種類による分別の概要を示す図である。入力ＳＱＬ文３０１は入力装置２４１より入力されるＳＱＬ文を表している。ＳＱＬ文１（３１１）からＳＱＬ文６（３１６）はＳＱＬ文の種類とそのＳＱＬ文のオブジェクトを示している。例えばＳＱＬ文１（３１１）は、その文の種類がＳＥＬＥＣＴ文でＳＱＬオブジェクトがＳ１（３６１）であることを示している。
【００４４】
分別条件表３２１は、ユーザが指定したＳＱＬ文の種類とその優先順位を表形式で表したものである。優先順位に対するキャッシング方法表３３１は、本実施形態によるデータベース管理装置２０１によって予め規定され、分別条件部２３２に保持されているものとする。優先順位Ｐ１（３４１）からＰ５（３４５）はＳＱＬ文の優先順位を表し、優先順位の高い方から順にＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５であるものとする。Ｂ１（３５１）からＢ５（３５５）はキャッシング方法を示しており、ＳＱＬオブジェクト格納バッファ２１６に長く残る可能性の高い順にＢ１、Ｂ２、Ｂ３、Ｂ４であるものとし、Ｂ５はＳＱＬオブジェクトをキャッシングしないことを表すものとする。
また、同じ優先順位のＳＱＬオブジェクト同士はＬＲＵの様な従来の管理方法で管理するものとする。
【００４５】
図７は本実施形態のＳＱＬの種類によるキャッシング分別処理の処理手順を示すフローチャートである。図７のフローチャートを参照して、ＳＥＬＥＣＴ文の応答をユーザが優先したい場合の処理手順を説明する。
【００４６】
データベース管理装置２０１が起動されると、ステップ７０１でＳＱＬオブジェクト管理部２１５は処理を開始し、ステップ７０２では、優先順位に対応するキャッシング方法を決定して保持する。この例ではデータベース管理装置２０１が優先順位に対するキャッシング方法を規定しており、ユーザはＳＱＬ文の優先順位のみ指定すれば良いものとする。
【００４７】
ステップ７０３では、ＳＱＬ文の種類とその優先順位の入力を受け付ける。例えばユーザは、まずＳＥＬＥＣＴ文の優先順位を高くする為にＰ１と入力する。これは入力装置２４１から入力しても良いし、予めデータベース管理装置２０１起動時に登録しても良い。同様に、ＩＮＳＥＲＴ文、ＵＰＤＡＴＥ文、ＤＥＬＥＴＥ文、その他の文については優先順位を低くするためＰ５と入力する。
ステップ７０４では、前記受け付けたＳＱＬ文の種類及び優先順位を分別条件部２３２に表形式で保持する。
【００４８】
次に実行対象のＳＱＬ文の入力を受け付け、該当するＳＱＬオブジェクトがＳＱＬオブジェクト格納バッファ２１６に存在していない場合には、ＳＱＬ文解析部２１２及びＳＱＬオブジェクト生成部２１３によりＳＱＬオブジェクトを生成する（ステップ６０４からステップ６０７）。
【００４９】
ステップ７０５でＳＱＬオブジェクト管理部２１５は、ＳＱＬ文解析部２１２での解析結果よりＳＱＬ文の種類を取得し、ステップ７０６では、その取得したＳＱＬ文の種類をキーとして分別条件表３２１を検索し、優先順位を取得する。そしてステップ７０７では、前記取得した優先順位をキーとしてキャッシング方法を判定する。
【００５０】
例えば図３の条件の基で、入力ＳＱＬ文３０１を上から順に入力した場合、ＳＱＬ文１（３１１）は、ＳＱＬ文解析部２１２の処理の結果、ＳＥＬＥＣＴ文であることが分かるので、分別部２３１が分別条件部２３２の分別条件表３２１からＳＥＬＥＣＴ文に対する優先順位を検索してＰ１を得る。次にＰ１をキーにして表３３１を検索してキャッシング方法を判定する（ステップ７０５〜ステップ７０７）。検索の結果キャッシング方法がＢ１だと分かるので、前記ステップ６１０からステップ６１４と同様の処理を行い、格納部２２２がＳＱＬオブジェクトＳ１（３６１）をＳＱＬオブジェクト格納バッファ２１６に格納する。
【００５１】
ＳＱＬ文２（３１２）の場合には、ＳＱＬ文解析部２１２の処理結果によりＳＱＬ文がＵＰＤＡＴＥ文であることが分かるので、分別部２３１が分別条件部２３２の分別条件表３２１からＵＰＤＡＴＥ文に対する優先順位を検索し、その結果をキーにして表３３１を検索してキャッシング方法を判定する（ステップ７０５〜７０７）。検索の結果、キャッシング方法がＢ５の優先順位の最も低い方法だと分かるので、格納部２２２はＳＱＬオブジェクトＳ２（３６２）をＳＱＬオブジェクト格納バッファ２１６に格納せずに、ＳＱＬオブジェクト実行後、破棄する（ステップ６１０、ステップ６１５）。
【００５２】
同様に、ＳＱＬ文３（３１３）からＳＱＬ文６（３１６）を入力すると、ＳＱＬ文３（３１３）とＳＱＬ文６（３１６）はＳＱＬ文がＳＥＬＥＣＴ文であるので、キャッシング方法Ｂ１でキャッシング管理され、ＳＱＬ文４（３１４）とＳＱＬ文５（３１５）についてはキャッシング方法Ｂ５なのでキャッシングしない。この結果、ＳＱＬオブジェクト格納バッファ２１６にはＳＥＬＥＣＴ文のＳＱＬオブジェクトのみが格納される。なお、ＳＱＬオブジェクト格納バッファ２１６にヒットしたＳＱＬ文の扱いは前記の通りであるものとする（ステップ６０４、ステップ６０５、ステップ６１５）。
【００５３】
この様にして、特定の種類のＳＱＬ文に対するＳＱＬオブジェクトのみをＳＱＬオブジェクト格納バッファ２１６に格納し、主記憶領域を浪費せず、ユーザが特に高速にしたい問い合わせに対するＳＱＬオブジェクトのヒット率を高め、データベース操作を効率良く行うことができる。
【００５４】
次に図４を用いてＳＱＬ文の解析時間による分別方法について説明する。データベース管理装置２０１の構成は図２の通りであり、ＳＱＬオブジェクト実行の手順は図１に従うものとして、ＳＱＬオブジェクトの分別方法を説明する。
【００５５】
図４は本実施形態のＳＱＬ文の解析時間による分別の概要を示す図である。入力ＳＱＬ文４０１は、入力装置２４１より入力されるＳＱＬ文を表している。ＳＱＬ文１（４１１）からＳＱＬ文６（４１６）は、ＳＱＬ文とＳＱＬ文の解析時間を数段階のレベルに分けたものとＳＱＬオブジェクトを示している。
【００５６】
解析時間としては、ここでは５段階に分けたものをシステムが用意しておき、そのＳＱＬ文のＳＱＬオブジェクトの実行時間に対するＳＱＬ文の解析時間の割合が大きい順に、ＬＯＮＧＥＳＴ、ＬＯＮＧ、ＮＯＲＭＡＬ、ＳＨＯＲＴ、ＳＨＯＲＴＥＳＴであるものとする。例えばＳＱＬ文１（４１１）は解析時間がＬＯＮＧでＳＱＬオブジェクトがＳ１（４６１）であることを示している。
【００５７】
分別条件表４２１はユーザが指定したＳＱＬ文の解析時間とその優先順位を表形式で表したものである。優先順位に対するキャッシング方法表４３１はユーザが指定した優先順位とそのキャッシング方法を表形式で表したものである。優先順位Ｐ１（４４１）からＰ５（４４５）はＳＱＬ文の優先順位を表し、優先順位の高い方から順にＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５であるものとする。Ｂ１（４５１）からＢ５（４５５）はキャッシング方法を示しており、ＳＱＬオブジェクト格納バッファ２１６に長く残る可能性の高い順にＢ１、Ｂ２、Ｂ３、Ｂ４であるものとし、Ｂ５はＳＱＬオブジェクトをキャッシングしないことを表すものとする。
【００５８】
また、同じ優先順位のＳＱＬオブジェクト同士はＬＲＵの様な従来の管理方法で管理するものとする。ここでは、ＳＱＬオブジェクト格納バッファ２１６が保持できるＳＱＬオブジェクトは３つまでとし、ＳＱＬオブジェクトのサイズは全て同じであるものとする。
【００５９】
図８は本実施形態のＳＱＬ文の解析処理によるキャッシング分別の処理手順を示すフローチャートである。図８のフローチャートを参照して、解析処理の省略が効果的であるＳＱＬ文のＳＱＬオブジェクトを主記憶に格納し、効率的に主記憶を使用したい場合の処理手順を説明する。
【００６０】
データベース管理装置２０１が起動されると、ステップ８０１でＳＱＬオブジェクト管理部２１５は処理を開始し、ステップ８０２では、ＳＱＬの解析時間レベルとその優先順位の入力を受け付ける。すなわち、データベース管理装置２０１起動後、ユーザは解析時間レベルの最も大きいＬＯＮＧＥＳＴのＳＱＬ文の優先順位をＰ１と入力する。これは入力装置２４１から入力しても良いし、予めデータベース管理装置２０１起動時に登録しても良い。同様に、解析時間レベルがＬＯＮＧのＳＱＬ文、ＮＯＲＭＡＬのＳＱＬ文、ＳＨＯＲＴのＳＱＬ文、その他の文の優先順位をそれぞれＰ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６と入力する。
【００６１】
次にステップ８０３では、優先順位Ｐ１からＰ５に対するキャッシング方法の入力を受け付ける。ここでは優先順位Ｐ１のＳＱＬ文のキャッシング方法をＢ１、Ｐ２をＢ２、Ｐ３をＢ３、Ｐ４をＢ４、Ｐ５をＢ５と入力する。
ステップ８０４では、前記受け付けた解析時間レベルと優先順位とキャッシング方法を、ＳＱＬオブジェクト管理部２１５の格納部２２２の分別条件部２３２に表形式で保持する。
【００６２】
次に実行対象のＳＱＬ文の入力を受け付け、該当するＳＱＬオブジェクトがＳＱＬオブジェクト格納バッファ２１６に存在していない場合には、ＳＱＬ文解析部２１２及びＳＱＬオブジェクト生成部２１３によりＳＱＬオブジェクトを生成する（ステップ６０４からステップ６０７）。
【００６３】
ステップ８０５でＳＱＬオブジェクト管理部２１５は、ＳＱＬ文解析部２１２での解析結果よりＳＱＬ文の解析時間を取得し、ステップ８０６では、その取得したＳＱＬ文の解析時間を前記解析時間レベルのいずれかに評価する。この評価の際に、解析時間と実行時間の割合を用いる場合には、同様のＳＱＬ文のＳＱＬオブジェクトを以前に実行した際の実行時間を用いるものとする。ステップ８０７では、前記評価した解析時間レベルをキーとして分別条件表３２１を検索し、優先順位を取得する。そしてステップ８０８では、前記取得した優先順位をキーとしてキャッシング方法を判定する。
【００６４】
例えば図４の条件の基で、入力ＳＱＬ文４０１を上から順に入力した場合、ＳＱＬ文１（４１１）はＳＱＬ文解析部２１２の処理の結果解析時間がＬＯＮＧであることが分かるので、分別部２３１が分別条件部２３２の分別条件表４２１から解析時間ＬＯＮＧに対する優先順位を検索し、その結果をキーにして表４３１を検索してキャッシング方法を判定する（ステップ８０５、ステップ８０６、ステップ８０７）。検索の結果キャッシング方法がＢ２だと分かるので、格納部２２２が３６１のＳＱＬオブジェクトＳ１をＳＱＬオブジェクト格納バッファ２１６にＢ２の方法で格納する（ステップ６１０からステップ６１４）。
【００６５】
ＳＱＬ文２（４１２）の場合には、ＳＱＬ文解析部２１２の処理結果解析時間がＳＨＯＲＴであることが分かるので、分別部２３１が分別条件部２３２の分別条件表４２１から解析時間ＳＨＯＲＴに対する優先順位を検索し、その結果をキーにして表４３１を検索してキャッシング方法を判定する（ステップ８０５からステップ８０８）。検索の結果キャッシング方法がＢ４だと分かるので、格納部２２２がＳＱＬオブジェクトＳ１（４６１）をＳＱＬオブジェクト格納バッファ２１６に格納する（ステップ６１０からステップ６１４）。
【００６６】
同様に、ＳＱＬ文３（４１３）は判定の結果キャッシングされず、ＳＱＬ文４（４１４）は判定の結果キャッシングされ、ＳＱＬ文５（４１５）は判定の結果キャッシングされないことになる。ＳＱＬ文６（４１６）は判定の結果キャッシングされるが、既にＳＱＬオブジェクト格納バッファ２１６が一杯なので、バッファからＳＱＬオブジェクトを破棄する。このとき、最も優先順位の低いＳＱＬオブジェクトＳ２（４６２）が破棄の候補になる。ＳＱＬオブジェクトＳ２（４６２）とＳＱＬオブジェクトＳ６（４６６）を比較して、ＳＱＬオブジェクトＳ２（４６２）の優先順位が低いので、これを破棄し、ＳＱＬオブジェクトＳ６（４６６）をＳＱＬオブジェクト格納バッファ２１６に格納する（ステップ６１０からステップ６１４）。なお、ＳＱＬオブジェクト格納バッファ２１６にヒットしたＳＱＬ文の扱いは従来通りであるものとする（ステップ６０４、ステップ６０５、ステップ６１５）。
【００６７】
この様にして、解析に時間のかかるＳＱＬ文に対するＳＱＬオブジェクトを優先してＳＱＬオブジェクト格納バッファ２１６に格納することで、解析処理を省略した場合の実行時間が大幅に短くなり、データベース操作を高速に行うことができる。
【００６８】
次に図５を用いてＳＱＬ文が使用するリソース名による分別方法について説明する。データベース管理装置２０１の構成は図２の通りであり、ＳＱＬオブジェクト実行の手順は図１に従うものとして、ＳＱＬオブジェクトの分別方法を説明する。
【００６９】
図５は本実施形態のＳＱＬ文が使用するリソース名による分別の概要を示す図である。入力ＳＱＬ文５０１は入力装置２４１より入力されるＳＱＬ文を表している。ＳＱＬ文１（５１１）からＳＱＬ文６（５１６）はＳＱＬ文とそのＳＱＬ文が使用するリソース名とＳＱＬオブジェクトを示している。例えばＳＱＬ文１（５１１）はＴ１という名前のリソースをアクセスし、ＳＱＬオブジェクトがＳ１（５６１）であることを示している。
【００７０】
分別条件表５２１はユーザが指定したリソース名とその優先順位を表形式で表したものである。優先順位に対するキャッシング方法表５３１は本実施形態によるデータベース管理装置２０１が予め分別条件部２３２に保持しているものとする。優先順位Ｐ１（５４１）からＰ５（５４５）はＳＱＬ文の優先順位を表し、優先順位の高い方から順にＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５であるものとする。Ｂ１（５５１）からＢ５（５５５）はキャッシング方法を示しており、ＳＱＬオブジェクト格納バッファ２１６に長く残る可能性の高い順にＢ１、Ｂ２、Ｂ３、Ｂ４であるものとし、Ｂ５はＳＱＬオブジェクトをキャッシングしないことを表すものとする。
【００７１】
また、同じ優先順位のＳＱＬオブジェクト同士はＬＲＵの様な従来の管理方法で管理するものとする。この例では便宜上、ＳＱＬオブジェクト格納バッファ２１６に格納できるＳＱＬオブジェクトは３つまでとし、オブジェクトのサイズは全て同じであるものとする。
【００７２】
図９は本実施形態のＳＱＬ文が使用するリソース名による分別処理の処理手順を示すフローチャートである。図９のフローチャートを参照して、リソース名Ｔ１にアクセスするＳＱＬ文の応答をユーザが優先したい場合の処理手順を説明する。
【００７３】
データベース管理装置２０１が起動されると、ステップ９０１でＳＱＬオブジェクト管理部２１５は処理を開始し、ステップ９０２では、優先順位に対応するキャッシング方法を決定して保持する。この例ではデータベース管理装置２０１が優先順位に対するキャッシング方法を規定しており、ユーザはＳＱＬ文の優先順位のみ指定すれば良いものとする。
【００７４】
ステップ９０３では、リソース名とその優先順位の入力を受け付ける。例えばユーザは、まずリソース名Ｔ１の優先順位をＰ１と入力する。これは入力装置２４１から入力しても良いし、予めデータベース管理装置２０１起動時に登録しても良い。システムが予め優先順位に対するキャッシング方法を分別条件部に保持しているので、ユーザは優先順位に対するキャッシング方法を入力しなくとも良い。同様に、リソース名Ｔ２、Ｔ３、その他について、優先順位をそれぞれＰ３、Ｐ４、Ｐ５と入力する。
ステップ９０４では、前記受け付けたＳＱＬ文の種類及び優先順位を分別条件部２３２に表形式で保持する。
【００７５】
次に実行対象のＳＱＬ文の入力を受け付け、該当するＳＱＬオブジェクトがＳＱＬオブジェクト格納バッファ２１６に存在していない場合には、ＳＱＬ文解析部２１２及びＳＱＬオブジェクト生成部２１３によりＳＱＬオブジェクトを生成する（ステップ６０４からステップ６０７）。
【００７６】
ステップ９０５でＳＱＬオブジェクト管理部２１５は、ＳＱＬ文解析部２１２での解析結果よりＳＱＬ文が使用するリソース名を取得し、ステップ９０６では、その取得したリソース名をキーとして分別条件表３２１を検索し、優先順位を取得する。そしてステップ９０７では、前記取得した優先順位をキーとしてキャッシング方法を判定する。
【００７７】
例えば図５の条件の基で、入力ＳＱＬ文５０１を上から順に入力した場合、ＳＱＬ文１（５１１）はＳＱＬ文解析部２１２によりリソース名Ｔ１をアクセスするＳＱＬ文であることが分かるので、分別部２３１が分別条件部２３２の分別条件表５２１からＴ１に対する優先順位を検索しＰ１を得る。次にＰ１をキーにして表５３１を検索してキャッシング方法を判定する（ステップ９０５からステップ９０７）。検索の結果キャッシング方法がＢ１だと分かるので、格納部２２２がＳＱＬオブジェクトＳ１（３６１）をＳＱＬオブジェクト格納バッファ２１６に格納する（ステップ６１０からステップ６１４）。
【００７８】
ＳＱＬ文２（５１２）の場合には、ＳＱＬ文解析部２１２の処理結果によりＳＱＬ文がリソース名Ｔ２をアクセスすることが分かるので、分別部２３１が分別条件部２３２の分別条件表５２１からＴ２に対する優先順位を検索しＰ３を得る。次にＰ３をキーにして表５３１を検索してキャッシング方法を判定する（ステップ９０５からステップ９０７）。検索の結果キャッシング方法がＢ３だと分かるので、格納部２２２がＳＱＬオブジェクトＳ２（５６２）をＳＱＬオブジェクト格納バッファ２１６にＢ３の方法で格納する。
【００７９】
同様に、ＳＱＬ文３（５１３）は判定の結果Ｂ１の方法でキャッシングされ、ＳＱＬ文４（５１４）は判定の結果キャッシングされない。ＳＱＬ文５（５１５）は判定の結果キャッシングされるが、既にＳＱＬオブジェクト格納バッファ２１６が一杯なので、バッファからＳＱＬオブジェクトを破棄する。このとき、最も優先順位の低いＳＱＬオブジェクトＳ２（５６２）が破棄の候補になる。ＳＱＬオブジェクトＳ２（５６２）とＳＱＬオブジェクトＳ５（５６５）を比較して、ＳＱＬオブジェクトＳ２（５６２）の優先順位が低いので、ＳＱＬオブジェクトＳ２（５６２）を破棄し、ＳＱＬオブジェクトＳ５（５６５）をＳＱＬオブジェクト格納バッファ２１６に格納する（ステップ６１０からステップ６１４）。
【００８０】
ＳＱＬ文６（５１６）は判定の結果Ｂ４の方法でキャッシングされるが、既にＳＱＬオブジェクト格納バッファ２１６が一杯なので、バッファからＳＱＬオブジェクトを破棄する。このとき、最も優先順位の低いＳＱＬオブジェクトＳ１（５６１）が破棄の候補になる。ＳＱＬオブジェクトＳ１（５６１）とＳＱＬオブジェクトＳ６（５６６）を比較して、ＳＱＬオブジェクトＳ１（５６１）の優先順位が高いので、これを破棄せず、Ｓ６（５６６）のキャッシングをしないで格納処理を終了する（ステップ６１０からステップ６１４）。なお、ＳＱＬオブジェクト格納バッファ２１６にヒットしたＳＱＬ文の扱いは従来通りであるものとする（ステップ６０４、ステップ６０５、ステップ６１５）。
【００８１】
この様にして、特定のリソースをアクセスするＳＱＬ文に対するＳＱＬオブジェクトを優先してＳＱＬオブジェクト格納バッファ２１６に格納することで、主記憶を浪費せず、ユーザが特に高速にしたい問い合わせに対するＳＱＬオブジェクトのヒット率を高め、データベース操作を効率良くに行うことができる。
【００８２】
前記の様に本実施形態により、ユーザの指定でＳＱＬオブジェクトの取捨選択ができるので、ユーザが特に優先したいＳＱＬ文の実行を高速化することができ、主記憶を効率的に使用することが可能である。
【００８３】
以上説明した様に本実施形態のデータベース管理装置によれば、入力されたＳＱＬ文の比較基準値に対応する優先順位に応じてそのデータベースアクセス手順を格納バッファに格納するので、データベースにおいてデータベースアクセス手順のキャッシュ管理を効果的に行い、データベース操作を高性能化することが可能である。
【００８４】
【発明の効果】
本発明によれば入力されたＳＱＬ文の比較基準値に対応する優先順位に応じてそのデータベースアクセス手順を格納バッファに格納するので、データベースにおいてデータベースアクセス手順のキャッシュ管理を効果的に行い、データベース操作を高性能化することが可能である。
【図面の簡単な説明】
【図１】本実施形態のＳＱＬオブジェクトキャッシング処理の概要を示す図である。
【図２】本実施形態のデータベース管理装置の概略構成を示す図である。
【図３】本実施形態のＳＱＬ文の種類による分別の概要を示す図である。
【図４】本実施形態のＳＱＬ文の解析時間による分別の概要を示す図である。
【図５】本実施形態のＳＱＬ文が使用するリソース名による分別の概要を示す図である。
【図６】本実施形態のＳＱＬオブジェクト管理処理の処理手順を示すフローチャートである。
【図７】本実施形態のＳＱＬの種類によるキャッシング分別処理の処理手順を示すフローチャートである。
【図８】本実施形態のＳＱＬ文の解析処理によるキャッシング分別の処理手順を示すフローチャートである。
【図９】本実施形態のＳＱＬ文が使用するリソース名による分別処理の処理手順を示すフローチャートである。
【符号の説明】
１１１…入力ＳＱＬ文、１１２…分別条件表、２０１…データベース管理装置、２１１…コントロール部、２１２…ＳＱＬ文解析部、２１３…ＳＱＬオブジェクト生成部、２１４…ＳＱＬオブジェクト実行部、２１５…ＳＱＬオブジェクト管理部、２１６…ＳＱＬオブジェクト格納バッファ、２２１…検索部、２２２…格納部、２２３…主記憶管理部、２３１…分別部、２３２…分別条件部、２４１…入力装置、２５１…ディクショナリ格納媒体、２５２…データ格納媒体、３０１…入力ＳＱＬ文、３２１…分別条件表、４０１…入力ＳＱＬ文、４２１…分別条件表、５０１…入力ＳＱＬ文、５２１…分別条件表。
【図１】
2004199302.tif 000003
【図２】
2004199302.tif 000004
【図３】
2004199302.tif 000005
【図４】
2004199302.tif 000006
【図５】
2004199302.tif 000007
【図６】
2004199302.tif 000008
【図７】
2004199302.tif 000009
【図８】
2004199302.tif 000010
【図９】
2004199302.tif 000011