データベース・パーティション式の使用

ほとんどの場合、パーティション・データベース環境では、各パーティションに同一のストレージ・パスを使用する必要があり、ステートメントを発行する前にすべてのストレージ・パスが存在している必要があります。 1 つの例外は、ストレージ・パス内で、データベース・パーティション式を使用する場合です。 その使用によって、処理結果のパス名が各パーティションごとに異なるように、データベース・パーティション番号をストレージ・パスにおいて反映することができます。

SMS または DMS コンテナーを作成するときに、 コンテナーのストリング構文にデータベース・パーティション式を指定できます。 データベース・パーティション式は一般に、パーティション・データベース・システムで複数の論理データベース・パーティションを使用する場合に指定します。 この式により、コンテナー名がデータベース・パーティション・サーバー間で固有のものになります。 この式を指定すると、データベース・パーティション番号はコンテナー名の一部となるか、あるいは、 追加の引数を指定すれば、引数の結果はコンテナー名の一部となります。

重要: SMS 表スペース・タイプは、ユーザー定義の永続表スペースに対して非推奨になっており、将来のリリースで除去される可能性があります。 SMS 表スペース・タイプは、カタログ表スペースおよび TEMPORARY 表スペースについては非推奨になっていません。 詳しくは、 SMS 永続表スペースの非推奨を参照してください。
重要: DMS 表スペース・タイプは、ユーザー定義の永続表スペースに対して非推奨になっており、将来のリリースで除去される可能性があります。 DMS 表スペース・タイプは、カタログ表スペースおよび TEMPORARY 表スペースについては非推奨になっていません。 詳しくは、 DMS 永続表スペースの非推奨を参照してください。

データベース・パーティション式を指示するには、引数 " $N" ([blank]$N) を使用します。 データベース・パーティション式はストレージ・パス名の中のどこにでも使用でき、複数指定することも可能です。 データベース・パーティション式は、スペース文字で終了します。スペースの後に続くものはすべて、データベース・パーティション式の評価後にストレージ・パス名に追加されます。 データベース・パーティション式の後、ストレージ・パス名内にスペース文字がない場合、そのストリングの残りは式の一部であるとみなされます。 引数 N の前に数字を指定すると ($[number]N)、パーティション番号が、先行ゼロの付いたフォーマットに設定されます。

引数は、以下の表のいずれかの形式を使用して指定する必要があります。 演算子は、左から右へ評価されます。 パーセント記号 (%) は、モジュラス演算子を表します。 次の例中のデータベース・パーティション番号は 10 と想定されています。

表 1. データベース・パーティション式
構文
[blank]$N "$N" 10
[blank]$[number]N "$4N" 0010
[blank]$N+[number] "$N+100" 110
[blank]$N%[number] "$N%5" 0
[blank]$N+[number]%[number] "$N+1%5" 1
[blank]$N%[number]+[number] "$N%4+2" 4

データベース・パーティション式を使用してストレージ・パスを指定した場合、同じストレージ・パス・ストリング (データベース・パーティション式を含む) を使用してパスをドロップする必要があります。 このパス・ストリングは、ADMIN_GET_STORAGE_PATHS 表関数の DB_STORAGE_PATH_WITH_DPE フィールドにあります。 このエレメントは、元のパスにデータベース・パーティション式を含めなかった場合、表示されません。

  1. 2 つのデータベース・パーティションを持つシステムの場合。
    CREATE TABLESPACE TS1 MANAGED BY DATABASE USING
         (device '/dev/rcont $N' 20000)
    
    以下のコンテナーが作成されます。
         /dev/rcont0 - on database partition 0
         /dev/rcont1 - on database partition 1
    
  2. 3 つのデータベース・パーティションを持つシステムの場合。
    ALTER STOGROUP IBMSTOGROUP ADD '/DB2/path $N'
    以下のパスが追加されます。
    /DB2/path0 - on database partition 0
    /DB2/path1 - on database partition 1
    /DB2/path2 - on database partition 2 
  3. 4 つのデータベース・パーティションを持つシステムの場合。
       CREATE TABLESPACE TS2 MANAGED BY DATABASE USING
         (file '/DB2/containers/TS2/container $N+100' 10000)
    
    以下のコンテナーが作成されます。
         /DB2/containers/TS2/container100 - on database partition 0
         /DB2/containers/TS2/container101 - on database partition 1
         /DB2/containers/TS2/container102 - on database partition 2
         /DB2/containers/TS2/container103 - on database partition 3
    
  4. 2 つのデータベース・パーティションを持つシステムの場合。
       CREATE TABLESPACE TS3 MANAGED BY SYSTEM USING
         ('/TS3/cont $N%2','/TS3/cont $N%2+2')
    
    以下のコンテナーが作成されます。
         /TS3/cont0 - On database partition 0
         /TS3/cont2 - On database partition 0
         /TS3/cont1 - On database partition 1
         /TS3/cont3 - On database partition 1
    
  5. データベース・パーティションの数が 10 の場合、コンテナーは以下の構文を使用します。
         '/dbdir/node $N /cont1'
         '/ $N+1000 /file1'
         ' $N%10 /container'
         '/dir/ $N2000 /dmscont'
    
    コンテナーは次の名前で作成されます。
         '/dbdir/node5/cont1'
         '/1005/file1'
         '5/container'
         '/dir/2000/dmscont'