(57)【要約】      （修正有）【課題】新たな実行計画により処理時間の遅延が生じた場合は、過去の正常な時間で処理した実行計画に戻して少なくとも過去の正常な時間に近い処理時間で処理できるように制御する。【解決手段】データベースサーバ１０２のリソース使用量が異常であると判断する所定の閾値を記憶したデータベース管理装置１００であって、入力されたＳＱＬ文をデータベースサーバに送信しデータベースサーバのリソース使用量を取得する。また、データベースサーバからＳＱＬ文に対応して処理される実行計画を受信する。データベースサーバのリソース使用量が所定の閾値を超えずに終了した場合の実行計画を正常時の実行計画としてＳＱＬ文と紐付けて記憶しておき、データベースサーバのリソース使用量が所定の閾値を超えた場合は、受信した実行計画と正常時の実行計画とを比較し、正常時の実行計画ＳＱＬ文を処理するよう、データベースサーバに送信する。【選択図】図１
2016009225.tif 000002
【特許請求の範囲】
【請求項１】
データベースサーバと接続可能なデータベース管理装置であって、
入力されたＳＱＬ文を前記データベースサーバに送信する送信手段と、
前記データベースサーバのリソース使用量を取得するリソース使用量取得手段と、
前記データベースサーバから、前記入力されたＳＱＬ文に対応して処理される実行計画を受信する実行計画受信手段と、
前記データベースサーバのリソース使用量が異常であると判断する所定の閾値を記憶する閾値記憶手段と、
前記リソース使用量取得手段により取得された前記データベースサーバのリソース使用量が、前記閾値記憶手段に記憶された所定の閾値を超えているかを判断する判断手段と、
前記閾値記憶手段で記憶された所定の閾値を超えないリソース使用量で終了したデータベースサーバの実行計画を、前記入力されたＳＱＬ文と紐付けて記憶する正常時実行計画記憶手段と、
前記判断手段で前記データベースサーバのリソース使用量が、前記閾値記憶手段に記憶された所定の閾値を超えている場合、前記実行計画受信手段で受信した実行計画と、前記正常時実行計画記憶手段で記憶した実行計画とを比較する比較手段と、
前記比較手段による比較結果により、前記入力されたＳＱＬ文に紐付けられた前記正常時実行計画で該入力されたＳＱＬ文を処理するよう、前記データベースサーバに該正常時実行計画を送信する正常時実行計画送信手段と
を有することを特徴とするデータベース管理装置。
【請求項２】
前記正常時実行計画送信手段は、前記正常時実行計画記憶手段で記憶された実行計画をヒント句として生成し、データベースサーバに送信することを特徴とする、請求項１に記載のデータベース管理装置。
【請求項３】
前記入力されたＳＱＬ文が更新系のＳＱＬの場合、前記データベースサーバに、前記リソース使用量が前記所定の閾値を超えていると判断される実行計画の処理を終了させ、前記正常時実行計画送信手段を送信し、ＳＱＬ文を処理させることを特徴とする請求項１又は２に記載のデータベース管理装置。
【請求項４】
前記リソース使用量取得手段により取得されたリソース使用量が、リソースの所定の割合を超えている場合は、前記データベースサーバに、前記リソース使用量が前記所定の閾値を超えていると判断される実行計画の処理を終了させ、前記正常時実行計画送信手段を送信し、ＳＱＬ文を処理させることを特徴とする請求項１乃至３に記載のデータベース管理装置。
【請求項５】
前記閾値記憶手段は、前記入力されたＳＱＬ文毎に異なる閾値を持つことを特徴とする請求項１乃至４に記載のデータベース管理装置。
前記入力されたＳＱＬ文に対応する
【請求項６】
データベースサーバと接続可能な、前記データベースサーバのリソース使用量が異常であると判断する所定の閾値を記憶する閾値記憶手段を有するデータベース管理装置におけるデータベース管理方法であって、
入力されたＳＱＬ文を前記データベースサーバに送信する送信ステップと、
前記データベースサーバのリソース使用量を取得するリソース使用量取得ステップと
前記データベースサーバから、前記入力されたＳＱＬ文に対応して処理される実行計画を受信する実行計画受信ステップと、
前記リソース使用量取得ステップにより取得された前記データベースサーバのリソース使用量が、前記閾値記憶手段に記憶された所定の閾値を超えているかを判断する判断ステップと、
前記閾値記憶手段で記憶された所定の閾値を超えないリソース使用量で終了したデータベースサーバの実行計画を、前記入力されたＳＱＬ文と紐付けて登録する正常時実行計画登録ステップと、
前記判断ステップで前記データベースサーバのリソース使用量が、前記閾値記憶手段に記憶された所定の閾値を超えている場合、前記実行計画受信ステップで受信した実行計画と、前記正常時実行計画登録ステップで登録した実行計画とを比較する比較ステップと、
前記比較ステップによる比較結果により、前記入力されたＳＱＬ文に紐付けられた前記正常時実行計画で該入力されたＳＱＬ文を処理するよう、前記データベースサーバに該正常時実行計画を送信する正常時実行計画送信ステップと
を有することを特徴とするデータベース管理装置
【請求項７】
請求項１乃至５のいずれか１項に記載のデータベース管理装置として、コンピュータを機能させるためのプログラム。
【請求項８】
請求項７に記載のプログラムをコンピュータ読み取り可能に記憶した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理装置に関し、特にデータベースの処理速度を向上させることができるデータベース管理装置に関する。
【背景技術】
【０００２】
データベースシステムにおいてクエリ文が処理される場合、処理時間を早めるため、テーブル結合や条件処理を最適と判断された順序で実行するための実行計画というものが利用される。通常、データベースシステムが動的に実行計画を決定し、処理が高速に行われるように調整している。
【０００３】
実行計画の調整には、対象テーブルのデータ件数などの表統計情報、インデックスのリーフブロック、リーフの深さなどの索引統計情報などの情報を元にデータベースシステムが自動的に判定している。
【０００４】
しかし、以前に入力された第１クエリ文と完全に同一である第２クエリ文、または、特定の条件、例えばパラメータのみが異なる第２クエリ文が入力される場合、第２クエリ文に対する実行計画は第１クエリ文に対する実行計画と殆ど同一であるにもかかわらず、従来のＤＢＭＳは、第２クエリ文に対する実行計画を再度生成するので、システム運用の効率性が低下するという課題があった。
【０００５】
上記課題を解決するため、特許文献１には、過去に実行したクエリ文をメモリに格納しておき、新たなクエリ文と過去のクエリ文とがマッチングすれば、過去の特定のクエリ文を利用して新たなクエリ文の実行計画を生成し、メモリ資源の効率化、システム速度の向上を図るデータベース管理方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０１２−５２４９３０
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１のデータベース管理方法であっても、実行計画によっては著しく遅い実行計画が採用されるケースが発生することがある。たとえば、データベースソフトを作成しているソフトウェアベンダが仕様を変更して、生成される実行計画の方針が変更された場合、クエリ文の実行が極端に遅くなる例は少なくない。
【０００８】
また、通常時のデータベースシステムであれば、クエリ文の処理が遅延した段階で管理者がヒント句を使用して実行計画を変更する処理を行えるが、夜間のバッチ処理などの場合、遅延が生じた段階で管理者を呼んで対応しなければならず、遅延の影響が大きくなってしまう。
【０００９】
本発明は、上記問題を解決するためになされたものであり、過去に正常な時間で処理された実行計画を記憶しておき、新たな実行計画により処理時間の遅延が生じた場合は、過去の正常な時間で処理した実行計画に戻して、少なくとも過去の正常な時間に近い処理時間で処理できるように制御することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、データベースサーバと接続可能なデータベース管理装置であって、入力されたＳＱＬ文を前記データベースサーバに送信する送信手段と、前記データベースサーバのリソース使用量を取得するリソース使用量取得手段と、前記データベースサーバから、前記入力されたＳＱＬ文に対応して処理される実行計画を受信する実行計画受信手段と、前記データベースサーバのリソース使用量が異常であると判断する所定の閾値を記憶する閾値記憶手段と、前記リソース使用量取得手段により取得された前記データベースサーバのリソース使用量が、前記閾値記憶手段に記憶された所定の閾値を超えているかを判断する判断手段と、前記閾値記憶手段で記憶された所定の閾値を超えないリソース使用量で終了したデータベースサーバの実行計画を、前記入力されたＳＱＬ文と紐付けて記憶する正常時実行計画記憶手段と、前記判断手段で前記データベースサーバのリソース使用量が、前記閾値記憶手段に記憶された所定の閾値を超えている場合、前記実行計画受信手段で受信した実行計画と、前記正常時実行計画記憶手段で記憶した実行計画とを比較する比較手段と、前記比較手段による比較結果により、前記入力されたＳＱＬ文に紐付けられた前記正常時実行計画で該入力されたＳＱＬ文を処理するよう、前記データベースサーバに該正常時実行計画を送信する正常時実行計画送信手段とを有する。
【発明の効果】
【００１１】
本発明によれば、過去に正常な時間で処理された実行計画を記憶しておき、新たな実行計画により処理時間の遅延が生じた場合は、過去の正常な時間で処理した実行計画に戻して、少なくとも過去の正常な時間に近い処理時間で処理できる効果を有する。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態のデータベース管理システムの構成を示すシステム構成図である。
【図２】本発明の実施形態の各種端末のハードウエア構成を示す図である。
【図３】本発明の実施形態のデータベース管理システムのソフトウェア構成を示すブロック図である。
【図４】本発明の実施形態のデータベース管理システムにおける処理の流れを示す模式図である。
【図５】本発明の実施形態のデータベース管理システムにおける処理の流れを示す模式図である。
【図６】本発明の実施形態のデータベース管理システムにおける処理の流れを示す模式図である。
【図７】本発明の実施形態のデータベース管理システムにおける処理の流れを示す模式図である。
【図８】本発明の実施形態のデータベース管理装置に記憶される遅延管理する対象のＳＱＬ文の一例を示すデータ構成である。
【図９】本発明の実施形態のデータベース管理装置に記憶されるＳＱＬＩＤと遅延管理するリソースや処理時間の一例を示すデータ構成である。
【図１０】本発明の実施形態のデータベース管理装置において、登録される実行計画の一例を示すデータ構成である。
【図１１】本発明の実施形態のデータベース管理装置において、ヒント句の作成された一例を示す図である。
【図１２】本発明の実施形態のデータベース管理装置において、ヒント句を適用されて作成される新実行ＳＱＬの元になるＳＱＬ文の一例を示す図である。
【図１３】本発明に係るデータベース管理装置で読み取り（読み出し）可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【発明を実施するための形態】
【００１３】
以下、本発明の好ましい実施の形態について図面を参照しながら詳細に説明する。
【００１４】
図１は、本発明に係るデータベース管理システムの構成を示すシステム構成図である。
【００１５】
図１において、データベース管理システムは、少なくとも１つのデータベースサーバ１０２とＳＱＬ文を送信する管理用クライアント１０１、およびバッチ処理を管理し実行計画の適不適を判断するデータベース管理装置とがネットワークを介して接続されている。
【００１６】
管理ユーザは、管理用クライアント１０１からデータベース管理装置１００にバッチ処理などを定義し、夜間などにバッチ処理を実行させる。
【００１７】
データベース管理装置１００は、管理ユーザからＳＱＬ文などのバッチ処理が入力され、そのＳＱＬ文をデータベースサーバ１０２に送信し、データベースサーバ１０２は、受信したＳＱＬ文などのバッチ処理を実行する。
【００１８】
夜間などにデータベースサーバ１０２で実行された処理結果は、翌朝などに一般ユーザがクライアント１０３などから取得する。
【００１９】
なお、データベース管理装置１００は、データベースサーバ１０２と同一の筐体でも良いし、また、管理用クライアント１０１と同一の筐体でも良い。また、データベース管理装置１００とデータベースサーバ１０２と管理用クライアント１０１は同一の筐体としても良い。
【００２０】
図２は、本発明の実施形態の各種端末のハードウエア構成を示す図である。
【００２１】
図２において、ＣＰＵ２０１は、システムバス２０４に接続される各デバイスを統括的に制御する。
【００２２】
また、ＲＯＭ２０３あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるオペレーティングシステム（ＯＳ）や、各サーバあるいは各クライアントの後述する各種機能を実現するためのプログラムが記憶されている。
【００２３】
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア、一時待避領域等として機能する。
【００２４】
入力コントローラ２０５は、入力部２０９からの入力を制御する。この入力部２０９としては、特に、サーバやクライアント等の端末では、キーボード、マウス等のポインティングデバイスが挙げられる。また、印刷装置等では、タッチパネル、ボタン、スイッチ等が挙げられる。
【００２５】
出力コントローラ２０６は、出力部２１０の表示を制御する。この出力部２１０としては、例えば、ＣＲＴや液晶等が挙げられる。
【００２６】
外部メモリコントローラ２０７は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザーファイル、編集ファイル、プリンタドライバ等を記憶する外部メモリ２１１へのアクセスを制御する。加えて、各サーバあるいは各クライアントの各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ２１１としては、ハードディスク（ＨＤ）やフロッピー（登録商標）ディスク（ＦＤ）、ＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）、スマートメディア等が挙げられる。
【００２７】
通信Ｉ／Ｆコントローラ２０８は、ネットワーク２１４を介して外部機器との通信制御処理を実行する。
【００２８】
本発明を実現するためのプログラム２１２は外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０２にロードされることによりＣＰＵ２０１によって実行されるものである。
【００２９】
図３は、本発明の実施形態のデータベース管理システムのソフトウェア構成を示すブロック図である。
【００３０】
データベース管理装置１００は、管理用クライアント１０１の入力部からバッチ処理を受信し、データベース管理装置１００のバッチ処理部３０１はデータベースの実行計画管理部３０３へバッチ処理のＳＱＬ文を送信する。ＳＱＬ文を受信した実行計画管理部３０３は、そのＳＱＬ文が遅延管理する対象のＳＱＬ文かどうかを判断する。
【００３１】
遅延管理する対象のＳＱＬ文である場合、ＳＱＬ文をデータベースサーバ１０２に送信する。
【００３２】
データベースサーバ１０２は、受信したＳＱＬ文から、データベース処理部３２１が最適と考える実行計画を選択し、実行ＳＱＬ（第１の実行ＳＱＬ：以後旧実行ＳＱＬと呼ぶ）を生成して、旧実行ＳＱＬを実行する。
【００３３】
旧実行ＳＱＬを開始すると、データベース管理装置１００の実行計画管理部３０３は、旧実行ＳＱＬ終了を条件として、データベースサーバ１０２のリソース情報（ＣＰＵ処理時間、ＣＰＵ使用率など）を取得し、それぞれのＳＱＬ文に対応した閾値をリソースが越えていないかを判断する。
【００３４】
実行計画管理部３０３は、データベースサーバのリソースが閾値を越えている場合は、処理の遅延が発生していると考えられるので、遅延リカバリ処理へと移行する。
【００３５】
データベースサーバのリソースが閾値を越えないうちに処理を終えた場合は、旧実行ＳＱＬの実行計画をデータベースサーバ１０２から受信し、正常時の実行計画としてＳＱＬ文と紐付けて記憶しておく。
【００３６】
一方、遅延リカバリ処理に移行すると、データベース管理装置１００の実行計画管理部３０３は、ＳＱＬ文に対応する正常時の実行計画を読み込み、また、データベースサーバ１０２から、旧実行ＳＱＬの実行計画を受信する。上記２つの実行計画を比較し、一致しているかどうかを判断する。
【００３７】
上記判断が一致していない場合は、正常時の実行計画からヒント句を生成し、対象のＳＱＬ文にヒント句を付与した実行ＳＱＬ（第２の実行ＳＱＬ：以後新実行ＳＱＬと呼ぶ）を生成する。
【００３８】
次に、データベースサーバ１０２からリソース情報（ＣＰＵ使用率やＩＯリソース使用率など）を取得し、現状のリソースの使用割合が大きい場合は、旧実行ＳＱＬを停止（ロールバックなど）し、新実行ＳＱＬを開始する。リソースの使用割合が大きい時に、新旧の実行ＳＱＬを同時に実行すると、処理がより遅くなるためである。
【００３９】
また、生成した新実行ＳＱＬが更新系のＳＱＬ文（ｄｅｌｅｔｅ、ｕｐｄａｔｅ、ｉｎｓｅｒｔなど）の場合にも、旧実行ＳＱＬを停止（ロールバックなど）し、新実行ＳＱＬを開始する。更新系のＳＱＬ文の場合、データのコンフリクトを防ぐため、多くのデータベースサーバは２つのＳＱＬを同時に処理できない仕様になっているためである。
【００４０】
上記の条件に合致しない場合は、新旧の実行ＳＱＬを並行に起動し、早く終了した結果を取得して、該当のＳＱＬ文の処理を終える。
【００４１】
以上の処理により、実行計画の変更による処理時間の遅延が発生した場合、少なくとも過去の正常な時間に近い処理時間で処理することができる効果を有する。
【００４２】
以下、図４〜図７を参照して、本発明における実施形態の流れを説明する。
【００４３】
図４は、本発明の実施形態のデータベース管理システムにおける第１の制御処理手段の一例を示すフローチャートであり、図中のＳ４０１〜Ｓ４１１は各ステップを示す。各ステップの処理は、それぞれの装置の外部メモリ２１１に格納されたアプリケーションプログラムを、それぞれの装置のＣＰＵ２０１がＲＡＭ２０２上にロードして実行することにより実現される。
【００４４】
図４のフローチャートは、データベース管理装置１００がＳＱＬ文をデータベースサーバに送信しようとすると開始される処理の流れになる。
【００４５】
まず、ステップＳ４０１において、データベース管理装置１００のバッチ処理部３０１は、実行命令を受け付けたＳＱＬ文を実行計画管理部３０３に送信する。
【００４６】
次に、ステップＳ４０２において、データベース管理装置１００の実行計画管理部３０３は、バッチ処理部３０１から受信したＳＱＬ文が遅延管理する対象のＳＱＬ文かどうかを判断する。この処理は、遅延管理しなくても良いＳＱＬ文（処理時間が明らかに短いＳＱＬ文など）での以降の処理を省くための判断分岐である。
【００４７】
実行計画管理部３０３に記憶されている遅延管理する対象のＳＱＬ文の例を図８を参照して説明する。
【００４８】
図８は、本発明の実施形態のデータベース管理装置に記憶される遅延管理する対象のＳＱＬ文の一例を示すデータ構成である。
【００４９】
図８の８０１欄はＳＱＬ文毎に振られたＳＱＬＩＤであり、８０２欄は遅延管理する対象のＳＱＬ文である。８０３は、パラメータの条件であり、８０３に記載のあるＳＱＬＩＤのＳＱＬ文は、８０３に記載されたパラメータ条件が満たされている場合のみ、遅延管理する対象とする。図４のフローチャートの説明に戻る。
【００５０】
ステップＳ４０２で、実行計画管理部３０３は、受信したＳＱＬ文が遅延管理する対象のＳＱＬ文であれば、受信したＳＱＬ文をデータベースサーバ１０２へと送信し、ステップＳ４０３へと処理を移行する。一方、受信したＳＱＬ文が遅延管理する対象のＳＱＬ文でなければ、図５の処理に移行する。
【００５１】
ステップＳ４０３に処理を移行すると、データベースサーバ１０２のデータベース処理部３２１は、受信したＳＱＬ文に適切と考えられる実行計画を適用して実行ＳＱＬ（第１の実行ＳＱＬ：以後旧実行ＳＱＬと呼ぶ）を生成し、旧実行ＳＱＬを実行する。
【００５２】
次に、実行計画管理部３０３は、定期的にデータベースサーバ１０２からリソース状況や処理時間などの情報を受信し（ステップＳ４０５）、閾値以上となって遅延していないかを確認する（ステップＳ４０６）。
【００５３】
ステップＳ４０６における閾値の例を図９を参照して説明する。
【００５４】
図９は、本発明の実施形態のデータベース管理装置に記憶されるＳＱＬＩＤと遅延管理するリソースや処理時間の一例を示すデータ構成である。
【００５５】
図９の９０１欄はＳＱＬ文毎に振られたＳＱＬＩＤであり、９０２欄は閾値のタイプを示す。閾値のタイプとしては、たとえば、該当ＳＱＬの処理時間の長さや、ＣＰＵの使用時間、使用割合、ＩＯリソースの使用時間や使用割合などがある。９０３欄は、それぞれのタイプ毎の閾値であり、たとえば処理時間であれば１００秒を超えた場合、ＣＰＵリソースであれば、使用割合が９０％以上が１分以上続く場合などである。図４のフローチャートの説明に戻る。
【００５６】
ステップＳ４０５とステップＳ４０６の処理は、ステップＳ４０３で実行を開始した旧実行ＳＱＬが終了するまで繰り返す。
【００５７】
ステップＳ４０６で閾値以上となった場合は、遅延リカバリ処理へと処理を移行する。詳細は図６において説明する。
【００５８】
ステップＳ４０６で閾値以上となることなく、ステップＳ４０３で実行した旧実行ＳＱＬが終了する（ステップＳ４０７）と、実行計画管理部３０３は、旧実行ＳＱＬの実行計画をデータベース処理部３２１から取得する（ステップＳ４０８、ステップＳ４０９）。
【００５９】
次に、ステップＳ４１０において、実行計画管理部は、取得した旧実行ＳＱＬの実行計画をステップＳ４０２で取得したＳＱＬ文と紐付けて記憶する。ステップＳ４１０でＳＱＬ文と紐付けて記憶する実行計画は、正常な状態で終了したと判断された実行計画である（以下、正常時の実行計画と呼ぶ）。正常な実行計画の例を図１０を参照して説明する。
【００６０】
図１０は、本発明の実施形態のデータベース管理装置において、登録される実行計画の一例を示すデータ構成である。
【００６１】
図１０の１００１欄はＳＱＬ文毎に振られたＳＱＬＩＤであり、図８のＳＱＬ文と対応付いている。１００２欄はＳＱＬＩＤそれぞれのＳＱＬ文における正常時の実行計画である。たとえば、ＳＱＬＩＤが１の「ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  Ａテーブル  ｗｈｅｒｅ  ○○項目＝：パラメタ１」というＳＱＬ文の場合、実行計画として「ＳＥＬＥＣＴ  ＳＴＡＴＥＭＥＮＴ  ＴＡＢＬＥ  ＡＣＣＥＳＳ  Ａテーブル  ＩＮＤＥＸ  Ａ１インデックス  ＵＮＩＱＵＥ  ＳＣＡＮ」が登録されている。これは、ＳＱＬＩＤが１のＳＱＬ文であるＡテーブルの検索には、Ａ１インデックス（プライマリキー）による索引一意スキャンを行うと正常な時間以内に処理が終了することを意味する。また、ＳＱＬＩＤが２の「ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  Ａテーブル  ｗｈｅｒｅ  ○○項目＝：パラメタ１  ａｎｄ  ××項目＝：パラメタ２」というＳＱＬ文の場合、実行計画として「ＳＥＬＥＣＴ  ＳＴＡＴＥＭＥＮＴ  ＴＡＢＬＥ  ＡＣＣＥＳＳ  Ａテーブル  ＩＮＤＥＸ  Ａ２インデックス  ＲＡＮＧＥ  ＳＣＡＮ」が登録されている。これは、ＳＱＬＩＤが２のＳＱＬ文であるＡテーブルの検索には、Ａ２インデックスによる索引レンジ・スキャンを行うと正常な時間以内に処理が終了することを意味する。図４のフローチャートの説明に戻る。
【００６２】
ステップＳ４１０において、ＳＱＬ文と正常時の実行計画を紐付けてきおくすると、次にステップＳ４１１へと処理を移行する。
【００６３】
ステップＳ４１１において、バッチ処理部３０１は、Ｓ４０１で送信したＳＱＬ文の結果を取得し、引き続きの処理を行う。バッチ処理がＳＱＬ文である場合は、ステップＳ４０１へと処理を戻し、バッチ処理が終了するまでこの処理を繰り返す。
【００６４】
以上の処理により、ＳＱＬ文が正常に終了した際の実行計画を記憶することが出来る。
【００６５】
つぎに、図５を参照して、実行計画管理部３０３が受信したＳＱＬ文が遅延管理する対象のＳＱＬ文でない場合の処理を説明する。
【００６６】
図５は、本発明の実施形態のデータベース管理システムにおける第２の制御処理手段の一例を示すフローチャートであり、それぞれの装置の外部メモリ２１１に格納されたアプリケーションプログラムを、それぞれの装置のＣＰＵ２０１がＲＡＭ２０２上にロードして実行することにより実現される。なお、図中のＳ５０１は処理ステップを示す。
【００６７】
図５のフローチャートは、実行計画管理部３０３が受信したＳＱＬ文が遅延管理する対象のＳＱＬ文でない場合に開始される処理の流れになる。
【００６８】
ステップＳ５０１において、データベース処理部３２１は、実行計画管理部３０３からＳＱＬ文を受信し、受信したＳＱＬ文に対する実行計画を適用して実行ＳＱＬを生成し、実行ＳＱＬを実行する。
【００６９】
データベース処理部３２１で実行した結果はバッチ処理部へ送信され、図４のステップＳ４１１へと処理へと移行する。
【００７０】
以上、実行計画管理部３０３が受信したＳＱＬ文が遅延管理する対象のＳＱＬ文でない場合の処理の説明を終える。
【００７１】
次に、図６を参照して、データベースサーバ１０２の処理時間が遅延しているなどの場合の処理を説明する。
【００７２】
図６は、本発明の実施形態のデータベース管理システムにおける第３の制御処理手段の一例を示すフローチャートであり、それぞれの装置の外部メモリ２１１に格納されたアプリケーションプログラムを、それぞれの装置のＣＰＵ２０１がＲＡＭ２０２上にロードして実行することにより実現される。なお、図中のＳ６０１からＳ６１０は各処理ステップを示す。
【００７３】
図６のフローチャートは、図４のステップＳ４０６において、データベースサーバ１０２の処理時間の遅延やデータベースサーバ１０２のリソースの高占有などが生じた際に開始される処理の流れになる。
【００７４】
まず、ステップＳ６０１において、実行計画管理部３０３は、データベースサーバ１０２の処理時間の遅延やデータベースサーバ１０２のリソースの高占有などが生じている旧実行ＳＱＬを生成した際の実行計画を、データベース処理部３２１に要求する。
【００７５】
次に、ステップＳ６０２において、データベース処理部３２１は、旧実行ＳＱＬを生成した際の実行計画を実行計画管理部３０３に送信する。
【００７６】
次に、ステップＳ６０３において、実行計画管理部３０３は、ステップＳ６０１の実行計画の要求により取得した実行計画を記憶する。また、ステップＳ４１０で過去に正常に終了した時の実行計画（正常時の実行計画）の内、ステップＳ４０２で受信したＳＱＬ文のテンプレート（図８の管理対象となるＳＱＬ一覧３０２の８０２欄）と同じ形式のＳＱＬＩＤの実行計画（図１０の１００２欄）をＳＱＬ一覧（図８）と実行計画一覧（図１０）から取得する。
【００７７】
次に、ステップＳ６０４において、実行計画管理部３０３は、ステップＳ６０２でデータベース処理部３２１から送信された旧実行ＳＱＬを生成した実行計画と、ステップＳ６０４で取得した正常時の実行計画とを比較する。
【００７８】
２つの実行計画が等しい場合は、この発明では解決できず、ステップＳ６１０へと処理を移行し、ステップＳ６１０において、旧実行ＳＱＬが終了するまで待機した後、ステップＳ４１１へと処理を移行する。
【００７９】
一方、ステップＳ６０４において２つの実行計画が等しくない場合は、正常時の実行計画で処理速度を上げることが可能かもしれないので、正常時の実行計画を適用したＳＱＬ文を実行するため、次のステップＳ６０５の処理へと移行する。
【００８０】
ステップＳ６０５へと処理を移行すると、実行計画管理部３０３は、ステップＳ６０３で取得した正常時の実行計画から正常時の実行計画を適用するためのヒント句を生成する。生成されるヒント句の例を図１１を参照して説明する。
【００８１】
図１１は、本発明の実施形態のデータベース管理装置において、ヒント句の作成された一例を示す図である。
【００８２】
図１１の１１００は、図１０の実行計画一覧のＳＱＬＩＤそれぞれの実行計画に対するヒント句の例である。
【００８３】
図１１の１１０１の例では、ＳＱＬＩＤが１のＳＱＬ文に対して付与されるヒント句が生成された例であり、図１０の１００３の行を読み取って、Ａ１インデックスによる検索を行うヒント句の例である。なお、索引一意スキャンを行う「ＩＮＤＥＸ  ＵＮＩＱＵＥ  ＳＣＡＮ」については、Ａ１インデックスがプライマリキーであるので、記載は省略されている。図６のフローチャートの説明に戻る。
【００８４】
ステップＳ６０５において、正常時の実行計画からヒント句を生成すると、次のステップＳ６０６において、実行計画管理部３０３は、ステップＳ４０２で受信したＳＱＬ文に、ステップＳ６０５で生成されたヒント句を適用し、新たな実行ＳＱＬを作成する（第２の実行ＳＱＬ：新実行ＳＱＬと呼ぶ）。作成される新実行ＳＱＬの例を、図１２を参照して説明する。
【００８５】
図１２は、本発明の実施形態のデータベース管理装置において、ヒント句を適用されて作成される新実行ＳＱＬの元になるＳＱＬ文の一例を示す図である。
【００８６】
図１２の１２００には、ヒント句が付与される前、すなわちステップＳ４０２でバッチ処理部３０１から受信した段階のＳＱＬ文を示す。一方、１２１０は、図１１の１１０１のヒント句が反映されたＳＱＬ文を示す。１２０１の「／＊＋  ＩＮＤＥＸ（Ａ１インデックス）  ＊／」の欄が追記されており、このヒント句により、新実行ＳＱＬは、プライマリキーであるＡ１インデックスを使って検索することが出来る。図６のフローチャートの説明に戻る。
【００８７】
ステップＳ６０６の処理を実行後、ステップＳ６０７において、実行計画管理部３０３は、ステップＳ４０２で受信したＳＱＬ文が更新系のＳＱＬであるか、もしくは、ステップＳ４０５でデータベース処理部から送信されたリソースに使用割合が所定の割合を超えているかどうかを判断する。この判断分岐は、新実行ＳＱＬを旧実行ＳＱＬと並行して処理することが可能か、もしくはリソースの負荷が高くなるために並行して処理をしないほうが良いかの判断を行うための分岐である。
【００８８】
ステップＳ４０２で受信したＳＱＬ文が更新系のＳＱＬである場合は、並行して同じデータベースにアクセスすることが不可能であるため、ステップＳ６０８の処理へと移行する。
【００８９】
ステップＳ６０８において、データベース処理部３２１は、旧実行ＳＱＬを切断し、次のステップＳ６０９で新実行ＳＱＬを開始する。新実行ＳＱＬが終了すると、図４のステップＳ４１１へと処理を移行する。
【００９０】
また、ステップＳ６０７において、リソースの使用割合が所定の割合を超えて、リソースの使用負荷が高い場合も、ステップＳ６０８へと処理を移行する。ステップＳ６０８以降の処理は、上記と同じ処理となる。
【００９１】
ステップＳ６０７で、受信したＳＱＬ文が更新系ではなく、またリソースの使用負荷も所定の割合を超えていない場合、図７の新旧２つの実行ＳＱＬを並行して実行する処理に移行する。
【００９２】
図７を参照して、新旧２つの実行ＳＱＬを実行する処理について説明する。
【００９３】
図７は、本発明の実施形態のデータベース管理システムにおける第４の制御処理手段の一例を示すフローチャートであり、それぞれの装置の外部メモリ２１１に格納されたアプリケーションプログラムを、それぞれの装置のＣＰＵ２０１がＲＡＭ２０２上にロードして実行することにより実現される。なお、図中のＳ７０１からＳ７０８は各処理ステップを示す。
【００９４】
図７のフローチャートは、図４のステップＳ４０６において、データベースサーバ１０２のリソースの占有率が所定の割合以下で、且つステップＳ４０２で受信したＳＱＬ文が更新系ＳＱＬではない場合に開始される処理の流れになる。
【００９５】
まず、実行計画管理部３０３は、データベース処理部３２１へと処理を移行し、データベース処理部３２１は、２つの新旧実行ＳＱＬの処理を並行して処理する。
【００９６】
まず、旧実行ＳＱＬの処理はステップＳ７０１のように旧実行ＳＱＬを継続して実行する。
【００９７】
また、新実行ＳＱＬの処理もステップＳ７０３において開始し、ステップＳ７０２もしくはステップＳ７０４において、どちらかの処理が終了するまで、ステップＳ７０１とステップＳ７０３の処理を繰り返す。
【００９８】
ステップＳ７０２もしくはステップＳ７０４において、どちらかの処理が終了すると、処理を実行計画管理部３０３に移行する。
【００９９】
実行計画管理部３０３へと移行すると、ステップＳ７０５において、終了した実行ＳＱＬが新旧どちらのＳＱＬかを判断し、終了していない方の実行ＳＱＬを切断し（ステップＳ７０６、Ｓ７０７）、図４のステップ４１１へと処理を移行する。
【０１００】
以上の処理により、本発明のデータベース管理装置は、新たな実行計画により処理時間の遅延が生じた場合は、過去の正常な時間で処理した実行計画に戻して、少なくとも過去の正常な時間に近い処理時間で処理できる効果を有する。
【０１０１】
なお、本実施形態では、データベース管理装置１００とデータベースサーバ１０２とが別筐体として記載したが、データベース管理装置１００とデータベースサーバ１０２は一つの筐体としても良く、また複数の筐体からなっていても良い。
【０１０２】
また、図８〜図１０の各種データの構成およびその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０１０３】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１０４】
なお、本実施形態中に示した各変形例を組み合わせた構成も全て本発明に含まれるものである。
【０１０５】
以下、図１３に示すメモリマップを参照して本発明に係るデータベース管理装置で読み取り可能なデータ処理プログラムの構成について説明する。
【０１０６】
図１３は、本発明に係るデータベース管理装置で読み取り（読み出し）可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【０１０７】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０１０８】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０１０９】
本実施形態における図４〜図７に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０１１０】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１１１】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１１２】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０１１３】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１４】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１５】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１１６】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【符号の説明】
【０１１７】
１００  データベース管理装置
１０１  管理用クライアント
１０２  データベースサーバ
１０３  クライアント
【図１】
2016009225.tif 000003
【図２】
2016009225.tif 000004
【図３】
2016009225.tif 000005
【図４】
2016009225.tif 000006
【図５】
2016009225.tif 000007
【図６】
2016009225.tif 000008
【図７】
2016009225.tif 000009
【図８】
2016009225.tif 000010
【図９】
2016009225.tif 000011
【図１０】
2016009225.tif 000012
【図１１】
2016009225.tif 000013
【図１２】
2016009225.tif 000014
【図１３】
2016009225.tif 000015