IBM Support

[Db2] 再編成実行時に利用される表スペース

Question & Answer


Question

再編成 (REORG) で利用される一時表スペースを指定することは可能でしょうか。可能な場合は指定方法を教えてください。 また、どのくらいの一時表領域のサイズが必要か教えてください。

Answer

再編成方式やフェーズによって、一時スペースとして使われる表スペースや必要なサイズは異なります。
 
  1. オフライン再編成 (クラシック再編成) の場合
    REORG TABLE コマンドで INPLACE オプションを指定しない場合、オフライン再編成が実行されます。 オフライン再編成では、表の再編成に続いて索引再作成が行われます。
    この項目ではオフライン再編成の表再編成フェーズについて説明します。索引再作成フェーズについては c を参照してください。
    オフライン表再編成はデータ・オブジェクトを再編成し、このとき以下の一時表領域を使用します。
    1. 表の一時コピー (シャドー) 領域
    2. クラスタリング再編成のソート領域
       
    デフォルトでこれらのオブジェクトは再編成対象の表と同じ表スペースに作成されますが、REORG TABLE コマンドの USE オプションでシステム一時表スペースを指定することもできます。
    1 は表と同程度、2 は表と同程度から 2 倍のサイズを必要とする可能性があるため、最大で表の 3 倍の一時領域が要求されることがあります。

    クラスタリング再編成でソート領域を節約したい場合、INDEXSCAN オプションが利用できます。(ただし余分に発生する索引スキャンのため、再編成のパフォーマンスが低下する場合があります。) クラスタリング再編成は、表にクラスタリング索引が定義されている場合、もしくは REORG TABLE コマンドの INDEX オプションで索引を指定している場合に実行されます。

    各オプションの概要は次の通りです。
    • USE tbspace-name
      再編成されている表の一時コピーを保管する SYSTEM TEMPORARY 表スペースの名前を指定します。 表スペースの名前を指定しない場合、データベース・マネージャーは、 再編成しようとする表を含む表スペースにその表の作業用コピーを保管します。
    • INDEX index-name
      表を再編成する際に使用する索引を指定します。 データベース・マネージャーは、再編成している表のレコードを物理的に再配列するために索引を使用します。
    • INDEXSCAN
      クラスタリング REORG では、索引スキャンを使用して表レコードが再配列されます。 デフォルトでは、必要に応じて TEMPORARY 表スペースを使用しながら表をスキャンし、結果をソートして表を再編成します。
       
  2. オンライン再編成の場合
    REORG TABLE コマンドで INPLACE オプションを指定した場合、オンライン再編成が実行されます。
    オンライン再編成では索引の再作成は行われません。
    オンライン再編成は表に割り当て済みのエクステント内で再配置を行うため、一時スペースを必要としません。
     
  3. 索引再編成の場合
    オフライン再編成で実行される索引再作成や、REORG INDEXES コマンドで実行される索引再作成では、データをソートするために一時表領域を必要とします。
    索引自体は既存の索引オブジェクトと同じ表領域に作成されます。

    索引再作成に伴うソートでは、利用可能なシステム一時表スペースがラウンドロビンで使用されます。
    例えば索引オブジェクトに 3 つの索引が含まれており、利用可能なシステム一時表スペースとして TEMP1、TEMP2 の 2 つが存在する場合、TEMP1 -> TEMP2 -> TEMP1 の順に使用されます。
    (オフライン再編成の USE で指定したシステム一時表スペース以外のシステム一時表スペースが使用される可能性がある点に注意してください。)

    作成される索引オブジェクトのサイズ、および索引作成に必要な一時スペースのサイズは、以下のページを参照してください。
    索引のスペース所要量
     
運用上の考慮点
  • オンライン表再編成では、表再編成のタイミングで索引の再編成が行われないため、表の再編成後 REORG INDEX コマンドの実行を検討してください。
  • オフライン表再編成では、表再編成と索引再作成が行われます。表の再編成が完了してから索引が再作成されるため、a と c の所要量を合算する必要はありません。
  • データベースに含まれる表データのサイズは、以下の SQL で一覧できます。
    db2 "select d.TABNAME,d.TABSCHEMA,d.DATAPARTITIONID,d.TBSPACEID,DATA_OBJECT_P_SIZE from SYSCAT.DATAPARTITIONS d join SYSIBMADM.ADMINTABINFO t on d.TABNAME=t.TABNAME and d.TABSCHEMA=t.TABSCHEMA and d.DATAPARTITIONID=t.DATA_PARTITION_ID"
    
    例:以下の例では表 T1 は 3 つのパーティションをもつパーティション表であり、各パーティションのサイズが KB 単位で表示されます。再編成はパーティションごとに順次実行されます。
    TABNAME   TABSCHEMA  DATAPARTITIONID TBSPACEID   DATA_OBJECT_P_SIZE (KB)
    --------- ---------- --------------- ----------- --------------------
    T1        DB2INST1                 0           3               504832
    T1        DB2INST1                 1           3             44536320
    T1        DB2INST1                 2           3             45924352
    
関連情報
REORG TABLE コマンド

REORG INDEX/INDEXES コマンド


お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PlMAAU","label":"Data Movement-\u003EReorg"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
30 August 2023

UID

swg21972905