(57)【要約】複数のプロセッサ及びメモリリソースを有するエンタープライズ・データウェアハウス・システム又はビジネスインテリジェンス・システムである。システムは、少なくともデータベースサーバ１１２、ワークロード管理システム１２２、クエリコンパイラ、及びクエリエグゼキュータを含む。データベースサーバ１１２は、データベースクライアントシステム１０２のアプリケーション１０４からデータベースクエリを受信する。クエリコンパイラは、クエリの実行プランを作成し、クエリの各ＥＳＰ層における実行サーバプロセスＥＳＰの数を計算する。ワークロード管理システム１２２はアフィニティ値を生成し、クエリエグゼキュータはクエリを実行する。ここに開示したとおり、クエリの実行サーバプロセス層の、計算システムのプロセッサ上への配置はアフィニティ値を用いて決定される。更に、その他の実施形態、様態及び特徴を開示する。【選択図】図２
2011504272.tif 000002
【特許請求の範囲】
【請求項１】
データベースクエリを処理するための高並列計算システムのリソース自動割り当て方法であって、
クライアントシステムのアプリケーションから前記データベースクエリを受信し、
前記クエリをコンパイルし、前記クエリの各ＥＳＰ層における実行サーバプロセス（ＥＳＰ）の数を計算し、
アフィニティ値を生成し、
前記クエリを実行し、これにより前記クエリのＥＳＰ層の、前記計算システムのプロセッサ上への配置が前記アフィニティ値を用いて決定され、
その実行結果を前記アプリケーションに返送することを特徴とする方法。
【請求項２】
前記クエリに対する並列処理の最高レベルを更に計算することを特徴とする請求項１に記載の方法。
【請求項３】
前記並列処理の最高レベルの前記計算が、前記クエリが必要とする推定メモリリソースおよび前記クエリが必要とする推定ＣＰＵリソースを計算することを含むことを特徴とする請求項２に記載の方法。
【請求項４】
ＣＰＵサブセットの形成にプロセッサのインターリーブされた順番付けを用いることを特徴とする請求項１に記載の方法。
【請求項５】
前記アフィニティ値は様々なプロセッササブセットサイズに対してプロセッササブセットを指定することを特徴とする請求項１に記載の方法。
【請求項６】
前記アフィニティ値により指定される前記プロセッササブセットは、任意の変数にスキップ値を乗じてオフセット値を加算することにより得られ、
前記変数はゼロから、ＥＳＰ層における実行サーバプロセスの数から１減じた値であることを特徴とする請求項５に記載の方法。
【請求項７】
ＥＳＰ層をＣＰＵサブセット上に配置する際に周期的な配置を行うことを特徴とする請求項１に記載の方法。
【請求項８】
前記アフィニティ値は前記システムの現在のランタイム状態に基づくことを特徴とする請求項１に記載の方法。
【請求項９】
前記アフィニティ値はランダムに生成されることを特徴とする請求項１に記載の方法。
【請求項１０】
前記アフィニティ値は前記クエリのソースに基づくことを特徴とする請求項１に記載の方法。
【請求項１１】
エンタープライズ・データウェアハウス・システム又はビジネスインテリジェンス・システムに用いる高並列計算装置であって、
前記高並列計算システムの複数のプロセッサと、
前記高並列計算システムのメモリリソースと、
前記データベースクエリをデータベースクライアントシステムのアプリケーションから受信するデータベースサーバと、
前記クエリの実行プランを作成し、前記クエリの各ＥＳＰ層における実行サーバプロセス（ＥＳＰ）の数を計算するクエリコンパイラと、
前記装置の現在のランタイム状態に基づいてアフィニティ値を生成するワークロード管理システムと、
前記クエリを実行し、これにより前記クエリのＥＳＰ層の、前記計算システムのプロセッサ上への配置が前記アフィニティ値を用いて決定されるクエリエグゼキュータとを備えることを特徴とする装置。
【請求項１２】
前記クエリに対する並列処理の最高レベルを計算するクエリ最適化モジュールを更に備えることを特徴とする請求項１１に記載の装置。
【請求項１３】
前記並列処理の最高レベルの前記計算が、前記クエリが必要とする推定メモリリソースおよび前記クエリが必要とする推定プロセッサリソースを計算することを含むことを特徴とする請求項１２に記載の装置。
【請求項１４】
プロセッササブセットの形成にプロセッサのインターリーブされた順番付けを用いることを特徴とする請求項１１に記載の装置。
【請求項１５】
前記アフィニティ値は様々なプロセッササブセットサイズに対してプロセッササブセットを指定することを特徴とする請求項１１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般的にはコンピュータシステムおよびソフトウェアシステムに関する。より詳細には、本出願は並列データベースシステムに関する。
【背景技術】
【０００２】
典型的なビジネスインテリジェンス（ＢＩ）環境において、データベースシステムはそれぞれ複雑性が大きく異なる多数のクエリを処理する。このクエリの複雑性は、データベーステーブル内の数行にのみアクセスする小さいクエリから、多数行を処理する中間のクエリ、そして更に多くの行を処理する大きいクエリを含む。このような並列混在・ワークロードはＢＩシステムおよびエンタープライズ・データウェアハウス（ＥＤＷ）システムに対する課題を有する。これらのシステムは一般的に、協働してワークロードを処理する多数のプロセッサを含む。
【発明の概要】
【０００３】
多数の中央処理装置（ＣＰＵ）を備えるＢＩシステム又はＥＤＷシステム上で実行されるクエリを考える。１個のクエリをシステムの全ＣＰＵ上で実行するためには、そのクエリデータを全ＣＰＵにわたって（すなわち各ＣＰＵに対して）再分割し、所定の場合には複製する必要がある場合が多い。クエリのサイズおよびＣＰＵの数によっては、そのような分割化は大きいオーバヘッドを引き起こす場合がある。そのようなオーバヘッドは、ＢＩシステム又はＥＤＷシステムにおける超並列処理による利益を損なってしまう可能性もある。したがって、全クエリを最高レベルの（すなわちシステムの全ＣＰＵ上での）並列処理で実行すると、通常、システムのリソースを非効率的に使用することになってしまう。
【０００４】
したがって、クエリ毎に異なるレベルの並列処理で異なるクエリを実行できるようにすれば有益である。例えば、小さいクエリは１個のＣＰＵ上で最も効率的に実行され、一方で大きいクエリは大容量のデータを効果的に処理するためにシステムの全ＣＰＵを使用してもよい。その中間として、中間サイズのクエリをシステムのＣＰＵサブセット上でより効率的に実行してもよい。
【０００５】
しかしながら、本出願人が考えるように、小さいクエリおよび中間のクエリをシステムのＣＰＵサブセット上で実行することにより以下のような更なる課題が発生する。
【０００６】
（１）システムにおいて、クエリが必要とすると予想されるリソースを判断し、並列処理のレベルを下げることによるリソース不足が発生しないようにする必要がある。
【０００７】
（２）システムのＣＰＵにわたってクエリ／ワークロードを均衡化して、クエリを公平に実行し、またシステムリソースを効率的に利用する必要がある。
【０００８】
（３）クエリに対してＣＰＵを割り当てる際、リソース競合およびコンテキストスイッチを最小限に抑える、又は制限するため、１個のＣＰＵが実行するクエリの数を最小限に抑える、又は制限する必要がある。
【０００９】
更に、クエリの実行時間はそれぞれ大幅に異なる可能性がある。したがって、システムのＣＰＵにわたってクエリを均一に分散させても、必ずしもワークロードを均衡に分散できるわけではない。したがって、出願人は、ワークロードをＣＰＵ間で効果的に均衡化するためには、通常、他と比べて稼動率の低いＣＰＵを特定するためのランタイムシステムからのフィードバックが必要であると考える。
【００１０】
ここに開示した解決法は、ＣＰＵノードをグループに分割する従来の解決法とは異なり、使用者により設定される分割スキームに依存しない。代わりに、ここに開示した解決法は、クエリの関連特性に基づいて複数のＣＰＵを選択し、また、適応分割によりシステムにわたってクエリを自動的に均衡化する。
【００１１】
クエリを並列実行するため、データを、実行サーバプロセス（ＥＳＰ）を用いてクエリの一部を実行する各関連ＣＰＵに分散させる。クエリプランの工程によっては、次の実行工程のために、データを複数回にわたって異なるＥＳＰの組に再分散させる必要がある場合がある。１個のクエリに対して（データの異なる部分に対して）同一のタスクを実行する各ＥＳＰグループをＥＳＰ層と称する。１個のクエリは、実行工程に応じて少なくとも１個のＥＳＰ層を備えていてもよい。クエリの任意のＥＳＰ層におけるＥＳＰの最大数が、クエリが必要とするＣＰＵの総数を決定し、このクエリが必要とするＣＰＵの総数を以下においては並列処理のレベルと称する。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施形態による、システムの様々な構成要素および一連のリクエストフローを示す概略図である。
【図２】図２は、本発明の実施形態による、一連のリクエストフローをより詳細に示すフローチャートである。
【図３Ａ】図３Ａは、本発明の実施形態による、クエリが必要とする推定メモリリソースを計算するための手順のフローチャートである。
【図３Ｂ】図３Ｂは、本発明の実施形態による、クエリが必要とする推定ＣＰＵリソースを計算するための手順のフローチャートである。
【図３Ｃ】図３Ｃは、本発明の実施形態による、クエリに対する並列処理の最高レベルを計算するための手順のフローチャートである。
【図４】図４は、本発明の実施形態による、１６個のＣＰＵを備えるシステムの例における全サブセットサイズに対するＣＰＵサブセット、およびアフィニティ・グループの一例を示す。
【図５】図５は、本発明の実施形態による、実行サーバプロセス（ＥＳＰ）層を配置する様態および特徴を示す図である。
【図６】図６は、システムのＣＰＵ上位集合からＣＰＵサブセットを選択するための２個の分散スキームを示す図である。本発明の実施形態によれば、第１のスキームは連続するＣＰＵのサブセットであり、第２のスキームはＣＰＵのインターリーブされた順番付けである。
【図７】図７は、アフィニティ・グループ内のどのＣＰＵサブセットがアフィニティ値および層におけるＥＳＰの数により指定されるか決定するための手順のフローチャートである。
【図８】図８は、本発明の実施形態による、ＥＳＰ層を周期的に配置した場合と非周期的に配置した場合の差異を示す例である。
【図９】図９は、本発明の実施形態による方法を実行可能なコンピュータ装置の一例を示す概略図である。
【発明を実施するための形態】
【００１３】
図１は、本発明の実施形態による、システムの様々な構成要素および一連のリクエストフローを示す概略図である。図示したように、図１のシステムはＯＤＢＣ／ＪＤＢＣ（オープン・データベース・コネクティビティ／Ｊａｖａ（Ｊａｖａは登録商標）データベースコネクティビティ）クライアント１０２を含み、ＯＤＢＣ／ＪＤＢＣクライアント１０２はアプリケーション１０４およびドライバ１０６を備えていてもよい。当然ながら、システムはそのようなクライアント１０２を２個以上含んでいてもよい。システムはまた、エンタープライズ・データウェアハウス（ＥＤＷ）サーバ１１２およびワークロード管理サービス（ＷＭＳ）システム１２２を含む。本発明の本実施形態におけるＷＭＳの役割は、ランタイムシステムからのフィードバックを収集し、このフィードバックに基づいてアフィニティ値を生成することである。アフィニティ値については、以下において例えば図４に関連して更に説明する。本発明のその他の実施形態においては、異なる方法でアフィニティ値を生成してもよい。このアフィニティ値の生成は、ＥＤＷサーバ外部又は内部のどちらで行ってもよい。例えば、ＥＤＷサーバは乱数生成器によりアフィニティ値を生成してもよく、又はクエリのソースに基づいてアフィニティ値を生成してもよい。システムのこれらの構成要素間における一連のリクエストフローは、矢印および連続する数１から１１で示す。
【００１４】
図２は、本発明の実施形態による、一連のリクエストフローをより詳細に示すフローチャートである。図示したように、第１のブロック１は、データベースクエリを作成し、作成したクエリをＥＤＷサーバ１１２に送信するアプリケーション１０４に関する。
【００１５】
本発明の実施形態によれば、ＥＤＷサーバ１１２は、クエリオプティマイザモジュールを用いてクエリに対する並列処理の最高レベル（ＭＤＯＰ）を決定してもよい。このクエリオプティマイザは通常、システムにおけるＣＰＵ１個から全ＣＰＵまで、並列処理の任意のレベルを考慮する。並列クエリの数が少ない状況においては、ほとんどのクエリに対する並列処理のレベルを安全に低下させることにより、リソースをより有効に活用してもよい。リソースの有効活用はまた、クエリ毎にＭＤＯＰを決定することにより実現してもよい。クエリオプティマイザは、対象のクエリに対して計算されたＭＤＯＰを超えない並列処理レベルを有するクエリプランのみを考慮するよう構成してもよい。以下において、クエリに対してＭＤＯＰを決定する方法を図３Ａ〜図３Ｃに関連して説明する。
【００１６】
第２のブロック２において、ＥＤＷサーバ１１２は自己のクエリコンパイラにクエリを作成するようリクエストする。
【００１７】
第３のブロック３において、クエリコンパイラはコンパイル済みクエリを返送する。この時点において、コンパイル済みクエリは各ＥＳＰ層におけるＥＳＰの数を指定するが、特定のＣＰＵサブセットには対応していない。その後、ＥＤＷサーバ１１２は、ブロック４において「成功」の表示又は通知をアプリケーション１０４に返送する。
【００１８】
その後、アプリケーション１０４はブロック５においてクエリの実行をリクエストし、サーバ１１２はリクエストを受信すると、ブロック６においてクエリを実行する許可のリクエストをＷＭＳ１２２に送信する。ＷＭＳ１２２は、適切な場合、ブロック７においてサーバ１１２にクエリの実行を許可する。
【００１９】
本発明の実施形態によれば、ＷＭＳ１２２は現在のランタイム状態に基づいてアフィニティ値を決定し、決定したアフィニティ値をブロック７においてＥＤＷサーバ１１２に返送する。このアフィニティ値は、実行サーバプロセス（ＥＳＰ）の配置に使用するために選択されるＣＰＵサブセットを指定（適応分割）し、また、ロードバランシングを実現するために効果的に用いてもよい。ＷＭＳは、アフィニティ値の決定に有効な、システムの現在の状態に関する所定の全体情報にアクセス可能である。これについては、図１において、ＷＭＳシステムのシステム情報およびランタイムシステム（ＲＴＳ）へのアクセスとして示す。この全体情報は、現在実行中のクエリに割り当てられるアフィニティ値の組を含む。アフィニティ値については、以下において例えば図４に関連して更に説明する。
【００２０】
サーバ１１２は、ブロック８においてエグゼキュータ（ＥＸＥ）にクエリの実行をリクエストする。このリクエストにはエグゼキュータ（ＥＸＥ）が使用するためのアフィニティ値を含む。エグゼキュータはアフィニティ値を用いてＣＰＵ上にＥＳＰを配置する。以下において、ここに開示の、アフィニティ値を用いてＣＰＵ上にＥＳＰを配置する方法については、以下において図５から図８に関連して更に説明する。
【００２１】
エグゼキュータ（ＥＸＥ）は、ブロック９においてアフィニティ値に基づいてコンパイル済みクエリをＣＰＵ上に配置し、クエリを実行して結果を返送する。その後、サーバ１１２は、ブロック１０においてＷＭＳにアフィニティ値を解放するようリクエストし、また、ブロック１１において結果をアプリケーション１０４に返送する。
【００２２】
図３Ａは、本発明の実施形態による、クエリが必要とする推定メモリリソースを計算するための手順３００のフローチャートである。まず、初期クエリプランを構成する（３０１）。この工程により、最適化の初期段階において全体として良好なクエリプランが作成される。好ましくは、初期クエリプランは、クエリ内の最大テーブルにアクセスするためのコスト、およびジョインツリー全体において動作するレコードの数を最小限に抑えるよう構成される。なお、この時点において、クエリプランは論理演算子からなるツリーである。初期クエリプランが形成されると、各ツリーノードにアクセス（３０２）し、ツリーノードに対応する論理演算子に対して予想消費メモリを計算（３０４）し、計算したノードに対する予想消費メモリを蓄積して（３０６）クエリプランを処理していく。クエリプランのツリー全体を処理し終わる（３０８）と、蓄積された予想消費メモリの合計をクエリプランが必要とする推定メモリリソース（ＥＭＲ）として出力（３１０）してもよい。
【００２３】
同様に、図３Ｂは、本発明の実施形態による、クエリが必要とする推定ＣＰＵリソースを計算するための手順のフローチャートである。同様に、初期クエリプランが形成される（３２１）と、各ツリーノードにアクセス（３２２）し、ツリーノードに対応する論理演算子に対して推定仕事量を計算（３２４）し、計算したノードの推定仕事量を蓄積（３２６）してクエリプランを処理していく。クエリプランのツリー全体を処理し終わる（３２８）と、蓄積された推定仕事量の合計をクエリプランが必要とする推定ＣＰＵリソース（ＥＣＲ）として出力（３３０）してもよい。
【００２４】
図３Ｃは、本発明の実施形態による、クエリに対する並列処理の最高レベルを計算するための手順のフローチャートである。図３Ａおよび図３Ｂに関連して上述したように、クエリが必要とするＥＭＲを計算（３００）し、クエリが必要とするＥＣＲを計算（３２０）する。
【００２５】
その後、ＥＭＲを、各ＣＰＵにおけるクエリが使用可能なメモリ量を示す定数Ｍｅｍｏｒｙ＿Ｕｎｉｔで除算する（３５０）。これにより、クエリを実行するＣＰＵの使用可能メモリ不足によりクエリの実行が妨げられる範囲まで、並列処理レベルが制限されないことを保証する。同様に、ＥＣＲを、システムの最高並列処理で実行されていないクエリについて各ＣＰＵに割り当て可能な仕事量を示す定数Ｗｏｒｋ＿Ｕｎｉｔで除算する（３５２）。これにより、大容量データを処理するクエリが十分なレベルの並列処理で実行されるようにする。
【００２６】
その後、ＥＭＲ／Ｍｅｍｏｒｙ＿ｕｎｉｔおよびＥＣＲ／Ｗｏｒｋ＿ｕｎｉｔの最大値を選択（３５４）し、選択した最大値を、システムにおけるＣＰＵの総数まで、適応分割ブロックサイズ（ＡＳＢＳ）の２M倍の最近似値（但し、Ｍ＝０，１，２，３，．．．）まで切上げる。ＡＳＢＳ値は１個のクエリに割り当て可能なＣＰＵの最小数を示す。これはシステム構成に該当し、ＣＰＵは１個と設定してもよい。その後、切上げした値を並列処理の最高レベル（ＭＤＯＰ）として出力する。この手順により、小さいクエリ用には最小のＡＳＢＳ、中間サイズのクエリ用には２M倍のＡＳＢＳ、そして非常に大きいクエリ用にはシステムの全ＣＰＵと、異なるクエリを様々なレベルの並列処理を用いて最適化することができる。
【００２７】
図４は、本発明の実施形態による、１６個のＣＰＵを備えるシステムの例における全サブセットサイズ４０４に対するＣＰＵサブセット４０２、およびアフィニティ・グループの一例を示す。各行において示すように、ＣＰＵはインターリーブされた順番（０，８，４，１２，２，１０，６，１４，１，９，５，１３，３，１１，７，１５）で番号を有する。本実施例による並列計算システムは説明の簡潔性を目的としてＣＰＵを１６個有するが、本出願においては、実際の並列計算システムは例えば１２８個、２５６個、又は５１２個等、より多くのＣＰＵを有していてもよいこととする。
【００２８】
ＣＰＵサブセットサイズ１６を有する第１の（最上の）行は、１６個の全ＣＰＵを有する１個のＣＰＵサブセット４０２からなる。ＣＰＵサブセットサイズ８を有する第２の行は、各々が８個のＣＰＵを有する２個のＣＰＵサブセット４０２からなる。そのうち第１のサブセットは偶数番号のＣＰＵを有し、第２のサブセットは奇数番号のＣＰＵを有する。同様に、ＣＰＵサブセットサイズ４を有する第３の行は、各々が４個のＣＰＵを有する４個のＣＰＵサブセット４０２からなり、ＣＰＵサブセットサイズ２を有する第４の行は、各々が２個のＣＰＵを有する８個のＣＰＵサブセット４０２からなり、ＣＰＵサブセットサイズ１を有する第５の行は、各々が１個のＣＰＵを有する１６個のＣＰＵサブセット４０２からなる。
【００２９】
本実施例においては、アフィニティ値＝５で指定されるＣＰＵサブセットを示す。ＣＰＵサブセットのうち灰色の網掛け部分がアフィニティ値＝５で指定されるＣＰＵサブセットである。
【００３０】
図示したように、アフィニティ値は各サブセットサイズ４０４に対して１個のＣＰＵサブセット４０２（すなわち、各行につき１個のサブセット）を指定する。アフィニティ番号が５であるため、指定された各サブセットはＣＰＵ番号５を含む。したがって、ＣＰＵサブセットサイズ１（最下行）に対してはＣＰＵサブセット｛５｝が指定（灰色で網掛け）され、ＣＰＵサブセットサイズ２に対してはＣＰＵサブセット｛５，１３｝が指定され、ＣＰＵサブセットサイズ４に対してはＣＰＵサブセット｛１，９，５，１３｝が指定され、ＣＰＵサブセットサイズ８に対してはＣＰＵサブセット｛１，９，５，１３，３，１１，７，１５｝が指定され、ＣＰＵサブセットサイズ１６に対してはＣＰＵサブセット｛０，８，４，１２，２，１０，６，１４，１，９，５，１３，３，１１，７，１５｝が指定される。任意のアフィニティ値により定義されるＣＰＵサブセットの組をアフィニティ・グループと称する。
【００３１】
図５は、本発明の実施形態による、実行サーバプロセス（ＥＳＰ）層を配置する様態および特徴を示す図である。各クエリは、ＣＰＵ上で実行するために対象のＣＰＵ上に配置する必要がある実行サーバプロセス（ＥＳＰ）層を少なくとも１個有していてもよく、各ＥＳＰ層は少なくとも１個のＥＳＰを有していてもよい。
【００３２】
第１に、任意のＥＳＰ層におけるＥＳＰはシステム全体にわたって分散される。この分散は、インターリーブされた順番のＣＰＵをＣＰＵサブセットとして用いることにより行ってもよい。この、順番をインターリーブして行われる分散の例を図６に示し、以下において更に説明する。
【００３３】
第２に、各ＥＳＰ層は、ＷＭＳ又はアフィニティ値の生成に用いられるその他の構成要素により返送されるアフィニティ値に基づいて、２N個の異なるＣＰＵサブセットのうち１個の上に配置される。この第１の様態の一実施例については、以下において図７に関連して更に説明する。
【００３４】
最後に、第３の任意の様態において、クエリの各ＥＳＰ層はそれぞれ異なるアフィニティ値に基づいて配置されてもよい。この第３の様態の一実施例については、以下において図８に関連して更に説明する。
【００３５】
図６は、本発明の実施形態による、ＥＳＰ割り当てのためにＣＰＵサブセットを選択するための２個の分散スキームを示す図であり、それぞれ連続する順番のＣＰＵおよびインターリーブされた順番のＣＰＵを用いる。上のグラフは、ＥＳＰ層のＥＳＰが連続する一組のＣＰＵ上に配置される例を示す。一方、下のグラフは、ＥＳＰ層のＥＳＰがインターリーブされた一組のＣＰＵ上に配置される例を示す。インターリーブされた順番を用いるスキームを、本書類を通して本発明の好ましい実施形態として用いる。
【００３６】
図７は、アフィニティ・グループ内のどのＣＰＵサブセットがアフィニティ値により指定されるか決定するための手順のフローチャートである。ブロック７０２において、各配置間でスキップするＣＰＵの数を計算する。このスキップ数は、システム内のＣＰＵ数を任意のＥＳＰ層内のＥＳＰ数で除算した値に等しい。一実施例において、この除算により得られる値は１以上の整数でなければならない。
【００３７】
ブロック７０４において、配置を開始するために用いるオフセットを決定する。このオフセット値は、アフィニティ値をスキップ数でモジュロ演算した値（％）に等しい。このモジュロ演算により得られる値は、ゼロと（スキップ数−１）の間の数である。
【００３８】
ブロック７０６において、使用するＣＰＵサブセットはｉにスキップ数を乗じてオフセット値を加算することにより得られ、ｉはゼロから、ＥＳＰ層のＥＳＰ数から１を減じた値をとる。
【００３９】
図８は、本発明の実施形態による、ＥＳＰ層を周期的に配置した場合と非周期的に配置した場合の差異を示す例である。１６個のＣＰＵを有するシステムおよび各々が４個のＥＳＰを有する３個のＥＳＰ層を有するクエリの例を考える。また、アフィニティ値は６とする。
【００４０】
非周期的に配置する場合、ＥＳＰ層の配置は、クエリの全ＥＳＰ層が１個のアフィニティ値（この場合、アフィニティ番号６）に基づいて配置される条件（Ａ）に基づいて行われる。したがって、４個のＥＳＰ層全てがＣＰＵサブセット｛２，６，１０，１４｝上に配置される。したがって、本実施例においては、非周期的な配置によりＣＰＵの４分の１のみが使用される。
【００４１】
一方、周期的に配置する場合、ＥＳＰ層の配置は、第１のＥＳＰ層がアフィニティ番号６に基づいて配置される条件（Ｂ）に基づいて行われる。しかしながら、第２のＥＳＰ層を配置する際には、アフィニティ番号は６から７にインクリメントされ、更に、第３のＥＳＰ層を配置する際には、アフィニティ番号は７から８にインクリメントされる。したがって、第１のＥＳＰ層はＣＰＵサブセット｛２，６，１０，１４｝上に配置されるが、第２のＥＳＰ層はＣＰＵサブセット｛３，７，１１，１５｝上に配置され、第３のＥＳＰ層はＣＰＵサブセット｛０，４，８，１２｝上に配置される。したがって、本実施例においては、周期的な配置によりＣＰＵの４分の３が使用される。この周期的な配置によれば、より効果的なロードバランシングが可能となり望ましい。
【００４２】
図９は、本発明の実施形態による方法を実行可能なコンピュータ装置の一例を示す概略図である。本実施例においては、コンピュータ装置は超並列処理システムを備える。一実施形態において、コンピュータ装置は、各々がプロセッサ９０２および対応するメモリ９０４を含む複数のノード９０６を備えていてもよい。ノードは相互接続ネットワーク９０８により相互接続する。コンピュータ装置のその他のアーキテクチャにおいては、異なる実施形態を用いてもよい。
【００４３】
本発明の実施形態によれば、上述の工程は、コンピュータ読取り可能な媒体又はコンピュータ読取り可能なメモリに記憶される、プロセッサ実行可能な命令として実装される。このプロセッサ実行可能な命令は例えば、図９に示すようなコンピュータ装置上で実行してもよい。
【００４４】
上述の説明において、本発明の実施形態を十分に理解してもらうために様々な具体的詳細を提示した。しかしながら、本発明における図示の実施形態についての上述の説明は、本発明を開示した形態そのものに限定することを意図するものではない。当業者は、本発明は具体的な詳細なしに、また、他の方法、構成要素等を用いて実施可能であると理解するものとする。また、本発明の様態を不明瞭にすることのないよう、公知の構造又は工程は詳細に図示又は説明しない。本発明の特定の実施形態および実施例を説明を目的として記述したが、当業者が理解する通り、本発明の範囲内において様々な均等な変更が可能である。
【００４５】
本発明に対するこれらの変更は、上述の詳細な説明を考慮して行ってもよい。以下の特許請求の範囲において用いられる用語は、本発明を本明細書および特許請求の範囲に開示される特定の実施形態に制限すると解釈されるべきではない。本発明の範囲はむしろ、請求項解釈の確立された教義に基づいて解釈されるべき以下の特許請求の範囲により決定されるものとする。
【図１】
2011504272.tif 000003
【図２】
2011504272.tif 000004
【図３Ａ】
2011504272.tif 000005
【図３Ｂ】
2011504272.tif 000006
【図３Ｃ】
2011504272.tif 000007
【図４】
2011504272.tif 000008
【図５】
2011504272.tif 000009
【図７】
2011504272.tif 000010
【図８】
2011504272.tif 000011
【図９】
2011504272.tif 000012
【図６】
2011504272.tif 000013
【国際調査報告】
2011504272.tif 000014
2011504272.tif 000015