Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


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

〈この項の構成〉

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

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

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

[図データ]

[説明]
  1. バックエンドサーバでデータを取り出します。2表以上の問合せの場合,結合方式によってはバックエンドサーバ間でデータの通信が実行され,ステップ1.が更に数段階になるときがあります。

  2. フロータブルサーバでグループ化,ソート,重複排除,集合演算処理などをします。処理方式によっては,フロータブルサーバを使用しない場合や,フロータブルサーバ間でデータの通信が実行され,ステップ2.が更に数段階になるときがあります。

  3. フロントエンドサーバで問合せ結果を集めて,クライアントに転送します。

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

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

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

(2) フロータブルサーバを使用するSQL

次のどれかの条件に当てはまる場合,SQL文の問合せ処理でフロータブルサーバを使用します。

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

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

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

最適化方法

長 所

短 所

省略した場合

データ取り出しバックエンドサーバに,ソートなどの負荷が掛かる処理を割り当てないため,同時に同じバックエンドサーバからデータを取り出すSQL文を実行した場合,高速に検索できます。

データ取り出し以外のバックエンドサーバをフロータブルサーバとして割り当てるため,通信負荷が高くなります。

フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)

「フロータブル候補数の拡大」と組み合わせると,フロータブルサーバをすべてのバックエンドサーバに割り当てるため,フロータブルサーバでのソートなどの並列処理の効果が高くなります。

複数のSQL文を同時に実行する場合,同一フロータブルサーバに複数の処理が割り当てられるため,同時実行性が損なわれます。また,通信負荷も高くなります。

フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)

検索に使用する表が定義されているバックエンドサーバにだけ,フロータブルサーバを割り当てるため,表定義によって使用するバックエンドサーバを使い分けることができます。

分割数が少ない表に大量のデータが格納されている場合は,使用できるフロータブルサーバが少なくなるため,すべてのバックエンドサーバを有効に使用できなくなります。

データ収集用サーバの分離機能

データ収集用サーバにデータを送る場合,同じサーバと別サーバから同時にデータが転送されると,同じサーバからの転送を優先します。これによって,別サーバの処理は後になってしまいます。データ収集用サーバの分離機能を適用すると,すべてのサーバを別サーバとして扱うことができるので,すべてのサーバから均等にデータを受け取れるようになります。

1SQL文中に集合演算,副問合せを伴った検索など,問合せが複数個ある場合は,常に同じフロータブルサーバが使用されるため,同時実行性が損なわれます。

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

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

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

最適化方法

長 所

短 所

省略した場合

データ件数が多い検索では,フロータブルサーバの割り当て台数を多くします。データ件数が少ない検索では,フロータブルサーバの割り当て台数を少なくします。

探索条件に=やBETWEENなどの絞り込める述語を指定している場合,HiRDBはデータ件数が少ないと判断します。実際に=やBETWEENなどであまり絞り込めない場合でも,フロータブルサーバの割り当て台数を少なくするため,サーバの処理負荷が高くなります。

フロータブルサーバ候補数の拡大

データ件数が多い検索では,すべてのフロータブルサーバを使用して効率的に検索できます。

データ件数が少ない検索でもすべてのフロータブルサーバを使用するため,SQL文の同時実行性が損なわれます。また,サーバ間の通信経路が複雑になるため,表の分割数が多い場合には,通信負荷も高くなります。

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

(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文中にデータ収集処理がない場合は,「フロータブルサーバ対象拡大(バックエンドサーバ)」を適用したときと同じ動作となります。