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

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

13.12.12 RDエリアの統合(マトリクス分割の場合)

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

(1) 上限値と下限値

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

表13-38 統合機能での上限値と下限値(マトリクスの場合)

項目 上限値 下限値 上限値又は下限値を超えた場合の動作
統合の対象にできる特定境界値格納RDエリア群の数 16 2 ALTER TABLEがエラーとなります。
1回の操作で統合した後の特定境界値格納RDエリア群 1(固定)
統合した結果の総分割RDエリア数(重複を除く) 1024 1

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

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

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

表13-39 ALTER TABLEの指定と統合対象RDエリアの決定方法(マトリクス分割の場合)

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

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

ALTER TABLEのCHANGE RDAREAに指定された次元の,変更後の境界値リスト(ある次元に指定された境界値の組み合わせ)とRDエリアを対にして,統合後の格納条件をすべて格納するRDエリアを決定します。このとき,統合後の境界値は統合前の境界値の最大値と同じである必要があります。

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

表13-40 統合後のRDエリアの指定可否(マトリクス分割の場合)

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

統合後のRDエリアは複数の格納条件に対して,同じRDエリアに格納するように統合できます。

(4) RDエリアの指定方法

マトリクス分割表の場合,第1次元のRDエリアを統合するか,第2次元のRDエリアを統合するかで,ALTER TABLEのCHANGE RDAREAに指定するRDエリアの指定方法が異なります。統合対象となる特定境界値格納RDエリア群数,及び一つの特定境界値格納RDエリア群のRDエリア数は,統合対象ではない次元の分割数に依存します。統合対象となる次元及び指定するRDエリア数の関係を次の表に,表で使用している例を次の図に示します。

表13-41 統合対象となる次元及び指定するRDエリア数の関係

統合対象次元 統合対象の特定境界値格納RDエリア群数 統合対象の特定境界値格納RDエリア群ごとのRDエリア数
第1次元 変更後の境界値リストで指定した境界値の数
(図中の(例1)の場合,2)
第2次元の分割数
(図中の(例1)の場合,3)
第2次元 第1次元の分割数
(図中の(例2)の場合,4)
変更後の境界値リストで指定した境界値の数
(図中の(例2)の場合,2)

図13-81 RDエリアの統合後のRDエリアの指定(マトリクス分割の場合)

[図データ]

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

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

表13-42 表と表以外のRDエリアの指定方法(マトリクス分割)

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

(6) 統合する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句の指定とデータの扱いを次の表に示します。ただし,システムでは,分割した結果,RDエリア内のすべてのデータが分割後の格納範囲と一致しているかどうかをチェックしません。

    表13-43 WITHOUT PURGE句の指定とデータの扱い(マトリクス分割の場合)

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

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

    [図データ]

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