DB 領域とハッシュ結合のための一時領域の量を見積もって、増やすことができます。 その場合、ディスク上の一時領域にメモリがオーバーフローしないようにできます。
ハッシュ結合は、結合内のいずれかの表の行から表 (ハッシュ表) を作成し、 他の表の行とハッシュ表を照合することにより機能します。このため、大量のメモリを 使用する可能性があり、ディスク上の一時領域がオーバーフローする恐れが あります。ハッシュ表のサイズは、ハッシュ表を作成するために使用する表 (通常は、結合する 2 つの表のうち小さいほうの表) の、フィルタを適用した後のサイズによって決まります。フィルタを使用することにより、行数を減らすことができます。列数も減らすことができる場合があります。
ハッシュ結合パーティションはページに編成されます。各ページにはヘッダが 1 つあります。 ヘッダおよびタプルは、32 ビット プラットフォームに構築した場合より 64 ビット プラットフォームのデータベースでのほうが大きくなります。各ページのサイズは、単一行が必要とする領域が基本ページ サイズを越えない限り、システムに応じて 2K または 4K の基本ページ サイズになります。行の長さのバイト数を増やすことで、さらにスペースが必要な場合に対応できます。
hash_table_size = (32 bytes + row_size_smalltab) * num_rows_smalltab
ここで、row_size_smalltab と num_rows_smalltab は、それぞれ、ハッシュ結合
に関係する 2 つの表における、小さいほうの表の行サイズと行数を示します。例えば、80 バイトの長さのページ ヘッダと 48 バイトの長さの行ヘッダがあるとします。 各行は 8 バイトに位置合せする必要があるため、次の数式に示すように、行の長さに 7 バイト以内を加えなければならないことがあります。
per_row_size = 48 bytes + rowsize + mod(rowsize, 8)
page_size = base_page_size (2K or 4K)
rows_per_page = round_down_to_integer((page_size - 80 bytes) / per_row_size)
rows_per_page の値が 1 未満である場合は、次の数式に示すように、 page_size 値を大きくして base_page_size の最小の倍数にしてください。
size = (numrows_smalltab / rows_per_page) * page_size
DS_NONPDQ_QUERY_MEM 構成パラメータを使用して、PDQ 問合せ以外のすべての問合せに対するソート用のメモリを構成することができます。
詳しくは、ハッシュ結合およびハッシュ結合、集合、およびその他のメモリ集約型のエレメントを使用した 問合せに応じたメモリの増加を参照してください。