説明

データベース管理システム及び管理方法

【課題】 キャッシュを考慮した最適な実行プランの短時間提供。
【解決手段】 SQLクエリを格納するキャッシュ領域11と、SQLクエリを実行するSQLクエリ実行部21と、構文解析及び正規化を行うSQLクエリ構文解析・正規化部22と、最適化処理により実行プランを決定するSQLクエリ最適化部23と、キャッシュ領域11の管理他を行うDBMS制御部26と、前記決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイル28と、実行プランのコスト計算を行うコスト計算部24とを備え、DBMS制御部26が、実行プラン格納ファイルに格納されたSQLクエリと同一のSQLクエリが格納されているか否かを判定し、同一のSQLクエリが格納されている場合、割り込み処理によってSQLクリエの実行プランのコスト計算をコスト計算部24により行い、SQL実行部21が、前記計算の結果の最小コストとなった実行プランを選択して実行するもの。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、共有データとしてデータベースを管理し、データに対する問い合わせを処理するデータベース管理システム及びデータベース管理方法に係り、特にデータに対する問い合わせを処理するための手順である実行プランを高速にすることができるデータベース管理システム及びデータベース管理方法に関する。
【背景技術】
【0002】
一般に従来技術によるデータベース管理システム(DBMS:DataBase Management System )は、ユーザからの問い合わせが入力された場合、当該問い合わせがあったSQLクリエが正しい構文か否か並びに冗長構文の削除を行う解析・正規化ステップと、問い合わせに際して利用するインデックスの検討、テーブルの結合順序の決定、実行プランのコスト計算並びに最適な実行プランを選択する最適化ステップと、前記選択された実行プランを実行し、該実行中にデータベースから読み込んだデータをキャッシュに格納する実行ステップとを順次実行することによって、この実行結果をユーザに提示する様に構成されている。
【0003】
前記最適化ステップは、問合せに対する応答時間に非常に大きな影響を与える場合があり、例えば、適切でない実行プランを選択してしまうと、前記実行ステップの処理時間が数倍以上に延びてしまうことがあり、実行される問合せのクエリ内容が複雑になり、最適化処理中に検討される実行プランのパターンが増加し、適切な実行プランの選択にかかる時間が延びてしまう傾向がある。つまり、データベース管理システム(DBMS)の問合せ応答時間を短縮するには、最適な実行プランをできるだけ短い時間で選択することが重要である。
【0004】
この最適な実行プランを短時間で選択する技術が記載された文献としては、例えば下記特許文献が挙げられる。この文献記載技術は、所定の問合せについて、候補となる実行プランのコストを取得し、その中で最小のコストとなる実行プランを問合せ内容と共にファイルに格納し、同じ問合せが実行された場合は、最適化ステップを行う替わりにこのファイルから実行プランを読み出して実行するというものである。
【特許文献1】特開2005−18430号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
前述の従来技術による最適な実行プランを短時間で選択する技術は、同じ問合せが実行された場合に以前の実行プランを再利用することにより、最適化のステップの時間を大幅に短縮することができるものの、実行中にキャッシュに読み込んだデータについて考慮していないため、キャッシュに読み込み済のデータによっては、新規にキャッシュ上にデータを読み込むオーバーヘッド(メモリ領域が不足していた場合の既存のキャッシュの削除やページファイルへの退避を含む)が実行プラン再利用の短縮効果を上回ってしまう可能性があると言う不具合があった。尚、一般に物理ディスクとのIO(Input/Output)は、メモリ上での処理に比べ低速であるため、このような状況は十分に考えられる。
【0006】
本発明の目的は、前述の従来技術による不具合を除去することであり、キャッシュ上のメモリを考慮した最適な実行プランを短時間で提供することができるデータベース管理システムおよび管理方法を提供することである。
【課題を解決するための手段】
【0007】
前記目的を達成するために本発明は、データベース管理システム用のSQLクエリを一時的に格納するキャッシュ領域と、受け付けたSQLクエリを実行プランに従って実行するSQLクエリ実行部と、入力された問合せのSQLクエリに対して構文解析及び正規化を行うSQLクエリ構文解析・正規化部と、前記SQLクエリの最適化処理により実行プランを決定するSQLクエリ最適化部と、前記キャッシュ領域の管理並びに割り込み処理を行うDBMS制御部と、前記SQLクエリ最適化部により決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイルと、実行プランのコスト計算を行うコスト計算部とを備えるデータベース管理システムであって、前記DBMS制御部が、前記実行プラン格納ファイルに格納されたSQLクエリと同一のSQLクエリが格納されているか否かを判定し、該判定の結果、同一のSQLクエリが格納されている場合、割り込み処理によって前記SQLクリエの実行プランのコスト計算をコスト計算部により行い、前記SQL実行部が、前記計算の結果の最小コストとなった実行プランを選択して実行することを第1の特徴とし、該データベース管理システムにおいて、前記DBMS制御部が、前記SQLクエリ最適化部により最適化した実行プランの内、相対的にコストの低い所定数の実行プランを、前記実行プラン格納ファイルに格納することを第2の特徴とする。
【0008】
更に本発明は、データベース管理システム用のSQLクエリを一時的に格納するキャッシュ領域と、受け付けたSQLクエリを実行プランに従って実行するSQLクエリ実行部と、入力された問合せのSQLクエリに対して構文解析及び正規化を行うSQLクエリ構文解析・正規化部と、前記SQLクエリの最適化処理により実行プランを決定するSQLクエリ最適化部と、前記キャッシュ領域の管理並びに割り込み処理を行うDBMS制御部と、前記SQLクエリ最適化部により決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイルと、実行プランのコスト計算を行うコスト計算部とを備えるデータベース管理システムのデータベース管理方法であって、前記DBMS制御部が、前記実行プラン格納ファイルに格納されたSQLクエリと同一のSQLクエリが格納されているか否かを判定するステップと、該判定の結果、同一のSQLクエリが格納されている場合、割り込み処理によって前記SQLクリエの実行プランのコスト計算をコスト計算部により行うステップと、前記SQL実行部が、前記計算の結果の最小コストとなった実行プランを選択して実行するステップとを実行することを第3の特徴とし、該データベース管理方法において、前記DBMS制御部が、前記SQLクエリ最適化部により最適化した実行プランの内、相対的にコストの低い所定数の実行プランを、前記実行プラン格納ファイルに格納することを第4の特徴とする。
【発明の効果】
【0009】
本発明によるデータベース管理システム及び管理方法は、キャッシュ領域に既にデータベース管理システム用のSQLクエリを格納しているときは、SQLクエリ構文解析・正規化部によるSQLクエリの構文チェック並びに冗長な構文の削除を行う正規化が既に行われていることを実行プラン格納ファイルに格納された実行プランの有無により判定し、該判定した実行プランのコスト計算を行って最適な実行プランを選定することによって、キャッシュ上のメモリを考慮した最適な実行プランを短時間で提供することができる。
【発明を実施するための最良の形態】
【0010】
以下、本発明によるデータベース管理システムおよび管理方法の一実施形態を図面を参照して詳細に説明する。図1は本発明に係るデータベース管理システムの構成例を示す図、図2は実行プラン格納ファイルに格納される問合せのSQLテキストに関するテーブル情報の一例を示す説明図、図3は実行プラン格納ファイルに格納される、問合せの実行プランとそのコストに関するテーブル情報の一例を示す説明図、図4はDBMS制御部が管理するDBMSキャッシュ領域上のキャッシュ情報の一例を示す説明図、図5は業務データベース内のテーブルやインデックスに関する管理情報の一例を示す説明図、図6はコスト再計算部により行われるコスト再計算処理を示すフローチャート、図7はユーザからの問合せに対してデータベースシステム内で行われる処理を示すフローチャートである。
<構成の説明>
【0011】
本実施形態によるデータベース管理システムは、図1に示す如く、公衆回線30を介して複数のクラスアント40に接続されるサーバを含むコンピュータシステムにおいて、少なくとも主記憶装置10上にDBMS制御部26により動的に管理されるDBMS用のキャッシュ領域11と、受け付けたSQLクエリを実行プランに沿って実行するSQLクエリ実行部21と、入力された問合せのSQLクエリが正しい構文で書かれているかのチェックおよび冗長な構文の削除を行うSQLクエリ構文解析・正規化部22と、最適な実行プランを決定する最適化処理を行うSQLクエリ最適化部23と、実行プラン格納ファイル28に格納する情報を管理する実行プラン格納ファイル管理部25と、キャッシュ領域11の管理および業務データベース27へのIOを含むDBMS全体を制御するDBMS制御部26と、業務データベース27と、問合せのSQLクエリおよびSQLクエリ最適化部23で最適化中に検討された上位10個の実行プランとその検討途中ステップごとのコストに関する情報を格納する実行プラン格納ファイル28と、実行プラン格納ファイル28に格納されたSQLクエリと同じSQLクエリが実行された際に、登録された実行プランのコストの再計算を行い、もっともコストの低い実行プランをSQL実行部に返すコスト再計算部24を備える。
【0012】
前記実行プラン格納ファイル28に格納する問合せのSQLテキストに関するSQLテキストテーブル情報は、例えば図2に示す如く、その項目としてSQLクエリに対して一意に割り当てられるSQLクエリIDと、実行されたSQLクエリテキストとその最終実行日時とから構成され、同実行プラン格納ファイル28に格納される問合せの実行プランとそのコストに関するテーブル情報は、例えば図3に示す如く、その項目として図2のSQLクエリIDに対応するSQLクエリIDと、プランごとに割り当てられるプランIDと、プラン内のステップごとに割り当てられるステップIDと、ステップの処理内容と、ステップで利用されるオブジェクトのIDと、ステップにかかる実行コストと、実行コストの内物理IOのコストにかかる物理IOコストとから構成される。尚、ここで記載しているステップとは実行プランを構成する手順のことを指すものとする。
【0013】
この実行プラン格納ファイル28内の図2及び図3に示したテーブルには、SQLクエリ最適化部23によって検討された実行プランの内、コストの低い方から上位10個の実行プランが、実行プラン格納ファイル管理部25によって格納される。尚、図3のテーブルに格納される物理IOコストの項目に入る数値はキャッシュデータを考慮しないものである。
【0014】
DBMS制御部26が管理するDBMSキャッシュ領域上のキャッシュ情報は、図4に示す如く、キャッシュ上の読み込まれたオブジェクトごとに一意に割り当てられるキャッシュIDと、データベース内のオブジェクトを一意に示すオブジェクトIDと、キャッシュとして読み込まれているキャッシュブロック数を項目とから構成される。尚、ここで書くオブジェクトとは、データベースを構成するテーブルやインデックスのことを指し、ブロックとは、DBMSの管理するIO単位サイズのことを指すものである。
【0015】
前記業務データベース27内のテーブルやインデックスに関する管理情報は、例えば図5に示す如く、データベース内のオブジェクトごとに一意に割り当てられるオブジェクトIDと、そのオブジェクトの種類(テーブル、インデックス)を示すオブジェクトタイプと、オブジェクト名と、そのオブジェクトが使用する合計ブロック数と、オブジェクトタイプがインデックスの場合はその親となるテーブルのオブジェクトIDとから構成される。
<動作説明>
<最小実行プラン判定処理>
【0016】
さて、この様に構成されたデータベース管理システムは、コスト再計算部24がコストの再計算を行うものであり、この処理手順は、図6に示す如く、まず実行プランコストテーブル(図3)から実行されたプランに関するレコードを抽出するステップS1と、次に抽出したレコードについてプランID1及びステップID1を基に計算を行うステップS2と、実行プランコストテーブル(図3)のオブジェクトIDに一致するキャッシュ情報が図4に示したキャッシュ領域にあるか否かを判定するステップS3と、キャッシュ領域にデータがある場合は、データベース管理テーブル(図5)のブロック数とキャッシュブロック数の割合と実行プランコストテーブルの物理IOコストからステップのコストを計算するステップS4とを実行する。
【0017】
該ステップS4における計算は、今回の例では、顧客テーブルのインデックス姓のデータがキャッシュ上にないため、プランID1、ステップID1の物理IOコストが「150」のままとなり、顧客テーブルのデータが全てキャッシュ上にあるため、プランID2,ステップID1の物理IOコストが「0」となり、ステップコストも「150」(=650−500)となる。
【0018】
次いで本システムは、キャッシュ上にデータがない場合や、ステップの再計算が完了したとき、その実行プランに対して計算していないステップがあるかを判定するステップS5を実行し、未計算のステップがある場合は、次のステップへ進む処理を行うステップS6を介してステップS3に戻り、未計算のステップがないことを判定した場合は、その実行プランに対する再計算結果を求めるステップS7と、未計算のプランがないかを判定するステップS8と、該ステップS8において未計算のプランがあると判定したときは、同じ手順で次のプランの計算を行うステップS9と、同未計算のプランがないと判定したとき(全プランの計算終了)は、最もコストの低い実行プランをSQLクエリ実行部21へ返すステップS10を実行する。
【0019】
この様に本実施形態によるデータベース管理システムは、ステップのコストを計算し、コストを判定することによって、最小となる実行プランをSQLクエリ実行部21へ返す様に動作する。
<実行処理>
【0020】
次に、本実施形態によるデータベース管理システムは、ユーザにより問合せとなるSQLクエリを実行するものであり、この処理を図7を参照して説明する。
本処理手順は、図7に示す如く、まず、SQLクエリ実行部21により問合せのSQLクエリが実行プラン格納ファイル28内のテーブル(図2)に登録されているかの判定を行うステップS11を実行する。
【0021】
次いで本システムは、前記ステップS11により問合せのSQLクエリを登録していると判定したとき、そのSQLクエリに関する情報(図2に示したSQLクエリID)をコスト再計算部24に引渡し、コスト再計算部24が図6に示した手順によりキャッシュ領域上のキャッシュ情報(図4)やコストに関するテーブル情報(図4)を利用してコストの再計算を行うステップS12と、この計算の結果、キャッシュのデータを考慮した最小コストの実行プランを得るステップS13とを実行する。
【0022】
他方、本システムは、前記ステップS11において問合せのSQLクエリが実行プラン格納ファイル28内のテーブル(図2)に登録されていないと判定したとき、SQLクエリ構文解析・正規化部22によりSQLクエリの構文解析・最適化処理を行い、SQL構文のチェックや、冗長な構文の削除を行うステップS14と、SQLクエリ最適化部23によりコスト計算を行い最適な実行プランを決定するステップS15と、この過程で検討された上位10個の実行プランとその検討途中ステップごとのコストに関する情報を実行プラン格納ファイル管理部25が実行プラン格納ファイル28に格納するステップS16と、前記ステップS17を実行する。
【0023】
次いで本システムは、前記ステップS13又は16に続き、以上の手順で決定された実行プランに沿って、SQLクエリ実行部21はSQLクエリを実行するステップ17と、実行結果をユーザの表示部に表示するステップS18とを実行する。
【0024】
この様に本実施形態によるデータベース管理システムは、実行プランファイルに一致するSQLクリエが既に登録されているか否かを判定し、既に登録されているとき、即ちSQLクリエがキヤッシュされているときには登録プランコスチの再計算を行ってから実行プランを決定し、登録されていないときには、構文解析他の処理を行うことによって、既にキャッシュされているSQLクリエ(構文解析−最適化−実行プラン生成の一連の処理済みのSQLクリエ)の有効的な利用を図ることができ、従って最適な実行プランを短時間で提供することができる。
【図面の簡単な説明】
【0025】
【図1】本発明に係るデータベース管理システムの構成例を示す図。
【図2】実行プラン格納ファイルに格納される問合せのSQLテキストに関するテーブル情報の一例を示す図。
【図3】実行プラン格納ファイルに格納される、問合せの実行プランとそのコストに関するテーブル情報の一例を示す図。
【図4】DBMS制御部が管理するDBMSキャッシュ領域上のキャッシュ情報の一例を示す図。
【図5】業務データベース内のテーブルやインデックスに関する管理情報の一例を示す図。
【図6】コスト再計算部により行われるコスト再計算処理を示すフローチャート。
【図7】ユーザからの問合せに対してデータベースシステム内で行われる処理を示すフローチャート。
【符号の説明】
【0026】
10:主記憶装置、11:キャッシュ領域、21:クエリ実行部、22:クエリ構文解析・正規化部、23:クエリ最適化部、24:コスト再計算部、25:実行プラン格納ファイル管理部、26:DBMS制御部、27:業務データベース、28:実行プラン格納ファイル、28:実行プラン格納ファイル、30:公衆回線、40:クラスアント。

【特許請求の範囲】
【請求項1】
データベース管理システム用のSQLクエリを一時的に格納するキャッシュ領域と、受け付けたSQLクエリを実行プランに従って実行するSQLクエリ実行部と、入力された問合せのSQLクエリに対して構文解析及び正規化を行うSQLクエリ構文解析・正規化部と、前記SQLクエリの最適化処理により実行プランを決定するSQLクエリ最適化部と、前記キャッシュ領域の管理並びに割り込み処理を行うDBMS制御部と、前記SQLクエリ最適化部により決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイルと、実行プランのコスト計算を行うコスト計算部とを備えるデータベース管理システムであって、
前記DBMS制御部が、前記実行プラン格納ファイルに格納されたSQLクエリと同一のSQLクエリが格納されているか否かを判定し、該判定の結果、同一のSQLクエリが格納されている場合、割り込み処理によって前記SQLクリエの実行プランのコスト計算をコスト計算部により行い、前記SQL実行部が、前記計算の結果の最小コストとなった実行プランを選択して実行することを特徴とするデータベース管理システム。
【請求項2】
前記DBMS制御部が、前記SQLクエリ最適化部により最適化した実行プランの内、相対的にコストの低い所定数の実行プランを、前記実行プラン格納ファイルに格納することを特徴とする請求項1記載のデータベース管理システム。
【請求項3】
データベース管理システム用のSQLクエリを一時的に格納するキャッシュ領域と、受け付けたSQLクエリを実行プランに従って実行するSQLクエリ実行部と、入力された問合せのSQLクエリに対して構文解析及び正規化を行うSQLクエリ構文解析・正規化部と、前記SQLクエリの最適化処理により実行プランを決定するSQLクエリ最適化部と、前記キャッシュ領域の管理並びに割り込み処理を行うDBMS制御部と、前記SQLクエリ最適化部により決定した実行プランとコストに関する情報とを格納する実行プラン格納ファイルと、実行プランのコスト計算を行うコスト計算部とを備えるデータベース管理システムのデータベース管理方法であって、
前記DBMS制御部が、前記実行プラン格納ファイルに格納されたSQLクエリと同一のSQLクエリが格納されているか否かを判定するステップと、該判定の結果、同一のSQLクエリが格納されている場合、割り込み処理によって前記SQLクリエの実行プランのコスト計算をコスト計算部により行うステップと、前記SQL実行部が、前記計算の結果の最小コストとなった実行プランを選択して実行するステップとを実行することを特徴とするデータベース管理方法。
【請求項4】
前記DBMS制御部が、前記SQLクエリ最適化部により最適化した実行プランの内、相対的にコストの低い所定数の実行プランを、前記実行プラン格納ファイルに格納することを特徴とする請求項3記載のデータベース管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate