(57)【要約】【課題】  キャッシュを考慮した最適な実行プランの短時間提供。【解決手段】  SQLクエリを格納するキャッシュ領域11と、SQLクエリを実行するSQLクエリ実行部21と、構文解析及び正規化を行うSQLクエリ構文解析・正規化部22と、最適化処理により実行プランを決定するSQLクエリ最適化部23と、キャッシュ領域11の管理他を行うＤＢＭＳ制御部26と、前記決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイル28と、実行プランのコスト計算を行うコスト計算部24とを備え、ＤＢＭＳ制御部26が、実行プラン格納ファイルに格納されたSQLクエリと同一のSQLクエリが格納されているか否かを判定し、同一のSQLクエリが格納されている場合、割り込み処理によってSQLクリエの実行プランのコスト計算をコスト計算部24により行い、SQL実行部21が、前記計算の結果の最小コストとなった実行プランを選択して実行するもの。【選択図】  図１
2007293723.tif 000002
【特許請求の範囲】
【請求項１】
データベース管理システム用のＳＱＬクエリを一時的に格納するキャッシュ領域と、受け付けたＳＱＬクエリを実行プランに従って実行するＳＱＬクエリ実行部と、入力された問合せのＳＱＬクエリに対して構文解析及び正規化を行うＳＱＬクエリ構文解析・正規化部と、前記ＳＱＬクエリの最適化処理により実行プランを決定するＳＱＬクエリ最適化部と、前記キャッシュ領域の管理並びに割り込み処理を行うＤＢＭＳ制御部と、前記ＳＱＬクエリ最適化部により決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイルと、実行プランのコスト計算を行うコスト計算部とを備えるデータベース管理システムであって、
前記ＤＢＭＳ制御部が、前記実行プラン格納ファイルに格納されたＳＱＬクエリと同一のＳＱＬクエリが格納されているか否かを判定し、該判定の結果、同一のＳＱＬクエリが格納されている場合、割り込み処理によって前記ＳＱＬクリエの実行プランのコスト計算をコスト計算部により行い、前記ＳＱＬ実行部が、前記計算の結果の最小コストとなった実行プランを選択して実行することを特徴とするデータベース管理システム。
【請求項２】
前記ＤＢＭＳ制御部が、前記ＳＱＬクエリ最適化部により最適化した実行プランの内、相対的にコストの低い所定数の実行プランを、前記実行プラン格納ファイルに格納することを特徴とする請求項１記載のデータベース管理システム。
【請求項３】
データベース管理システム用のＳＱＬクエリを一時的に格納するキャッシュ領域と、受け付けたＳＱＬクエリを実行プランに従って実行するＳＱＬクエリ実行部と、入力された問合せのＳＱＬクエリに対して構文解析及び正規化を行うＳＱＬクエリ構文解析・正規化部と、前記ＳＱＬクエリの最適化処理により実行プランを決定するＳＱＬクエリ最適化部と、前記キャッシュ領域の管理並びに割り込み処理を行うＤＢＭＳ制御部と、前記ＳＱＬクエリ最適化部により決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイルと、実行プランのコスト計算を行うコスト計算部とを備えるデータベース管理システムのデータベース管理方法であって、
前記ＤＢＭＳ制御部が、前記実行プラン格納ファイルに格納されたＳＱＬクエリと同一のＳＱＬクエリが格納されているか否かを判定するステップと、該判定の結果、同一のＳＱＬクエリが格納されている場合、割り込み処理によって前記ＳＱＬクリエの実行プランのコスト計算をコスト計算部により行うステップと、前記ＳＱＬ実行部が、前記計算の結果の最小コストとなった実行プランを選択して実行するステップとを実行することを特徴とするデータベース管理方法。
【請求項４】
前記ＤＢＭＳ制御部が、前記ＳＱＬクエリ最適化部により最適化した実行プランの内、相対的にコストの低い所定数の実行プランを、前記実行プラン格納ファイルに格納することを特徴とする請求項３記載のデータベース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有データとしてデータベースを管理し、データに対する問い合わせを処理するデータベース管理システム及びデータベース管理方法に係り、特にデータに対する問い合わせを処理するための手順である実行プランを高速にすることができるデータベース管理システム及びデータベース管理方法に関する。
【背景技術】
【０００２】
一般に従来技術によるデータベース管理システム（ＤＢＭＳ：ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ  ）は、ユーザからの問い合わせが入力された場合、当該問い合わせがあったＳＱＬクリエが正しい構文か否か並びに冗長構文の削除を行う解析・正規化ステップと、問い合わせに際して利用するインデックスの検討、テーブルの結合順序の決定、実行プランのコスト計算並びに最適な実行プランを選択する最適化ステップと、前記選択された実行プランを実行し、該実行中にデータベースから読み込んだデータをキャッシュに格納する実行ステップとを順次実行することによって、この実行結果をユーザに提示する様に構成されている。
【０００３】
前記最適化ステップは、問合せに対する応答時間に非常に大きな影響を与える場合があり、例えば、適切でない実行プランを選択してしまうと、前記実行ステップの処理時間が数倍以上に延びてしまうことがあり、実行される問合せのクエリ内容が複雑になり、最適化処理中に検討される実行プランのパターンが増加し、適切な実行プランの選択にかかる時間が延びてしまう傾向がある。つまり、データベース管理システム（ＤＢＭＳ）の問合せ応答時間を短縮するには、最適な実行プランをできるだけ短い時間で選択することが重要である。
【０００４】
この最適な実行プランを短時間で選択する技術が記載された文献としては、例えば下記特許文献が挙げられる。この文献記載技術は、所定の問合せについて、候補となる実行プランのコストを取得し、その中で最小のコストとなる実行プランを問合せ内容と共にファイルに格納し、同じ問合せが実行された場合は、最適化ステップを行う替わりにこのファイルから実行プランを読み出して実行するというものである。
【特許文献１】特開２００５−１８４３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前述の従来技術による最適な実行プランを短時間で選択する技術は、同じ問合せが実行された場合に以前の実行プランを再利用することにより、最適化のステップの時間を大幅に短縮することができるものの、実行中にキャッシュに読み込んだデータについて考慮していないため、キャッシュに読み込み済のデータによっては、新規にキャッシュ上にデータを読み込むオーバーヘッド（メモリ領域が不足していた場合の既存のキャッシュの削除やページファイルへの退避を含む）が実行プラン再利用の短縮効果を上回ってしまう可能性があると言う不具合があった。尚、一般に物理ディスクとのＩＯ（Input/Output）は、メモリ上での処理に比べ低速であるため、このような状況は十分に考えられる。
【０００６】
本発明の目的は、前述の従来技術による不具合を除去することであり、キャッシュ上のメモリを考慮した最適な実行プランを短時間で提供することができるデータベース管理システムおよび管理方法を提供することである。
【課題を解決するための手段】
【０００７】
前記目的を達成するために本発明は、データベース管理システム用のＳＱＬクエリを一時的に格納するキャッシュ領域と、受け付けたＳＱＬクエリを実行プランに従って実行するＳＱＬクエリ実行部と、入力された問合せのＳＱＬクエリに対して構文解析及び正規化を行うＳＱＬクエリ構文解析・正規化部と、前記ＳＱＬクエリの最適化処理により実行プランを決定するＳＱＬクエリ最適化部と、前記キャッシュ領域の管理並びに割り込み処理を行うＤＢＭＳ制御部と、前記ＳＱＬクエリ最適化部により決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイルと、実行プランのコスト計算を行うコスト計算部とを備えるデータベース管理システムであって、前記ＤＢＭＳ制御部が、前記実行プラン格納ファイルに格納されたＳＱＬクエリと同一のＳＱＬクエリが格納されているか否かを判定し、該判定の結果、同一のＳＱＬクエリが格納されている場合、割り込み処理によって前記ＳＱＬクリエの実行プランのコスト計算をコスト計算部により行い、前記ＳＱＬ実行部が、前記計算の結果の最小コストとなった実行プランを選択して実行することを第１の特徴とし、該データベース管理システムにおいて、前記ＤＢＭＳ制御部が、前記ＳＱＬクエリ最適化部により最適化した実行プランの内、相対的にコストの低い所定数の実行プランを、前記実行プラン格納ファイルに格納することを第２の特徴とする。
【０００８】
更に本発明は、データベース管理システム用のＳＱＬクエリを一時的に格納するキャッシュ領域と、受け付けたＳＱＬクエリを実行プランに従って実行するＳＱＬクエリ実行部と、入力された問合せのＳＱＬクエリに対して構文解析及び正規化を行うＳＱＬクエリ構文解析・正規化部と、前記ＳＱＬクエリの最適化処理により実行プランを決定するＳＱＬクエリ最適化部と、前記キャッシュ領域の管理並びに割り込み処理を行うＤＢＭＳ制御部と、前記ＳＱＬクエリ最適化部により決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイルと、実行プランのコスト計算を行うコスト計算部とを備えるデータベース管理システムのデータベース管理方法であって、前記ＤＢＭＳ制御部が、前記実行プラン格納ファイルに格納されたＳＱＬクエリと同一のＳＱＬクエリが格納されているか否かを判定するステップと、該判定の結果、同一のＳＱＬクエリが格納されている場合、割り込み処理によって前記ＳＱＬクリエの実行プランのコスト計算をコスト計算部により行うステップと、前記ＳＱＬ実行部が、前記計算の結果の最小コストとなった実行プランを選択して実行するステップとを実行することを第３の特徴とし、該データベース管理方法において、前記ＤＢＭＳ制御部が、前記ＳＱＬクエリ最適化部により最適化した実行プランの内、相対的にコストの低い所定数の実行プランを、前記実行プラン格納ファイルに格納することを第４の特徴とする。
【発明の効果】
【０００９】
本発明によるデータベース管理システム及び管理方法は、キャッシュ領域に既にデータベース管理システム用のＳＱＬクエリを格納しているときは、ＳＱＬクエリ構文解析・正規化部によるＳＱＬクエリの構文チェック並びに冗長な構文の削除を行う正規化が既に行われていることを実行プラン格納ファイルに格納された実行プランの有無により判定し、該判定した実行プランのコスト計算を行って最適な実行プランを選定することによって、キャッシュ上のメモリを考慮した最適な実行プランを短時間で提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明によるデータベース管理システムおよび管理方法の一実施形態を図面を参照して詳細に説明する。図１は本発明に係るデータベース管理システムの構成例を示す図、図２は実行プラン格納ファイルに格納される問合せのＳＱＬテキストに関するテーブル情報の一例を示す説明図、図３は実行プラン格納ファイルに格納される、問合せの実行プランとそのコストに関するテーブル情報の一例を示す説明図、図４はＤＢＭＳ制御部が管理するＤＢＭＳキャッシュ領域上のキャッシュ情報の一例を示す説明図、図５は業務データベース内のテーブルやインデックスに関する管理情報の一例を示す説明図、図６はコスト再計算部により行われるコスト再計算処理を示すフローチャート、図７はユーザからの問合せに対してデータベースシステム内で行われる処理を示すフローチャートである。
＜構成の説明＞
【００１１】
本実施形態によるデータベース管理システムは、図１に示す如く、公衆回線３０を介して複数のクラスアント４０に接続されるサーバを含むコンピュータシステムにおいて、少なくとも主記憶装置１０上にＤＢＭＳ制御部２６により動的に管理されるＤＢＭＳ用のキャッシュ領域１１と、受け付けたＳＱＬクエリを実行プランに沿って実行するＳＱＬクエリ実行部２１と、入力された問合せのＳＱＬクエリが正しい構文で書かれているかのチェックおよび冗長な構文の削除を行うＳＱＬクエリ構文解析・正規化部２２と、最適な実行プランを決定する最適化処理を行うＳＱＬクエリ最適化部２３と、実行プラン格納ファイル２８に格納する情報を管理する実行プラン格納ファイル管理部２５と、キャッシュ領域１１の管理および業務データベース２７へのＩＯを含むＤＢＭＳ全体を制御するＤＢＭＳ制御部２６と、業務データベース２７と、問合せのＳＱＬクエリおよびＳＱＬクエリ最適化部２３で最適化中に検討された上位１０個の実行プランとその検討途中ステップごとのコストに関する情報を格納する実行プラン格納ファイル２８と、実行プラン格納ファイル２８に格納されたＳＱＬクエリと同じＳＱＬクエリが実行された際に、登録された実行プランのコストの再計算を行い、もっともコストの低い実行プランをＳＱＬ実行部に返すコスト再計算部２４を備える。
【００１２】
前記実行プラン格納ファイル２８に格納する問合せのＳＱＬテキストに関するＳＱＬテキストテーブル情報は、例えば図２に示す如く、その項目としてＳＱＬクエリに対して一意に割り当てられるＳＱＬクエリＩＤと、実行されたＳＱＬクエリテキストとその最終実行日時とから構成され、同実行プラン格納ファイル２８に格納される問合せの実行プランとそのコストに関するテーブル情報は、例えば図３に示す如く、その項目として図２のＳＱＬクエリＩＤに対応するＳＱＬクエリＩＤと、プランごとに割り当てられるプランＩＤと、プラン内のステップごとに割り当てられるステップＩＤと、ステップの処理内容と、ステップで利用されるオブジェクトのＩＤと、ステップにかかる実行コストと、実行コストの内物理ＩＯのコストにかかる物理ＩＯコストとから構成される。尚、ここで記載しているステップとは実行プランを構成する手順のことを指すものとする。
【００１３】
この実行プラン格納ファイル２８内の図２及び図３に示したテーブルには、ＳＱＬクエリ最適化部２３によって検討された実行プランの内、コストの低い方から上位１０個の実行プランが、実行プラン格納ファイル管理部２５によって格納される。尚、図３のテーブルに格納される物理ＩＯコストの項目に入る数値はキャッシュデータを考慮しないものである。
【００１４】
ＤＢＭＳ制御部２６が管理するＤＢＭＳキャッシュ領域上のキャッシュ情報は、図４に示す如く、キャッシュ上の読み込まれたオブジェクトごとに一意に割り当てられるキャッシュＩＤと、データベース内のオブジェクトを一意に示すオブジェクトＩＤと、キャッシュとして読み込まれているキャッシュブロック数を項目とから構成される。尚、ここで書くオブジェクトとは、データベースを構成するテーブルやインデックスのことを指し、ブロックとは、ＤＢＭＳの管理するＩＯ単位サイズのことを指すものである。
【００１５】
前記業務データベース２７内のテーブルやインデックスに関する管理情報は、例えば図５に示す如く、データベース内のオブジェクトごとに一意に割り当てられるオブジェクトＩＤと、そのオブジェクトの種類（テーブル、インデックス）を示すオブジェクトタイプと、オブジェクト名と、そのオブジェクトが使用する合計ブロック数と、オブジェクトタイプがインデックスの場合はその親となるテーブルのオブジェクトＩＤとから構成される。
＜動作説明＞
＜最小実行プラン判定処理＞
【００１６】
さて、この様に構成されたデータベース管理システムは、コスト再計算部２４がコストの再計算を行うものであり、この処理手順は、図６に示す如く、まず実行プランコストテーブル（図３）から実行されたプランに関するレコードを抽出するステップＳ１と、次に抽出したレコードについてプランＩＤ１及びステップＩＤ１を基に計算を行うステップＳ２と、実行プランコストテーブル（図３）のオブジェクトＩＤに一致するキャッシュ情報が図４に示したキャッシュ領域にあるか否かを判定するステップＳ３と、キャッシュ領域にデータがある場合は、データベース管理テーブル（図５）のブロック数とキャッシュブロック数の割合と実行プランコストテーブルの物理ＩＯコストからステップのコストを計算するステップＳ４とを実行する。
【００１７】
該ステップＳ４における計算は、今回の例では、顧客テーブルのインデックス姓のデータがキャッシュ上にないため、プランＩＤ１、ステップＩＤ１の物理ＩＯコストが「１５０」のままとなり、顧客テーブルのデータが全てキャッシュ上にあるため、プランＩＤ２，ステップＩＤ１の物理ＩＯコストが「０」となり、ステップコストも「１５０」（＝６５０−５００）となる。
【００１８】
次いで本システムは、キャッシュ上にデータがない場合や、ステップの再計算が完了したとき、その実行プランに対して計算していないステップがあるかを判定するステップＳ５を実行し、未計算のステップがある場合は、次のステップへ進む処理を行うステップＳ６を介してステップＳ３に戻り、未計算のステップがないことを判定した場合は、その実行プランに対する再計算結果を求めるステップＳ７と、未計算のプランがないかを判定するステップＳ８と、該ステップＳ８において未計算のプランがあると判定したときは、同じ手順で次のプランの計算を行うステップＳ９と、同未計算のプランがないと判定したとき（全プランの計算終了）は、最もコストの低い実行プランをＳＱＬクエリ実行部２１へ返すステップＳ１０を実行する。
【００１９】
この様に本実施形態によるデータベース管理システムは、ステップのコストを計算し、コストを判定することによって、最小となる実行プランをＳＱＬクエリ実行部２１へ返す様に動作する。
＜実行処理＞
【００２０】
次に、本実施形態によるデータベース管理システムは、ユーザにより問合せとなるＳＱＬクエリを実行するものであり、この処理を図７を参照して説明する。
本処理手順は、図７に示す如く、まず、ＳＱＬクエリ実行部２１により問合せのＳＱＬクエリが実行プラン格納ファイル２８内のテーブル（図２）に登録されているかの判定を行うステップＳ１１を実行する。
【００２１】
次いで本システムは、前記ステップＳ１１により問合せのＳＱＬクエリを登録していると判定したとき、そのＳＱＬクエリに関する情報（図２に示したＳＱＬクエリＩＤ）をコスト再計算部２４に引渡し、コスト再計算部２４が図６に示した手順によりキャッシュ領域上のキャッシュ情報（図４）やコストに関するテーブル情報（図４）を利用してコストの再計算を行うステップＳ１２と、この計算の結果、キャッシュのデータを考慮した最小コストの実行プランを得るステップＳ１３とを実行する。
【００２２】
他方、本システムは、前記ステップＳ１１において問合せのＳＱＬクエリが実行プラン格納ファイル２８内のテーブル（図２）に登録されていないと判定したとき、ＳＱＬクエリ構文解析・正規化部２２によりＳＱＬクエリの構文解析・最適化処理を行い、ＳＱＬ構文のチェックや、冗長な構文の削除を行うステップＳ１４と、ＳＱＬクエリ最適化部２３によりコスト計算を行い最適な実行プランを決定するステップＳ１５と、この過程で検討された上位１０個の実行プランとその検討途中ステップごとのコストに関する情報を実行プラン格納ファイル管理部２５が実行プラン格納ファイル２８に格納するステップＳ１６と、前記ステップＳ１７を実行する。
【００２３】
次いで本システムは、前記ステップＳ１３又は１６に続き、以上の手順で決定された実行プランに沿って、ＳＱＬクエリ実行部２１はＳＱＬクエリを実行するステップ１７と、実行結果をユーザの表示部に表示するステップＳ１８とを実行する。
【００２４】
この様に本実施形態によるデータベース管理システムは、実行プランファイルに一致するＳＱＬクリエが既に登録されているか否かを判定し、既に登録されているとき、即ちＳＱＬクリエがキヤッシュされているときには登録プランコスチの再計算を行ってから実行プランを決定し、登録されていないときには、構文解析他の処理を行うことによって、既にキャッシュされているＳＱＬクリエ（構文解析−最適化−実行プラン生成の一連の処理済みのＳＱＬクリエ）の有効的な利用を図ることができ、従って最適な実行プランを短時間で提供することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明に係るデータベース管理システムの構成例を示す図。
【図２】実行プラン格納ファイルに格納される問合せのＳＱＬテキストに関するテーブル情報の一例を示す図。
【図３】実行プラン格納ファイルに格納される、問合せの実行プランとそのコストに関するテーブル情報の一例を示す図。
【図４】ＤＢＭＳ制御部が管理するＤＢＭＳキャッシュ領域上のキャッシュ情報の一例を示す図。
【図５】業務データベース内のテーブルやインデックスに関する管理情報の一例を示す図。
【図６】コスト再計算部により行われるコスト再計算処理を示すフローチャート。
【図７】ユーザからの問合せに対してデータベースシステム内で行われる処理を示すフローチャート。
【符号の説明】
【００２６】
１０：主記憶装置、１１：キャッシュ領域、２１：クエリ実行部、２２：クエリ構文解析・正規化部、２３：クエリ最適化部、２４：コスト再計算部、２５：実行プラン格納ファイル管理部、２６：ＤＢＭＳ制御部、２７：業務データベース、２８：実行プラン格納ファイル、２８：実行プラン格納ファイル、３０：公衆回線、４０：クラスアント。
【図１】
2007293723.tif 000003
【図２】
2007293723.tif 000004
【図３】
2007293723.tif 000005
【図４】
2007293723.tif 000006
【図５】
2007293723.tif 000007
【図６】
2007293723.tif 000008
【図７】
2007293723.tif 000009