JP2005018430A - データベース管理システム及び問い合わせ最適化方法 - Google Patents
データベース管理システム及び問い合わせ最適化方法 Download PDFInfo
- Publication number
- JP2005018430A JP2005018430A JP2003182663A JP2003182663A JP2005018430A JP 2005018430 A JP2005018430 A JP 2005018430A JP 2003182663 A JP2003182663 A JP 2003182663A JP 2003182663 A JP2003182663 A JP 2003182663A JP 2005018430 A JP2005018430 A JP 2005018430A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- execution plan
- plan
- inquiry
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】より確実に問い合わせの最適化を行うことができるデータベース管理システム及び問い合わせ最適化方法を提供する。
【解決手段】制御部11は、所定の問い合わせについて、候補の実行プランを生成し、生成した全実行プランを実行し、各実行プランの実際のコストを取得し、最小のコストの実行プランを選択し、問い合わせとともに最適実行プランファイル122に登録する。また、制御部11は、ユーザが入力した問い合わせを受け付け、問い合わせが最適実行プランファイル122に登録されているかを判別し、登録されている場合、問い合わせとともに登録されている実行プランを最適実行プランファイル122から読み出して実行し、実行結果を出力する。また、問い合わせが最適実行プランファイル122に登録されていない場合、一般的な最適化処理を行って実行プランを選択して実行し、実行結果を出力する。
【選択図】 図1
【解決手段】制御部11は、所定の問い合わせについて、候補の実行プランを生成し、生成した全実行プランを実行し、各実行プランの実際のコストを取得し、最小のコストの実行プランを選択し、問い合わせとともに最適実行プランファイル122に登録する。また、制御部11は、ユーザが入力した問い合わせを受け付け、問い合わせが最適実行プランファイル122に登録されているかを判別し、登録されている場合、問い合わせとともに登録されている実行プランを最適実行プランファイル122から読み出して実行し、実行結果を出力する。また、問い合わせが最適実行プランファイル122に登録されていない場合、一般的な最適化処理を行って実行プランを選択して実行し、実行結果を出力する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、データベースについて入力された問い合わせについて最適な実行プランを選択するためのデータベース管理システム(DBMS)及び問い合わせ最適化方法に関する。
【0002】
【従来の技術】
従来、一般的なDBMSでは、問い合わせ(質問、クエリ)が入力されると、問い合わせについて、効率の良い、問い合わせを実行するための手順(実行プラン)を選択する最適化処理が行われる。この問い合わせの最適化処理はデータベース処理においては極めて重要であり、例えば、最適な実行プランであれば数秒以内で処理が終わるような問い合わせであっても、実行プランの選択ミスにより、処理に数十分かかってしまうということもあり得る。
【0003】
例えば、問い合わせと意味的に等価な問い合わせを用意して、問い合わせに対する実行プランの選択幅を広げることにより、問い合わせの最適化を図るシステムもある(特許文献1参照)。
【0004】
【特許文献1】
特開平5−334368号公報(第3頁、第1図)
【0005】
【発明が解決しようとする課題】
一般的に、実行プランの最適化処理では、複数の候補の実行プランについて、統計情報(表の大きさ、属性値の分布等)等を用いて、それぞれのコストの見積もり値を算出し、そのコストの見積もり値が最小のプランを選択する。
しかし、例えば、データがディスク中でフラグメンテーションを起こしている場合等には、上記のようなコストの見積もり値を算出する方法では、実際に最適な実行プランを選択することは困難であった。
【0006】
この発明は、上記実状に鑑みてなされたものであり、より確実に問い合わせの最適化を行うことができるデータベース管理システム及び問い合わせ最適化方法を提供することを目的とする。
また、データベース運用時のパフォーマンスを向上させることができるデータベース管理システム及び問い合わせ最適化方法を提供することを他の目的とする。
【0007】
【課題を解決するための手段】
上記目的を達成するため、この発明の第1の観点に係るデータベース管理システムは、
所定の問い合わせについて、候補となる実行プランを生成し、生成された全ての実行プランを実行し、各実行プランの実際のコストを取得するコスト取得手段と、
前記コスト取得手段により取得された全ての実行プランのコストの中から最小のコストの実行プランを選択する選択手段と、
前記選択手段により選択された実行プランと前記問い合わせを関連付けて最適実行プランファイルに登録する登録手段と、
ユーザにより入力された問い合わせについて、前記最適実行プランファイルを参照してデータベースの検索を行う検索実行手段と、
を備えることを特徴とする。
【0008】
このような構成によれば、問い合わせの候補として生成される全ての実行プランについて実際のコストを求め、現実に最小のコストとなる実行プランを最適実行プランとして選択することにより、実際のシステムのハードウェア性能や実際のデータベースの状態等に基づいて、確実に問い合わせの最適化を行うことができる。また、このようにして最適化された問い合わせの実行プランをデータベースの検索に用いることにより、データベース運用時のパフォーマンスが向上する。
【0009】
前記検索実行手段は、
ユーザが入力した問い合わせを受け付ける手段と、
前記問い合わせが前記最適実行プランファイルに登録されているか否かを判別する手段と、
前記問い合わせが前記最適実行プランファイルに登録されていると判別された場合、該問い合わせに関連付けて登録されている実行プランを前記最適実行プランファイルから読み出して実行する第1のプラン実行手段と、
前記第1のプラン実行手段による実行結果を出力する手段と、
前記問い合わせが前記最適実行プランファイルに登録されていないと判別された場合、該問い合わせについて一般的な最適化処理を行って実行プランを選択し、該選択した実行プランを実行する第2のプラン実行手段と、
前記第2のプラン実行手段による実行結果を出力する手段と、
を備えてもよい。
これにより、実際のコストに基づいて選択された実行プランを用いてデータベース検索を行うため、データベース運用時のパフォーマンスが向上する。
【0010】
前記コスト取得手段は、一定期間毎に、所定の問い合わせについて実行プランの実際のコストを取得する処理を行ってもよく、
前記登録手段は、前記選択手段により選択された実行プランの問い合わせが既に登録されている場合には、登録内容を前記選択された実行プランで更新するようにしてもよい。
【0011】
また、この発明の第2の観点に係る方法は、
データベース管理システムにおける問い合わせ最適化方法であって、
所定の問い合わせについて、候補となる実行プランを生成し、生成された全ての実行プランを実行し、各実行プランの実際のコストを取得するコスト取得ステップと
前記コスト取得ステップにより取得された全ての実行プランのコストの中から最小のコストの実行プランを選択する選択ステップと、
前記選択ステップにより選択した実行プランと前記問い合わせを関連付けて最適実行プランファイルに登録する登録ステップと、
ユーザにより入力された問い合わせについて、前記最適実行プランファイルを参照してデータベースの検索を行う検索実行ステップと、
を備えることを特徴とする。
【0012】
このような構成によれば、問い合わせの候補として生成される全ての実行プランについて実際のコストを求め、現実に最小のコストとなる実行プランを最適実行プランとして選択することにより、実際のシステムのハードウェア性能や実際のデータベースの状態等に基づいて、より確実に問い合わせの最適化を行うことができる。また、このようにして最適化された問い合わせの実行プランをデータベースの検索に用いることにより、データベース運用時のパフォーマンスが向上する。
【0013】
前記検索実行ステップは、
ユーザが入力した問い合わせを受け付けるステップと、
前記問い合わせが前記最適実行プランファイルに登録されているか否かを判別するステップと、
前記問い合わせが前記最適実行プランファイルに登録されていると判別された場合、該問い合わせに関連付けて登録されている実行プランを前記最適実行プランファイルから読み出して実行する第1のプラン実行ステップと、
前記第1のプラン実行ステップによる実行結果を出力するステップと、
前記問い合わせが前記最適実行プランファイルに登録されていないと判別された場合、該問い合わせについて一般的な最適化処理を行って実行プランを選択し、該選択した実行プランを実行する第2のプラン実行ステップと、
前記第2のプラン実行ステップによる実行結果を出力するステップと、
を備えてもよい。
これにより、実際のコストに基づいて選択された実行プランを用いてデータベース検索を行うため、データベース運用時のパフォーマンスが向上する。
【0014】
前記コスト取得ステップは、一定期間毎に、所定の問い合わせについて実行プランの実際のコストを取得する処理を行ってもよく、
前記登録ステップは、前記選択ステップにより選択された実行プランの問い合わせが既に登録されている場合には、登録内容を前記選択された実行プランで更新するようにしてもよい。
【0015】
【発明の実施の形態】
以下、本発明の実施の形態に係るデータベース管理システムを図面を参照して説明する。
【0016】
この発明の実施形態に係るデータベース管理システムの機能構成図を図1に示す。このデータベース管理システム1は、例えば、制御部11、記憶部12、通信制御部13等を備えるコンピュータ等から構成される。
制御部11は、CPU(Central Processing Unit)等から構成され、記憶部12に記憶される動作プログラム等を読み出して実行することにより、管理制御部111、構文解析部112、最適化処理部113、プラン実行部114等を論理的に実現する。
【0017】
管理制御部111は、問い合わせ実行処理、問い合わせ実行処理のための準備処理等の実行を制御する。
例えば、準備処理では、管理制御部111は、構文解析部112、最適化処理部113、プラン実行部114を制御して、予め用意された準備処理用の問い合わせ(クエリ)について、構文解析処理を行った後、候補となる実行プランを生成・実行し、全候補の中から実際のコスト(例えば、実行時間等)が最もかからないプランを選択し、それを対応する問い合わせと関連付けて記憶部12の最適実行プランファイル122に記憶する。なお、準備処理の実行タイミングは任意に設定可能であり、例えば、図示せぬタイマを用いて所定時間毎に実行するようにしてもよい。
【0018】
また、問い合わせ実行処理では、管理制御部111は、構文解析部112、最適化処理部113、プラン実行部114を制御して、他のコンピュータから受け付けた、ユーザにより入力された問い合わせ(クエリ)について、構文解析処理を行った後、問い合わせが最適実行プランファイル122に登録されているか否かを判別し、登録されている場合には、その問い合わせに関連付けて登録されている実行プランを取り出し、それに従ってデータベース121の検索を行う。また、問い合わせが登録されていない場合には、一般的な統計情報等に基づく最適化処理を行って実行プランを選択し、選択した実行プランに従ってデータベース121の検索を行う。そして、データベース121の検索結果を検索要求元のコンピュータに返信する。なお、問い合わせ実行処理の実行タイミングは、例えば、ネットワークを介して他のコンピュータから問い合わせを含む検索要求を受信したとき等である。
【0019】
構文解析部112は、パーサ機能等を有し、管理制御部111からの指示に従って、入力された問い合わせについて構文解析チェックを行う。
【0020】
最適化処理部113は、オプティマイザ機能等を有し、管理制御部111からの指示に従って、構文解析部112より構文解析チェックがなされた問い合わせについて最適な実行プランを決定する。
具体的には、実際のコストに基づいて最適な実行プランを選択することを管理制御部111から指示された場合、問い合わせについて候補となる実行プランを生成し、生成した各実行プランをプラン実行部114に渡して実行させ、実際のコスト値を計測して、全ての実行プランについて実際のコストを取得する。例えば、コストが実行プランの実行時間の場合には、実行プランの実行開始から完了までの時間を計時する。そして、最もコストの小さいものを最適な実行プランとして決定し、決定した最適実行プランを対応する問い合わせとともに最適実行プランファイル122に登録する。最適実行プランファイル122の登録データ(問い合わせ及び最適実行プラン)の一例を図2に示す。
【0021】
また、一般的な最適化処理を管理制御部111から指示された場合、最適化処理部113は、例えば、候補となる実行プランを生成し、各実行プランについて、統計情報(表の大きさ、属性値の分布等)等に基づいて、コストの見積もり値を算出し、最小のコスト値の実行プランを選択するような、一般的な最適化処理を実行し、選択した実行プランをプラン実行部114に渡す。
【0022】
プラン実行部114は、管理制御部111からの指示に従って、最適化処理部113から渡された実行プランが示す手順でデータベースの検索を行う。
【0023】
記憶部12は、ハードディスク装置等から構成され、データベース121と、最適実行プランファイル122と、を備える。また、記憶部12は、制御部11が実行する動作プログラムや、処理に必要な各種のデータを記憶する。
データベース121には、検索対象となる各種データが記憶されている。
最適実行プランファイル122には、問い合わせとそれに対応する最適実行プランが関連付けて格納されている。
【0024】
通信制御部13は、ネットワークに接続され、他のコンピュータとの間でデータ通信を行うためのものである
【0025】
次に、本実施形態のデータベース管理システム1の動作について説明する。
まず、準備処理について図3のフローチャートを参照して説明する。
管理制御部111は、例えば所定時間毎のタイミングで、準備処理を開始し、処理対象の問い合わせを記憶部12から取り出し(ステップS1)、問い合わせの構文解析チェックを構文解析部112に指示する。これに応じて、構文解析部112は、指示された問い合わせについて構文解析チェックを行う(ステップS2)。
問い合わせの構文解析チェックが終わると、管理制御部111は、最適実行プランの選出を最適化処理部113に指示する。これに応じて、最適化処理部113は、問い合わせについて候補となる実行プランを生成し(ステップS3)、生成した各実行プランを順次、プラン実行部114に渡して実行させて、実際のコストを測定する処理を全ての実行プランについて行う(ステップS4、5)。
そして、最適化処理部113は、各実行プランを実際に実行して得たコストから最適な、すなわち、コストの最も小さい実行プランを最適実行プランとして選択する(ステップS6)。そして、管理制御部111は、最適化処理部113により選択された最適実行プランを、問い合わせと関連付けて、最適実行プランファイル122に登録して(ステップS7)、本処理を終了する。なお、ステップS7において、対応する問い合わせについて既に登録されている場合には、登録されているデータを更新する。
【0026】
処理対象の問い合わせが複数有る場合には、各問い合わせについて上記準備処理を実行する。例えば、管理制御部111が記憶部12に設定されている複数の問い合わせについて上記準備処理を順次実行するようにしてもよい。また、処理対象の問い合わせは、予め管理者等により図示せぬ入力部から入力され、設定されるようにしてもよく、また、管理制御部111が過去の検索ログ等を参照して、所定の基準により(例えば実行回数の多い等)問い合わせを選出し、設定するようにしてもよい。
【0027】
次に、上記準備処理により得られた最適実行プランを用いて、ユーザにより入力された問い合わせを実行する問い合わせ実行処理について図4のフローチャートを参照して説明する。
管理制御部111は、例えば、他のコンピュータから問い合わせを含む検索要求をネットワークを介して受信すると(ステップS11)、受信した問い合わせについて構文解析チェックを構文解析部112に指示する。これに応じて、構文解析部112は、指示された問い合わせについて構文解析チェックを行う(ステップS12)。
問い合わせの構文解析チェックが終わると、管理制御部111は、問い合わせが準備処理によって事前に最適化されているか、すなわち、問い合わせが最適実行プランファイル122に登録されているか否かを判別する(ステップS13)。
問い合わせが最適実行プランファイル122に登録されていると判別した場合(ステップS13:YES)、管理制御部111は、その問い合わせに対応する最適実行プランを最適実行プランファイル122から読み出して、プラン実行部114に渡して実行させる(ステップS15)。
【0028】
また、問い合わせが最適実行プランファイル122に登録されていないと判別した場合(ステップS13:NO)、管理制御部111は、一般的な最適化処理の実行を最適化処理部113に指示する。これに応じて、最適化処理部113は、実行プランの候補を生成し、各実行プランについてコストの見積もり値を算出し、コストが最小の実行プランを選択し、プラン実行部114に渡して実行させる(ステップS14、S15)。
そして、管理制御部111は、ステップS15におけるプラン実行部114による検索処理の実行結果を検索要求元のコンピュータにネットワークを介して送信する(ステップS16)。
【0029】
以上説明したように、本発明によれば、問い合わせの候補として生成される全ての実行プランについて実際のコストを求め、現実に最小のコストとなる実行プランを最適実行プランとして選択することにより、実際のシステムのハードウェア性能や実際のデータベースの状態等に基づいて、確実に問い合わせの最適化を行うことができる。これにより、データベース運用時のパフォーマンスが向上する。
【0030】
なお、上記実施例では、問い合わせ実行処理において、問い合わせが最適実行プランファイル122に登録されていない場合に、一般的な最適化処理を行うようにしているが、これに限定されず、例えば、準備処理のように、生成された全ての実行プランを実行し、最小のコストの実行プランを選択してもよい。さらに、選択した実行プランを問い合わせとともに、最適実行プランファイル122に登録するようにしてもよい。
【0031】
また、上記のシステム構成は一例であり、例えば、データベース121は本システムとネットワークにより接続された他のコンピュータが有するようにしてもよい。
また、本システムの機能を複数台のコンピュータにより実現してもよい。例えば、準備処理を行う第1のコンピュータと、問い合わせ実行処理を行う第2のコンピュータと、を備えても良く、データベース121及び最適実行プランファイルを、第1のコンピュータ、第2のコンピュータ、第1と第2のコンピュータとネットワークで接続された他コンピュータ、のいずれかが有する構成としてもよい。この場合、第1のコンピュータは、上記データベース管理システム1が有する機能のうち、準備処理を行うための処理プログラム及び必要なデータを記憶部に記憶し、制御部が記憶部から処理プログラムを読み出して実行することにより、準備処理を実行するための管理制御部、構文解析部、最適化処理部、プラン実行部を実現する。また、第2のコンピュータは、上記データベース管理システム1が有する機能のうち、問い合わせ実行処理を行うための処理プログラム及び必要なデータを記憶部に記憶し、制御部が記憶部から処理プログラムを読み出して実行することにより、準備処理を実行するための管理制御部、構文解析部、最適化処理部、プラン実行部を実現する。
【0032】
また、上記説明では、問い合わせはネットワークを介して他のコンピュータから受信しているが、これに限定されず、例えば、本システムが備える図示せぬ入力部からユーザが入力し、入力された問い合わせについて上記の各種処理を行うようにしてもよい。
【0033】
なお、この発明のシステムは、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、上述の動作を実行するためのプログラムをコンピュータ読み取り可能な記録媒体(FD、CD−ROM、DVD等)に格納して配布し、該プログラムをコンピュータにインストールすることにより、上述の処理を実行するデータベース管理システム1等を構成してもよい。また、インターネット等のネットワーク上のサーバ装置が有するディスク装置に格納しておき、例えばコンピュータにダウンロード等するようにしてもよい。
また、上述の機能を、OSが分担又はOSとアプリケーションの共同により実現する場合等には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
【0034】
【発明の効果】
このような構成によれば、より確実に問い合わせの最適化を行うことができる。
【図面の簡単な説明】
【図1】この発明の実施の形態に係るデータベース管理システムの構成を示す図である。
【図2】最適実行プランファイルの登録データの一例を示す図である。
【図3】準備処理を説明するためのフローチャートである。
【図4】問い合わせ実行処理を説明するためのフローチャートである。
【符号の説明】
1 データベース管理システム
11 制御部
111 管理制御部
112 構文解析部
113 最適化処理部
114 プラン実行部
12 記憶部
121 データベース
122 最適実行プランファイル
13 通信制御部
【発明の属する技術分野】
この発明は、データベースについて入力された問い合わせについて最適な実行プランを選択するためのデータベース管理システム(DBMS)及び問い合わせ最適化方法に関する。
【0002】
【従来の技術】
従来、一般的なDBMSでは、問い合わせ(質問、クエリ)が入力されると、問い合わせについて、効率の良い、問い合わせを実行するための手順(実行プラン)を選択する最適化処理が行われる。この問い合わせの最適化処理はデータベース処理においては極めて重要であり、例えば、最適な実行プランであれば数秒以内で処理が終わるような問い合わせであっても、実行プランの選択ミスにより、処理に数十分かかってしまうということもあり得る。
【0003】
例えば、問い合わせと意味的に等価な問い合わせを用意して、問い合わせに対する実行プランの選択幅を広げることにより、問い合わせの最適化を図るシステムもある(特許文献1参照)。
【0004】
【特許文献1】
特開平5−334368号公報(第3頁、第1図)
【0005】
【発明が解決しようとする課題】
一般的に、実行プランの最適化処理では、複数の候補の実行プランについて、統計情報(表の大きさ、属性値の分布等)等を用いて、それぞれのコストの見積もり値を算出し、そのコストの見積もり値が最小のプランを選択する。
しかし、例えば、データがディスク中でフラグメンテーションを起こしている場合等には、上記のようなコストの見積もり値を算出する方法では、実際に最適な実行プランを選択することは困難であった。
【0006】
この発明は、上記実状に鑑みてなされたものであり、より確実に問い合わせの最適化を行うことができるデータベース管理システム及び問い合わせ最適化方法を提供することを目的とする。
また、データベース運用時のパフォーマンスを向上させることができるデータベース管理システム及び問い合わせ最適化方法を提供することを他の目的とする。
【0007】
【課題を解決するための手段】
上記目的を達成するため、この発明の第1の観点に係るデータベース管理システムは、
所定の問い合わせについて、候補となる実行プランを生成し、生成された全ての実行プランを実行し、各実行プランの実際のコストを取得するコスト取得手段と、
前記コスト取得手段により取得された全ての実行プランのコストの中から最小のコストの実行プランを選択する選択手段と、
前記選択手段により選択された実行プランと前記問い合わせを関連付けて最適実行プランファイルに登録する登録手段と、
ユーザにより入力された問い合わせについて、前記最適実行プランファイルを参照してデータベースの検索を行う検索実行手段と、
を備えることを特徴とする。
【0008】
このような構成によれば、問い合わせの候補として生成される全ての実行プランについて実際のコストを求め、現実に最小のコストとなる実行プランを最適実行プランとして選択することにより、実際のシステムのハードウェア性能や実際のデータベースの状態等に基づいて、確実に問い合わせの最適化を行うことができる。また、このようにして最適化された問い合わせの実行プランをデータベースの検索に用いることにより、データベース運用時のパフォーマンスが向上する。
【0009】
前記検索実行手段は、
ユーザが入力した問い合わせを受け付ける手段と、
前記問い合わせが前記最適実行プランファイルに登録されているか否かを判別する手段と、
前記問い合わせが前記最適実行プランファイルに登録されていると判別された場合、該問い合わせに関連付けて登録されている実行プランを前記最適実行プランファイルから読み出して実行する第1のプラン実行手段と、
前記第1のプラン実行手段による実行結果を出力する手段と、
前記問い合わせが前記最適実行プランファイルに登録されていないと判別された場合、該問い合わせについて一般的な最適化処理を行って実行プランを選択し、該選択した実行プランを実行する第2のプラン実行手段と、
前記第2のプラン実行手段による実行結果を出力する手段と、
を備えてもよい。
これにより、実際のコストに基づいて選択された実行プランを用いてデータベース検索を行うため、データベース運用時のパフォーマンスが向上する。
【0010】
前記コスト取得手段は、一定期間毎に、所定の問い合わせについて実行プランの実際のコストを取得する処理を行ってもよく、
前記登録手段は、前記選択手段により選択された実行プランの問い合わせが既に登録されている場合には、登録内容を前記選択された実行プランで更新するようにしてもよい。
【0011】
また、この発明の第2の観点に係る方法は、
データベース管理システムにおける問い合わせ最適化方法であって、
所定の問い合わせについて、候補となる実行プランを生成し、生成された全ての実行プランを実行し、各実行プランの実際のコストを取得するコスト取得ステップと
前記コスト取得ステップにより取得された全ての実行プランのコストの中から最小のコストの実行プランを選択する選択ステップと、
前記選択ステップにより選択した実行プランと前記問い合わせを関連付けて最適実行プランファイルに登録する登録ステップと、
ユーザにより入力された問い合わせについて、前記最適実行プランファイルを参照してデータベースの検索を行う検索実行ステップと、
を備えることを特徴とする。
【0012】
このような構成によれば、問い合わせの候補として生成される全ての実行プランについて実際のコストを求め、現実に最小のコストとなる実行プランを最適実行プランとして選択することにより、実際のシステムのハードウェア性能や実際のデータベースの状態等に基づいて、より確実に問い合わせの最適化を行うことができる。また、このようにして最適化された問い合わせの実行プランをデータベースの検索に用いることにより、データベース運用時のパフォーマンスが向上する。
【0013】
前記検索実行ステップは、
ユーザが入力した問い合わせを受け付けるステップと、
前記問い合わせが前記最適実行プランファイルに登録されているか否かを判別するステップと、
前記問い合わせが前記最適実行プランファイルに登録されていると判別された場合、該問い合わせに関連付けて登録されている実行プランを前記最適実行プランファイルから読み出して実行する第1のプラン実行ステップと、
前記第1のプラン実行ステップによる実行結果を出力するステップと、
前記問い合わせが前記最適実行プランファイルに登録されていないと判別された場合、該問い合わせについて一般的な最適化処理を行って実行プランを選択し、該選択した実行プランを実行する第2のプラン実行ステップと、
前記第2のプラン実行ステップによる実行結果を出力するステップと、
を備えてもよい。
これにより、実際のコストに基づいて選択された実行プランを用いてデータベース検索を行うため、データベース運用時のパフォーマンスが向上する。
【0014】
前記コスト取得ステップは、一定期間毎に、所定の問い合わせについて実行プランの実際のコストを取得する処理を行ってもよく、
前記登録ステップは、前記選択ステップにより選択された実行プランの問い合わせが既に登録されている場合には、登録内容を前記選択された実行プランで更新するようにしてもよい。
【0015】
【発明の実施の形態】
以下、本発明の実施の形態に係るデータベース管理システムを図面を参照して説明する。
【0016】
この発明の実施形態に係るデータベース管理システムの機能構成図を図1に示す。このデータベース管理システム1は、例えば、制御部11、記憶部12、通信制御部13等を備えるコンピュータ等から構成される。
制御部11は、CPU(Central Processing Unit)等から構成され、記憶部12に記憶される動作プログラム等を読み出して実行することにより、管理制御部111、構文解析部112、最適化処理部113、プラン実行部114等を論理的に実現する。
【0017】
管理制御部111は、問い合わせ実行処理、問い合わせ実行処理のための準備処理等の実行を制御する。
例えば、準備処理では、管理制御部111は、構文解析部112、最適化処理部113、プラン実行部114を制御して、予め用意された準備処理用の問い合わせ(クエリ)について、構文解析処理を行った後、候補となる実行プランを生成・実行し、全候補の中から実際のコスト(例えば、実行時間等)が最もかからないプランを選択し、それを対応する問い合わせと関連付けて記憶部12の最適実行プランファイル122に記憶する。なお、準備処理の実行タイミングは任意に設定可能であり、例えば、図示せぬタイマを用いて所定時間毎に実行するようにしてもよい。
【0018】
また、問い合わせ実行処理では、管理制御部111は、構文解析部112、最適化処理部113、プラン実行部114を制御して、他のコンピュータから受け付けた、ユーザにより入力された問い合わせ(クエリ)について、構文解析処理を行った後、問い合わせが最適実行プランファイル122に登録されているか否かを判別し、登録されている場合には、その問い合わせに関連付けて登録されている実行プランを取り出し、それに従ってデータベース121の検索を行う。また、問い合わせが登録されていない場合には、一般的な統計情報等に基づく最適化処理を行って実行プランを選択し、選択した実行プランに従ってデータベース121の検索を行う。そして、データベース121の検索結果を検索要求元のコンピュータに返信する。なお、問い合わせ実行処理の実行タイミングは、例えば、ネットワークを介して他のコンピュータから問い合わせを含む検索要求を受信したとき等である。
【0019】
構文解析部112は、パーサ機能等を有し、管理制御部111からの指示に従って、入力された問い合わせについて構文解析チェックを行う。
【0020】
最適化処理部113は、オプティマイザ機能等を有し、管理制御部111からの指示に従って、構文解析部112より構文解析チェックがなされた問い合わせについて最適な実行プランを決定する。
具体的には、実際のコストに基づいて最適な実行プランを選択することを管理制御部111から指示された場合、問い合わせについて候補となる実行プランを生成し、生成した各実行プランをプラン実行部114に渡して実行させ、実際のコスト値を計測して、全ての実行プランについて実際のコストを取得する。例えば、コストが実行プランの実行時間の場合には、実行プランの実行開始から完了までの時間を計時する。そして、最もコストの小さいものを最適な実行プランとして決定し、決定した最適実行プランを対応する問い合わせとともに最適実行プランファイル122に登録する。最適実行プランファイル122の登録データ(問い合わせ及び最適実行プラン)の一例を図2に示す。
【0021】
また、一般的な最適化処理を管理制御部111から指示された場合、最適化処理部113は、例えば、候補となる実行プランを生成し、各実行プランについて、統計情報(表の大きさ、属性値の分布等)等に基づいて、コストの見積もり値を算出し、最小のコスト値の実行プランを選択するような、一般的な最適化処理を実行し、選択した実行プランをプラン実行部114に渡す。
【0022】
プラン実行部114は、管理制御部111からの指示に従って、最適化処理部113から渡された実行プランが示す手順でデータベースの検索を行う。
【0023】
記憶部12は、ハードディスク装置等から構成され、データベース121と、最適実行プランファイル122と、を備える。また、記憶部12は、制御部11が実行する動作プログラムや、処理に必要な各種のデータを記憶する。
データベース121には、検索対象となる各種データが記憶されている。
最適実行プランファイル122には、問い合わせとそれに対応する最適実行プランが関連付けて格納されている。
【0024】
通信制御部13は、ネットワークに接続され、他のコンピュータとの間でデータ通信を行うためのものである
【0025】
次に、本実施形態のデータベース管理システム1の動作について説明する。
まず、準備処理について図3のフローチャートを参照して説明する。
管理制御部111は、例えば所定時間毎のタイミングで、準備処理を開始し、処理対象の問い合わせを記憶部12から取り出し(ステップS1)、問い合わせの構文解析チェックを構文解析部112に指示する。これに応じて、構文解析部112は、指示された問い合わせについて構文解析チェックを行う(ステップS2)。
問い合わせの構文解析チェックが終わると、管理制御部111は、最適実行プランの選出を最適化処理部113に指示する。これに応じて、最適化処理部113は、問い合わせについて候補となる実行プランを生成し(ステップS3)、生成した各実行プランを順次、プラン実行部114に渡して実行させて、実際のコストを測定する処理を全ての実行プランについて行う(ステップS4、5)。
そして、最適化処理部113は、各実行プランを実際に実行して得たコストから最適な、すなわち、コストの最も小さい実行プランを最適実行プランとして選択する(ステップS6)。そして、管理制御部111は、最適化処理部113により選択された最適実行プランを、問い合わせと関連付けて、最適実行プランファイル122に登録して(ステップS7)、本処理を終了する。なお、ステップS7において、対応する問い合わせについて既に登録されている場合には、登録されているデータを更新する。
【0026】
処理対象の問い合わせが複数有る場合には、各問い合わせについて上記準備処理を実行する。例えば、管理制御部111が記憶部12に設定されている複数の問い合わせについて上記準備処理を順次実行するようにしてもよい。また、処理対象の問い合わせは、予め管理者等により図示せぬ入力部から入力され、設定されるようにしてもよく、また、管理制御部111が過去の検索ログ等を参照して、所定の基準により(例えば実行回数の多い等)問い合わせを選出し、設定するようにしてもよい。
【0027】
次に、上記準備処理により得られた最適実行プランを用いて、ユーザにより入力された問い合わせを実行する問い合わせ実行処理について図4のフローチャートを参照して説明する。
管理制御部111は、例えば、他のコンピュータから問い合わせを含む検索要求をネットワークを介して受信すると(ステップS11)、受信した問い合わせについて構文解析チェックを構文解析部112に指示する。これに応じて、構文解析部112は、指示された問い合わせについて構文解析チェックを行う(ステップS12)。
問い合わせの構文解析チェックが終わると、管理制御部111は、問い合わせが準備処理によって事前に最適化されているか、すなわち、問い合わせが最適実行プランファイル122に登録されているか否かを判別する(ステップS13)。
問い合わせが最適実行プランファイル122に登録されていると判別した場合(ステップS13:YES)、管理制御部111は、その問い合わせに対応する最適実行プランを最適実行プランファイル122から読み出して、プラン実行部114に渡して実行させる(ステップS15)。
【0028】
また、問い合わせが最適実行プランファイル122に登録されていないと判別した場合(ステップS13:NO)、管理制御部111は、一般的な最適化処理の実行を最適化処理部113に指示する。これに応じて、最適化処理部113は、実行プランの候補を生成し、各実行プランについてコストの見積もり値を算出し、コストが最小の実行プランを選択し、プラン実行部114に渡して実行させる(ステップS14、S15)。
そして、管理制御部111は、ステップS15におけるプラン実行部114による検索処理の実行結果を検索要求元のコンピュータにネットワークを介して送信する(ステップS16)。
【0029】
以上説明したように、本発明によれば、問い合わせの候補として生成される全ての実行プランについて実際のコストを求め、現実に最小のコストとなる実行プランを最適実行プランとして選択することにより、実際のシステムのハードウェア性能や実際のデータベースの状態等に基づいて、確実に問い合わせの最適化を行うことができる。これにより、データベース運用時のパフォーマンスが向上する。
【0030】
なお、上記実施例では、問い合わせ実行処理において、問い合わせが最適実行プランファイル122に登録されていない場合に、一般的な最適化処理を行うようにしているが、これに限定されず、例えば、準備処理のように、生成された全ての実行プランを実行し、最小のコストの実行プランを選択してもよい。さらに、選択した実行プランを問い合わせとともに、最適実行プランファイル122に登録するようにしてもよい。
【0031】
また、上記のシステム構成は一例であり、例えば、データベース121は本システムとネットワークにより接続された他のコンピュータが有するようにしてもよい。
また、本システムの機能を複数台のコンピュータにより実現してもよい。例えば、準備処理を行う第1のコンピュータと、問い合わせ実行処理を行う第2のコンピュータと、を備えても良く、データベース121及び最適実行プランファイルを、第1のコンピュータ、第2のコンピュータ、第1と第2のコンピュータとネットワークで接続された他コンピュータ、のいずれかが有する構成としてもよい。この場合、第1のコンピュータは、上記データベース管理システム1が有する機能のうち、準備処理を行うための処理プログラム及び必要なデータを記憶部に記憶し、制御部が記憶部から処理プログラムを読み出して実行することにより、準備処理を実行するための管理制御部、構文解析部、最適化処理部、プラン実行部を実現する。また、第2のコンピュータは、上記データベース管理システム1が有する機能のうち、問い合わせ実行処理を行うための処理プログラム及び必要なデータを記憶部に記憶し、制御部が記憶部から処理プログラムを読み出して実行することにより、準備処理を実行するための管理制御部、構文解析部、最適化処理部、プラン実行部を実現する。
【0032】
また、上記説明では、問い合わせはネットワークを介して他のコンピュータから受信しているが、これに限定されず、例えば、本システムが備える図示せぬ入力部からユーザが入力し、入力された問い合わせについて上記の各種処理を行うようにしてもよい。
【0033】
なお、この発明のシステムは、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、上述の動作を実行するためのプログラムをコンピュータ読み取り可能な記録媒体(FD、CD−ROM、DVD等)に格納して配布し、該プログラムをコンピュータにインストールすることにより、上述の処理を実行するデータベース管理システム1等を構成してもよい。また、インターネット等のネットワーク上のサーバ装置が有するディスク装置に格納しておき、例えばコンピュータにダウンロード等するようにしてもよい。
また、上述の機能を、OSが分担又はOSとアプリケーションの共同により実現する場合等には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
【0034】
【発明の効果】
このような構成によれば、より確実に問い合わせの最適化を行うことができる。
【図面の簡単な説明】
【図1】この発明の実施の形態に係るデータベース管理システムの構成を示す図である。
【図2】最適実行プランファイルの登録データの一例を示す図である。
【図3】準備処理を説明するためのフローチャートである。
【図4】問い合わせ実行処理を説明するためのフローチャートである。
【符号の説明】
1 データベース管理システム
11 制御部
111 管理制御部
112 構文解析部
113 最適化処理部
114 プラン実行部
12 記憶部
121 データベース
122 最適実行プランファイル
13 通信制御部
Claims (6)
- データベースに対する所定の問い合わせについて、候補となる実行プランを生成し、生成された全ての実行プランを実行し、各実行プランの実際のコストを取得するコスト取得手段と、
前記コスト取得手段により取得された全ての実行プランのコストの中から最小のコストの実行プランを選択する選択手段と、
前記選択手段により選択された実行プランと前記問い合わせを関連付けて最適実行プランファイルに登録する登録手段と、
ユーザにより入力された問い合わせについて、前記最適実行プランファイルを参照してデータベースの検索を行う検索実行手段と、
を備えることを特徴とするデータベース管理システム。 - 前記検索実行手段は、
ユーザが入力した問い合わせを受け付ける手段と、
前記問い合わせが前記最適実行プランファイルに登録されているか否かを判別する手段と、
前記問い合わせが前記最適実行プランファイルに登録されていると判別された場合、該問い合わせに関連付けて登録されている実行プランを前記最適実行プランファイルから読み出して実行する第1のプラン実行手段と、
前記第1のプラン実行手段による実行結果を出力する手段と、
前記問い合わせが前記最適実行プランファイルに登録されていないと判別された場合、該問い合わせについて一般的な最適化処理を行って実行プランを選択し、該選択した実行プランを実行する第2のプラン実行手段と、
前記第2のプラン実行手段による実行結果を出力する手段と、
を備えることを特徴とする請求項1に記載のデータベース管理システム。 - 前記コスト取得手段は、一定期間毎に、所定の問い合わせについて実行プランの実際のコストを取得する処理を行い、
前記登録手段は、前記選択手段により選択された実行プランの問い合わせが既に登録されている場合には、登録内容を前記選択された実行プランで更新する、
ことを特徴とする請求項1又は2に記載のデータベース管理システム。 - データベース管理システムにおける問い合わせ最適化方法であって、
所定の問い合わせについて、候補となる実行プランを生成し、生成された全ての実行プランを実行し、各実行プランの実際のコストを取得するコスト取得ステップと
前記コスト取得ステップにより取得された全ての実行プランのコストの中から最小のコストの実行プランを選択する選択ステップと、
前記選択ステップにより選択した実行プランと前記問い合わせを関連付けて最適実行プランファイルに登録する登録ステップと、
ユーザにより入力された問い合わせについて、前記最適実行プランファイルを参照してデータベースの検索を行う検索実行ステップと、
を備えることを特徴とする問い合わせ最適化方法。 - 前記検索実行ステップは、
ユーザが入力した問い合わせを受け付けるステップと、
前記問い合わせが前記最適実行プランファイルに登録されているか否かを判別するステップと、
前記問い合わせが前記最適実行プランファイルに登録されていると判別された場合、該問い合わせに関連付けて登録されている実行プランを前記最適実行プランファイルから読み出して実行する第1のプラン実行ステップと、
前記第1のプラン実行ステップによる実行結果を出力するステップと、
前記問い合わせが前記最適実行プランファイルに登録されていないと判別された場合、該問い合わせについて一般的な最適化処理を行って実行プランを選択し、該選択した実行プランを実行する第2のプラン実行ステップと、
前記第2のプラン実行ステップによる実行結果を出力するステップと、
を備えることを特徴とする請求項4に記載の問い合わせ最適化方法。 - 前記コスト取得ステップは、一定期間毎に、所定の問い合わせについて実行プランの実際のコストを取得する処理を行い、
前記登録ステップは、前記選択ステップにより選択された実行プランの問い合わせが既に登録されている場合には、登録内容を前記選択された実行プランで更新する、
ことを特徴とする請求項4又は5に記載の問い合わせ最適化方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003182663A JP2005018430A (ja) | 2003-06-26 | 2003-06-26 | データベース管理システム及び問い合わせ最適化方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003182663A JP2005018430A (ja) | 2003-06-26 | 2003-06-26 | データベース管理システム及び問い合わせ最適化方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2005018430A true JP2005018430A (ja) | 2005-01-20 |
Family
ID=34182981
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2003182663A Pending JP2005018430A (ja) | 2003-06-26 | 2003-06-26 | データベース管理システム及び問い合わせ最適化方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2005018430A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008210003A (ja) * | 2007-02-23 | 2008-09-11 | Masaru Kiregawa | 計算機システム、及び省電力化方法 |
| KR100906454B1 (ko) | 2009-03-18 | 2009-07-08 | 주식회사 신시웨이 | 데이터베이스 로그 정보 관리 장치 및 방법 |
| JP2014241042A (ja) * | 2013-06-11 | 2014-12-25 | 日本電信電話株式会社 | 仮想dbシステムおよび仮想dbシステムの情報処理方法 |
| JP2018509666A (ja) * | 2016-02-19 | 2018-04-05 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Sql実行計画を決定するための方法および装置 |
-
2003
- 2003-06-26 JP JP2003182663A patent/JP2005018430A/ja active Pending
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008210003A (ja) * | 2007-02-23 | 2008-09-11 | Masaru Kiregawa | 計算機システム、及び省電力化方法 |
| KR100906454B1 (ko) | 2009-03-18 | 2009-07-08 | 주식회사 신시웨이 | 데이터베이스 로그 정보 관리 장치 및 방법 |
| JP2014241042A (ja) * | 2013-06-11 | 2014-12-25 | 日本電信電話株式会社 | 仮想dbシステムおよび仮想dbシステムの情報処理方法 |
| JP2018509666A (ja) * | 2016-02-19 | 2018-04-05 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Sql実行計画を決定するための方法および装置 |
| US10901976B2 (en) | 2016-02-19 | 2021-01-26 | Huawei Technologies Co., Ltd. | Method and apparatus for determining SQL execution plan |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7146363B2 (en) | System and method for cardinality estimation based on query execution feedback | |
| US8135705B2 (en) | Guaranteeing hypertext link integrity | |
| US6138111A (en) | Cardinality-based join ordering | |
| US7987178B2 (en) | Automatically determining optimization frequencies of queries with parameter markers | |
| US7860858B2 (en) | Closed-loop predicate analysis | |
| US20170308602A1 (en) | Apparatus And Methods Of Data Synchronization | |
| EP3977308B1 (en) | Learning-based query plan cache for capturing low-cost query plan | |
| US6052687A (en) | Relational database search system and method, and intermediate link table generating method and storage medium | |
| CN112162983A (zh) | 数据库索引建议处理方法、装置、介质和电子设备 | |
| JPH117454A5 (ja) | ||
| CN1834965A (zh) | 用于评估搜索引擎的质量的方法和系统 | |
| US20070214104A1 (en) | Method and system for locking execution plan during database migration | |
| US7840555B2 (en) | System and a method for identifying a selection of index candidates for a database | |
| CN114153874A (zh) | 基数估计方法、装置、电子设备及存储介质 | |
| US20080148110A1 (en) | System and method for searching error messages | |
| US20040236727A1 (en) | Method, query optimizer, and computer program product for implementing live switchover to temporary sparse index for faster query perfomance | |
| US7886217B1 (en) | Identification of web sites that contain session identifiers | |
| JP2005018430A (ja) | データベース管理システム及び問い合わせ最適化方法 | |
| US20070106671A1 (en) | Computer-readable recording medium storing data collection program and data collection apparatus | |
| CN116628026B (zh) | 一种opengauss中Nestloop连接执行方法 | |
| US20080005077A1 (en) | Encoded version columns optimized for current version access | |
| US7127457B1 (en) | Method and system for executing database queries | |
| Mason et al. | Dynamic database integration in a JDBC driver | |
| CN113254453A (zh) | 关联数据表的查询方法及装置 | |
| KR102015545B1 (ko) | 소스 코드 변경이 미치는 영향도를 분석하기 위한 시스템 |