(57)【要約】【課題】ＳＱＬ文のパフォーマンスの分析を行うこと。【解決手段】実体テーブル部１１に格納したデータの登録数とデータに予め設定されたデータ種数を示す分散数とを入力する分析条件入力部２１と、ＳＱＬ文に含まれる検索条件の項目と項目に対応した分散数とを取得し、前記取得した項目に対して前記入力したデータ登録数を設定した疑似ＳＱＬ文を生成する疑似テーブル定義作成部２２と、前記生成した疑似ＳＱＬ文を参照し、疑似ＳＱＬ文に含まれる項目に対応した疑似データを前記入力した分散数だけ生成して疑似テーブル部１２に登録する疑似テーブルデータ登録部２３と、前記生成した疑似ＳＱＬ文を用いて疑似テーブル部１２に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたＳＱＬ文を出力するＳＱＬ文アクセスプラン分析部２５とを備えるパフォーマンス分析システム。【選択図】図１
2011191949.tif 000002
【特許請求の範囲】
【請求項１】
複数項目から成るデータを実体テーブル部に格納したデータベースから、ＳＱＬ文によって指定した項目を検索条件として検索するデータベース管理システムのパフォーマンス分析システムであって、前記実体テーブル部に格納したデータの登録数と前記データに予め設定されたデータ種数を示す分散数とを入力とする分析条件入力部と、前記ＳＱＬ文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記分析条件入力部から入力したデータ登録数を設定した疑似ＳＱＬ文を生成する疑似テーブル定義作成部と、前記疑似テーブル定義作成部によって生成した疑似ＳＱＬ文を参照し、前記疑似ＳＱＬ文に含まれる項目に対応した疑似データを前記分析条件入力部によって入力した分散数だけ生成し、疑似データを格納する疑似テーブル部に登録する疑似テーブルデータ登録部と、前記疑似テーブル定義作成部によって生成した疑似ＳＱＬ文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたＳＱＬ文を出力するＳＱＬ文アクセスプラン分析部２５とを備えたパフォーマンス分析システム。
【請求項２】
複数項目から成るデータを実体テーブル部に格納したデータベースから、ＳＱＬ文によって指定した項目を検索条件として検索するデータベース管理システムのパフォーマンスをコンピュータによって分析するパフォーマンス分析プログラムであって、コンピュータに、前記実体テーブル部に格納したデータの登録数と前記データに予め設定されたデータ種数を示す分散数とを入力とする分析条件入力機能と、前記ＳＱＬ文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記分析条件入力部から入力したデータ登録数を設定した疑似ＳＱＬ文を生成する疑似テーブル定義作成機能と、前記疑似テーブル定義作成部によって生成した疑似ＳＱＬ文を参照し、前記疑似ＳＱＬ文に含まれる項目に対応した疑似データを前記分析条件入力部によって入力した分散数だけ生成し、疑似データを格納する疑似テーブル部に登録する疑似テーブルデータ登録機能と、前記疑似テーブル定義作成部によって生成した疑似ＳＱＬ文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたＳＱＬ文を出力するＳＱＬ文アクセスプラン分析機能とを実現させるパフォーマンス分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＢＭＳ（ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）と呼ばれるデータベース管理システムにおいてＳＱＬ文（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ：構造化問い合わせ言語）によるデータベースの検索を擬似的な環境で再現し、低効率な検索条件を抽出することができるパフォーマンス分析システム及びパフォーマンス分析プログラムに関する。
【背景技術】
【０００２】
一般に生産、販売、在庫、購買、物流、会計、人事など企業内のあらゆる経営資源を一元管理する企業資源計画（ＥＲＰ：Ｅｎｔｅｒｐｒｉｓｅ  Ｒｅｓｏｕｒｃｅ  Ｐｌａｎｎｉｎｇ）システム等のデータベースには、膨大な件数のデータが登録されている。このデータベースには、構造化問い合わせ言語としてＳＱＬ文が採用されており、このＳＱＬ文による問い合わせ処理では、検索条件、登録されているデータ件数、データの分散状況、ＤＢＭＳの構成設定に応じて、検索方法及び処理実行時間が異なることが知られている。
【０００３】
このＳＱＬ文によるＤＢＭＳへの問い合わせ処理においては、システム開発時や分析段階においては、たとえプログラム中に低効率なＳＱＬ問い合わせ処理が存在している場合でも少量のデータでは問題なく動作するが、本番環境における大量のデータが登録された時点で極端な処理時間の延伸、性能劣化、サーバシステムリソースの占有や枯渇が顕在化してしまう可能性があるという課題があった。
【０００４】
この低効率なＳＱＬ問い合わせ処理を分析する技術が下記の特許文献１に記載され、この特許文献１には、開発環境において検索所要時間予測対象のＳＱＬ文を実行し、このＳＱＬ文が使用した全てのテーブル及び全テーブルのデータレコード件数及び１レコード長情報を取得する工程と、前記ＳＱＬ文を実行したときの実行計画、分析時間、実行時間、データ読み出し時間、データ読み出しサイズ、検索結果行数に関する情報を取得する工程と、開発環境と本番環境におけるハードウェア性能比情報を取得する工程と、前記各工程で取得した各情報を基に本番環境におけるデータベースの検索所要時間を予め設定した予測計算式に従って算出して出力する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１７２５１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前記特許文献１記載のＳＱＬ文の分析技術は、データ件数と処理時間の関係が単純な等倍で推移する事は稀であり、正確な予測は難しいことから、厳密にＳＱＬ文（問い合わせ条件）が適切に設定されているか否かを判別することが困難であるという課題があった。また、本番環境における大量のデータを手作業で用意し、この大量データを用いてＳＱＬ文を分析することも考えられるが、実際に使用される際と同一規模の大量データを登録するには多大な労力及び費用を必要とする課題があった。
【０００７】
本発明の目的は、前述の従来技術による課題を解決することであり、ＳＱＬ文に対応した擬似的な疑似データを作成してＳＱＬ文による検索を行い、このＳＱＬ文による検索のパフォーマンスを分析することができるパフォーマンス分析システム及びパフォーマンス分析プログラムを提供することである。
【課題を解決するための手段】
【０００８】
前記目的を達成するために請求項１記載の本発明は、複数項目から成るデータを実体テーブル部に格納したデータベースから、ＳＱＬ文から指定した項目を検索条件として検索するデータベース管理システムのパフォーマンス分析システムであって、前記実体テーブル部に格納したデータの登録数と前記データに予め設定されたデータ種数を示す分散数とを入力とする分析条件入力部と、前記ＳＱＬ文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記分析条件入力部から入力したデータ登録数を設定した疑似ＳＱＬ文を生成する疑似テーブル定義作成部と、前記疑似テーブル定義作成部によって生成した疑似ＳＱＬ文を参照し、前記疑似ＳＱＬ文に含まれる項目に対応した疑似データを前記分析条件入力部から入力した分散数だけ生成し、疑似データを格納する疑似テーブル部に登録する疑似テーブルデータ登録部と、前記疑似テーブル定義作成部によって生成した疑似ＳＱＬ文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたＳＱＬ文を出力するＳＱＬ文アクセスプラン分析部とを備えたことを特徴とする。
【０００９】
請求項２記載の発明は、複数項目から成るデータを実体テーブル部に格納したデータベースから、ＳＱＬ文によって指定した項目を検索条件として検索するデータベース管理システムのパフォーマンスをコンピュータによって分析するパフォーマンス分析プログラムであって、コンピュータに、前記実体テーブル部に格納したデータの登録数と前記データに予め設定されたデータ種数を示す分散数とを入力とする分析条件入力機能と、前記ＳＱＬ文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記分析条件入力部から入力したデータ登録数を設定した疑似ＳＱＬ文を生成する疑似テーブル定義作成機能と、前記疑似テーブル定義作成部によって生成した疑似ＳＱＬ文を参照し、前記疑似ＳＱＬ文に含まれる項目に対応した疑似データを前記分析条件入力部によって入力した分散数だけ生成し、疑似データを格納する疑似テーブル部に登録する疑似テーブルデータ登録機能と、前記疑似テーブル定義作成部によって生成した疑似ＳＱＬ文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたＳＱＬ文を出力するＳＱＬ文アクセスプラン分析機能とを実現させることを特徴とする。
【発明の効果】
【００１０】
本発明によるパフォーマンス分析システム及び方法は、実体テーブル部に格納したデータの登録数とデータに予め設定されたデータ種数を示す分散数とを入力する分析条件入力工程と、ＳＱＬ文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記入力したデータ登録数を設定した疑似ＳＱＬ文を生成する疑似テーブル定義作成工程と、データベースに擬似的なデータを格納するための疑似テーブル部を生成すると共に、前記生成した疑似ＳＱＬ文を参照し、前記疑似ＳＱＬ文に含まれる項目に対応した疑似データを前記入力した分散数だけ生成して疑似テーブル部に登録する疑似テーブルデータ登録工程と、前記生成した疑似ＳＱＬ文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたＳＱＬ文を出力するＳＱＬ文アクセスプラン分析工程とを行うことによって、低効率なＳＱＬ問い合わせを抽出することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態によるパフォーマンス分析システムを含むコンピュータシステムを示す図
【図２】本発明の実施形態による分析条件テーブル部の内容を示す図
【図３】本発明の実施形態による分析対象テーブル定義部の内容示す図
【図４】本発明の実施形態によるＳＱＬ文アクセスプランテーブル部の内容を示す図
【図５】本発明の実施形態によるＳＱＬ文分析結果テーブル部の内容を示す図
【図６】本発明の実施形態による分析条件入力部の処理フローを示す図
【図７】本発明の実施形態による疑似テーブル定義作成部の処理フローを示す図
【図８】本発明の実施形態による疑似テーブルデータ登録部の処理フローを示す図
【図９】本発明の実施形態によるＳＱＬ文アクセスプラン取得部の処理フローを示す図
【図１０】本発明の実施形態によるＳＱＬ文アクセスプラン分析部の処理フローを示す図
【発明を実施するための形態】
【００１２】
以下、本発明によるパフォーマンス分析プログラムを実現するパフォーマンス分析システムの一実施形態を図面を参照して説明する。
［構成］
図１は、本発明の実施形態によるパフォーマンス分析システム２００と、このパフォーマンス分析システム２００によりＳＱＬ文による検索が行われるデータベース１０を含む分析対象システム１００とから成るコンピュータシステムを示す図であり、この分析対象システム１００は、後述する各種データを登録するデータベース１０と、このデータベース１０に登録したデータをＳＱＬ文を用いて検索するためのプログラムソースを格納するプログラムソース部１５を含むプログラムライブラリ部１６とから構成される。なお、前記パフォーマンス分析システム２００及び分析対象システム１００の構成は、一般的なコンピュータと同様に、ＣＰＵ、メモリ、磁気ディスク装置等の記憶装置、キーボード、表示部等のハードウェア構成を成し、基本ソフトウェア及びアプリケーションソフトウェアが制御するように構成されている。
【００１３】
前記データベース１０は、検索対象となる実際のデータを格納するための実体テーブル部１１と、後述する擬似的な検索対象となる疑似データを格納するための疑似テーブル部１２と、前記プログラムソース部１５に格納したＳＱＬ文を抽出して機械語に翻訳する等の最適化を行うオプティマイザ部１３と、このオプティマイザ部１３によるＳＱＬ文を取得してＳＱＬ文によるアクセスプラン（検索式の実行計画。）を抽出するためのアクセスプラン部１４とから構成される。
【００１４】
前記パフォーマンス分析システム２００は、操作者によって入力される分析条件、例えば検索キー項目として「男性」、「女性」「住所」等の検索項目による分析条件を入力するための分析条件入力部２１と、この分析条件入力部２１から入力した分析条件を格納する分析条件テーブル部２１１と、前記データベース１０の実体テーブル部１１に格納された実体データを参照して擬似的な検索を行うための疑似データを前記疑似テーブル部１２に登録するための疑似テーブルデータ登録部２３と、前記アクセスプラン部１４に格納したアクセスプランを取得し、このアクセスプランを基にした疑似ＳＱＬ文をオプティマイザ部１３に登録するためのＳＱＬ文アクセスプラン取得部２４と、前記疑似テーブル部１２に格納した疑似データを前記オプティマイザ部１３に格納したアクセスプランによって検索を実行し、検索結果によってＳＱＬ文アクセスプランの分析を行い、分析結果を診断レポート２６として出力するＳＱＬ文アクセスプラン分析部２５と、このＳＱＬ文アクセスプラン分析部２５によって分析したＳＱＬ文の分析結果を格納するＳＱＬ文分析結果テーブル部２５１とから構成される。
【００１５】
前記分析条件テーブル部２１１に格納する分析条件は、図２に示す如く、実体テーブル部１１の識別子である実体テーブルＩＤ２０１と、疑似テーブル部１２の識別子である実体テーブルＩＤ２０２と、操作者によって入力される疑似データの件数を登録する疑似登録件数２０３と、操作者によって入力される疑似データの項目毎の分散数２０４とから構成される。なお、分散数とは、項目毎に存在するデータ種類の数であって、例えば、図示の例では、項目１のデータが５００種類、項目３のデータが１０種類等の項目に対応して存在する種類の数を意味する。これは、例えば、項目が「性別」の場合、分散数が、男性と女性の２種類のため「２」、項目が日本の都道府県なら「４７」の如く登録される。
【００１６】
前記分析対象テーブル定義部２２１は、図３に示す如く、前記実体テーブルＩＤ２０１に対応したＳＱＬ文で記述された定義情報であるテーブル定義ＳＱＬ言語３０２と、検索対象となるキー項目３０３の欄とから構成され、例えば、ＩＤが「テーブルＡ」の実体テーブル部１１には、キー１として「項目１」「項目２」「項目３」が設定され、キー２として「項目４」「項目８」が設定されている。
【００１７】
前記ＳＱＬ文アクセスプランテーブル部２４１は、予め設定された検索用のＳＱＬ文及びアクセスプランを格納するものであって、図４に示す如く、ＳＱＬ文を識別するためのＳＱＬ文連番４０１と、このＳＱＬ文連番４０１に対応した実際のＳＱＬ文４０２と、これに対応したアクセスプラン４０３とを格納している。
【００１８】
前記ＳＱＬ文分析結果テーブル部２５１は、図５に示す如く、前記ＳＱＬ文連番４０１に対応した項目連番５０２と、選択された条件の項目を示す選択条件項目５０３と、この選択条件項目５０３の項目が検索項目として適合しているか否かの判定結果であるインデックス適合５０４の各欄とから成り、図示の例では、ＳＱＬ文連番４０１の項目連番００００１の「項目１」はインデックスとして適合しており、項目連番００００２の「項目３」はインデックスとして適合していないことを表している。なお、前記インデックスとして適合しているか否かの判定は、検索ヒット件数や検索時間が所定のしきい値以下になるか否かの判定によって行われる。例えば項目連番００００２の「項目３」は「年齢」であり、しきい値を１００とした場合、検索ヒット件数が１００件以下の際には検索によって件数を絞り込めることから「適合」、１０１件以上の場合には絞り込めないことから「非適合」のように判定される。
【００１９】
［動作］
次に本実施形態によるパフォーマンス分析システム２００の動作を図６以降を参照して説明する。まず、本実施形態によるパフォーマンス分析システム２００は、図６に示す如く、分析条件入力部２１が、分析対象となるＳＱＬ文のプログラムＩＤを入力するステップ６０１と、分析対象となるＳＱＬ文によって検索される実体テーブル部１１のテーブルＩＤを入力するステップ６０２と、パフォーマンス分析システム２００を分析対象のデータベース１０に接続し、前記入力したテーブルＩＤに設定された項目を取得し、入力画面に表示するステップ６０３と、この分析対象デーブルについて「疑似テーブルＩＤ」と「疑似登録件数」と「項目毎の分散数」を操作者が入力するステップ６０３とを行うことによって、分析条件テーブル部２１１に図２に示した各情報を登録するように動作する。
【００２０】
次いで本システムは、疑似テーブル定義作成部２２が、パフォーマンス分岐システム２００を分析対象のデータベース１０に接続するステップ６１１と、分析対象となるＳＱＬ文によって検索される実体テーブル部１１に定義した定義情報を検索し、これら情報から「テーブル定義ＳＱＬ言語」と「キー項目」とグループＩＤである「表領域」を取得するステップ６１２と、このステップ６１２によって取得した値を分析条件テーブル部２１１に登録するステップ６１３と、分析条件テーブル部２１１と分析対象テーブル定義部２２１に登録されている値を検索し、疑似テーブル部１２用の疑似テーブル定義ＳＱＬ文を編集するステップ６１４と、このステップ６１４によって編集したテーブル定義ＳＱＬ文を定義するステップ６１５を行うことによって、実体テーブル部１１に設定された項目並びに操作者が入力した疑似登録件数及び分散数を基に疑似検索用の疑似テーブル定義用のＳＱＬ文を生成するように動作する。
【００２１】
次いで本実施形態によるパフォーマンス分析システム２００は、擬似テーブルデータ登録部２３が、図８に示す如く、前記分析対象テーブル定義部２２１を検索し、テーブル定義ＳＱＬ言語を取得するステップ６２１と、このステップ６２１によって取得したテーブル定義ＳＱＬ言語に項目毎の分散数が指定されているか否かを判定するステップ６２３と、このステップＳ６２３において分散数が指定されていると判定したとき、テーブル定義のデータ型に合致する値（例えば、データ型が「数値」ならランダムな数値、データ型が「文字列」ならランダムな文字をいう。）を編集するステップ６２４と、前記ステップ６２３において指定していないと判定したとき、テーブル定義のデータ型に合致する値をデータ種類が合計で分散指定数になるように編集するステップ６２５と、前記ステップ６２４及び６２５によって編集したデータを疑似テーブル部１２に登録するステップ６２６とを繰り返して実行することによって、疑似テーブル部１２に実体テーブル部１１に登録された項目及び項目毎の分散数の多数の疑似データを登録することができる。なお、前記ステップ６２４における値をデータ種類が合計で分散指定数になるように編集とは、例えば、項目が「都道府県」の場合に項目に対応したデータ値の数が分散指定数「４７」の値になるように編集することである。
【００２２】
次に本システムは、前記ＳＱＬ文アクセスプラン取得部２４が、図９に示す如く、前記分析条件テーブル部２１１に格納した分析対象のプログラムソース内のＳＱＬ問い合わせの検索を開始するステップ６３１と、ＳＱＬ文のテーブルＩＤが分析対象として指定されているか否かを判定するステップ６３２と、このステップ６３２において指定されていないと判定したとき、ＳＱＬ文をそのまま使用するように判定するステップ６３４と、前記ステップ６３２において指定されているＳＱＬ文と判定したとき、ＳＱＬ文中のテーブルＩＤを実テーブル用から疑似テーブル用のＩＤに変換するステップ６３３と、システム２００をデータベース１０に接続し、前記ステップ６３４又は６３３によるＳＱＬ文の「実行ＳＱＬ文」及び「アクセスプラン」を取得し、ＳＱＬ文アクセスプランテーブル部２４１に格納するステップ６３５を実行することによって、疑似テーブルデータの用の疑似ＳＱＬ文実行計画（アクセスプラン）をＳＱＬ文アクセスプランテーブル部２４１に格納することができる。
【００２３】
更に本システムは、ＳＱＬ文アクセスプラン分析部２５が、図１０に示す如く、操作者が分析条件として診断レポート２６の出力対象とする実行計画見積コスト（オプティマイザ部１３による個々の検索方法計画のコストを見積もり、最もコストの低い計画を選ぶ。コストはクエリ実行時コストであり、入出力操作数やＣＰＵ時間やその他から決定する。）のしきい値を入力するステップ６４１と、ＳＱＬ文アクセスプランテーブル部２４１を検索し、実行計画見積コストがしきい値を超過しているか否かを判定するステップ６４２と、このステップ６４２においてしきい値を超えていないと判定したとき、レポートへの出力対象外として出力処理を実施しないステップ６４５と、前記ステップ６４３においてしきい値を超えていると判定したとき、アクセスプランの選択条件（ＷＨＥＲＥ句）によって指定した項目各々について分析対象テーブル定義部２２１を検索し、インデックス定義項目との合致を判断し、合致有無の結果をＳＱＬ文分析結果テーブル部２５１に登録するステップ６４４と、前記ステップ６４５又は６４４に続き、前記ＳＱＬ文分析結果テーブル部２５１を検索して、しきい値を超えた「ＳＱＬ文」と「実行計画見積コスト」と「選択条件項目毎のインデックス定義項目との合致状態」とを記載した診断レポート２６を出力するステップ６４６とを実行することによって、低効率なＳＱＬ問い合わせを分析することができる。
【００２４】
このように本実施形態によるパフォーマンス分析システム及び方法は、データベース上に少量のデータを登録した状態でのプログラム分析する場合に比べ、実際にシステムで稼動時に使用される大量のデータを登録した状態を厳密にシミュレートすることが可能となり、プログラム内に存在する低効率なＳＱＬ検索条件を開発の早い段階で特定することができる。これによってプログラムコーディングの修正工数を減少させる事が可能となり、本稼動時の極端な処理時間の延伸、性能劣化、サーバシステムリソースの占有や枯渇を未然に防ぐことができる。
【符号の説明】
【００２５】
１０  データベース、１１  実体テーブル部、１２  疑似テーブル部、１３  オプティマイザ部、１４  アクセスプラン部、１５  プログラムソース部、１６  プログラムライブラリ部、２１  分析条件入力部、２２  疑似テーブル定義作成部、２３  擬似テーブルデータ登録部、２４  ＳＱＬ文アクセスプラン取得部、２５  ＳＱＬ文アクセスプラン分析部、２５  文分析結果テーブル部、２６  診断レポート、１００  分析対象システム、２００  パフォーマンス分析システム、２１１  分析条件テーブル部、２２１  分析対象テーブル定義部、２４１  ＳＱＬ文アクセスプランテーブル部、２５１  文分析結果テーブル部
【図１】
2011191949.tif 000003
【図２】
2011191949.tif 000004
【図３】
2011191949.tif 000005
【図４】
2011191949.tif 000006
【図５】
2011191949.tif 000007
【図６】
2011191949.tif 000008
【図７】
2011191949.tif 000009
【図８】
2011191949.tif 000010
【図９】
2011191949.tif 000011
【図１０】
2011191949.tif 000012