(57)【要約】【課題】検索系および更新系ＳＱＬを含めたＳＱＬグループを選出し、ＳＱＬグループ単位での有効なチューニング方法を求める。【解決手段】実際の業務運用を通して蓄積した統計情報から、ＳＱＬの実行頻度やＳＱＬの処理時間から、チューニング対象とするＳＱＬグループを選出する。更にＳＱＬグループの中で優先度に応じた重み付けを行い、ＳＱＬ毎にスコアの目標値を決定する。そして対象となるＳＱＬに対しチューニングを実行してスコアを算出し、目標値を満足するチューニングを決定する。【選択図】図１
2007122405.tif 000002
【特許請求の範囲】
【請求項１】
業務プログラムが発行したＳＱＬコマンドのうちチューニング対象とする複数のＳＱＬコマンドを選出するＳＱＬコマンド選出処理部と、前記選出した複数のＳＱＬコマンドに対し複数のチューニング方法で算出したスコア値によりチューニング方法を決定するＳＱＬチューニング処理部を具備することを特徴とするチューニングシステム。
【請求項２】
請求項１のシステムにおいて、統計情報を基にチューニング対象となる複数のＳＱＬコマンドを選出することを特徴とするチューニングシステム。
【請求項３】
請求項１又は請求項２のシステムにおいて、チューニング対象となる複数のＳＱＬコマンドに対し、優先度に基づいて性能チューニングの目標値を決定することを特徴とするチューニングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータベース管理システムで実行するＳＱＬの最適なチューニングを可能とするＳＱＬ性能チューニングの方式に関する。
【背景技術】
【０００２】
従来のＳＱＬ性能チューニングではＳＱＬ単位に性能チューニングを行う方式は実現されている。
【０００３】
また、特開２００１−１７５６７８号公報に記載されているトランザクション単位でＳＱＬの統計情報を抽出し、解析してチューニングを行う方法では複数のＳＱＬを対象としたチューニングを可能としている。
【０００４】
更に、特開平１０−１１１８１９号公報に記載されているリレーショナルデータベースのインデックス自動付加システムでは、検索系ＳＱＬおよび更新系ＳＱＬの複数ＳＱＬに対して有効なインデックスチューニングを可能としている。
【０００５】
【特許文献１】特開２００１−１７５６７８号公報
【特許文献２】特開平１０−１１１８１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
実際の電子商取引などのシステムでは、検索系や更新系の多種多様なＳＱＬを実行して運用を行う。このようなシステムにおいてデータベースのアクセス性能を維持させる為にはＳＱＬ単位でのチューニングでは困難であった。性能向上を図るためには対象となるＳＱＬを選出し、ＳＱＬグループとして互いの影響を考慮したチューニング方法が必須となる。
【０００７】
上記従来技術において、特開２００１−１７５６７８号公報に記載されている方法では検索系のＳＱＬには効果があるが、更新系のＳＱＬには適用できないという問題点があった。
【０００８】
また、特開平１０−１１１８１９号公報においては、インデックスを付加するというチューニング以外のチューニングについては適用できないという問題点があった。
【０００９】
したがって本発明の目的は上記の問題点を解決して、検索系および更新系ＳＱＬを含めたＳＱＬグループを選出し、ＳＱＬグループ単位を対象としたＳＱＬチューニングシステムを提供することにある。
【課題を解決するための手段】
【００１０】
上記の目的を達成するため、本発明のデータベース管理システムの性能チューニングシステムは、業務プログラムが発行するリレーショナルデータベース処理操作用のＳＱＬコマンドをデータベース管理システムで解析・実行し、データベース管理システムが取得する統計情報を基に業務プログラムが発行したＳＱＬコマンドのうちチューニング対象とする複数のＳＱＬコマンドを選出するＳＱＬコマンド選出処理部と、選出した複数のＳＱＬコマンドに対し目標となるスコアを設定して多様なチューニング実行時のスコアの算出結果から最適なチューニング方法を決定するＳＱＬチューニング処理部を具備するシステムを構築することで課題を解決する。
【発明の効果】
【００１１】
本発明の性能チューニングシステムによれば、検索や更新を行う複数のＳＱＬコマンドに対し、全てのＳＱＬコマンドの性能を効率的に向上させることが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明であるデータベース管理システムの性能チューニングシステムにおける実施の形態を図面を用いて詳細に説明する。
【００１３】
図１は本発明におけるデータベース管理システムの性能チューニングシステムの一実施形態を適用したシステム構成例を示すブロック図である。同図中、１０１は業務プログラム、１０２は業務プログラム１０１より発行されるＳＱＬ（Structured Query Language）コマンド、１０３はＳＱＬコマンド１０２に応じた制御を実現するデータベース管理システム（ＤＢＭＳ）、１０４はＳＱＬコマンド１０２の内容を解析して対応する検索処理や更新処理の実行制御を行うＳＱＬ解析・実行処理部、１０５はＳＱＬ解析・実行処理部１０４における処理に関する統計情報１０７を求める統計情報取得部、１０６は統計情報取得部１０５で取得した統計情報１０７を蓄積するジャーナル、１０８はＳＱＬチューニングを行うＳＱＬチューニングツール、１０９は統計情報１０７を基に対象となる複数のＳＱＬコマンドを選出するＳＱＬコマンド選出処理部、１１０はＳＱＬコマンド選出処理部１０９で選出されたＳＱＬコマンドに対しチューニングを行い、スコアにて判定を行うＳＱＬチューニング処理部、１１１は業務プログラム１０１の対象となるリレーショナルデータベース（ＲＤＢ）である。
【００１４】
図２は図１のシステムによるチューニングシステムの全体的手順の一例を示すフローチャートである。同図中、業務プログラムを実行して蓄積した統計情報を取得する（２０１）。そして、取得した統計情報から次に示す方法でＳＱＬチューニング対象となるＳＱＬコマンドを選出する（２０２）。
方法１：統計情報に含まれるＳＱＬのうち、使用頻度の高いＳＱＬ順にソートして上位のものをチューニング対象ＳＱＬグループとして選出する。
方法２：統計情報に含まれるＳＱＬのうち、性能の悪いＳＱＬ順にソートして上位のものをチューニング対象ＳＱＬグループとして選出する。
【００１５】
選出したＳＱＬグループ中のＳＱＬに対し、各ＳＱＬの重要度に応じた性能向上を図るため、合計スコアが１００％になるように、ＳＱＬ毎に重み付けを行う（２０３）。次に、各ＳＱＬの初期スコアの値を１００とし、それぞれのＳＱＬに対して行った重み付けの値と初期値からＳＱＬ毎の目標スコアを算出する（２０４）。その後、対象ＳＱＬグループに対しチューニング処理を行い対象ＳＱＬグループ中のＳＱＬ毎にスコアを算出する（２０５）。考えられるチューニング処理及びチューニング処理の組み合わせが全て終了するまで、実行及びスコアの算出を行う（２０６＝ＮＯ）。全てのチューニングパターンに対し、スコアの算出が終了した場合（２０６＝ＹＥＳ）は、算出結果の評価を行い最高のチューニング処理を選出する（２０７）。全てのチューニング結果が目標スコアを下回った場合でも、その中で最高のチューニング処理を選出する。
【００１６】
図３は図１中のＳＱＬチューニング処理部で実施されるチューニングのスコアを算出するのに使用するチューニングテーブルの一例を示す図である。このチューニングテーブルはチューニング実行時にスコアを算出する為に使用するものであり、チューニング項目３０１、スコア値（基本値）３０２、変動値有無３０３から構成される。スコア値（基本値）３０２は検索系３０４、更新系３０５から構成され、チューニング項目３０１のチューニング実行した場合、検索系ＳＱＬに対してのチューニングであれば検索系３０４のスコア値を更新系ＳＱＬに対してのチューニングであれば更新系３０５のスコア値を適用する。変動値有無３０３は詳細な変動値表が存在するかを示し、「有（変動値表名）」もしくは「無」を設定する。例えば、「インデックスを設定する」というチューニングについては、インデックスを設定する列やインデックスの種類等でスコア値が変動するため、詳細なスコア値を算出するために対象となる変動値表にリンクを設定し、変動値表からスコア値の算出を行う。
【００１７】
図４は図３のチューニング方法のうち、「対象列にインデックスを定義する」に関する変動値表の一例を示す図である。この変動値表は「対象列にインデックスを定義する」のチューニングを行う際にスコアを算出するのに使用する詳細なスコア値表であり、対象列４０１、対象列数４０２、チューニング内容４０３、スコア変動値４０４から構成される。
【００１８】
図５は図３のチューニング方法のうち、「対象列のインデックスを削除する」に関する変動値表の一例を示す図である。この変動値表は上述した変動値表と同様に「対象列のインデックスを削除する」のチューニングを行う際にスコアを算出するのに使用する詳細なスコア値表であり、対象列５０１、対象列数５０２、チューニング内容５０３、スコア変動値５０４から構成される。
【００１９】
図６はチューニング対象となる在庫管理システム中の在庫管理表の一具体例を示す図である。この在庫管理表は商品コード６０１、商品名６０２、製造年６０３、数量６０４、価格６０５から構成される。また、同図には商品コード６０１にのみインデックスが定義されているものとする。
【００２０】
図７は図６の在庫管理システムにおいて、図２のチューニングシステムを適用した場合の結果の一具体例を示す図である。最初に取得した統計情報からチューニング対象となるＳＱＬを使用頻度の高いもので選出した結果、該当ＳＱＬとして以下２つを選出した。なお、カラムに対応する値の部分は可変であり、以下のＳＱＬは代表例である。
ＳＱＬ１：select 商品コード from 在庫管理表 where 製造年 ≦ 2004 order by 商品コード,数量
ＳＱＬ２：update 在庫管理表 set 価格 = 価格×0.7 where 製造年 ≦ 2004 and 価格 ≧ 100000
更に、統計情報からＳＱＬ１とＳＱＬ２の使用頻度の比率が６：４であったと仮定して、それぞれの重み付けをＳＱＬ１が６０％、ＳＱＬ２が４０％と決定する。これよりＳＱＬ１、ＳＱＬ２のスコアの目標値は初期値を１００として、ＳＱＬ１＝１６０、ＳＱＬ２＝１４０と決定する。
【００２１】
次に、図３、図４及び図５の適用可能な全てのチューニング項目と全ての組み合わせについて、チューニング項目毎のスコア値を算出する。チューニングを実行した際のスコア値の例は以下のようになる。なお、更新件数は統計情報から１０件と仮定する。
＃１：「製造年」の列にシングルインデックスを定義する。
【００２２】
図３のチューニング方法のうち「対象列にインデックスを定義する」に当てはまるため、図４の変動値表からスコア値を算出する。
【００２３】
ＳＱＬ１に関しては対象列４０１が「where探索条件」、対象列数４０２が「１つ」、チューニング４０３が「シングルカラムインデックスを定義する」に当てはまるため、スコア値は＋２０となり、結果は以下のようになる。
ＳＱＬ１＝１００＋２０＝１２０
ＳＱＬ２も同様にスコア値を算出すると以下のようになる。
ＳＱＬ２＝１００＋２０＝１２０
以下同様にスコア値を算出した結果は以下のとおりになる。
＃２：「製造年」と「価格」にそれぞれシングルカラムインデックスを定義する。
ＳＱＬ１＝１００＋２０＝１２０
ＳＱＬ２＝１００＋２×２０＋１０×（−５）＝９０
＃ｍ：「商品コード」、「数量」、「製造年」の順でマルチカラムインデックスを定義する。
ＳＱＬ１＝１００＋４０＝１４０
ＳＱＬ２＝１００
＃ｎ：「製造年」の列にシングルインデックスを定義する。かつ「商品コード」、「数量」、「製造年」の順でマルチカラムインデックスを定義する。
ＳＱＬ１＝１００＋４０＝１４０
ＳＱＬ２＝１００＋２０＝１２０
最後に選出したチューニング結果を目標スコア値と比較して評価を行うと、最適なチューニング項目は、「製造年」の列にシングルインデックスを定義する。かつ「商品コード」、「数量」、「製造年」の順でマルチカラムインデックスを定義するであることが求まる。
【００２４】
このチューニング結果については、ＳＱＬ２のチューニングでは「製造年」と「価格」にインデックスを定義した場合、update文の探索条件において、「価格」の検索に関しては性能が向上するが、インデックスを定義した「価格」の列自身を更新しているため、全体で考えた場合性能が劣化するという事実がスコア値に現れている。
【００２５】
また、ＳＱＬ１については「商品コード」、「数量」、「製造年」の順でマルチカラムインデックスを定義することにより、インデックスだけで処理が可能となり、ＤＢＭＳ内部でソート処理を行わずにすむ為、order by句の性能が向上するのがスコア値に反映されている。なお、インデックスを定義するチューニングは更新系処理では性能劣化を引き起こす原因となるが、更新系のチューニング対象はＳＱＬ２のみであり、インデックスを定義した列は更新対象列でない為、性能劣化は発生しないという結果についてもスコア値に反映されている。
【００２６】
図８は他の実施例としてチューニング対象となる問合わせシステム中の問合せ回答表の一具体例を示す図である。この問合せ回答表は問合せ日時８０１、問合せ者８０２、ＯＳ名８０３、製品名８０４、バージョン８０５、問合せ内容８０６、回答８０７、回答日時８０８から構成される。また、同図には問合せ日時８０１、ＯＳ名８０３、製品名８０４の３つの列に各々インデックスが定義されているものとする。
【００２７】
図９は図８の問合せシステムにおいて、図２のチューニングシステムを適用した場合の結果の一具体例を示す図である。最初に取得した統計情報からチューニング対象となるＳＱＬを使用頻度の高いもので選出した結果、該当ＳＱＬとして以下２つを選出した。なお、カラムに対応する値の部分は可変であり、以下のＳＱＬは代表例である。
ＳＱＬ１：select 問合せ内容,回答 from 問合せ回答表 where OS名 = "OS2" and 製品名 = "製品3" and バージョン＝"5.0"
ＳＱＬ２：insert into 問合せ回答表 values('2005/02/05',"tanaka","OS4","製品3","4.0","質問内容10","回答内容10",'2005/02/06')
更に、統計情報からＳＱＬ１とＳＱＬ２の使用頻度の比率が４：６であったと仮定して、それぞれの重み付けをＳＱＬ１が４０％、ＳＱＬ２が６０％と決定する。これよりＳＱＬ１、ＳＱＬ２のスコアの目標値は初期値を１００として、
ＳＱＬ１＝１４０、ＳＱＬ２＝１６０と決定する。
【００２８】
次に上述した在庫管理システムと同様に図３、図４及び図５の適用可能な全てのチューニング項目と全ての組み合わせについて、チューニング項目毎のスコア値を算出する。なお、問合わせ内容の追加件数は統計情報から１０件と仮定する。
＃１：「バージョン」にシングルカラムインデックスを定義する。
ＳＱＬ１＝１００＋２０＝１２０
ＳＱＬ２＝１００＋１０×（−５）＝５０
＃２：「ＯＳ名」、「製品名」、「バージョン」をマルチカラムインデックスで再定義する。
ＳＱＬ１＝１００＋３０＝１３０
ＳＱＬ２＝１００＋２０＝１２０
＃ｍ：「問合わせ日時」に定義しているインデックスを削除する。
ＳＱＬ１＝１００
ＳＱＬ２＝１００＋1×３０＝１３０
＃ｎ：「ＯＳ名」、「製品名」、「バージョン」をマルチカラムインデックスで再定義する。かつ、「問合わせ日時」に定義しているインデックスを削除する。
ＳＱＬ１＝１００＋３０＝１３０
ＳＱＬ２＝１００＋２０＋１×３０＝１５０
最後に選出したチューニング結果を目標スコア値と比較して評価を行うと、最適なチューニング項目は、「ＯＳ名」、「製品名」、「バージョン」をマルチカラムインデックスで再定義する。かつ、「問合わせ日時」に定義しているインデックスを削除するであることが求まる。
【００２９】
このチューニング結果について、ＳＱＬ１のチューニングに関しては探索条件で使用する「バージョン」にインデックスが定義されていない為、「バージョン」にインデックスを定義することでＳＱＬ１の性能は向上するが、更新系のＳＱＬ２の性能が劣化することがスコア値からも明白である。そこで、ＳＱＬ２の性能を考慮して現状のシングルカラムインデックスから「ＯＳ名」、「製品名」、「バージョン」のマルチカラムインデックスに定義変更することで、インデックスの数を減らし、ＳＱＬ２に対しても性能向上が図れるというのがスコア値を通して確認できる。また、ＳＱＬ２は挿入を行うＳＱＬである為、インデックスを定義数が増加すると性能が劣化する。チューニング対象となる検索系のＳＱＬ１では「問合せ日時」を選択式や探索条件に使用していないので、「問合せ日時」のインデックスを削除しても性能に影響しないということがスコア値に現れている。
【００３０】
本実施形態によれば、対象ＳＱＬをグループ単位で判定するため、実際に行うチューニングが各ＳＱＬに及ぼす影響を考慮しながら、ＳＱＬのグループとして最適となるチューニング方法を求めることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明におけるデータベース管理システムの性能チューニングシステムの一実施形態を適用したシステム構成例を示すブロック図である。
【図２】図１のシステムによるチューニングシステムの全体的手順の一例を示すフローチャートである。
【図３】図１中のＳＱＬチューニング処理部で実施されるチューニングのスコアを算出するのに使用するチューニングテーブルの一例を示す図である。
【図４】図３のチューニング方法のうち、「対象列にインデックスを定義する」に関する変動値表の一例を示す図である。
【図５】図３のチューニング方法のうち、「対象列のインデックスを削除する」に関する変動値表の一例を示す図である。
【図６】チューニング対象となる在庫管理システム中の在庫管理表の一具体例を示す図である。
【図７】図６の在庫管理システムにおいて、図２のチューニングシステムを適用した場合の結果の一具体例を示す図である。
【図８】チューニング対象となる問合わせシステム中の問合せ回答表の一具体例を示す図である。
【図９】図８の問合せシステムにおいて、図２のチューニングシステムを適用した場合の結果の一具体例を示す図である。
【符号の説明】
【００３２】
１０１…業務プログラム、１０２…ＳＱＬコマンド、１０３…データベース管理システム（ＤＢＭＳ）、１０４…ＳＱＬ解析・実行処理部、１０５…統計情報取得部、１０６…ジャーナル、１０７…統計情報、１０８…ＳＱＬチューニングツール、１０９…ＳＱＬコマンド選出処理部、１１０…ＳＱＬチューニング処理部、１１１…リレーショナルデータベース（ＲＤＢ）。
【図１】
2007122405.tif 000003
【図２】
2007122405.tif 000004
【図３】
2007122405.tif 000005
【図４】
2007122405.tif 000006
【図５】
2007122405.tif 000007
【図６】
2007122405.tif 000008
【図７】
2007122405.tif 000009
【図８】
2007122405.tif 000010
【図９】
2007122405.tif 000011