スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

4.5.4 フロータブルサーバの割り当て方法(HiRDB/パラレルサーバ限定)

<この項の構成>
(1) HiRDBでの問合せ処理方式
(2) フロータブルサーバの割り当てに関する最適化の特徴
(3) フロータブルサーバの割り当て候補数に関する最適化の特徴
(4) 各最適化でのフロータブルサーバの割り当て方法

(1) HiRDBでの問合せ処理方式

HiRDB/パラレルサーバでのSQL文の問合せ処理は,主に3ステップに分けて実行しています。HiRDB/パラレルサーバでのSQL文の問合せ処理方式を次の図に示します。

図4-17 HiRDB/パラレルサーバでのSQL文の問合せ処理方式

[図データ]

[説明]
  1. バックエンドサーバでデータを取り出します。2表以上の問合せの場合,結合方式によってはバックエンドサーバ間でデータの通信が実行され,ステップ1.が更に数段階になるときがあります。
  2. フロータブルサーバでグループ化,ソート,重複排除,集合演算処理などをします。処理方式によっては,フロータブルサーバを使用しない場合や,フロータブルサーバ間でデータの通信が実行され,ステップ2.が更に数段階になるときがあります。
  3. フロントエンドサーバで問合せ結果を集めて,クライアントに転送します。

 

HiRDBでは,ステップ2で使用するフロータブルサーバは,SQLごとにそのSQLでアクセスしないバックエンドサーバを自動的に割り当てます。ただし,SQL最適化オプションを指定した場合には,フロータブルサーバの割り当て方法を変更できます。

フロータブルサーバの割り当てに関する最適化を次に示します。なお,これらの最適化の特徴については,「(2) フロータブルサーバの割り当てに関する最適化の特徴」を参照してください。

また,次の最適化を適用すると,フロータブルサーバの割り当て台数を最大値まで増やせます。なお,この最適化の特徴については,「(3) フロータブルサーバの割り当て候補数に関する最適化の特徴」を参照してください。

(2) フロータブルサーバの割り当てに関する最適化の特徴

フロータブルサーバの割り当てに関する最適化の特徴を次の表に示します。

表4-7 フロータブルサーバの割り当てに関する最適化の特徴

最適化方法 長 所 短 所
省略した場合 データ取り出しバックエンドサーバに,ソートなどの負荷が掛かる処理を割り当てないため,同時に同じバックエンドサーバからデータを取り出すSQL文を実行した場合,高速に検索できます。 データ取り出し以外のバックエンドサーバをフロータブルサーバとして割り当てるため,通信負荷が高くなります。
フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ) 「フロータブル候補数の拡大」と組み合わせると,フロータブルサーバをすべてのバックエンドサーバに割り当てるため,フロータブルサーバでのソートなどの並列処理の効果が高くなります。 複数のSQL文を同時に実行する場合,同一フロータブルサーバに複数の処理が割り当てられるため,同時実行性が損なわれます。また,通信負荷も高くなります。
フロータブルサーバ対象限定(データ取り出しバックエンドサーバ) 検索に使用する表が定義されているバックエンドサーバにだけ,フロータブルサーバを割り当てるため,表定義によって使用するバックエンドサーバを使い分けることができます。 分割数が少ない表に大量のデータが格納されている場合は,使用できるフロータブルサーバが少なくなるため,すべてのバックエンドサーバを有効に使用できなくなります。
データ収集用サーバの分離機能 データ収集用サーバにデータを送る場合,同じサーバと別サーバから同時にデータが転送されると,同じサーバからの転送を優先します。これによって,別サーバの処理は後になってしまいます。データ収集用サーバの分離機能を適用すると,すべてのサーバを別サーバとして扱うことができるので,すべてのサーバから均等にデータを受け取れるようになります。 1SQL文中に集合演算,副問合せを伴った検索など,問合せが複数個ある場合は,常に同じフロータブルサーバが使用されるため,同時実行性が損なわれます。

(3) フロータブルサーバの割り当て候補数に関する最適化の特徴

フロータブルサーバの割り当て候補数に関する最適化の特徴を次の表に示します。

表4-8 フロータブルサーバの割り当て候補数に関する最適化の特徴

最適化方法 長 所 短 所
省略した場合 データ件数が多い検索では,フロータブルサーバの割り当て台数を多くします。データ件数が少ない検索では,フロータブルサーバの割り当て台数を少なくします。 探索条件に=やBETWEENなどの絞り込める述語を指定している場合,HiRDBはデータ件数が少ないと判断します。実際に=やBETWEENなどであまり絞り込めない場合でも,フロータブルサーバの割り当て台数を少なくするため,サーバの処理負荷が高くなります。
フロータブルサーバ候補数の拡大 データ件数が多い検索では,すべてのフロータブルサーバを使用して効率的に検索できます。 データ件数が少ない検索でもすべてのフロータブルサーバを使用するため,SQL文の同時実行性が損なわれます。また,サーバ間の通信経路が複雑になるため,表の分割数が多い場合には,通信負荷も高くなります。

(4) 各最適化でのフロータブルサーバの割り当て方法

(a) 最適化方法を省略した場合

最適化方法を省略した場合のフロータブルサーバの割り当てを次の図に示します。

図4-18 最適化方法を省略した場合のフロータブルサーバの割り当て

[図データ]

[説明]
「フロータブルサーバ候補数の拡大」を指定しない場合は,FLT1及びFLT2から,HiRDBがフロータブルサーバとして必要と判断した台数を割り当てます。ただし,FLT1及びFLT2の両方を割り当てるとは限りません。
「フロータブルサーバ候補数の拡大」を指定した場合は,FLT1及びFLT2の両方を割り当てます。
表を定義していないバックエンドサーバがある場合で,複数のSQLから同じデータを取り出し,データ取り出しバックエンドサーバをデータ取り出し処理にだけ使用するときに適用してください。
(b) フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)を適用する場合

フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)を適用する場合のフロータブルサーバの割り当てを次の図に示します。

図4-19 フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)を適用する場合のフロータブルサーバの割り当て

[図データ]

[説明]
「フロータブルサーバ候補数の拡大」を指定しない場合は,BES1,BES2,BES3,FLT1,及びFLT2から,HiRDBがフロータブルサーバとして必要と判断した台数を割り当てます。ただし,すべてのサーバを割り当てるとは限りません。
「フロータブルサーバ候補数の拡大」を指定した場合は,BES1,BES2,BES3,FLT1,及びFLT2を割り当てます。
SQL文を単独で実行する場合で,すべてのバックエンドサーバを効率的に使用するときに適用してください。
(c) フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)を適用する場合

フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)を適用する場合のフロータブルサーバの割り当てを次の図に示します。

図4-20 フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)を適用する場合のフロータブルサーバの割り当て

[図データ]

[説明]
「フロータブルサーバ候補数の拡大」を指定しない場合は,BES1,BES2,及びBES3から,HiRDBがフロータブルサーバとして必要と判断した台数を割り当てます。ただし,BES1,BES2,及びBES3すべてを割り当てるとは限りません。
「フロータブルサーバ候補数の拡大」を指定した場合は,BES1,BES2,及びBES3を割り当てます。
複数のSQL文を実行する場合で,それぞれの検索が別のバックエンドサーバに定義されている表をアクセスし,表ごとに使用するバックエンドサーバを分けて運用するときに適用してください。
(d) データ収集用サーバの分離機能を適用する場合

データ収集用サーバの分離機能を適用する場合のフロータブルサーバの割り当てを次の図に示します。

図4-21 データ収集用サーバの分離機能を適用する場合のフロータブルサーバの割り当て

[図データ]

[説明]
複数のBESから1か所のBESにデータを集める(データ収集処理)必要のあるSQLに対しては,FLT1,FLT2,及びFLT3から,データ収集用にFLT3を割り当てます。SQL文中でデータ収集処理を複数回実行する場合は,必ずこのデータ収集用サーバ(FLT3)を割り当てます。
データ収集以外の処理をする場合,「フロータブルサーバ候補数の拡大」を指定しないときは,BES1,BES2,BES3,FLT1,及びFLT2から,HiRDBがフロータブルサーバとして必要と判断した台数を割り当てます。ただし,BES1,BES2,BES3,FLT1,及びFLT2すべてを割り当てるとは限りません。
「フロータブルサーバ候補数の拡大」を指定した場合は,BES1,BES2,BES3,FLT1,及びFLT2を割り当てます。
SQL文中にデータ収集処理がない場合は,「フロータブルサーバ対象拡大(バックエンドサーバ)」を適用したときと同じ動作となります。