(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-10
(45)【発行日】2023-03-20
(54)【発明の名称】分析装置及び分析方法
(51)【国際特許分類】
G06F 16/21 20190101AFI20230313BHJP
【FI】
G06F16/21
(21)【出願番号】P 2019031561
(22)【出願日】2019-02-25
【審査請求日】2020-12-17
【審判番号】
【審判請求日】2022-07-26
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100166006
【氏名又は名称】泉 通博
(72)【発明者】
【氏名】斉藤 和広
【合議体】
【審判長】須田 勝巳
【審判官】山崎 慎一
【審判官】中村 信也
(56)【参考文献】
【文献】国際公開第2016/067370(WO,A1)
【文献】米国特許出願公開第2019/0005092(US,A1)
【文献】特開2001-142898(JP,A)
【文献】特表2014-519080(JP,A)
【文献】米国特許出願公開第2017/0004173(US,A1)
【文献】米国特許出願公開第2017/0147644(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F16/21
(57)【特許請求の範囲】
【請求項1】
データベースシステムに格納されている複数のテーブルの関連性を分析する分析装置であって、
データベースシステムにおいて実行されたクエリに対して前記データベースシステムが前記クエリに対応する演算を行うために生成した、処理の内容を示すノードと、当該ノードに対する他のノードからのデータの入力を示すエッジとから構成される二分木のデータ構造を有する実行計画を取得する実行計画取得部と、
前記実行計画取得部が取得した前記実行計画に含まれるノードに基づいて、前記実行計画に対応して前記データベースシステムにおいて行われるテーブルを結合する演算を示す二項演算に対応するノードを特定し、前記実行計画が示す二分木に含まれる、特定したノードにデータを入力するエッジを介して当該ノードに接続される下位の二分木であるサブツリーに含まれる
複数のノードである下位の
複数のノード
を走査することにより、特定したノードに対応する二項演算により結合される一以上のテーブルを含む第1のテーブル群と、一以上のテーブルを含む第2のテーブル群とを特定し、特定した前記第1のテーブル群と、前記第2のテーブル群とを含
み、前記分析装置のユーザが確認する演算関連情報を生成する解析部と、
前記解析部が生成した前記演算関連情報を出力する出力部と、
を備える分析装置。
【請求項2】
前記解析部は、前記実行計画取得部が取得した前記実行計画において規定されているデータ構造を解析することにより前記二項演算を特定する、
請求項1に記載の分析装置。
【請求項3】
前記解析部は、前記データベースシステムにおいて前記第1のテーブル群と、前記第2のテーブル群を結合する場合の処理負荷に関連する情報を含む前記演算関連情報を生成する、
請求項1又は2に記載の分析装置。
【請求項4】
前記実行計画取得部は、複数の前記クエリのそれぞれに対応する複数の前記実行計画を取得し、
前記解析部は、前記実行計画取得部が取得した複数の前記実行計画のそれぞれにおいて行われる前記二項演算を特定し、
結合するテーブル群が同一の前記二項演算の統計情報として、前記処理負荷の統計値を示
し、前記分析装置のユーザが確認する情報を生成する統計情報生成部をさらに備え、
前記出力部は、前記統計情報生成部が生成した前記統計情報を出力する、
請求項3に記載の分析装置。
【請求項5】
前記実行計画取得部は、複数の前記クエリのそれぞれに対応する複数の前記実行計画を取得し、
前記解析部は、前記実行計画取得部が取得した複数の前記実行計画のそれぞれにおいて行われる前記二項演算を特定し、
結合するテーブル群が同一の前記二項演算の統計情報として、前記データベースシステムにおいて前記二項演算が行われた回数
と、前記第1のテーブル群に含まれる一以上のテーブルに含まれるデータ数と前記第2のテーブル群に含まれる一以上のテーブルに含まれるデータ数との合計値とを示
し、前記分析装置のユーザが確認する情報を生成する統計情報生成部をさらに備え、
前記出力部は、前記統計情報生成部が生成した前記統計情報を出力する、
請求項1から4のいずれか1項に記載の分析装置。
【請求項6】
コンピュータが実行する、
データベースシステムにおいて実行されたクエリに対して前記データベースシステムが前記クエリに対応する演算を行うために生成した、処理の内容を示すノードと、当該ノードに対する他のノードからのデータの入力を示すエッジとから構成される二分木のデータ構造を有する実行計画を取得するステップと、
取得された前記実行計画に含まれるノードに基づいて、前記実行計画に対応して前記データベースシステムにおいて行われるテーブルを結合する演算を示す二項演算に対応するノードを特定するステップと、
前記実行計画が示す二分木に含まれる、特定したノードにデータを入力するエッジを介して当該ノードに接続される下位の二分木であるサブツリーに含まれる
複数のノードである下位の
複数のノード
を走査することにより、特定されたノードに対応する前記二項演算により結合される一以上のテーブルを含む第1のテーブル群と、一以上のテーブルを含む第2のテーブル群とを特定するステップと、
特定した前記第1のテーブル群と、前記第2のテーブル群とを示す情報を含
み、前記コンピュータのユーザが確認する演算関連情報を生成する
ステップと、
生成された前記演算関連情報を出力するステップと、
を備える分析方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースに格納されている複数のテーブルの関連性を分析する分析装置及び分析方法に関する。
【背景技術】
【0002】
従来、データベースを効率的に利用するために、関連性が高い2つのテーブルを1つにまとめたり、関連性が高い2つのテーブルの結合結果を優先的にメモリ上にキャッシュしたりすることが行われている。
【0003】
関連性が高いテーブルを特定するにあたり、例えば、特許文献1には、データベースシステムにおいて実行されたクエリに含まれるテキストを分析してテーブルの結合条件を特定することにより、複数のテーブルの関連性を分析する分析方法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、データベースシステムでは、3つ以上のテーブルを結合する場合、テーブルのサイズや2つのテーブルを結合する二項演算のコストに基づいてテーブルの結合順序を決定し、当該結合順序に基づいて2つのテーブルの結合を繰り返すことにより、3つ以上のテーブルを結合する。
【0006】
これに対し、特許文献1に開示されている分析方法は、クエリに含まれるテキストにおいて規定されているカラム同士の関係に基づいてテーブル同士の関連度を算出するので、1:1のテーブル同士の関連性しか特定できない。したがって、クエリに含まれるテキストに基づいて特定したテーブル同士の関連度が、データベースシステムが決定した結合順序に基づくテーブル同士の関連度と必ずしも一致しないという問題がある。そこで、関連性が高いテーブルを精度良く特定することが求められている。
【0007】
そこで、本発明はこれらの点に鑑みてなされたものであり、関連性が高いテーブルを精度良く特定することができる分析装置及び分析方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の第1の態様に係る分析装置は、データベースシステムにおいて実行されたクエリに対して前記データベースシステムが前記クエリに対応する演算を行うために生成した実行計画を取得する実行計画取得部と、前記実行計画取得部が取得した前記実行計画に基づいて、前記実行計画に対応して前記データベースシステムにおいて行われるテーブルを結合する演算を示す二項演算を特定し、当該二項演算に関連する演算関連情報として、当該二項演算により結合される一以上のテーブルを含む第1のテーブル群と、一以上のテーブルを含む第2のテーブル群とを特定する解析部と、前記解析部が特定した前記演算関連情報を出力する出力部と、を備える。
【0009】
前記実行計画は、前記データベースシステムにおいて行われる演算の処理順を規定する木構造のデータ構造を有しており、前記解析部は、前記実行計画取得部が取得した前記実行計画において規定されているデータ構造を解析することにより前記二項演算を特定してもよい。
【0010】
前記解析部は、前記演算関連情報として、前記データベースシステムにおいて前記第1のテーブル群と、前記第2のテーブル群を結合する場合の処理負荷に関連する情報を特定してもよい。
【0011】
前記実行計画取得部は、複数の前記クエリのそれぞれに対応する複数の前記実行計画を取得し、前記解析部は、前記演算関連情報として、前記実行計画取得部が取得した複数の前記実行計画のそれぞれにおいて行われる前記二項演算を特定し、結合するテーブル群が同一の前記二項演算の統計情報として、前記処理負荷の統計値を示す情報を生成する統計情報生成部をさらに備え、前記出力部は、前記統計情報生成部が生成した前記統計情報を出力してもよい。
【0012】
前記実行計画取得部は、複数の前記クエリのそれぞれに対応する複数の前記実行計画を取得し、前記解析部は、前記演算関連情報として、前記実行計画取得部が取得した複数の前記実行計画のそれぞれにおいて行われる前記二項演算を特定し、結合するテーブル群が同一の前記二項演算の統計情報として、前記データベースシステムにおいて前記二項演算が行われた回数を示す情報を生成する統計情報生成部をさらに備え、前記出力部は、前記統計情報生成部が生成した前記統計情報を出力してもよい。
【0013】
本発明の第2の態様に係る分析方法は、コンピュータが実行する、データベースシステムにおいて実行されたクエリに対して前記データベースシステムが前記クエリに対応する演算を行うために生成した実行計画を取得するステップと、取得された前記実行計画に基づいて、前記実行計画に対応して前記データベースシステムにおいて行われるテーブルを結合する演算を示す二項演算を特定するステップと、特定された前記二項演算に関連する演算関連情報として、当該二項演算により結合される一以上のテーブルを含む第1のテーブル群と、一以上のテーブルを含む第2のテーブル群とを特定するステップと、特定された前記演算関連情報を出力するステップと、を備える。
【発明の効果】
【0014】
本発明によれば、関連性が高いテーブルを精度良く特定することができるという効果を奏する。
【図面の簡単な説明】
【0015】
【
図1】本実施形態に係る分析装置の概要を説明する図である。
【
図2】本実施形態に係る分析装置の構成を示す図である。
【
図3】本実施形態に係る制御部における処理の流れを示すフローチャートを示す図である。
【
図4】本実施形態に係るデータベースシステムにおいて実行されたクエリの一例(その1)を示す図である。
【
図5】本実施形態に係るデータベースシステムにおいて実行されたクエリの一例(その2)を示す図である。
【
図6】
図4に示すクエリに対応してデータベースシステムが生成した実行計画を示す図である。
【
図7】
図5に示すクエリに対応してデータベースシステムが生成した実行計画を示す図である。
【
図8】
図6に示す実行計画に対応するデータ構造を示す図である。
【
図9】
図7に示す実行計画に対応するデータ構造を示す図である。
【
図10】本実施形態に係る実行計画解析処理における処理の流れを示すフローチャートである。
【
図11】
図6に示す実行計画に対応する演算関連情報を示す図である。
【
図12】
図6に示す実行計画に対応する演算関連情報の一部と統計情報とを示す図である。
【
図13】
図7に示す実行計画に対応する演算関連情報を示す図である。
【
図14】
図12に示す統計情報に対して、
図7に示す実行計画に対応する統計情報が反映された例を示す図である。
【
図15】2つのデータベースシステムを仮想統合した仮想統合環境を示す図である。
【
図16】仮想統合環境において使用されるテーブルと、当該テーブルの容量とを示す図である。
【発明を実施するための形態】
【0016】
[分析装置10の概要]
図1は、本実施形態に係る分析装置10の概要を説明する図である。分析装置10は、データベースに格納されている複数のテーブルの関連性について分析するコンピュータである。
【0017】
分析装置10は、データベースシステム1にLAN(Local Area Network)やインターネット等により通信可能に接続されている。分析装置10は、データベースシステム1において実行されたクエリに対してデータベースシステム1が生成した実行計画を取得する。クエリは、SQL等のテキスト文である。実行計画は、データベースシステム1がクエリに対応する複数の演算を行うために生成する情報であり、当該複数の演算の処理順を規定する木構造のデータ構造を有している。クエリ及び実行計画は、例えばクエリログに含まれている。クエリログは、データベースシステム1が実行したクエリに関する情報である。クエリログは、例えば、実行計画、クエリ、クエリを特定するID、実行時刻、処理時間、クエリを実行したユーザを識別するユーザ識別情報を含んでいる。
【0018】
分析装置10は、取得した実行計画に基づいて、実行計画に対応してデータベースシステム1が行う演算の中から二項演算を特定する。二項演算は、テーブルを結合する演算である。分析装置10は、特定した二項演算により結合される一以上のテーブルを含む第1のテーブル群と、一以上のテーブルを含む第2のテーブル群とを、二項演算に関連する演算関連情報として特定し、当該演算関連情報を出力する。
【0019】
実行計画は、複数の演算の処理順を規定するデータ構造を有しているところ、分析装置10は、二項演算の処理順に基づいて、二項演算により結合される第1のテーブル群と、第2のテーブル群とを特定することができる。これにより、分析装置10は、3つ以上のテーブルを結合する場合であっても関連性が高いテーブルを精度良く特定することができる。
【0020】
[分析装置10の構成]
続いて、分析装置10の構成を説明する。
図2は、本実施形態に係る分析装置10の構成を示す図である。
図2に示すように、分析装置10は、通信部11と、操作部12と、表示部13と、記憶部14と、制御部15とを備える。
【0021】
通信部11は、データベースシステム1とデータを送受信するための通信インターフェースである。操作部12は、例えば、キーボードやマウス等により構成されており、分析装置10のユーザから操作入力を受け付ける。表示部13は、例えば、液晶ディスプレイ又は有機EL(Electro-Luminescence)ディスプレイ等により構成される。表示部13は、制御部15の制御に応じて各種情報を表示する。
【0022】
記憶部14は、ROM(Read Only Memory)及びRAM(Random Access Memory)等を含む記憶媒体である。記憶部14は、制御部15が実行するプログラムを記憶している。例えば、記憶部14は、制御部15を、実行計画取得部151、解析部152、統計情報生成部153、及び出力部154として機能させる分析プログラムを記憶している。
【0023】
制御部15は、例えばCPU(Central Processing Unit)である。制御部15は、記憶部14に記憶された分析プログラムを実行することにより、実行計画取得部151、解析部152、統計情報生成部153、及び出力部154として機能する。
【0024】
図3は、本実施形態に係る制御部15における処理の流れを示すフローチャートを示す図である。以下、
図3に示すフローチャートを参照しながら、実行計画取得部151、解析部152、統計情報生成部153、及び出力部154の機能を説明する。
【0025】
実行計画取得部151は、データベースシステム1において実行されたクエリに対して、データベースシステム1が当該クエリに対応する演算を行うために生成した実行計画を取得する(S10)。実行計画取得部151は、データベースシステム1において実行された複数のクエリのそれぞれに対応する複数の実行計画を取得する。
【0026】
例えば、実行計画取得部151は、操作部12が、分析装置10のユーザから実行計画を取得する操作を受け付けると、データベースシステム1にアクセスし、現在時刻から所定期間前までに実行されたクエリを含むクエリログを特定する。そして、実行計画取得部151は、特定したクエリログに含まれている実行計画を取得する。実行計画取得部151は、ユーザから、クエリが実行された期間を受け付け、当該期間内に実行されたクエリに対応する実行計画を取得してもよい。
【0027】
図4及び
図5は、本実施形態に係るデータベースシステム1において実行されたクエリの一例を示す図である。
図6は、
図4に示すクエリに対応してデータベースシステム1が生成した実行計画を示す図である。
図7は、
図5に示すクエリに対応してデータベースシステム1が生成した実行計画を示す図である。本実施形態では、実行計画取得部151が、
図6及び
図7に示す実行計画を取得するものとする。
【0028】
実行計画は、データベースシステム1において実行されるクエリに対応する演算の処理順を規定しており、木構造のデータ構造を有している。
図8は、
図6に示す実行計画に対応するデータ構造を示す図であり、
図9は、
図7に示す実行計画に対応するデータ構造を示す図である。
図8及び
図9に示すように、実行計画は、二分木構造を有している。また、
図8及び
図9に示すように、二分木は、処理の内容を示すノードと、他のノードからのデータの入力を示すエッジとを有している。
図8に示す二分木は、ノードN1~N7を有しており、
図9に示す二分木は、ノードN11~N23を有している。データベースシステム1は、
図8及び
図9に示す二分木における最下層のノードから順番に演算を行う。
【0029】
また、実行計画には、各演算に対して推定又は実際に算出された処理コストと、データの行数とを示す情報が含まれている。このため、
図8及び
図9に示す二分木では、各ノードの右側に、ノードに対応する処理を行う場合の処理コスト(Cost)と、ノードに対応する処理を行うことにより出力されるデータの行数(Rows)とを示している。なお、データベースシステム1の種類によっては、実行計画に、各演算に対して推定又は実際に算出された処理コストと、データの行数とを示す情報が含まれていない場合もある。この場合、分析装置10が、データベースシステム1に格納されているテーブルのメタ情報を参照して、これらの処理コストやデータの行数を推定してもよい。
【0030】
続いて、解析部152は、実行計画取得部151が取得した実行計画のうち、1つの実行計画を選択する(S20)。本実施形態では、まず、
図6に示す実行計画が選択されたものとして説明を進める。
【0031】
続いて、解析部152は、S20において選択された実行計画について、実行計画を解析する処理である実行計画解析処理を実行する(S30)。解析部152は、選択された実行計画に対する実行計画解析処理の実行を繰り返すことにより、実行計画取得部151が取得した複数の実行計画のそれぞれに対応してデータベースシステム1において行われる二項演算を特定する。解析部152は、実行計画において規定されている木構造のデータ構造を解析することにより二項演算を特定する。解析部152は、特定した二項演算に関連する演算関連情報として、当該二項演算により結合される第1のテーブル群と、第2のテーブル群とを特定する。ここで、テーブル群は、一以上のテーブルを含むものとする。なお、1つのテーブルのみ含む場合もテーブル群と呼ぶものとする。
【0032】
図10は、本実施形態に係る実行計画解析処理における処理の流れを示すフローチャートである。
図10を参照しながら、実行計画解析処理の詳細について説明する。
まず、解析部152は、実行計画のルートに対応するノードから順にノードを選択する(S31)。例えば、
図8に示す二分木において、ノードN1がルートノードであることから、解析部152は、まずノードN1を選択する。
【0033】
続いて、解析部152は、選択したノードにおいて、テーブルを結合する演算を示す二項演算が行われているか否かを判定する(S32)。ここで、二項演算は、例えば、結合演算及び集合演算を指す。結合演算は、例えば、自然結合(Natural join)、内部結合(Inner join)、外部結合(Left/Right/Full outer join)、直積(Cross join)、部分結合(Semi-join)を含む。集合演算は、和集合(Union及びUnion all)、差集合(Difference)、積集合(Intersect)、商集合(Division)を含む。
【0034】
解析部152は、選択したノードにおいて二項演算が行われていると判定すると、S33に処理を移し、二項演算が行われていないと判定すると、S31に処理を移す。
図8に示す例では、ノードN1、N2が二項演算ではないことから、解析部152は、S31及びS32を繰り返し、その後、ノードN3が二項演算であることを特定する。
【0035】
解析部152は、S32において二項演算が行われていると判定すると、当該二項演算に対応する演算関連情報を特定する(S33)。演算関連情報は、特定した二項演算に対応して結合される2つのテーブル群、及び、当該2つのテーブル群を結合する場合の処理負荷に関連する情報である。
【0036】
具体的には、解析部152は、二項演算に対応するノードを含み、当該ノードの下位の二分木であるサブツリーを走査することにより、結合するテーブル群としての2つのテーブル群を演算関連情報として特定する。
図8に示す例では、解析部152は、ノードN3において二項演算が行われていると判定した後、ノードN3のサブツリーであるノードN3~N7を走査することにより、第1のテーブル群をlineitemテーブルと特定し、第2のテーブル群をordersテーブル及びcustomerテーブルと特定する。
【0037】
また、解析部152は、演算関連情報に含まれる処理負荷に関連する情報として、二項演算に対応するノードの出力結果と、当該ノードの直下の2つのノードの出力結果とを特定する。
図11は、
図6に示す実行計画に対応する演算関連情報を示す図である。
図11に示すように、二項演算に対応する演算関連情報として、第1テーブル群、第1テーブル群に対応する入力データ数、第2テーブル群、第2テーブル群に対応する入力データ数、結合タイプ、結合条件、出力データ数が特定されていることが確認できる。
図8に示す例では、解析部152は、ノードN3の二項演算に対して、一行目に示される演算関連情報を特定する。なお、解析部152は、演算関連情報として、二項演算が行われるノードに対応する処理コストを特定してもよい。
【0038】
続いて、統計情報生成部153は、演算関連情報の統計値を含む統計情報を更新する(S34)。具体的には、統計情報生成部153は、結合するテーブル群が同一の二項演算の統計情報として、処理負荷の統計値を示す情報と、データベースシステム1において二項演算が行われた回数を示す情報とを生成する。統計情報は、記憶部14に記憶されており、統計情報生成部153は、当該統計情報を更新することにより、処理負荷の統計値を示す情報と、データベースシステム1において二項演算が行われた回数を示す情報とを生成する。
図12は、
図6に示す実行計画に対応する演算関連情報の一部と統計情報とを示す図である。ここで、
図12に示す演算関連情報の一部は、第1テーブル群及び第2テーブル群を示す情報である。
【0039】
図12に示される実行回数は、二項演算が行われた回数を示す。また、
図12に示されるデータ数の合計値は、第1テーブル群に対応する入力データ数と、第2テーブル群に対応する入力データ数と、出力データ数との合計値を示す。
図8に示す例では、統計情報生成部153は、ノードN3の二項演算に対して、一行目に示される統計情報を生成する。
【0040】
S34の処理が終了すると、解析部152は、全ノードを選択したか否かを判定する(S35)。解析部152は、全ノードを選択したと判定すると、本フローチャートに係る処理を終了し、全ノードを選択していないと判定すると、S31に処理を移す。
図8に示す例では、解析部152は、ノードN3において二項演算が行われていることを特定した後、ノードN5において二項演算が行われていることを特定する。その後、ノードN5の二項演算に対して、解析部152が、
図11の二行目に示される演算関連情報を特定し、統計情報生成部153が、
図12の二行目に示される統計情報が生成する。
【0041】
図3に説明を戻す。解析部152は、S10において取得された全ての実行計画が選択されたか否かを判定する(S40)。解析部152は、全ての実行計画が選択されたと判定すると、S50に処理を移し、全ての実行計画が選択されていないと判定すると、S20に処理を移す。
【0042】
図6に示す実行計画に対して実行計画解析処理が実行された後、解析部152は、
図7に示す実行計画を選択していないことから、S20に処理を移し、
図7に示す実行計画を選択する。そして、解析部152は、
図7に示す実行計画に対して実行計画解析処理を実行する。これにより、解析部152が
図7に示す実行計画に対応する演算関連情報を特定し、統計情報生成部153が、当該演算関連情報に基づいて統計情報を更新する。
【0043】
図13は、
図7に示す実行計画に対応する演算関連情報を示す図であり、
図14は、
図12に示す統計情報に対して、
図7に示す実行計画に対応する統計情報が反映された例を示す図である。
【0044】
図7に示す実行計画に対応する二分木が示されている
図9を参照すると、ノードN13、N14、N15、N17、N20において二項演算が行われている。これに対応して、
図13に示すように、テーブルの結合が5回行われたことが確認できる。また、
図14に示すように、
図7に示す実行計画が解析された結果、第1テーブル群がlineitemテーブル、第2テーブル群がordersテーブル及びcustomerテーブルであるテーブルの結合が2回行われているとともに、第1テーブル群がordersテーブル、第2テーブル群がcustomerテーブルであるテーブルの結合が2回行われていることが確認できる。これらのテーブルの結合では、データ数の合計値も大きいことから、これらのテーブル群の関連性が高いことが確認できる。
【0045】
図3に説明を戻す。出力部154は、S40において全ての実行計画が選択されたと判定されると、解析部152が特定した演算関連情報と、統計情報生成部153が生成した統計情報とを出力する(S50)。例えば、出力部154は、
図14に示す演算関連情報の一部(第1テーブル群及び第2テーブル群)と、統計情報(実行回数及びデータ数の合計値)とを示す情報を表示部13に出力する。ユーザは、
図14に示す情報を確認することにより、関連性の高いテーブル群を特定し、テーブルの配置等を検討することができる。
【0046】
[テーブルの配置例]
図14に示す結果を利用する例を以下に示す。
図15は、2つのデータベースシステムを仮想統合した仮想統合環境を示す図である。
図15に示すように、仮想統合環境は、2つのデータベースシステム1A及び1Bと、データ仮想化システム2とを備える。データ仮想化システム2は、2つのデータベースシステム1A及び1Bと、LANやインターネット等の通信ネットワークで接続されている。
【0047】
データ仮想化システム2は、クエリの入力インターフェースを備え、2つのデータベースシステム1A及び1Bのスキーマのみを統合している。データ仮想化システム2は、クエリの入力を受け付けたことに応じて、当該クエリに対応する物理データを2つのデータベースシステム1A及び1Bから取得する。仮想統合環境では、結合対象の2つのテーブル群が1つのデータベースシステムに含まれている場合は、当該データベースシステム内でテーブル群の結合処理が完結する。一方、結合対象のテーブル群が異なるデータベースシステムに格納されている場合、データ仮想化システム2が、通信ネットワークを介して当該テーブル群に対応するデータを取得する必要がある。
【0048】
このため、結合される頻度の高いテーブル群は、同じデータベースシステムに配置することが好ましい。
図16は、仮想統合環境において使用されるテーブルと、当該テーブルの容量とを示す図である。
図16に示すテーブルは、
図14等に示すテーブルに対応している。また、2つのデータベースシステム1A及び1Bの容量制限が3,000GBであるものとする。
【0049】
図14に示す結果では、第1のテーブル群であるlineitemテーブルと、第2のテーブル群であるordersテーブル及びcustomerテーブルとが結合される頻度が高い。このため、これらのテーブルをデータベースシステム1Aに配置する。この時点で、データベースシステム1Aに配置されているテーブルの合計容量は3,000GBに達するので、他のテーブルをデータベースシステム1Bに配置する。このようにすることで、仮想統合環境において、テーブルの配置が最適化され、性能を向上させることができる。
【0050】
[本実施形態における効果]
以上説明したように、本実施形態に係る分析装置10は、データベースシステム1がクエリに対応する演算を行うために生成した実行計画に基づいて二項演算を特定する。そして、分析装置10は、特定した二項演算に関連する演算関連情報として、当該二項演算により結合される第1のテーブル群と、第2のテーブル群とを特定し、特定した演算関連情報を出力する。このようにすることで、分析装置10は、3つ以上のテーブルを結合する場合であっても関連性が高いテーブルを精度良く特定することができる。
【0051】
また、分析装置10は、二項演算に関連するすべてのテーブルをテーブル群として関連付けることにより、クエリにおいて規定されているものの、実際にはデータベースシステム1において実行されない1:1の結合演算に係るテーブルの関係を排除することができる。これにより、ユーザは、分析装置10の出力結果に基づいて、データベースシステム1における利用実態や処理状態を正確に把握することができる。
【0052】
また、ユーザは、分析装置10の出力結果に基づいて、頻繁に結合されるテーブル群を検出することができる。これにより、ユーザは、
図14に示すような、複数のデータベースシステムを連結した環境において、頻繁に結合されるテーブル群を同じデータベースシステムに配置して、これらのテーブル群の結合を1つのデータベースシステムで完結させることで、マルチデータベースシステム環境の性能を向上させることができる。
【0053】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、上述の実施形態では、分析装置10は、操作部12及び表示部13を備えることとしたが、これに限らない。分析装置10は、操作部12及び表示部13を備えなくてもよい。この場合において、実行計画取得部151は、ユーザから、クエリが実行された期間を受け付けず、指定した時刻に定期的にクエリに対応する実行計画を取得してもよい。また、実行計画取得部151は、データベースシステム1に蓄積されているクエリログの数が増加していることを検出した場合に実行計画を取得してもよい。このようにすることで、分析装置10は、自動的に実行計画を取得することができるので、当該実行計画に基づいて自動的に二項演算を特定することができる。
【0054】
また、装置の全部又は一部は、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果を併せ持つ。
【符号の説明】
【0055】
1・・・データベースシステム、2・・・データ仮想化システム、10・・・分析装置、11・・・通信部、12・・・操作部、13・・・表示部、14・・・記憶部、15・・・制御部、151・・・実行計画取得部、152・・解析部、153・・・統計情報生成部、154・・・出力部