Hitachi

ノンストップデータベース HiRDB Version 9 システム運用ガイド(UNIX(R)用)


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

マトリクス分割表で分割キーとなるどちらかの次元で分割されたデータを複数のRDエリアに分割します。機能の詳細を次に示します。

〈この項の構成〉

(1) 上限値と下限値

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

表13‒32 分割機能での上限値と下限値(マトリクス分割の場合)

項目

上限値

下限値

上限値又は下限値を超えた場合の動作

変更できる次元数

1(固定)

指定できません。

分割の対象にできる特定境界値格納RDエリア群数

1(固定)

1回の操作で分割できる数

16

2

ALTER TABLEをエラーとします。

分割した結果の総分割RDエリア数(重複を含む)

4,096

4

注※

特定境界値格納RDエリア群数とは,ある次元の,特定の格納条件のデータを格納するRDエリア群の数です。例えば,次に示す例では,第2次元分割列の境界値2000に対する特定境界値格納RDエリア群はRD12,RD22,RD32,及びRD42となります。

[図データ]

(2) 分割対象RDエリアの決定方法

ALTER TABLEのCHANGE RDAREAに指定された変更対象列名と境界値によって,その格納条件に合致するRDエリアを分割対象のRDエリアとします。変更対象列名と格納条件が指定されれば,対象となるRDエリアが特定できるため,RDエリアの指定は必要ありません。分割対象の次元は,ALTER TABLEのCHANGE RDAREAに指定された変更対象列名で決定します。境界値についての,ALTER TABLEの指定と分割対象RDエリアの決定方法を次の表に示します。

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

指定内容

条件

指定可否

分割対象RDエリアの決定方法

境界値

表定義中に,変更対象列名に対応する境界値あり

格納条件に合致する特定境界値格納RDエリア群のRDエリアを分割対象とします。

表定義中に,変更対象列名に対応する境界値なし

×

'MAX'

最大境界値より大きい分割キー値のデータを格納しているRDエリアを分割対象とします。

(凡例)

○:指定できます。

×:指定できません。

−:該当しません。

(3) 分割後のRDエリアの決定方法

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

ALTER TABLEの指定値と分割後のRDエリアの決定方法を次の表に示します。表で参照される,分割前後の境界値の条件を次の図に示します。

表13‒34 ALTER TABLEの指定値と分割後のRDエリアの決定方法(マトリクス分割の場合)

分割前の境界値

分割後の境界値の指定

条件

指定可否

分割対象RDエリアの決定方法

最小境界値

(図の1.)

境界値

分割後の境界値が最小境界値以下の値(図の1.,4.)

指定された格納条件とRDエリアを分割後のRDエリアとします。

分割後の境界値が最小境界値より大きい値(図の2.,3.,5.)

×

ALTER TABLEをエラーとします。

'MAX'

×

中間境界値又は最大境界値(図の2.)

境界値

分割後の境界値が分割前の境界値の一つ前の境界値より小さい値(分割前の境界値が200の場合:図の1.,4.)

×

ALTER TABLEをエラーとします。

分割後の境界値が分割前の境界値以下で,一つ前の境界値より大きい値(分割前の境界値が200の場合:200,図の5.)

指定された格納条件とRDエリアを分割後のRDエリアとします。

分割後の境界値が分割前の境界値より大きい値(分割前の境界値が200の場合:200より大きい値)

×

ALTER TABLEをエラーとします。

'MAX'

×

'MAX'

(図の3.)

境界値

分割後の境界値が最大境界値以下の値(図の1.,2.,4.,5.)

×

ALTER TABLEをエラーとします。

分割後の境界値が最大境界値より大きい値(図の3.)

指定された格納条件とRDエリアを分割後のRDエリアとします。

'MAX'

×

分割後の最大境界値より大きいデータの格納対象を指定されたRDエリアとします。

(凡例)

○:指定できます。

×:指定できません。

−:該当しません。

図13‒78 分割前後の境界値の条件(マトリクス分割の場合)

[図データ]

分割後のRDエリアは,分割前のRDエリアを再利用しても,新たに用意したものであってもかまいません。また,変更後のRDエリアは複数の格納範囲を同じRDエリアに格納できます。

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

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

表13‒35 分割対象となる次元及び指定するRDエリア数の関係

分割対象次元

分割対象の特定境界値格納RDエリア群数

分割対象の特定境界値格納RDエリア群ごとのRDエリア数

第1次元

変更後の境界値リストで指定した境界値の数

(図中の(例1)の場合,2)

第2次元の分割数

(図中の(例1)の場合,3)

第2次元

第1次元の分割数

(図中の(例2)の場合,4)

変更後の境界値リストで指定した境界値の数

(図中の(例2)の場合,2)

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

[図データ]

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

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

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

リソース名

指定方法

BLOB列

表格納用RDエリアと1対1で指定します。

表格納用RDエリアが重複指定されている場合は,表に対応するよう重複指定します。また,既存の表格納用RDエリアを変更後に使用する場合は,同じ境界値に対応するように既存のインデクス,LOB列格納用RDエリアを指定しなければなりません。

インデクス

クラスタキーインデクス

プライマリキーインデクス(プライマリキー及びクラスタキーを定義したインデクスを含む)

B-treeインデクス

(6) 分割するRDエリア内のデータの扱い

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

  1. データの削除

    境界値による格納範囲を分割する場合,分割する特定境界値格納RDエリア群のデータの一部は,分割後はその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エリア内にある境界値以下のデータしかない場合

    • 分割した結果,分割前の特定境界値格納RDエリア群のすべてのデータが分割後の格納範囲と一致している場合

    RDエリア内のデータを削除するかどうかは,ALTER TABLEのWITHOUT PURGE句の指定によって選択できます。WITHOUT PURGE句の指定とデータの扱いを次の表に示します。ただし,システムでは,分割した結果,RDエリア内のすべてのデータが分割後の格納範囲と一致しているかどうかをチェックしません。

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

    変更前後のRDエリアの関係

    WITHOUT PURGE句の指定可否

    WITHOUT PURGE句の指定あり

    WITHOUT PURGE句の指定なし

    分割前の特定境界値格納RDエリア群を,分割後の特定境界値格納RDエリア群として使用します。

    指定できます。

    分割前の特定境界値格納RDエリア群のデータを削除しません。

    分割前の特定境界値格納RDエリア群のデータを削除します。

    分割前の特定境界値格納RDエリア群を,分割後の特定境界値格納RDエリア群として使用しません。

    指定できません。

    ALTER TABLEをエラーとします。

WITHOUT PURGE句の指定が有効になる場合と,有効にならない場合の例を次の図に示します。

図13‒80 WITHOUT PURGE句の指定が有効になる場合と有効にならない場合の例

[図データ]

データを削除しない場合の注意事項

分割前のRDエリアのデータが,分割格納条件を変更した結果,格納範囲以外となった場合,ALTER TABLE実行時はデータの妥当性をチェックしません。したがって,格納範囲外のデータがRDエリアにあることになり,SQL実行時などHiRDBが正しく動作しません。

データを削除する場合の注意事項

分割前のRDエリアが,ほかの格納範囲でも格納されるような指定の場合,ほかの格納範囲のデータも削除します。分割前のRDエリアを分割後のRDエリアに含む場合も,含まない場合も同じです。