説明

パフォーマンス分析システム及びパフォーマンス分析プログラム

【課題】SQL文のパフォーマンスの分析を行うこと。
【解決手段】実体テーブル部11に格納したデータの登録数とデータに予め設定されたデータ種数を示す分散数とを入力する分析条件入力部21と、SQL文に含まれる検索条件の項目と項目に対応した分散数とを取得し、前記取得した項目に対して前記入力したデータ登録数を設定した疑似SQL文を生成する疑似テーブル定義作成部22と、前記生成した疑似SQL文を参照し、疑似SQL文に含まれる項目に対応した疑似データを前記入力した分散数だけ生成して疑似テーブル部12に登録する疑似テーブルデータ登録部23と、前記生成した疑似SQL文を用いて疑似テーブル部12に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたSQL文を出力するSQL文アクセスプラン分析部25とを備えるパフォーマンス分析システム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、DBMS(DataBase Management System)と呼ばれるデータベース管理システムにおいてSQL文(Structured Query Language:構造化問い合わせ言語)によるデータベースの検索を擬似的な環境で再現し、低効率な検索条件を抽出することができるパフォーマンス分析システム及びパフォーマンス分析プログラムに関する。
【背景技術】
【0002】
一般に生産、販売、在庫、購買、物流、会計、人事など企業内のあらゆる経営資源を一元管理する企業資源計画(ERP:Enterprise Resource Planning)システム等のデータベースには、膨大な件数のデータが登録されている。このデータベースには、構造化問い合わせ言語としてSQL文が採用されており、このSQL文による問い合わせ処理では、検索条件、登録されているデータ件数、データの分散状況、DBMSの構成設定に応じて、検索方法及び処理実行時間が異なることが知られている。
【0003】
このSQL文によるDBMSへの問い合わせ処理においては、システム開発時や分析段階においては、たとえプログラム中に低効率なSQL問い合わせ処理が存在している場合でも少量のデータでは問題なく動作するが、本番環境における大量のデータが登録された時点で極端な処理時間の延伸、性能劣化、サーバシステムリソースの占有や枯渇が顕在化してしまう可能性があるという課題があった。
【0004】
この低効率なSQL問い合わせ処理を分析する技術が下記の特許文献1に記載され、この特許文献1には、開発環境において検索所要時間予測対象のSQL文を実行し、このSQL文が使用した全てのテーブル及び全テーブルのデータレコード件数及び1レコード長情報を取得する工程と、前記SQL文を実行したときの実行計画、分析時間、実行時間、データ読み出し時間、データ読み出しサイズ、検索結果行数に関する情報を取得する工程と、開発環境と本番環境におけるハードウェア性能比情報を取得する工程と、前記各工程で取得した各情報を基に本番環境におけるデータベースの検索所要時間を予め設定した予測計算式に従って算出して出力する技術が記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−172516号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
前記特許文献1記載のSQL文の分析技術は、データ件数と処理時間の関係が単純な等倍で推移する事は稀であり、正確な予測は難しいことから、厳密にSQL文(問い合わせ条件)が適切に設定されているか否かを判別することが困難であるという課題があった。また、本番環境における大量のデータを手作業で用意し、この大量データを用いてSQL文を分析することも考えられるが、実際に使用される際と同一規模の大量データを登録するには多大な労力及び費用を必要とする課題があった。
【0007】
本発明の目的は、前述の従来技術による課題を解決することであり、SQL文に対応した擬似的な疑似データを作成してSQL文による検索を行い、このSQL文による検索のパフォーマンスを分析することができるパフォーマンス分析システム及びパフォーマンス分析プログラムを提供することである。
【課題を解決するための手段】
【0008】
前記目的を達成するために請求項1記載の本発明は、複数項目から成るデータを実体テーブル部に格納したデータベースから、SQL文から指定した項目を検索条件として検索するデータベース管理システムのパフォーマンス分析システムであって、前記実体テーブル部に格納したデータの登録数と前記データに予め設定されたデータ種数を示す分散数とを入力とする分析条件入力部と、前記SQL文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記分析条件入力部から入力したデータ登録数を設定した疑似SQL文を生成する疑似テーブル定義作成部と、前記疑似テーブル定義作成部によって生成した疑似SQL文を参照し、前記疑似SQL文に含まれる項目に対応した疑似データを前記分析条件入力部から入力した分散数だけ生成し、疑似データを格納する疑似テーブル部に登録する疑似テーブルデータ登録部と、前記疑似テーブル定義作成部によって生成した疑似SQL文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたSQL文を出力するSQL文アクセスプラン分析部とを備えたことを特徴とする。
【0009】
請求項2記載の発明は、複数項目から成るデータを実体テーブル部に格納したデータベースから、SQL文によって指定した項目を検索条件として検索するデータベース管理システムのパフォーマンスをコンピュータによって分析するパフォーマンス分析プログラムであって、コンピュータに、前記実体テーブル部に格納したデータの登録数と前記データに予め設定されたデータ種数を示す分散数とを入力とする分析条件入力機能と、前記SQL文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記分析条件入力部から入力したデータ登録数を設定した疑似SQL文を生成する疑似テーブル定義作成機能と、前記疑似テーブル定義作成部によって生成した疑似SQL文を参照し、前記疑似SQL文に含まれる項目に対応した疑似データを前記分析条件入力部によって入力した分散数だけ生成し、疑似データを格納する疑似テーブル部に登録する疑似テーブルデータ登録機能と、前記疑似テーブル定義作成部によって生成した疑似SQL文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたSQL文を出力するSQL文アクセスプラン分析機能とを実現させることを特徴とする。
【発明の効果】
【0010】
本発明によるパフォーマンス分析システム及び方法は、実体テーブル部に格納したデータの登録数とデータに予め設定されたデータ種数を示す分散数とを入力する分析条件入力工程と、SQL文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記入力したデータ登録数を設定した疑似SQL文を生成する疑似テーブル定義作成工程と、データベースに擬似的なデータを格納するための疑似テーブル部を生成すると共に、前記生成した疑似SQL文を参照し、前記疑似SQL文に含まれる項目に対応した疑似データを前記入力した分散数だけ生成して疑似テーブル部に登録する疑似テーブルデータ登録工程と、前記生成した疑似SQL文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたSQL文を出力するSQL文アクセスプラン分析工程とを行うことによって、低効率なSQL問い合わせを抽出することができる。
【図面の簡単な説明】
【0011】
【図1】本発明の実施形態によるパフォーマンス分析システムを含むコンピュータシステムを示す図
【図2】本発明の実施形態による分析条件テーブル部の内容を示す図
【図3】本発明の実施形態による分析対象テーブル定義部の内容示す図
【図4】本発明の実施形態によるSQL文アクセスプランテーブル部の内容を示す図
【図5】本発明の実施形態によるSQL文分析結果テーブル部の内容を示す図
【図6】本発明の実施形態による分析条件入力部の処理フローを示す図
【図7】本発明の実施形態による疑似テーブル定義作成部の処理フローを示す図
【図8】本発明の実施形態による疑似テーブルデータ登録部の処理フローを示す図
【図9】本発明の実施形態によるSQL文アクセスプラン取得部の処理フローを示す図
【図10】本発明の実施形態によるSQL文アクセスプラン分析部の処理フローを示す図
【発明を実施するための形態】
【0012】
以下、本発明によるパフォーマンス分析プログラムを実現するパフォーマンス分析システムの一実施形態を図面を参照して説明する。
[構成]
図1は、本発明の実施形態によるパフォーマンス分析システム200と、このパフォーマンス分析システム200によりSQL文による検索が行われるデータベース10を含む分析対象システム100とから成るコンピュータシステムを示す図であり、この分析対象システム100は、後述する各種データを登録するデータベース10と、このデータベース10に登録したデータをSQL文を用いて検索するためのプログラムソースを格納するプログラムソース部15を含むプログラムライブラリ部16とから構成される。なお、前記パフォーマンス分析システム200及び分析対象システム100の構成は、一般的なコンピュータと同様に、CPU、メモリ、磁気ディスク装置等の記憶装置、キーボード、表示部等のハードウェア構成を成し、基本ソフトウェア及びアプリケーションソフトウェアが制御するように構成されている。
【0013】
前記データベース10は、検索対象となる実際のデータを格納するための実体テーブル部11と、後述する擬似的な検索対象となる疑似データを格納するための疑似テーブル部12と、前記プログラムソース部15に格納したSQL文を抽出して機械語に翻訳する等の最適化を行うオプティマイザ部13と、このオプティマイザ部13によるSQL文を取得してSQL文によるアクセスプラン(検索式の実行計画。)を抽出するためのアクセスプラン部14とから構成される。
【0014】
前記パフォーマンス分析システム200は、操作者によって入力される分析条件、例えば検索キー項目として「男性」、「女性」「住所」等の検索項目による分析条件を入力するための分析条件入力部21と、この分析条件入力部21から入力した分析条件を格納する分析条件テーブル部211と、前記データベース10の実体テーブル部11に格納された実体データを参照して擬似的な検索を行うための疑似データを前記疑似テーブル部12に登録するための疑似テーブルデータ登録部23と、前記アクセスプラン部14に格納したアクセスプランを取得し、このアクセスプランを基にした疑似SQL文をオプティマイザ部13に登録するためのSQL文アクセスプラン取得部24と、前記疑似テーブル部12に格納した疑似データを前記オプティマイザ部13に格納したアクセスプランによって検索を実行し、検索結果によってSQL文アクセスプランの分析を行い、分析結果を診断レポート26として出力するSQL文アクセスプラン分析部25と、このSQL文アクセスプラン分析部25によって分析したSQL文の分析結果を格納するSQL文分析結果テーブル部251とから構成される。
【0015】
前記分析条件テーブル部211に格納する分析条件は、図2に示す如く、実体テーブル部11の識別子である実体テーブルID201と、疑似テーブル部12の識別子である実体テーブルID202と、操作者によって入力される疑似データの件数を登録する疑似登録件数203と、操作者によって入力される疑似データの項目毎の分散数204とから構成される。なお、分散数とは、項目毎に存在するデータ種類の数であって、例えば、図示の例では、項目1のデータが500種類、項目3のデータが10種類等の項目に対応して存在する種類の数を意味する。これは、例えば、項目が「性別」の場合、分散数が、男性と女性の2種類のため「2」、項目が日本の都道府県なら「47」の如く登録される。
【0016】
前記分析対象テーブル定義部221は、図3に示す如く、前記実体テーブルID201に対応したSQL文で記述された定義情報であるテーブル定義SQL言語302と、検索対象となるキー項目303の欄とから構成され、例えば、IDが「テーブルA」の実体テーブル部11には、キー1として「項目1」「項目2」「項目3」が設定され、キー2として「項目4」「項目8」が設定されている。
【0017】
前記SQL文アクセスプランテーブル部241は、予め設定された検索用のSQL文及びアクセスプランを格納するものであって、図4に示す如く、SQL文を識別するためのSQL文連番401と、このSQL文連番401に対応した実際のSQL文402と、これに対応したアクセスプラン403とを格納している。
【0018】
前記SQL文分析結果テーブル部251は、図5に示す如く、前記SQL文連番401に対応した項目連番502と、選択された条件の項目を示す選択条件項目503と、この選択条件項目503の項目が検索項目として適合しているか否かの判定結果であるインデックス適合504の各欄とから成り、図示の例では、SQL文連番401の項目連番00001の「項目1」はインデックスとして適合しており、項目連番00002の「項目3」はインデックスとして適合していないことを表している。なお、前記インデックスとして適合しているか否かの判定は、検索ヒット件数や検索時間が所定のしきい値以下になるか否かの判定によって行われる。例えば項目連番00002の「項目3」は「年齢」であり、しきい値を100とした場合、検索ヒット件数が100件以下の際には検索によって件数を絞り込めることから「適合」、101件以上の場合には絞り込めないことから「非適合」のように判定される。
【0019】
[動作]
次に本実施形態によるパフォーマンス分析システム200の動作を図6以降を参照して説明する。まず、本実施形態によるパフォーマンス分析システム200は、図6に示す如く、分析条件入力部21が、分析対象となるSQL文のプログラムIDを入力するステップ601と、分析対象となるSQL文によって検索される実体テーブル部11のテーブルIDを入力するステップ602と、パフォーマンス分析システム200を分析対象のデータベース10に接続し、前記入力したテーブルIDに設定された項目を取得し、入力画面に表示するステップ603と、この分析対象デーブルについて「疑似テーブルID」と「疑似登録件数」と「項目毎の分散数」を操作者が入力するステップ603とを行うことによって、分析条件テーブル部211に図2に示した各情報を登録するように動作する。
【0020】
次いで本システムは、疑似テーブル定義作成部22が、パフォーマンス分岐システム200を分析対象のデータベース10に接続するステップ611と、分析対象となるSQL文によって検索される実体テーブル部11に定義した定義情報を検索し、これら情報から「テーブル定義SQL言語」と「キー項目」とグループIDである「表領域」を取得するステップ612と、このステップ612によって取得した値を分析条件テーブル部211に登録するステップ613と、分析条件テーブル部211と分析対象テーブル定義部221に登録されている値を検索し、疑似テーブル部12用の疑似テーブル定義SQL文を編集するステップ614と、このステップ614によって編集したテーブル定義SQL文を定義するステップ615を行うことによって、実体テーブル部11に設定された項目並びに操作者が入力した疑似登録件数及び分散数を基に疑似検索用の疑似テーブル定義用のSQL文を生成するように動作する。
【0021】
次いで本実施形態によるパフォーマンス分析システム200は、擬似テーブルデータ登録部23が、図8に示す如く、前記分析対象テーブル定義部221を検索し、テーブル定義SQL言語を取得するステップ621と、このステップ621によって取得したテーブル定義SQL言語に項目毎の分散数が指定されているか否かを判定するステップ623と、このステップS623において分散数が指定されていると判定したとき、テーブル定義のデータ型に合致する値(例えば、データ型が「数値」ならランダムな数値、データ型が「文字列」ならランダムな文字をいう。)を編集するステップ624と、前記ステップ623において指定していないと判定したとき、テーブル定義のデータ型に合致する値をデータ種類が合計で分散指定数になるように編集するステップ625と、前記ステップ624及び625によって編集したデータを疑似テーブル部12に登録するステップ626とを繰り返して実行することによって、疑似テーブル部12に実体テーブル部11に登録された項目及び項目毎の分散数の多数の疑似データを登録することができる。なお、前記ステップ624における値をデータ種類が合計で分散指定数になるように編集とは、例えば、項目が「都道府県」の場合に項目に対応したデータ値の数が分散指定数「47」の値になるように編集することである。
【0022】
次に本システムは、前記SQL文アクセスプラン取得部24が、図9に示す如く、前記分析条件テーブル部211に格納した分析対象のプログラムソース内のSQL問い合わせの検索を開始するステップ631と、SQL文のテーブルIDが分析対象として指定されているか否かを判定するステップ632と、このステップ632において指定されていないと判定したとき、SQL文をそのまま使用するように判定するステップ634と、前記ステップ632において指定されているSQL文と判定したとき、SQL文中のテーブルIDを実テーブル用から疑似テーブル用のIDに変換するステップ633と、システム200をデータベース10に接続し、前記ステップ634又は633によるSQL文の「実行SQL文」及び「アクセスプラン」を取得し、SQL文アクセスプランテーブル部241に格納するステップ635を実行することによって、疑似テーブルデータの用の疑似SQL文実行計画(アクセスプラン)をSQL文アクセスプランテーブル部241に格納することができる。
【0023】
更に本システムは、SQL文アクセスプラン分析部25が、図10に示す如く、操作者が分析条件として診断レポート26の出力対象とする実行計画見積コスト(オプティマイザ部13による個々の検索方法計画のコストを見積もり、最もコストの低い計画を選ぶ。コストはクエリ実行時コストであり、入出力操作数やCPU時間やその他から決定する。)のしきい値を入力するステップ641と、SQL文アクセスプランテーブル部241を検索し、実行計画見積コストがしきい値を超過しているか否かを判定するステップ642と、このステップ642においてしきい値を超えていないと判定したとき、レポートへの出力対象外として出力処理を実施しないステップ645と、前記ステップ643においてしきい値を超えていると判定したとき、アクセスプランの選択条件(WHERE句)によって指定した項目各々について分析対象テーブル定義部221を検索し、インデックス定義項目との合致を判断し、合致有無の結果をSQL文分析結果テーブル部251に登録するステップ644と、前記ステップ645又は644に続き、前記SQL文分析結果テーブル部251を検索して、しきい値を超えた「SQL文」と「実行計画見積コスト」と「選択条件項目毎のインデックス定義項目との合致状態」とを記載した診断レポート26を出力するステップ646とを実行することによって、低効率なSQL問い合わせを分析することができる。
【0024】
このように本実施形態によるパフォーマンス分析システム及び方法は、データベース上に少量のデータを登録した状態でのプログラム分析する場合に比べ、実際にシステムで稼動時に使用される大量のデータを登録した状態を厳密にシミュレートすることが可能となり、プログラム内に存在する低効率なSQL検索条件を開発の早い段階で特定することができる。これによってプログラムコーディングの修正工数を減少させる事が可能となり、本稼動時の極端な処理時間の延伸、性能劣化、サーバシステムリソースの占有や枯渇を未然に防ぐことができる。
【符号の説明】
【0025】
10 データベース、11 実体テーブル部、12 疑似テーブル部、13 オプティマイザ部、14 アクセスプラン部、15 プログラムソース部、16 プログラムライブラリ部、21 分析条件入力部、22 疑似テーブル定義作成部、23 擬似テーブルデータ登録部、24 SQL文アクセスプラン取得部、25 SQL文アクセスプラン分析部、25 文分析結果テーブル部、26 診断レポート、100 分析対象システム、200 パフォーマンス分析システム、211 分析条件テーブル部、221 分析対象テーブル定義部、241 SQL文アクセスプランテーブル部、251 文分析結果テーブル部



【特許請求の範囲】
【請求項1】
複数項目から成るデータを実体テーブル部に格納したデータベースから、SQL文によって指定した項目を検索条件として検索するデータベース管理システムのパフォーマンス分析システムであって、前記実体テーブル部に格納したデータの登録数と前記データに予め設定されたデータ種数を示す分散数とを入力とする分析条件入力部と、前記SQL文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記分析条件入力部から入力したデータ登録数を設定した疑似SQL文を生成する疑似テーブル定義作成部と、前記疑似テーブル定義作成部によって生成した疑似SQL文を参照し、前記疑似SQL文に含まれる項目に対応した疑似データを前記分析条件入力部によって入力した分散数だけ生成し、疑似データを格納する疑似テーブル部に登録する疑似テーブルデータ登録部と、前記疑似テーブル定義作成部によって生成した疑似SQL文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたSQL文を出力するSQL文アクセスプラン分析部25とを備えたパフォーマンス分析システム。
【請求項2】
複数項目から成るデータを実体テーブル部に格納したデータベースから、SQL文によって指定した項目を検索条件として検索するデータベース管理システムのパフォーマンスをコンピュータによって分析するパフォーマンス分析プログラムであって、コンピュータに、前記実体テーブル部に格納したデータの登録数と前記データに予め設定されたデータ種数を示す分散数とを入力とする分析条件入力機能と、前記SQL文に含まれる検索条件の項目と前記項目に対応した分散数とを取得し、前記取得した項目に対して前記分析条件入力部から入力したデータ登録数を設定した疑似SQL文を生成する疑似テーブル定義作成機能と、前記疑似テーブル定義作成部によって生成した疑似SQL文を参照し、前記疑似SQL文に含まれる項目に対応した疑似データを前記分析条件入力部によって入力した分散数だけ生成し、疑似データを格納する疑似テーブル部に登録する疑似テーブルデータ登録機能と、前記疑似テーブル定義作成部によって生成した疑似SQL文を用いて前記疑似テーブル部に登録した疑似データを検索し、検索結果が予め設定したしきい値を超えると判定したとき、前記しきい値を超えたSQL文を出力するSQL文アクセスプラン分析機能とを実現させるパフォーマンス分析プログラム。



【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate