(57)【要約】【課題】関連性が高いテーブルを精度良く特定する。【解決手段】分析装置１０は、データベースシステムがクエリに対応する演算を行うために生成した実行計画を取得する実行計画取得部１５１と、実行計画取得部１５１が取得した実行計画に基づいて、実行計画に対応してデータベースシステムにおいて行われるテーブルを結合する演算を示す二項演算を特定し、当該二項演算に関連する演算関連情報として、当該二項演算により結合される一以上のテーブルを含む第１のテーブル群と、一以上のテーブルを含む第２のテーブル群とを特定する解析部１５２と、解析部１５２が特定した演算関連情報を出力する出力部１５４と、を備える。【選択図】図２
2020135717.tif 000002
【特許請求の範囲】
【請求項１】
データベースシステムにおいて実行されたクエリに対して前記データベースシステムが前記クエリに対応する演算を行うために生成した実行計画を取得する実行計画取得部と、
前記実行計画取得部が取得した前記実行計画に基づいて、前記実行計画に対応して前記データベースシステムにおいて行われるテーブルを結合する演算を示す二項演算を特定し、当該二項演算に関連する演算関連情報として、当該二項演算により結合される一以上のテーブルを含む第１のテーブル群と、一以上のテーブルを含む第２のテーブル群とを特定する解析部と、
前記解析部が特定した前記演算関連情報を出力する出力部と、
を備える分析装置。
【請求項２】
前記実行計画は、前記データベースシステムにおいて行われる演算の処理順を規定する木構造のデータ構造を有しており、
前記解析部は、前記実行計画取得部が取得した前記実行計画において規定されているデータ構造を解析することにより前記二項演算を特定する、
請求項１に記載の分析装置。
【請求項３】
前記解析部は、前記演算関連情報として、前記データベースシステムにおいて前記第１のテーブル群と、前記第２のテーブル群を結合する場合の処理負荷に関連する情報を特定する、
請求項１又は２に記載の分析装置。
【請求項４】
前記実行計画取得部は、複数の前記クエリのそれぞれに対応する複数の前記実行計画を取得し、
前記解析部は、前記演算関連情報として、前記実行計画取得部が取得した複数の前記実行計画のそれぞれにおいて行われる前記二項演算を特定し、
結合するテーブル群が同一の前記二項演算の統計情報として、前記処理負荷の統計値を示す情報を生成する統計情報生成部をさらに備え、
前記出力部は、前記統計情報生成部が生成した前記統計情報を出力する、
請求項３に記載の分析装置。
【請求項５】
前記実行計画取得部は、複数の前記クエリのそれぞれに対応する複数の前記実行計画を取得し、
前記解析部は、前記演算関連情報として、前記実行計画取得部が取得した複数の前記実行計画のそれぞれにおいて行われる前記二項演算を特定し、
結合するテーブル群が同一の前記二項演算の統計情報として、前記データベースシステムにおいて前記二項演算が行われた回数を示す情報を生成する統計情報生成部をさらに備え、
前記出力部は、前記統計情報生成部が生成した前記統計情報を出力する、
請求項１から４のいずれか１項に記載の分析装置。
【請求項６】
コンピュータが実行する、
データベースシステムにおいて実行されたクエリに対して前記データベースシステムが前記クエリに対応する演算を行うために生成した実行計画を取得するステップと、
取得された前記実行計画に基づいて、前記実行計画に対応して前記データベースシステムにおいて行われるテーブルを結合する演算を示す二項演算を特定するステップと、
特定された前記二項演算に関連する演算関連情報として、当該二項演算により結合される一以上のテーブルを含む第１のテーブル群と、一以上のテーブルを含む第２のテーブル群とを特定するステップと、
特定された前記演算関連情報を出力するステップと、
を備える分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに格納されている複数のテーブルの関連性を分析する分析装置及び分析方法に関する。
【背景技術】
【０００２】
従来、データベースを効率的に利用するために、関連性が高い２つのテーブルを１つにまとめたり、関連性が高い２つのテーブルの結合結果を優先的にメモリ上にキャッシュしたりすることが行われている。
【０００３】
関連性が高いテーブルを特定するにあたり、例えば、特許文献１には、データベースシステムにおいて実行されたクエリに含まれるテキストを分析してテーブルの結合条件を特定することにより、複数のテーブルの関連性を分析する分析方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−０２１４６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、データベースシステムでは、３つ以上のテーブルを結合する場合、テーブルのサイズや２つのテーブルを結合する二項演算のコストに基づいてテーブルの結合順序を決定し、当該結合順序に基づいて２つのテーブルの結合を繰り返すことにより、３つ以上のテーブルを結合する。
【０００６】
これに対し、特許文献１に開示されている分析方法は、クエリに含まれるテキストにおいて規定されているカラム同士の関係に基づいてテーブル同士の関連度を算出するので、１：１のテーブル同士の関連性しか特定できない。したがって、クエリに含まれるテキストに基づいて特定したテーブル同士の関連度が、データベースシステムが決定した結合順序に基づくテーブル同士の関連度と必ずしも一致しないという問題がある。そこで、関連性が高いテーブルを精度良く特定することが求められている。
【０００７】
そこで、本発明はこれらの点に鑑みてなされたものであり、関連性が高いテーブルを精度良く特定することができる分析装置及び分析方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の態様に係る分析装置は、データベースシステムにおいて実行されたクエリに対して前記データベースシステムが前記クエリに対応する演算を行うために生成した実行計画を取得する実行計画取得部と、前記実行計画取得部が取得した前記実行計画に基づいて、前記実行計画に対応して前記データベースシステムにおいて行われるテーブルを結合する演算を示す二項演算を特定し、当該二項演算に関連する演算関連情報として、当該二項演算により結合される一以上のテーブルを含む第１のテーブル群と、一以上のテーブルを含む第２のテーブル群とを特定する解析部と、前記解析部が特定した前記演算関連情報を出力する出力部と、を備える。
【０００９】
前記実行計画は、前記データベースシステムにおいて行われる演算の処理順を規定する木構造のデータ構造を有しており、前記解析部は、前記実行計画取得部が取得した前記実行計画において規定されているデータ構造を解析することにより前記二項演算を特定してもよい。
【００１０】
前記解析部は、前記演算関連情報として、前記データベースシステムにおいて前記第１のテーブル群と、前記第２のテーブル群を結合する場合の処理負荷に関連する情報を特定してもよい。
【００１１】
前記実行計画取得部は、複数の前記クエリのそれぞれに対応する複数の前記実行計画を取得し、前記解析部は、前記演算関連情報として、前記実行計画取得部が取得した複数の前記実行計画のそれぞれにおいて行われる前記二項演算を特定し、結合するテーブル群が同一の前記二項演算の統計情報として、前記処理負荷の統計値を示す情報を生成する統計情報生成部をさらに備え、前記出力部は、前記統計情報生成部が生成した前記統計情報を出力してもよい。
【００１２】
前記実行計画取得部は、複数の前記クエリのそれぞれに対応する複数の前記実行計画を取得し、前記解析部は、前記演算関連情報として、前記実行計画取得部が取得した複数の前記実行計画のそれぞれにおいて行われる前記二項演算を特定し、結合するテーブル群が同一の前記二項演算の統計情報として、前記データベースシステムにおいて前記二項演算が行われた回数を示す情報を生成する統計情報生成部をさらに備え、前記出力部は、前記統計情報生成部が生成した前記統計情報を出力してもよい。
【００１３】
本発明の第２の態様に係る分析方法は、コンピュータが実行する、データベースシステムにおいて実行されたクエリに対して前記データベースシステムが前記クエリに対応する演算を行うために生成した実行計画を取得するステップと、取得された前記実行計画に基づいて、前記実行計画に対応して前記データベースシステムにおいて行われるテーブルを結合する演算を示す二項演算を特定するステップと、特定された前記二項演算に関連する演算関連情報として、当該二項演算により結合される一以上のテーブルを含む第１のテーブル群と、一以上のテーブルを含む第２のテーブル群とを特定するステップと、特定された前記演算関連情報を出力するステップと、を備える。
【発明の効果】
【００１４】
本発明によれば、関連性が高いテーブルを精度良く特定することができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】本実施形態に係る分析装置の概要を説明する図である。
【図２】本実施形態に係る分析装置の構成を示す図である。
【図３】本実施形態に係る制御部における処理の流れを示すフローチャートを示す図である。
【図４】本実施形態に係るデータベースシステムにおいて実行されたクエリの一例（その１）を示す図である。
【図５】本実施形態に係るデータベースシステムにおいて実行されたクエリの一例（その２）を示す図である。
【図６】図４に示すクエリに対応してデータベースシステムが生成した実行計画を示す図である。
【図７】図５に示すクエリに対応してデータベースシステムが生成した実行計画を示す図である。
【図８】図６に示す実行計画に対応するデータ構造を示す図である。
【図９】図７に示す実行計画に対応するデータ構造を示す図である。
【図１０】本実施形態に係る実行計画解析処理における処理の流れを示すフローチャートである。
【図１１】図６に示す実行計画に対応する演算関連情報を示す図である。
【図１２】図６に示す実行計画に対応する演算関連情報の一部と統計情報とを示す図である。
【図１３】図７に示す実行計画に対応する演算関連情報を示す図である。
【図１４】図１２に示す統計情報に対して、図７に示す実行計画に対応する統計情報が反映された例を示す図である。
【図１５】２つのデータベースシステムを仮想統合した仮想統合環境を示す図である。
【図１６】仮想統合環境において使用されるテーブルと、当該テーブルの容量とを示す図である。
【発明を実施するための形態】
【００１６】
［分析装置１０の概要］
図１は、本実施形態に係る分析装置１０の概要を説明する図である。分析装置１０は、データベースに格納されている複数のテーブルの関連性について分析するコンピュータである。
【００１７】
分析装置１０は、データベースシステム１にＬＡＮ（Local Area Network）やインターネット等により通信可能に接続されている。分析装置１０は、データベースシステム１において実行されたクエリに対してデータベースシステム１が生成した実行計画を取得する。クエリは、ＳＱＬ等のテキスト文である。実行計画は、データベースシステム１がクエリに対応する複数の演算を行うために生成する情報であり、当該複数の演算の処理順を規定する木構造のデータ構造を有している。クエリ及び実行計画は、例えばクエリログに含まれている。クエリログは、データベースシステム１が実行したクエリに関する情報である。クエリログは、例えば、実行計画、クエリ、クエリを特定するＩＤ、実行時刻、処理時間、クエリを実行したユーザを識別するユーザ識別情報を含んでいる。
【００１８】
分析装置１０は、取得した実行計画に基づいて、実行計画に対応してデータベースシステム１が行う演算の中から二項演算を特定する。二項演算は、テーブルを結合する演算である。分析装置１０は、特定した二項演算により結合される一以上のテーブルを含む第１のテーブル群と、一以上のテーブルを含む第２のテーブル群とを、二項演算に関連する演算関連情報として特定し、当該演算関連情報を出力する。
【００１９】
実行計画は、複数の演算の処理順を規定するデータ構造を有しているところ、分析装置１０は、二項演算の処理順に基づいて、二項演算により結合される第１のテーブル群と、第２のテーブル群とを特定することができる。これにより、分析装置１０は、３つ以上のテーブルを結合する場合であっても関連性が高いテーブルを精度良く特定することができる。
【００２０】
［分析装置１０の構成］
続いて、分析装置１０の構成を説明する。図２は、本実施形態に係る分析装置１０の構成を示す図である。図２に示すように、分析装置１０は、通信部１１と、操作部１２と、表示部１３と、記憶部１４と、制御部１５とを備える。
【００２１】
通信部１１は、データベースシステム１とデータを送受信するための通信インターフェースである。操作部１２は、例えば、キーボードやマウス等により構成されており、分析装置１０のユーザから操作入力を受け付ける。表示部１３は、例えば、液晶ディスプレイ又は有機ＥＬ（Electro-Luminescence）ディスプレイ等により構成される。表示部１３は、制御部１５の制御に応じて各種情報を表示する。
【００２２】
記憶部１４は、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）等を含む記憶媒体である。記憶部１４は、制御部１５が実行するプログラムを記憶している。例えば、記憶部１４は、制御部１５を、実行計画取得部１５１、解析部１５２、統計情報生成部１５３、及び出力部１５４として機能させる分析プログラムを記憶している。
【００２３】
制御部１５は、例えばＣＰＵ（Central Processing Unit）である。制御部１５は、記憶部１４に記憶された分析プログラムを実行することにより、実行計画取得部１５１、解析部１５２、統計情報生成部１５３、及び出力部１５４として機能する。
【００２４】
図３は、本実施形態に係る制御部１５における処理の流れを示すフローチャートを示す図である。以下、図３に示すフローチャートを参照しながら、実行計画取得部１５１、解析部１５２、統計情報生成部１５３、及び出力部１５４の機能を説明する。
【００２５】
実行計画取得部１５１は、データベースシステム１において実行されたクエリに対して、データベースシステム１が当該クエリに対応する演算を行うために生成した実行計画を取得する（Ｓ１０）。実行計画取得部１５１は、データベースシステム１において実行された複数のクエリのそれぞれに対応する複数の実行計画を取得する。
【００２６】
例えば、実行計画取得部１５１は、操作部１２が、分析装置１０のユーザから実行計画を取得する操作を受け付けると、データベースシステム１にアクセスし、現在時刻から所定期間前までに実行されたクエリを含むクエリログを特定する。そして、実行計画取得部１５１は、特定したクエリログに含まれている実行計画を取得する。実行計画取得部１５１は、ユーザから、クエリが実行された期間を受け付け、当該期間内に実行されたクエリに対応する実行計画を取得してもよい。
【００２７】
図４及び図５は、本実施形態に係るデータベースシステム１において実行されたクエリの一例を示す図である。図６は、図４に示すクエリに対応してデータベースシステム１が生成した実行計画を示す図である。図７は、図５に示すクエリに対応してデータベースシステム１が生成した実行計画を示す図である。本実施形態では、実行計画取得部１５１が、図６及び図７に示す実行計画を取得するものとする。
【００２８】
実行計画は、データベースシステム１において実行されるクエリに対応する演算の処理順を規定しており、木構造のデータ構造を有している。図８は、図６に示す実行計画に対応するデータ構造を示す図であり、図９は、図７に示す実行計画に対応するデータ構造を示す図である。図８及び図９に示すように、実行計画は、二分木構造を有している。また、図８及び図９に示すように、二分木は、処理の内容を示すノードと、他のノードからのデータの入力を示すエッジとを有している。図８に示す二分木は、ノードＮ１〜Ｎ７を有しており、図９に示す二分木は、ノードＮ１１〜Ｎ２３を有している。データベースシステム１は、図８及び図９に示す二分木における最下層のノードから順番に演算を行う。
【００２９】
また、実行計画には、各演算に対して推定又は実際に算出された処理コストと、データの行数とを示す情報が含まれている。このため、図８及び図９に示す二分木では、各ノードの右側に、ノードに対応する処理を行う場合の処理コスト（Ｃｏｓｔ）と、ノードに対応する処理を行うことにより出力されるデータの行数（Ｒｏｗｓ）とを示している。なお、データベースシステム１の種類によっては、実行計画に、各演算に対して推定又は実際に算出された処理コストと、データの行数とを示す情報が含まれていない場合もある。この場合、分析装置１０が、データベースシステム１に格納されているテーブルのメタ情報を参照して、これらの処理コストやデータの行数を推定してもよい。
【００３０】
続いて、解析部１５２は、実行計画取得部１５１が取得した実行計画のうち、１つの実行計画を選択する（Ｓ２０）。本実施形態では、まず、図６に示す実行計画が選択されたものとして説明を進める。
【００３１】
続いて、解析部１５２は、Ｓ２０において選択された実行計画について、実行計画を解析する処理である実行計画解析処理を実行する（Ｓ３０）。解析部１５２は、選択された実行計画に対する実行計画解析処理の実行を繰り返すことにより、実行計画取得部１５１が取得した複数の実行計画のそれぞれに対応してデータベースシステム１において行われる二項演算を特定する。解析部１５２は、実行計画において規定されている木構造のデータ構造を解析することにより二項演算を特定する。解析部１５２は、特定した二項演算に関連する演算関連情報として、当該二項演算により結合される第１のテーブル群と、第２のテーブル群とを特定する。ここで、テーブル群は、一以上のテーブルを含むものとする。なお、１つのテーブルのみ含む場合もテーブル群と呼ぶものとする。
【００３２】
図１０は、本実施形態に係る実行計画解析処理における処理の流れを示すフローチャートである。図１０を参照しながら、実行計画解析処理の詳細について説明する。
まず、解析部１５２は、実行計画のルートに対応するノードから順にノードを選択する（Ｓ３１）。例えば、図８に示す二分木において、ノードＮ１がルートノードであることから、解析部１５２は、まずノードＮ１を選択する。
【００３３】
続いて、解析部１５２は、選択したノードにおいて、テーブルを結合する演算を示す二項演算が行われているか否かを判定する（Ｓ３２）。ここで、二項演算は、例えば、結合演算及び集合演算を指す。結合演算は、例えば、自然結合（Natural join）、内部結合（Inner join）、外部結合（Left/Right/Full outer join）、直積（Cross join）、部分結合（Semi-join）を含む。集合演算は、和集合（Union及びUnion all）、差集合（Difference）、積集合（Intersect）、商集合（Division）を含む。
【００３４】
解析部１５２は、選択したノードにおいて二項演算が行われていると判定すると、Ｓ３３に処理を移し、二項演算が行われていないと判定すると、Ｓ３１に処理を移す。図８に示す例では、ノードＮ１、Ｎ２が二項演算ではないことから、解析部１５２は、Ｓ３１及びＳ３２を繰り返し、その後、ノードＮ３が二項演算であることを特定する。
【００３５】
解析部１５２は、Ｓ３２において二項演算が行われていると判定すると、当該二項演算に対応する演算関連情報を特定する（Ｓ３３）。演算関連情報は、特定した二項演算に対応して結合される２つのテーブル群、及び、当該２つのテーブル群を結合する場合の処理負荷に関連する情報である。
【００３６】
具体的には、解析部１５２は、二項演算に対応するノードを含み、当該ノードの下位の二分木であるサブツリーを走査することにより、結合するテーブル群としての２つのテーブル群を演算関連情報として特定する。図８に示す例では、解析部１５２は、ノードＮ３において二項演算が行われていると判定した後、ノードＮ３のサブツリーであるノードＮ３〜Ｎ７を走査することにより、第１のテーブル群をｌｉｎｅｉｔｅｍテーブルと特定し、第２のテーブル群をｏｒｄｅｒｓテーブル及びｃｕｓｔｏｍｅｒテーブルと特定する。
【００３７】
また、解析部１５２は、演算関連情報に含まれる処理負荷に関連する情報として、二項演算に対応するノードの出力結果と、当該ノードの直下の２つのノードの出力結果とを特定する。図１１は、図６に示す実行計画に対応する演算関連情報を示す図である。図１１に示すように、二項演算に対応する演算関連情報として、第１テーブル群、第１テーブル群に対応する入力データ数、第２テーブル群、第２テーブル群に対応する入力データ数、結合タイプ、結合条件、出力データ数が特定されていることが確認できる。図８に示す例では、解析部１５２は、ノードＮ３の二項演算に対して、一行目に示される演算関連情報を特定する。なお、解析部１５２は、演算関連情報として、二項演算が行われるノードに対応する処理コストを特定してもよい。
【００３８】
続いて、統計情報生成部１５３は、演算関連情報の統計値を含む統計情報を更新する（Ｓ３４）。具体的には、統計情報生成部１５３は、結合するテーブル群が同一の二項演算の統計情報として、処理負荷の統計値を示す情報と、データベースシステム１において二項演算が行われた回数を示す情報とを生成する。統計情報は、記憶部１４に記憶されており、統計情報生成部１５３は、当該統計情報を更新することにより、処理負荷の統計値を示す情報と、データベースシステム１において二項演算が行われた回数を示す情報とを生成する。図１２は、図６に示す実行計画に対応する演算関連情報の一部と統計情報とを示す図である。ここで、図１２に示す演算関連情報の一部は、第１テーブル群及び第２テーブル群を示す情報である。
【００３９】
図１２に示される実行回数は、二項演算が行われた回数を示す。また、図１２に示されるデータ数の合計値は、第１テーブル群に対応する入力データ数と、第２テーブル群に対応する入力データ数と、出力データ数との合計値を示す。図８に示す例では、統計情報生成部１５３は、ノードＮ３の二項演算に対して、一行目に示される統計情報を生成する。
【００４０】
Ｓ３４の処理が終了すると、解析部１５２は、全ノードを選択したか否かを判定する（Ｓ３５）。解析部１５２は、全ノードを選択したと判定すると、本フローチャートに係る処理を終了し、全ノードを選択していないと判定すると、Ｓ３１に処理を移す。図８に示す例では、解析部１５２は、ノードＮ３において二項演算が行われていることを特定した後、ノードＮ５において二項演算が行われていることを特定する。その後、ノードＮ５の二項演算に対して、解析部１５２が、図１１の二行目に示される演算関連情報を特定し、統計情報生成部１５３が、図１２の二行目に示される統計情報が生成する。
【００４１】
図３に説明を戻す。解析部１５２は、Ｓ１０において取得された全ての実行計画が選択されたか否かを判定する（Ｓ４０）。解析部１５２は、全ての実行計画が選択されたと判定すると、Ｓ５０に処理を移し、全ての実行計画が選択されていないと判定すると、Ｓ２０に処理を移す。
【００４２】
図６に示す実行計画に対して実行計画解析処理が実行された後、解析部１５２は、図７に示す実行計画を選択していないことから、Ｓ２０に処理を移し、図７に示す実行計画を選択する。そして、解析部１５２は、図７に示す実行計画に対して実行計画解析処理を実行する。これにより、解析部１５２が図７に示す実行計画に対応する演算関連情報を特定し、統計情報生成部１５３が、当該演算関連情報に基づいて統計情報を更新する。
【００４３】
図１３は、図７に示す実行計画に対応する演算関連情報を示す図であり、図１４は、図１２に示す統計情報に対して、図７に示す実行計画に対応する統計情報が反映された例を示す図である。
【００４４】
図７に示す実行計画に対応する二分木が示されている図９を参照すると、ノードＮ１３、Ｎ１４、Ｎ１５、Ｎ１７、Ｎ２０において二項演算が行われている。これに対応して、図１３に示すように、テーブルの結合が５回行われたことが確認できる。また、図１４に示すように、図７に示す実行計画が解析された結果、第１テーブル群がｌｉｎｅｉｔｅｍテーブル、第２テーブル群がｏｒｄｅｒｓテーブル及びｃｕｓｔｏｍｅｒテーブルであるテーブルの結合が２回行われているとともに、第１テーブル群がｏｒｄｅｒｓテーブル、第２テーブル群がｃｕｓｔｏｍｅｒテーブルであるテーブルの結合が２回行われていることが確認できる。これらのテーブルの結合では、データ数の合計値も大きいことから、これらのテーブル群の関連性が高いことが確認できる。
【００４５】
図３に説明を戻す。出力部１５４は、Ｓ４０において全ての実行計画が選択されたと判定されると、解析部１５２が特定した演算関連情報と、統計情報生成部１５３が生成した統計情報とを出力する（Ｓ５０）。例えば、出力部１５４は、図１４に示す演算関連情報の一部（第１テーブル群及び第２テーブル群）と、統計情報（実行回数及びデータ数の合計値）とを示す情報を表示部１３に出力する。ユーザは、図１４に示す情報を確認することにより、関連性の高いテーブル群を特定し、テーブルの配置等を検討することができる。
【００４６】
［テーブルの配置例］
図１４に示す結果を利用する例を以下に示す。図１５は、２つのデータベースシステムを仮想統合した仮想統合環境を示す図である。図１５に示すように、仮想統合環境は、２つのデータベースシステム１Ａ及び１Ｂと、データ仮想化システム２とを備える。データ仮想化システム２は、２つのデータベースシステム１Ａ及び１Ｂと、ＬＡＮやインターネット等の通信ネットワークで接続されている。
【００４７】
データ仮想化システム２は、クエリの入力インターフェースを備え、２つのデータベースシステム１Ａ及び１Ｂのスキーマのみを統合している。データ仮想化システム２は、クエリの入力を受け付けたことに応じて、当該クエリに対応する物理データを２つのデータベースシステム１Ａ及び１Ｂから取得する。仮想統合環境では、結合対象の２つのテーブル群が１つのデータベースシステムに含まれている場合は、当該データベースシステム内でテーブル群の結合処理が完結する。一方、結合対象のテーブル群が異なるデータベースシステムに格納されている場合、データ仮想化システム２が、通信ネットワークを介して当該テーブル群に対応するデータを取得する必要がある。
【００４８】
このため、結合される頻度の高いテーブル群は、同じデータベースシステムに配置することが好ましい。図１６は、仮想統合環境において使用されるテーブルと、当該テーブルの容量とを示す図である。図１６に示すテーブルは、図１４等に示すテーブルに対応している。また、２つのデータベースシステム１Ａ及び１Ｂの容量制限が３，０００ＧＢであるものとする。
【００４９】
図１４に示す結果では、第１のテーブル群であるｌｉｎｅｉｔｅｍテーブルと、第２のテーブル群であるｏｒｄｅｒｓテーブル及びｃｕｓｔｏｍｅｒテーブルとが結合される頻度が高い。このため、これらのテーブルをデータベースシステム１Ａに配置する。この時点で、データベースシステム１Ａに配置されているテーブルの合計容量は３，０００ＧＢに達するので、他のテーブルをデータベースシステム１Ｂに配置する。このようにすることで、仮想統合環境において、テーブルの配置が最適化され、性能を向上させることができる。
【００５０】
［本実施形態における効果］
以上説明したように、本実施形態に係る分析装置１０は、データベースシステム１がクエリに対応する演算を行うために生成した実行計画に基づいて二項演算を特定する。そして、分析装置１０は、特定した二項演算に関連する演算関連情報として、当該二項演算により結合される第１のテーブル群と、第２のテーブル群とを特定し、特定した演算関連情報を出力する。このようにすることで、分析装置１０は、３つ以上のテーブルを結合する場合であっても関連性が高いテーブルを精度良く特定することができる。
【００５１】
また、分析装置１０は、二項演算に関連するすべてのテーブルをテーブル群として関連付けることにより、クエリにおいて規定されているものの、実際にはデータベースシステム１において実行されない１：１の結合演算に係るテーブルの関係を排除することができる。これにより、ユーザは、分析装置１０の出力結果に基づいて、データベースシステム１における利用実態や処理状態を正確に把握することができる。
【００５２】
また、ユーザは、分析装置１０の出力結果に基づいて、頻繁に結合されるテーブル群を検出することができる。これにより、ユーザは、図１４に示すような、複数のデータベースシステムを連結した環境において、頻繁に結合されるテーブル群を同じデータベースシステムに配置して、これらのテーブル群の結合を１つのデータベースシステムで完結させることで、マルチデータベースシステム環境の性能を向上させることができる。
【００５３】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、上述の実施形態では、分析装置１０は、操作部１２及び表示部１３を備えることとしたが、これに限らない。分析装置１０は、操作部１２及び表示部１３を備えなくてもよい。この場合において、実行計画取得部１５１は、ユーザから、クエリが実行された期間を受け付けず、指定した時刻に定期的にクエリに対応する実行計画を取得してもよい。また、実行計画取得部１５１は、データベースシステム１に蓄積されているクエリログの数が増加していることを検出した場合に実行計画を取得してもよい。このようにすることで、分析装置１０は、自動的に実行計画を取得することができるので、当該実行計画に基づいて自動的に二項演算を特定することができる。
【００５４】
また、装置の全部又は一部は、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果を併せ持つ。
【符号の説明】
【００５５】
１・・・データベースシステム、２・・・データ仮想化システム、１０・・・分析装置、１１・・・通信部、１２・・・操作部、１３・・・表示部、１４・・・記憶部、１５・・・制御部、１５１・・・実行計画取得部、１５２・・解析部、１５３・・・統計情報生成部、１５４・・・出力部
【図１】
2020135717.tif 000003
【図２】
2020135717.tif 000004
【図３】
2020135717.tif 000005
【図４】
2020135717.tif 000006
【図５】
2020135717.tif 000007
【図６】
2020135717.tif 000008
【図７】
2020135717.tif 000009
【図８】
2020135717.tif 000010
【図９】
2020135717.tif 000011
【図１０】
2020135717.tif 000012
【図１１】
2020135717.tif 000013
【図１２】
2020135717.tif 000014
【図１３】
2020135717.tif 000015
【図１４】
2020135717.tif 000016
【図１５】
2020135717.tif 000017
【図１６】
2020135717.tif 000018