パーティション・データベースでの結合ストラテジー
パーティション・データベース環境での結合ストラテジーは、非パーティション・データベース環境でのストラテジーとは異なる場合があります。 パフォーマンスを改善するために、標準の結合方式に加えて別の技法を適用することができます。
頻繁に結合が行われる表では、表コロケーションを考慮する必要があります。 パーティション・データベース環境では、表コロケーション とは、 互換性のあるパーティション・キーの数が同じである 2 つの表が、同じデータベース・パーティション・グループに保管されている場合に生じる状態のことです。 この状態になると、結合処理はそのデータが保管されているデータベース・パーティションで実行できるようになり、結果セットをコーディネーター・データベース・パーティションに移動するだけで済みます。
表キュー
- 表キュー (TQ と呼ばれることもある) は、データベース・パーティション間 (または、 単一パーティション・データベースの場合はプロセッサー間) で行を転送するための機構です。
- 指示表キュー (DTQ と呼ばれることもある) は、行が受信データベース・パーティションの 1 つにハッシュされる表キューです。
- ブロードキャスト表キュー (BTQ と呼ばれることもある) は、行がすべての受信データベース・パーティションに送信されるが、ハッシュは行われない表キューです。
- パーティション間並列処理の使用時に、あるデータベース・パーティションから別のデータベース・パーティションに渡す
- パーティション内並列処理の使用時に、データベース・パーティション内で渡す
- 単一パーティション・データベースの使用時に、データベース・パーティション内で渡す
- 非同期表キュー
これらの表キューが非同期と呼ばれるのは、アプリケーションからフェッチ要求が出される前に、行の読み取りを行うためです。 FETCH ステートメントが出されたときには、行はこの表キューから取り出されます。
非同期表キューは、SELECT ステートメントに FOR FETCH ONLY 節を指定した場合に使用されます。 行の取り出しだけを行う場合には、非同期表キューが他よりも速い方法になります。
- 同期表キュー
これらの表キューが同期と呼ばれるのは、アプリケーションによって FETCH ステートメントが出されるたびに行を 1 行読み取るためです。 各データベース・パーティションでは、カーソルが、 そのデータベース・パーティションから次に読み取られる行に位置づけられます。
同期表キューは、 SELECT ステートメントに FOR FETCH ONLY 節が指定されていない場合に使用されます。 パーティション・データベース環境では、行の更新を行う場合には、データベース・マネージャーは同期表キューを使用します。
- マージ表キュー
これらの表キューは、順序を保存します。
- 非マージ表キュー
これらの表キューは正規表キュー とも呼ばれ、順序を保持しません。
- Listener 表キュー (LTQ と呼ばれることもある)
これらの表キューは、相関副照会とともに使用されます。 相関値が副照会に渡された後、このタイプの表キューを使用して、結果が親照会ブロックに戻されます。