DB2 10.5 for Linux, UNIX, and Windows

TEMPORARY 表スペース

TEMPORARY 表スペースは、ソートや結合などの操作の実行中に、データベース・マネージャーに必要な一時データを保持します。これは、これらのアクティビティーには、結果セットを処理するための余分なスペースが必要であるためです。

データベースには、CATALOG 表スペースと同じページ・サイズの SYSTEM TEMPORARY 表スペースが 1 つ以上必要です。 デフォルトでは、データベースの作成時に TEMPSPACE1 という 1 つの SYSTEM TEMPORARY 表スペースが作成されます。 IBMTEMPGROUP は、この表スペースに対するデフォルト・データベース・パーティション・グループです。 TEMPSPACE1 のページ・サイズは、データベース自体が作成されたときに指定された値になります (デフォルトでは 4 キロバイト)。

USER TEMPORARY 表スペースは、DECLARE GLOBAL TEMPORARY TABLE ステートメントまたは CREATE GLOBAL TEMPORARY TABLE ステートメントを使用して作成した表の一時データを保持します。 USER TEMPORARY 表スペースは、デフォルトではデータベース作成の時点で作成されません。 さらにそれは、インスタンス化されたバージョンの作成済み一時表も保持します。

単一の TEMPORARY 表スペースの定義では、大半の USER 表スペースで使用されているページ・サイズと等しいページ・サイズを指定することが推奨されています。 そうすれば、一般的な環境と処理に適したサイズが得られます。 しかし、TEMPORARY 表スペースの構成や処理を変えるとよい結果が得られる場合もあります。 以下の点を考慮してください。
  • 一時表はたいてい、一まとまりに順次アクセスされます。 つまり、まとまった行が挿入されたり、ひとかたまりの順次行がフェッチされたりします。 このため、比較的大きなページ・サイズを指定すると、特定量のデータを読み取るために必要な論理ページおよび物理ページの要求が少なくなるので、一般的にパフォーマンスは向上します。
  • TEMPORARY 表スペースを使って表を再編成する場合、 TEMPORARY 表スペースのページ・サイズは表のページ・サイズと一致しなければなりません。 このため、異なるページ・サイズごとに定義された TEMPORARY 表スペースが必要です。それら個々のページ・サイズは、TEMPORARY 表スペースを使って再編成できる既存の表によって使用されます。

    表を、同じ表スペースで直接再編成すれば、 TEMPORARY 表スペースを使わずに再編成を行うことができます。 このタイプの再編成では、表の表スペースに再編成プロセス用の余分のスペースが必要になります。

  • SMS SYSTEM TEMPORARY 表スペースを使用している場合には、レジストリー変数 DB2_SMS_TRUNC_TMPTABLE_THRESH を使用することも考慮できます。 システム一時表がドロップされると、ファイルのサイズは 0 バイトに切り捨てられます。DB2_SMS_TRUNC_TMPTABLE_THRESH は、ファイルを切り捨てる場合に最小限残すエクステント数を指定します。そのため、この値を十分に高く設定しておけば、ファイルを切り捨て、再利用が必要であればそれを拡張し、また切り捨てるという作業のオーバーヘッドを減らすことができます。
  • 通常、ページ・サイズの異なる複数の TEMPORARY 表スペースが存在すれば、オプティマイザーは最も多くの行を保持できるバッファー・プール (ほとんどの場合、最大のバッファー・プール) を持つ TEMPORARY 表スペースを選択します。 その場合はたいてい、TEMPORARY 表スペースの 1 つに十分のバッファー・プールを割り当て、 他の TEMPORARY 表スペースには小さめのバッファー・プールを割り当てるのが賢明です。 そのようなバッファー・プール割り当ては、 メイン・メモリーの使用効率を向上させるのに役立ちます。 例えば、CATALOG 表スペースが 4 KB ページを使用し、残りの表スペースが 8 KB ページを使用する場合、最適な TEMPORARY 表スペースの構成として、1 つの 8 KB TEMPORARY 表スペースに大きなバッファー・プールを指定し、1 つの 4 KB TEMPORARY 表スペースに小さなバッファー・プールを指定することが考えられます。
  • 一般に、単一ページ・サイズの TEMPORARY 表スペースを複数定義しても、特に利点はありません。

REGULAR 自動ストレージ表スペースや LARGE 自動ストレージ表スペースのような自動ストレージ TEMPORARY 表スペースは、ストレージ・グループに関連付けられます。 ただし、自動ストレージ TEMPORARY 表スペースは自身のストレージ・グループの関連付けを変更できません。 自動ストレージ TEMPORARY 表スペースに対してリバランス操作を試行すると、SQL0109N が返されます。 TEMPORARY 表スペースをストレージ・グループと関連付けるには、TEMPORARY 表スペースをドロップし、別のストレージ・グループを使ってその TEMPORARY 表スペース再作成します。 ストレージ・パスをストレージ・グループに追加する場合、TEMPORARY 表スペースは、次回データベースが活動化されるまで新規パスを利用しません。