スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

13.12.6 RDエリアの統合(境界値指定の場合)

<この項の構成>
(1) 上限値と下限値
(2) 統合対象のRDエリアの決定方法
(3) 統合後のRDエリアの決定方法
(4) 表と表以外のRDエリアの対応
(5) 統合するRDエリアのデータの扱い

(1) 上限値と下限値

統合機能での上限値と下限値を次の表に示します。

表13-13 統合機能での上限値と下限値(境界値指定の場合)

項目 上限値と下限値 上限値と下限値を超えた場合の動作
統合の対象にできるRDエリア数 2〜16(下限値〜上限値) ALTER TABLEがエラーとなります。
1回の操作での統合後のRDエリア数 1(固定値)
統合後の表のRDエリアの総数 2(下限値)

(2) 統合対象のRDエリアの決定方法

ALTER TABLEのCHANGE RDAREAに指定された統合対象の複数の境界値によって,その格納条件に合致するすべてのRDエリアを統合対象のRDエリアとします。境界値が指定されれば,対象となるRDエリアが特定できるため,RDエリアの指定は必要ありません。このとき,複数の境界値の指定は,昇順である必要があります。また,表に定義されている格納条件の順番に指定されている必要があります。例えば,表定義に境界値が10,20,30,40と定義されている場合,10,30,40など間を飛ばして指定するとALTER TABLEをエラーとします。

ALTER TABLEの指定と統合対象RDエリアの決定方法を次の表に示します。

表13-14 ALTER TABLEの指定と統合対象RDエリアの決定方法(境界値指定の場合)

指定内容 条件1 条件2 動作
境界値 表定義中に指定された境界値あり 定義されている境界値の順に指定されている 指定された格納条件に合うRDエリアを統合対象とします。
定義されている境界値の順に指定されていない ALTER TABLEをエラーとします。
表定義中に指定された境界値なし なし
'MAX' 直前に指定された境界値が表定義中の最大境界値である なし 最大境界値より大きい分割キー値のデータを格納しているRDエリアを統合対象とします。
直前に指定された境界値が表定義中の最大境界値でない なし ALTER TABLEをエラーとします。

(3) 統合後のRDエリアの決定方法

ALTER TABLEのCHANGE RDAREAに指定された,統合後のRDエリアが統合前の複数の格納条件をすべて格納するRDエリアとなります。統合された後の境界値は,統合されるすべての境界値をマージしたものとなるため,指定は必要ありません。例えば,10,20,30,40という境界値があった場合,20と30を統合すると,境界値は,10,30,40となり,10より大きく,30以下のすべてのデータが統合後のRDエリアの格納条件値となります。

統合後のRDエリアは,統合前のRDエリアの中の一つであっても,新たに用意したものであってもかまいません。統合後のRDエリアの指定可否を次の表に示します。

表13-15 統合後のRDエリアの指定可否(境界値指定の場合)

統合後のRDエリア 指定可否
統合前のRDエリアの中の一つ 指定できます。
統合前のRDエリアの中にない 統合対象の境界値以外で使用されているRDエリア 指定できます。
統合対象の表では使用されていなかったRDエリア(新たに用意されたRDエリア) 指定できます。

(凡例) −:該当しません。

統合後のRDエリアは複数の格納条件に対して,同じRDエリアに格納するように統合できます。ただし,統合した結果,一つのRDエリアにすべてのデータが格納されるような統合はできません。統合できない例(一つのRDエリアにすべてのデータを統合)を次の図に示します。

図13-30 統合できない例(一つのRDエリアにすべてのデータを統合)

[図データ]

また,統合後のRDエリアが,前後の格納範囲のRDエリアと同一となるような統合はできません。この場合は,前後の格納範囲のRDエリアも含めて統合します。統合できない例(前後の格納範囲のRDエリアと同一となるような統合)を次の図に示します。

図13-31 統合できない例(前後の格納範囲のRDエリアと同一となるような統合)

[図データ]

(4) 表と表以外のRDエリアの対応

分割格納条件を変更する表に分割キーインデクスなどが定義されている場合,表格納用RDエリアと対になるRDエリアにインデクスなどのデータを格納する必要があります。表と表以外のRDエリアの指定方法(境界値分割での格納条件の統合)を次の表に示します。この表に示すリソースが複数定義されている場合は,すべてが対象となります。正しく指定されていない場合,ALTER TABLEをエラーとします。表と表以外のRDエリアの対応を次の図に示します。

表13-16 表と表以外のRDエリアの指定方法(境界値分割での格納条件の統合)

リソース名 指定方法
BLOB列 表格納用RDエリアと1対1で指定します。
表格納用RDエリアが重複指定されている場合は,表に対応するよう重複指定します。また,既存の表格納用RDエリアを変更後に使用する場合は,同じ境界値に対応するように既存のインデクス,LOB格納用RDエリアを指定しなければなりません。
インデクス クラスタインデクス
プライマリインデクス(プライマリクラスタインデクスを含む)
B-treeインデクス

図13-32 表と表以外のRDエリアの対応

[図データ]

(5) 統合するRDエリアのデータの扱い

境界値による格納範囲を統合する場合,基本的には,システムが自動的にRDエリアのデータを削除します。ただし,条件によっては,データを削除しないで残すこともできます。

  1. データの削除
    境界値による格納範囲を統合する場合,統合前のRDエリアは,統合後はその表が使用するRDエリアではなくなる可能性があるため,RDエリア内のデータはシステムが自動的に削除します。ただし,削除するのは分割格納条件を変更する表のデータだけです(同じRDエリアに含まれる別の表のデータは削除されません)。RDエリア内のデータを削除する場合,次のどちらかの方法でデータを削除します。
    • すべての定義情報の削除
      統合前のRDエリアが,統合した結果,統合対象の表で使用されなくなった場合,ディクショナリ中の,その表が格納条件ごとに使用するRDエリアの情報(SQL_DIV_TABLE表)から,統合前のRDエリアの情報を削除します。また,RDエリア内で管理している,表の情報も削除します。この結果,そのRDエリア内にあった,統合対象の表のデータはすべて削除されます。イメージ的には特定のRDエリアにDROP TABLEを実行するのと同じです。
    • データだけの削除
      統合前のRDエリアを統合後も統合対象の表で使用する場合,ディクショナリの情報やRDエリア内で管理している情報は削除しないで,RDエリア内の統合対象とした表のデータだけを削除します。表のデータを削除する場合,統合対象の格納範囲のRDエリアがほかの格納範囲で使用されていると,その格納範囲のデータも削除します。イメージ的には特定RDエリアに対してPURGE TABLEを実行するのと同じです。
    なお,RDエリア内のデータを削除する場合,対応する次のRDエリア内のデータもすべて削除します。
    • インデクス格納用RDエリア内のインデクスキー
    • BLOB列格納用RDエリア内のデータ
    また,インナレプリカ機能を使用している場合,すべての世代のデータを削除します。
  2. データの保存
    「1.データの削除」で示したとおり,境界値による格納条件を統合する場合,基本的には統合前のRDエリア内のデータは削除します。しかし,次の条件を満たす場合は,RDエリア内のデータをそのまま使用できるため,データを削除しないようにすることもできます。
    • 統合前のRDエリアを統合後のRDエリアの一部として,そのまま使用する場合
    RDエリア内のデータを削除するかどうかは,ALTER TABLEのWITHOUT PURGE句の指定によって選択できます。WITHOUT PURGE句の指定とデータの扱いを次の表に示します。

    表13-17 WITHOUT PURGE句の指定とデータの扱い(境界値指定の場合)

    変更前後のRDエリアの関係 WITHOUT PURGE句の指定可否 WITHOUT PURGE句の指定あり WITHOUT PURGE句の指定なし
    統合前のRDエリアの一つを統合後のRDエリアとします。 指定できます。 統合後のRDエリアのデータを削除しません。統合前のそのほかのRDエリアはそのすべてのデータを削除します。 統合前のすべてのRDエリアのデータを削除します。
    統合前のRDエリアを統合後のRDエリアにしません(統合前のRDエリアとは別のRDエリアを統合後のRDエリアとします)。 指定できません。 ALTER TABLEをエラーとします。
    統合時のデータの削除対象RDエリアを次の図に示します。

    図13-33 統合時のデータの削除対象RDエリア

    [図データ]

  3. データを削除しない場合の注意事項
    WITHOUT PURGEを指定してデータを保存した場合,統合前のすべてのデータをアンロードし,統合後のRDエリアにロードすると,保存したデータが二重に登録されてしまいます。このため,WITHOUT PURGEを指定してデータを保存するRDエリアのデータはアンロード,及び統合後のロードを実行してはなりません。
    WITHOUT PURGEを指定しても統合前のRDエリアの中で統合後のRDエリアとしなかったRDエリアのデータはすべて削除します。また,統合する格納条件以外でも使用されているRDエリアが統合後のRDエリアではなかった場合,ほかの格納条件値のデータも削除します。このため,複数の格納範囲で使用されているRDエリアの中で特定の格納範囲を統合する場合は,WITHOUT PURGEを指定しないで分割格納条件を変更し,その後アンロードしていたデータを統合したRDエリアにロードする必要があります。
    変更対象RDエリアのデータの扱い(WITHOUT PURGE指定がある場合)を次の図に示します。

    図13-34 変更対象RDエリアのデータの扱い(WITHOUT PURGE指定がある場合)

    [図データ]

  4. データを削除する場合の注意事項
    データを削除しない場合の注意事項と同じように,統合する格納条件以外でも使用されているRDエリアが,統合後のRDエリアではなかった場合,ほかの格納範囲のデータも削除します。このため,統合する格納範囲以外でも統合対象のRDエリアを使用している場合は,統合対象のRDエリアのデータをすべてアンロードし,WITHOUT PURGEを指定しないで分割格納条件を変更し,その後アンロードしていたデータを統合したRDエリアにデータロードすることを推奨します。