(57)【要約】【課題】データ共有型マルチデータベースシステムにおいて、適切にクエリ分割を行うためのSF値を計算するために、効率的に出力レコード数を計測し収集する分散クエリ処理装置を得る。【解決手段】分散クエリ処理装置であって、データベース情報を管理するマルチデータベース管理データ１０と、ユーザクエリを解析しユーザクエリの処理毎の出力データサイズとエンジン情報を考慮し適切なクエリ処理エンジンを選択して分散クエリを生成する分散クエリ生成部１１と、前記ユーザクエリの出力レコード数を計測するための計測用クエリを生成する計測用クエリ生成部１２と、前記計測用クエリを実行する計測部１３と、前記ユーザクエリの処理を実行するクエリ実行制御部１４と、前記ユーザクエリや前記計測用クエリの実行結果からレコード数やSF値を計算して前記データベース情報を更新するデータ更新部１５を備える。【選択図】図１
2015125726.tif 000002
【特許請求の範囲】
【請求項１】
一つのデータベースを複数のクエリ処理エンジンが共有し、クライアントから投稿されるユーザクエリの処理を行うデータ共有型データベースシステムにおいて、
前記データベースに関するデータベース情報と、前記クエリ処理エンジンの特性に関するエンジン情報とを管理するマルチデータベース管理データと、
前記ユーザクエリを解析し、前記データベース情報に基づいた前記ユーザクエリの処理毎の出力データサイズと前記エンジン情報とを考慮し適切なクエリ処理エンジンを選択して分散クエリを生成する分散クエリ生成部と、
前記ユーザクエリの出力レコード数を計測するための計測用クエリを生成する計測用クエリ生成部と、
前記計測用クエリを実行して出力レコード数を計測する計測部と、
前記適切なクエリ処理エンジンで前記ユーザクエリの処理を実行するとともに、最終的な実行結果を受け取って前記クライアントに転送するクエリ実行制御部と、
前記ユーザクエリや前記計測用クエリの実行結果から得られたレコード数を利用して、前記ユーザクエリの処理毎の出力データサイズを計算する上で必要となる処理毎の入力レコード数と出力レコード数との比であるSF値を計算し、前記データベース情報を更新するデータ更新部と
を備えたことを特徴とする分散クエリ処理装置。
【請求項２】
一つのデータベースを複数のクエリ処理エンジンが共有し、クライアントから投稿されるユーザクエリの処理を行うクエリ処理方法において、
前記ユーザクエリを解析し、クエリ処理するデータ容量を基準に前記ユーザクエリを分割して分散クエリを作成するに際して、前記ユーザクエリの処理毎の出力データサイズを計算する上で必要となる処理毎の入力レコード数と出力レコード数との比であるSF値から、入力データに対する出力データサイズを計算する場合に、
前記SF値が既にデータベース情報として存在している場合は、当該SF値から出力データサイズを計算し、前記ユーザクエリの分散クエリを実行する複数のクエリ処理エンジンを決定し、前記ユーザクエリの実行を行う手順と、
前記SF値がデータベース情報として存在していない場合は、出力レコード数を計測するための計測用クエリを作成する一方、当該計測用クエリが前記ユーザクエリから分散クエリを作成する前に実行可能か否かを判断し、
実行可能である場合は、処理毎の出力データサイズを計算する事前計測を行った後に、前記ユーザクエリの実行を行い、
実行可能でない場合は、処理毎の出力データサイズを計算しながら前記分散クエリの実行を行う事後計測により前記ユーザクエリの実行を行う手順を含む
ことを特徴とするクエリ処理方法。
【請求項３】
前記事前計測は、前記ユーザクエリにおいて、クエリ処理の対象となるデータをランダム抽出することで出力レコード数を計測し、ユーザクエリ処理前に出力データサイズを計算する
請求項２に記載のクエリ処理方法。
【請求項４】
前記事後計測は、入力されるデータサイズを基に実行するクエリ処理エンジンを決定し、ユーザクエリの処理とは別のクエリ処理エンジンを利用してユーザクエリの出力レコード数を計測する
請求項２に記載のクエリ処理方法。
【請求項５】
請求項２に記載のクエリ処理方法の各手順をコンピュータにより実行可能としたクエリ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一つのデータベースを複数のクエリ処理エンジンが共有するデータ共有型マルチデータベースシステムにおいて、ユーザクエリを分割し適切なクエリ処理エンジンに振り分けるために、振り分け条件として利用するクエリ処理の出力レコード数を取得するための分散クエリ処理装置、クエリ処理方法及びクエリ処理プログラムに関する。
【背景技術】
【０００２】
データ共有型マルチデータベースシステムは、一つのデータベースを複数のクエリ処理エンジンが共有する環境において、クエリ処理エンジンの特性やクエリの内容に応じてユーザクエリを分割し、自動的に分配するシステムである。例えば、特許文献１では、共有するデータベースを利用することで、無駄なデータ移動なく、ユーザには透過的に適切なクエリ処理エンジンへとクエリを振り分ける手法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願２０１３−１７６７１０
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の手法によると、クエリ処理するデータ容量を基準としたクエリの分配について言及し、処理容量を事前に計算しておくことでクエリ分割を実現することが開示されている。通常、このような処理容量は、クエリで表現されている条件文における入力データに対する増減の度合いを利用することで計算することができる。この増減の度合いSelectivity Factor（SF値）は、レコード数を利用して計算することができ、入力データに対してクエリ処理を行った場合の出力レコード数を計測することで求めることができる。
【０００５】
出力データサイズは、過去の実行記録を教師データとする機械学習等を利用することで予測可能だが、統計的に正しくなる量の実行記録を残すまでには長期間の運用が必要となり、実用的ではないという課題が存在した。
【０００６】
その一方、クエリ実行時に出力レコード数を計測するためには、対象のデータ及び条件を含むクエリを実行する必要があり、大規模なデータではユーザへのレスポンスが大幅に遅くなるという問題点があった。
【０００７】
本発明は上記実情に鑑みて提案されたもので、データ共有型マルチデータベースシステムにおいて、適切にクエリ分割を行うためのSF値を計算するために、効率的に出力レコード数を計測し収集可能とした分散クエリ処理装置、クエリ処理方法及びクエリ処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
上記目的を達成するため本発明の分散クエリ処理装置（請求項１）は、一つのデータベースを複数のクエリ処理エンジンが共有し、クライアントから投稿されるユーザクエリの処理を行うデータ共有型データベースシステムにおいて、
前記データベースに関するデータベース情報と、前記クエリ処理エンジンの特性に関するエンジン情報とを管理するマルチデータベース管理データと、
前記ユーザクエリを解析し、前記データベース情報に基づいた前記ユーザクエリの処理毎の出力データサイズと前記エンジン情報とを考慮し適切なクエリ処理エンジンを選択して分散クエリを生成する分散クエリ生成部と、
前記ユーザクエリの出力レコード数を計測するための計測用クエリを生成する計測用クエリ生成部と、
前記計測用クエリを実行して出力レコード数を計測する計測部と、
前記適切なクエリ処理エンジンで前記ユーザクエリの処理を実行するとともに、最終的な実行結果を受け取って前記クライアントに転送するクエリ実行制御部と、
前記ユーザクエリや前記計測用クエリの実行結果から得られたレコード数を利用して、前記ユーザクエリの処理毎の出力データサイズを計算する上で必要となる処理毎の入力レコード数と出力レコード数との比であるSF値を計算し、前記データベース情報を更新するデータ更新部と
を備えたことを特徴としている。
【０００９】
請求項２は、一つのデータベースを複数のクエリ処理エンジンが共有し、クライアントから投稿されるユーザクエリの処理を行うクエリ処理方法において、
前記ユーザクエリを解析し、クエリ処理するデータ容量を基準に前記ユーザクエリを分割して分散クエリを作成するに際して、前記ユーザクエリの処理毎の出力データサイズを計算する上で必要となる処理毎の入力レコード数と出力レコード数との比であるSF値から、入力データに対する出力データサイズを計算する場合に、
前記SF値が既にデータベース情報として存在している場合は、当該SF値から出力データサイズを計算し、前記ユーザクエリの分散クエリを実行する複数のクエリ処理エンジンを決定し、前記ユーザクエリの実行を行う手順と、
前記SF値がデータベース情報として存在していない場合は、出力レコード数を計測するための計測用クエリを作成する一方、当該計測用クエリが前記ユーザクエリから分散クエリを作成する前に実行可能か否かを判断し、
実行可能である場合は、処理毎の出力データサイズを計算する事前計測を行った後に、前記ユーザクエリの実行を行い、
実行可能でない場合は、処理毎の出力データサイズを計算しながら前記分散クエリの実行を行う事後計測により前記ユーザクエリの実行を行う手順を含む
ことを特徴としている。
【００１０】
請求項３は、請求項２のクエリ処理方法において、
前記事前計測は、前記ユーザクエリにおいて、クエリ処理の対象となるデータをランダム抽出することで出力レコード数を計測し、ユーザクエリ処理前に出力データサイズを計算する
ことを特徴としている。
【００１１】
請求項４は、請求項２のクエリ処理方法において、
前記事後計測は、入力されるデータサイズを基に実行するクエリ処理エンジンを決定し、ユーザクエリの処理とは別のクエリ処理エンジンを利用してユーザクエリの出力レコード数を計測する
ことを特徴としている。
【００１２】
請求項５は、請求項２に記載のクエリ処理方法の各手順をコンピュータにより実行可能としたクエリ処理プログラムであることを特徴としている。
【発明の効果】
【００１３】
本発明によれば、データ共有型マルチデータベースシステムにおいて、SF値が既にデータベース情報として存在している場合は、当該SF値から出力データサイズを計算して分散クエリを作成してユーザクエリの実行を行い、SF値がデータベース情報として存在していない場合は、ユーザクエリの出力レコード数を計測する事前計測を行った後に処理毎の出力データサイズを計算して分散クエリを作成してユーザクエリの実行を行い、又は、ユーザクエリの出力レコード数を計測しながら分散クエリの実行（事後計測）を行うので、クエリ分割に必要な情報収集によるユーザクエリの処理の遅延を削減することができる。
【００１４】
また、ユーザクエリの出力レコード数を計測する事前計測において、処理対象のデータからランダム抽出する計測用クエリを実行することにより、ユーザクエリの実行に大きな遅延なく、ユーザクエリの実行前にユーザクエリの出力レコード数を計測することができる。
【００１５】
また、事前に実行できない事後計測においては、ユーザクエリとは別のクエリ処理エンジンで行う計測用クエリの実行によって、ユーザクエリの出力レコード数を計測することで、ユーザクエリが利用するリソースに対する影響を最小限にしつつ、クエリ分割に必要な情報を収集することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の分散クエリ処理装置を含む分散クエリ処理システムの全体構成を示すブロック図である。
【図２】本発明の分散クエリ処理装置によりユーザクエリを実行する場合の処理を示すフローチャートである。
【図３】図２の事前計測における詳細な処理を示すフローチャートである。
【図４】図２の事後計測における詳細な処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
本発明の分散クエリ処理装置を備えた分散クエリ処理システムの実施形態の一例について、図１を参照して説明する。
分散クエリ処理装置システムの主要部となる分散クエリ処理装置１は、クライアント２からのユーザクエリの処理要求に対して、ネットワーク３を介して、データ共有型データベースシステムを構成する複数のクエリ処理エンジン４及び共有データベース５で処理を行うに際して、クエリ処理エンジン４の特性とクエリの内容に応じてユーザクエリを分割し、自動的に分配してクエリの処理を行うシステムであり、分散クエリ処理プログラムが格納された記録媒体やインターネットを介してソフトウエアのダウンロードによりインストールすることで、コンピュータ上に構築されている。
本発明の分散クエリ処理装置では、クエリ処理エンジン４の特性とクエリの内容に応じてユーザクエリを処理毎に分割するに際して、適切にクエリ分割を行うため処理毎の出力データサイズを計算する上で必要となる処理毎の入力レコード数と出力レコード数との比（Selectivity Factor、以下SF値と呼ぶ）を計算するために、効率的に出力レコード数を計測し収集することが行われる。
【００１８】
分散クエリ処理装置１が構築されるコンピュータは、オペレーティングシステム（ＯＳ）を含む基本プログラムや各種の基本デバイスが記憶されたＲＯＭと、各種のプログラムションやデータが記憶されるハードディスクドライブ装置(HDD)と、CR-ROMやDVD等の記憶媒体からプログラムやデータを読み出すメディアドライブ装置と、プログラムを実行するCPUと、このCPUにワークエリアを提供するRAMと、入出力インターフェース(I/F)を介して接続されたディスプレイ、キーボードおよびマウス等のポインティングデバイスと、外部装置と通信するパラレル／シリアルI/Fとを主要部分とする一般的な構成を備えている。
本実施形態の分散クエリ処理装置１では、分散クエリ処理プログラムがシリアル／パラレルI/Fから入力、またはメディアドライブ装置で読み取られてHDDに予め記憶される。分散クエリ処理プログラムは記憶媒体に記憶され、メディアドライブ装置で読み取られてHDDにインストールされる。
【００１９】
分散クエリ処理システムは、分散クエリ処理装置１と、分散クエリ処理装置１に対してクエリ処理を要求するクライアント２と、ネットワーク３を介して接続されたデータ共有型データベースシステムから構成される。データ共有型データベースシステムは、一つの共有データベース５と複数（１〜N）のクエリ処理エンジン４とを備え、共有データベース５は、複数のクエリ処理エンジン４により共有するようになっている。
【００２０】
クライアント２は、WebアプリケーションサーバやBIツールなどの、データ共有型ベースシステムに対して、クエリ処理を要求するソフトウエア及びこれを実装したハードウェアを指す。
【００２１】
分散クエリ処理装置１は、データベース情報とエンジン情報を保持するマルチデータベース管理データ１０と、マルチデータベース管理データ１０を利用する等して適切なクエリ処理エンジンを選択して分散クエリを生成する分散クエリ生成部１１と、データベースの情報を収集するための計測用クエリを生成する計測用クエリ生成部１２と、計測用クエリを実行する計測部１３と、生成した分散クエリを実行するクエリ実行制御部１４と、ユーザクエリや計測用クエリの実行結果からレコード数やSF値を計算しマルチデータベース管理データ１０のデータベース情報を更新するデータ更新部１５を備えて構成されている。
【００２２】
マルチデータベース管理データ１０は、共有データベース５の各種情報が記憶されたデータベース情報１０ａと、共有データベース５を管理するデータベースマネジメントシステムとしての複数のクエリ処理エンジン４等の情報が記憶されたエンジン情報１０ｂを有することで、各種の情報を保持して管理する。
【００２３】
データベース情報１０ａには、共有データベース５におけるスキーマ群の構成、各スキーマのサイズ、アクセス頻度、各スキーマにおける属性一覧、各属性の名前、型、サイズ、付加情報、クエリ処理における出力結果の構成とサイズの履歴を含む共有データベース５に関する情報が管理されている。
【００２４】
エンジン情報１０ｂには、ノード数、CPUクロック数、CPUコア数、メモリサイズ、ネットワーク帯域、ディスクサイズ、ディスクアクセス帯域、クエリ処理エンジン名、メタデータ及びデータベースの共有の有無、同時実行可能クエリ数、実行不可クエリ、クエリのアルゴリズム情報、リソースの利用状況（CPU利用率、メモリ利用率、ネットワークトラフィック量、ディスク利用量、ディスクスワップ利用量、ディスクI/O量）を含む各クエリ処理エンジン４の特性に関する情報が管理されている。
【００２５】
データ更新部１５は、データベースシステムにおけるクエリ処理エンジン４のエンジン情報１０ｂ及び共有データベース５のデータベース情報１０ａを定期的に又はユーザの要求により収集することで、マルチデータベース管理データ１０を更新する。若しくは、データ更新部１５は、クライアント２を介してユーザから入力されるデータを受け付けることで、マルチデータベース管理データ１０を更新する。
【００２６】
分散クエリ生成部１１では、クライアント２を介してユーザから投稿されたユーザクエリを解釈し、処理毎の出力データサイズを計算して分散クエリを作成し、処理毎に適切なクエリ処理エンジン４を選択する。
計測用クエリ生成部１２は、出力レコード数を計測するための計測用クエリを生成する。処理対象となる入力データサイズが小規模である場合は、計測する処理の条件文をそのまま利用した計測用クエリを生成する。また、入力データサイズが大規模である場合は、入力データからランダムに一定数のデータを抽出して前記条件文を処理する計測用クエリを生成する。
【００２７】
計測部１３は、計測用クエリを実行することで、実行結果から処理の出力レコード数を計測し、入力レコード数と出力レコード数との比（出力レコード数／入力レコード数）であるSF値を計算する。
そして、入力データサイズに算出したSF値を乗算することで、出力データサイズを計算する。
【００２８】
クエリ実行制御部１４は、算出した出力データサイズを利用して適切なクエリ処理エンジン４でクエリの処理を実行するとともに、最終的な実行結果を受け取ってクライアント２に転送する。また、クエリの処理を実行するに際して、必要に応じて、分解されたクエリの中間テーブルを共有データベース５上に作成する。
【００２９】
データベースシステム４の各クエリ処理エンジン４は、共有データベース５に対して投稿されたクエリの処理を行う。共有データベース５は、クエリ処理に必要なデータをクエリ処理エンジン４に提供する。
【００３０】
分散クエリ処理装置１と各クエリ処理エンジン４はネットワーク３を介して接続され、分散クエリ処理装置１で生成された分散クエリは、指定された各クエリ処理エンジン４にネットワーク３を通じて転送され、各クエリの処理結果も同様にネットワーク３を通じてクエリ処理エンジン４から分散クエリ処理装置１へと転送される。
【００３１】
共有データベース５は、物理的に一つである場合だけでなく、複数のデータベースを完全に同期または分散してデータを格納することで仮想的に一つに見せる場合も含まれる。例えば、物理的に離れている複数のデータベースにおいて、ある一つのデータベースへの書き込みが行われると同時に、その更新が他の全てのデータベースにも瞬時に適用される場合、共有する一つのデータベースの形態として適用される。
また、ここでのデータベースは、ハードディスクドライブ（HDD）やメモリなどの情報記憶媒体に保存されたデータベースシステムにおける物理データと、物理データの位置やテーブルスキーマなどのデータベースシステムのデータ構成に関する論理的情報（メタデータ）を含む。
【００３２】
次に、分散クエリ生成部１１における分散クエリの生成、及び、クエリ実行制御部１４におけるクエリの実行の手順について、図２のフローチャートを参照して説明する。
先ず、ユーザクエリのクエリ処理毎の出力容量を計算するために、入力データに対する処理の種類と、処理に利用する条件を抽出する（ステップ２０）。この処理の種類と条件から、出力データの容量を求めるために利用するのがSF値であり、出力データサイズはSF値と入力データ容量の積となる。
【００３３】
次に、SF値の有無を判断する（ステップ２１）。処理対象となる入力データと、処理の種類と、処理に利用する条件に対するSF値がデータベース情報１０ａに既に存在していれば、これを利用してユーザクエリの処理毎の出力データサイズを計算し（ステップ２２）、実行するクエリ処理エンジン４を選択し（ステップ２３）、ユーザクエリを実行する（ステップ２４）。
クエリ処理エンジン４の選択では、処理毎の対象クエリ処理エンジンを選択する。このとき、入出力データサイズや必要なリソース、マルチデータベース管理データ１０のエンジン情報１０ｂが有するSF値を基に、予め定めたクエリ処理エンジン選択基準と照らしあわせた上でクエリ処理エンジン４が選択される。
【００３４】
該当のSF値がデータベース情報１０ａに存在しない場合は、SF値を計算するために出力レコード数を計測する計測用クエリを生成する。計測用クエリをユーザクエリの分割前に実行可能かどうかを判断するために、計測する処理を分類する（ステップ２５）。分類の観点は、入力データのサイズと、クエリの処理の条件がランダム抽出に適しているかどうかを判断して分類する。
【００３５】
すなわち、入力データサイズが小規模でユーザクエリの実行時間に対する影響が小さいのであれば、事前処理が可能であると判断し（ステップ２６）、ユーザクエリの実行前に出力レコード数を計測する事前計測を行う（ステップ２７）。
入力データサイズが大規模な場合は、ランダム抽出することができる条件かどうかを判断してから事前計測を行う（ステップ２７）。例えば、不等号のようにクエリ処理の条件が範囲となるような検索処理に関しては、ランダム抽出によって規模を小さくしてもSF値が変化しないため、ランダム抽出が可能と判断できる。
【００３６】
一方で、等号のように、ランダム抽出によって本来のSF値と大きな差異が生じる場合にはランダム抽出が利用できないと判断し（ステップ２６）、ユーザクエリの実行と並行して出力レコード数を計測する事後計測を行う（ステップ２８）。
【００３７】
なお、SF値を計算すべき処理の条件が複数ある場合には、各条件に対して分類を行い、１つでも事前計測が不可の場合は事後計測となる。
例えば、SQLクエリの条件文が「a > 100 AND b = "xyz"」で、入力データサイズが大規模であった場合、「a > 100」に対する計測は事前処理が可能であるが、「b = "xyz"」に対する計測はランダム抽出ができないため、事後処理の手順が適用される。
【００３８】
図２のステップ２６において、事前処理が可能と判断された場合における計測処理（ステップ２７の事前計測）の手順を図３に示す。
事前計測は、大規模データから統計的に十分な量のデータをランダムに抽出することで、計測時間を大幅に短縮し、ユーザクエリの実行時間に対して大きな影響を与えずに、出力レコード数を計測できる。
【００３９】
そのために、まず処理対象となる入力データサイズから、ランダム抽出が必要かどうかを判断する（ステップ３１）。
入力データサイズが小規模である場合は、計測する処理の条件文をそのまま利用した計測用クエリを生成するが（ステップ３２）、大規模データである場合は、入力データからランダムに一定数のデータを抽出する計測用クエリを生成する（ステップ３３）。
【００４０】
この計測用クエリを実行し、結果から処理の出力レコード数を計測し（ステップ３４）、SF値を計算する（ステップ３５）。このSF値は、データベース情報１０ａとしてマルチデータベース管理データ１０に保存する。
このSF値を利用してユーザクエリの出力データサイズを算出し（ステップ３６）、実行するクエリ処理エンジンを選択する。
これを基にユーザクエリを分割し（ステップ３７）、適切なクエリ処理エンジンで実行する（ステップ３８）。
このような事前計測によれば、ランダム抽出する計測用クエリを実行することにより、ユーザクエリの実行に大きな遅延なく、ユーザクエリの実行前にユーザクエリの出力データサイズを算出することができる。
【００４１】
図２のステップ２６において、事前処理が可能と判断できない場合における計測処理（ステップ２８の事後計測）の手順を図４に示す。
まず、SF値の計算ができないことから、入力されるデータサイズを計算し（ステップ４１）、それを基に実行するクエリ処理エンジンを選択する（ステップ４２）。
【００４２】
次に、SF値を計算すべき処理の条件の個数を計算する（ステップ４３）。
ここで条件が一つの場合は、計測用クエリを作成せずに、ユーザクエリが実行される（ステップ４７）。この出力レコード数を計測してSF値を計算し、ユーザクエリを計測用クエリと兼ねることで、余計なリソース消費を回避することができる。
【００４３】
一方、条件が２つ以上の場合は、それぞれの条件における出力レコード数を計測するための計測用クエリを生成する（ステップ４４）。ここでリソースの消費を抑える目的で、前述のランダム抽出による計測が適用出来る場合は、計測用クエリに対して同様に適用する。
この計測用クエリは、ユーザクエリが実行されるクエリ処理エンジンとは別のクエリ処理エンジンで実行することで、ユーザクエリの実行を阻害することなく実行させる。そのために、ユーザクエリの実行場所や、各クエリ処理エンジンのリソース状況から、計測用クエリをいつどこで実行するかを決定する（ステップ４５）。
【００４４】
そして、各計測用クエリを実行するスレッドを生成することで（ステップ４６）、ユーザクエリとは独立して実行される（ステップ４７）。これと併せて、ユーザクエリも同様に実行される（ステップ４８）。
このような事後計測によれば、ユーザクエリとは別のクエリ処理エンジンで行う計測用クエリの実行によって、ユーザクエリの出力レコード数を計測することで、ユーザクエリが利用するリソースに対する影響を最小限にしつつ、クエリ分割に必要な情報を収集することができる。
【００４５】
そして、ステップ４８のユーザクエリや、ステップ４７の計測用クエリを実行し、その結果から処理の出力レコード数を計測してSF値を計算し、データベース情報としてマルチデータベース管理データ１０に保存する（ステップ４９）。
【００４６】
上述した分散クエリ処理装置によれば、データ共有型マルチデータベースシステムにおいて、クエリ処理エンジン４の特性とクエリの内容に応じてユーザクエリを分割するに際して、データベース情報１０ａからSF値を取得、若しくは、事前計測又は事後計測により効率的に出力レコード数を計測し収集することで、クエリ分割を行うためのSF値を計算するので、クエリ分割に必要な情報収集によるユーザクエリの処理の遅延を削減することができる。
【符号の説明】
【００４７】
１…分散クエリ処理装置、  ２…クライアント、  ３…ネットワーク、  ４…クエリ処理エンジン、  ５…共有データベース、１０…マルチデータベース管理データ、  １０ａ…データベース情報、  １０ｂ…エンジン情報、  １１…分散クエリ生成部、  １２…計測用クエリ生成部、  １３…計測部、  １４…クエリ実行制御部、  １５…データ更新部。
【図１】
2015125726.tif 000003
【図２】
2015125726.tif 000004
【図３】
2015125726.tif 000005
【図４】
2015125726.tif 000006