IBM® Informix® 12.10

DB 領域とハッシュ結合のための一時領域の見積り

DB 領域とハッシュ結合のための一時領域の量を見積もって、増やすことができます。 その場合、ディスク上の一時領域にメモリがオーバーフローしないようにできます。

次のガイドラインを使用して、割り当てる一時領域の量を見積もることができます。

ハッシュ結合は、結合内のいずれかの表の行から表 (ハッシュ表) を作成し、 他の表の行とハッシュ表を照合することにより機能します。このため、大量のメモリを 使用する可能性があり、ディスク上の一時領域がオーバーフローする恐れが あります。ハッシュ表のサイズは、ハッシュ表を作成するために使用する表 (通常は、結合する 2 つの表のうち小さいほうの表) の、フィルタを適用した後のサイズによって決まります。フィルタを使用することにより、行数を減らすことができます。列数も減らすことができる場合があります。

ハッシュ結合パーティションはページに編成されます。各ページにはヘッダが 1 つあります。 ヘッダおよびタプルは、32 ビット プラットフォームに構築した場合より 64 ビット プラットフォームのデータベースでのほうが大きくなります。各ページのサイズは、単一行が必要とする領域が基本ページ サイズを越えない限り、システムに応じて 2K または 4K の基本ページ サイズになります。行の長さのバイト数を増やすことで、さらにスペースが必要な場合に対応できます。

次の式を使用して、ハッシュ結合のハッシュ表に必要なメモリの量を見積もることができます。
hash_table_size = (32 bytes + row_size_smalltab) * num_rows_smalltab
ここで、row_size_smalltabnum_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 問合せ以外のすべての問合せに対するソート用のメモリを構成することができます。

詳しくは、ハッシュ結合およびハッシュ結合、集合、およびその他のメモリ集約型のエレメントを使用した 問合せに応じたメモリの増加を参照してください。


フィードバックの送信 | 例の共有 | トラブルシューティング

PDF を見つけるには、Publications for the IBM Informix 12.10 family of products を参照してください。
リリース ノート、ドキュメント ノート、マシン ノートについては、リリース ノート・ページを参照してください。
タイムスタンプ リリース日: 2013 年 3 月